Date: Fri, 26 Sep 2014 03:05:48 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com, 黄建忠 <jianzhong.huang@...oft.com.cn> Subject: Re: fdopen/fflush problem On Fri, Sep 26, 2014 at 08:39:39AM +0200, Szabolcs Nagy wrote: > * Rich Felker <dalias@...c.org> [2014-09-26 02:18:10 -0400]: > > See the following text from the man page: > > > > The mkostemp() function is like mkstemp(), with the difference > > that the following bits???with the same meaning as for open(2)???may > > be specified in flags: O_APPEND, O_CLOEXEC, and O_SYNC. Note that > > when creating the file, mkostemp() includes the values O_RDWR, > > O_CREAT, and O_EXCL in the flags argument given to open(2); > > including these values in the flags argument given to mkostemp() > > is unnecessary, and produces errors on some systems. > > ah i didnt see this, so it's not a musl bug I forgot that this function was accepted for inclusion in POSIX, so we need to check that too. The accepted text is in http://austingroupbugs.net/view.php?id=411 "The mkostemp( ) function shall be equivalent to the mkstemp( ) function, except that the flag argument may contain additional flags (from <fcntl.h>) to be used as if by open( ). Behavior is unspecified if the flag argument contains more than the following flags:" The list that follows includes just O_APPEND, O_CLOEXEC, and O_*SYNC, so including O_WRONLY has unspecified behavior. However, since this is just unspecified, not undefined, it seems bad for something "horribly wrong" to happen, like a file with no access like we're getting now. Indeed, POSIX will define an optional error: "The mkostemp( ) function may fail if: [EINVAL] The value of the flag argument is invalid." So I think we should either make this error be detected, or silently mask off the bad access mode. My leaning would be towards reporting it as an error. Opinions? 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.