X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyaffsfs.c;h=191c34f6bd1b6f79209c5642a4df244e1b79a85a;hp=fc68b969e017c9a82af5b66452f95cfdfae87408;hb=a6fbf618f9e46629a254f1ad246f4ca93a897881;hpb=505255d500d864c1689a6752a728b97859605fd0 diff --git a/direct/yaffsfs.c b/direct/yaffsfs.c index fc68b96..191c34f 100644 --- a/direct/yaffsfs.c +++ b/direct/yaffsfs.c @@ -573,12 +573,21 @@ int yaffs_open(const YCHAR *path, int oflag, int mode) if(obj) obj = yaffs_GetEquivalentObject(obj); - if(obj && obj->variantType != YAFFS_OBJECT_TYPE_FILE) + if(obj && + obj->variantType != YAFFS_OBJECT_TYPE_FILE && + obj->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) obj = NULL; if(obj){ - /* The file already exists */ + /* The file already exists or it might be a directory */ + + /* If it is a directory then we can't open it as a file */ + if(obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY){ + openDenied = 1; + yaffsfs_SetError(-EISDIR); + errorReported = 1; + } /* Open should fail if O_CREAT and O_EXCL are specified since * the file exists