yaffs direct: Fix error handling in yaffs_access
authorCharles Manning <cdhmanning@gmail.com>
Tue, 16 Nov 2010 00:51:56 +0000 (13:51 +1300)
committerCharles Manning <cdhmanning@gmail.com>
Tue, 16 Nov 2010 00:51:56 +0000 (13:51 +1300)
yaffs_access was not returning the correct result.

Signed-off-by: Charles Manning <cdhmanning@gmail.com>
direct/yaffsfs.c

index 15d5aeb7b0ed35911f3edb8ea12fc090636981a6..6622536c834e652826445ada9c76cc0cae764659 100644 (file)
@@ -1724,7 +1724,7 @@ int yaffs_access(const YCHAR *path, int amode)
        struct yaffs_obj *obj=NULL;
        struct yaffs_obj *dir=NULL;
 
        struct yaffs_obj *obj=NULL;
        struct yaffs_obj *dir=NULL;
 
-       int retval = 0;
+       int retval = -1;
 
        if(amode & ~(R_OK | W_OK | X_OK)){
                yaffsfs_SetError(-EINVAL);
 
        if(amode & ~(R_OK | W_OK | X_OK)){
                yaffsfs_SetError(-EINVAL);
@@ -1749,10 +1749,10 @@ int yaffs_access(const YCHAR *path, int amode)
                if((amode & X_OK) && !(obj->yst_mode & S_IEXEC))
                        access_ok = 0;
 
                if((amode & X_OK) && !(obj->yst_mode & S_IEXEC))
                        access_ok = 0;
 
-               if(!access_ok) {
+               if(!access_ok)
                        yaffsfs_SetError(-EACCES);
                        yaffsfs_SetError(-EACCES);
-                       retval = -1;
-               }
+               else
+                       retval = 0;
        }
 
        yaffsfs_Unlock();
        }
 
        yaffsfs_Unlock();