Quellcode durchsuchen

fix unsynchronized access to FILE structure in fflush(0)

commit c002668eb0352e619ea7064e4940b397b4a6e68d inadvertently moved
the check for unflushed write buffer outside of the scope of the
existing lock.
Rich Felker vor 7 Jahren
Ursprung
Commit
670d6d01f5
1 geänderte Dateien mit 4 neuen und 1 gelöschten Zeilen
  1. 4 1
      src/stdio/fflush.c

+ 4 - 1
src/stdio/fflush.c

@@ -9,8 +9,11 @@ int fflush(FILE *f)
 	if (!f) {
 		int r = __stdout_used ? fflush(__stdout_used) : 0;
 
-		for (f=*__ofl_lock(); f; f=f->next)
+		for (f=*__ofl_lock(); f; f=f->next) {
+			FLOCK(f);
 			if (f->wpos > f->wbase) r |= fflush(f);
+			FUNLOCK(f);
+		}
 		__ofl_unlock();
 
 		return r;