|
Message-ID: <20121024205130.GI254@brightrain.aerifal.cx> Date: Wed, 24 Oct 2012 16:51:31 -0400 From: Rich Felker <dalias@...ifal.cx> To: musl@...ts.openwall.com Subject: Re: Re: Possible file stream bug On Wed, Oct 24, 2012 at 10:16:01PM +0200, Paul Schutte wrote: > Hi > > While investigating this, I stumbled upon another bug: > > #include <unistd.h> > #include <stdio.h> > > int main() { > FILE *fstream; > int len; > > fclose(stdout); > > len=printf("test this\n"); > > fprintf(stderr,"%d\n",len); > > return 0; > } > > Musl's printf gives the amount of bytes no matter whether it succeeds or > fails. > It should return a negative value in case of failure. You invoked undefined behavior by accessing a FILE object after calling fclose on it. Thus anything can happen. Even if you just closed the underlying file descriptor #1 without closing the FILE, printf would be under no obligation to return -1 since the write error need not be detected until the buffer gets flushed. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.