Hi, It seems that the open syscall is not POSIX-compliant when using both O_CREAT|O_DIRECTORY. This was discussed in [1] with a reference to the POSIX documentation. A simple test program is: #include <fcntl.h> #include <stdio.h> #include <sys/stat.h> int main(int argc, char **argv) { int fd; struct stat statBuf; int result; fd=open("xxx", O_RDWR|O_CREAT|O_DIRECTORY, 0600); result=fstat(fd, &statBuf); if(result) { fprintf(stderr, "Stat failed\n"); return(1); } fprintf(stderr, "New element type is %d\n", S_ISDIR(statBuf.st_mode)); return(0); } Kind Regards, Roman [1] http://www.openwall.com/lists/oss-security/2014/11/26/10 DI Roman Fiedler Scientist Digital Safety & Security Department Assistive Healthcare Information Technology AIT Austrian Institute of Technology GmbH Reininghausstraße 13/1 | 8020 Graz | Austria T +43(0) 50550 2957 | M +43(0) 664 8561599 | F +43(0) 50550 2950 roman.fiedler@xxxxxxxxx | http://www.ait.ac.at/ FN: 115980 i HG Wien | UID: ATU14703506 http://www.ait.ac.at/Email-Disclaimer
Attachment:
smime.p7s
Description: S/MIME cryptographic signature