2011-03-03 Chris Johns <chrisj@rtems.org>

* libcsupport/src/mknod.c, libfs/src/rfs/rtems-rfs-inode.c: PR
        1749. Fix the incorrect handling of the file type in the mode
        value to reject invalid types as per the standard.
This commit is contained in:
Chris Johns
2011-03-03 06:22:48 +00:00
parent 7ef9c85e74
commit 9a65833c1e
3 changed files with 36 additions and 3 deletions

View File

@@ -211,6 +211,21 @@ rtems_rfs_inode_create (rtems_rfs_file_system* fs,
printf (" type:%s mode:%04x (%03o)\n", type, mode, mode & ((1 << 10) - 1));
}
/*
* The file type is field within the mode. Check we have a sane mode set.
*/
switch (mode & RTEMS_RFS_S_IFMT)
{
case RTEMS_RFS_S_IFDIR:
case RTEMS_RFS_S_IFCHR:
case RTEMS_RFS_S_IFBLK:
case RTEMS_RFS_S_IFREG:
case RTEMS_RFS_S_IFLNK:
break;
default:
return EINVAL;
}
rc = rtems_rfs_inode_alloc (fs, parent, ino);
if (rc > 0)
return rc;