int yaffs_chmod(const YCHAR *path, mode_t mode)
{
struct yaffs_obj *obj;
-
int retVal = -1;
+ if(mode & ~(0777)){
+ yaffsfs_SetError(-EINVAL);
+ return -1;
+ }
+
yaffsfs_Lock();
obj = yaffsfs_FindObject(NULL,path,0,1);
if(!obj)
yaffsfs_SetError(-ENOENT);
else if(obj->my_dev->read_only)
- yaffsfs_SetError(-EINVAL);
+ yaffsfs_SetError(-EROFS);
else
retVal = yaffsfs_DoChMod(obj,mode);
int yaffs_fchmod(int fd, mode_t mode)
{
struct yaffs_obj *obj;
-
int retVal = -1;
+ if(mode & ~(0777)){
+ yaffsfs_SetError(-EINVAL);
+ return -1;
+ }
+
yaffsfs_Lock();
obj = yaffsfs_GetHandleObject(fd);
if(!obj)
- yaffsfs_SetError(-ENOENT);
+ yaffsfs_SetError(-EBADF);
else if(obj->my_dev->read_only)
- yaffsfs_SetError(-EINVAL);
+ yaffsfs_SetError(-EROFS);
else
retVal = yaffsfs_DoChMod(obj,mode);