oss-sec mailing list archives

AW: O_CREAT|O_DIRECTORY on nonexisting file expected behaviour?


From: Fiedler Roman <Roman.Fiedler () ait ac at>
Date: Wed, 26 Nov 2014 19:32:42 +0000

Von: Matthew Daley [mailto:mattd () bugfuzz com]

On Thu, Nov 27, 2014 at 4:28 AM, Fiedler Roman <Roman.Fiedler () ait ac at>
wrote:
(...)
My test program was:

#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(fd));

FWIW, this should probably be S_ISDIR(statBuf.st_mode).

You are completely right, how stupid to miss that. I did not challenge the 
result, since it was the same as with "ls -al".

Also with S_ISDIR(statBuf.st_mode), result is the same, at least on my side.



#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);
}


$ ./test
New element type is 0

Attachment: smime.p7s
Description:


Current thread: