From 670d6d01f53b4e85be6b333bf8a137e2be6d3fc3 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 29 Aug 2017 19:39:03 -0400 Subject: [PATCH] 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. --- src/stdio/fflush.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/stdio/fflush.c b/src/stdio/fflush.c index c2881065..bf1e8437 100644 --- a/src/stdio/fflush.c +++ b/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; -- 2.25.1