|
Message-ID: <20140926063757.GE21835@port70.net> Date: Fri, 26 Sep 2014 08:37:58 +0200 From: Szabolcs Nagy <nsz@...t70.net> To: ?????? <jianzhong.huang@...oft.com.cn> Cc: musl@...ts.openwall.com Subject: Re: fdopen/fflush problem * ?????? <jianzhong.huang@...oft.com.cn> [2014-09-26 14:05:57 +0800]: > Hi, there, > I encounter a problem about fdopen and fflush with musl, here is the code: the strace is open("/tmp/abcdeLidlpm", O_ACCMODE|O_CREAT|O_EXCL|O_LARGEFILE|O_CLOEXEC, 0600) = 3 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 writev(1, [{"filename: /tmp/abcdeLidlpm", 26}, {"\n", 1}], 2filename: /tmp/abcdeLidlpm ) = 27 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfbdb314) = -1 ENOTTY (Inappropriate ioctl for device) writev(3, [{"test string\n", 12}, {NULL, 0}], 2) = -1 EBADF (Bad file descriptor) > int main() > { > char filename[17] = "/tmp/abcdeXXXXXX"; > int fd = mkostemp(filename, O_WRONLY|O_CLOEXEC); it seems O_WRONLY gets lost this is what musl does: if ((fd = open(template, flags | O_RDWR | O_CREAT | O_EXCL, 0600))>=0) and O_WRONLY is 1, O_RDWR is 2 and O_ACCMODE is 3 so it is a musl bug: due to historical accidents O_RDONLY and O_WRONLY are not proper bitflags and thus O_WRONLY|O_RDWR has special meaning (for details see "File access mode" section in http://man7.org/linux/man-pages/man2/open.2.html ) > printf("filename: %s\n", filename); > if(fd < 0) > printf("fd error\n"); > > FILE *f = fdopen(fd, "we"); > fputs("test string\n", f); > fflush(f); > > if(ferror(f)) > printf("file error\n"); > > fclose(f); > } > > As expected, the final file should contains one line and no ferror reported. > > Anybody can help to check it? > > By the way, I did not subscribe to this mail list with this mail box, > please CC to jianzhong.huang AT i-soft.com.cn > > -- > Huang JianZhong > >
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.