forked from Imagelibrary/rtems
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:
@@ -1,3 +1,9 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2011-02-08 Brett Swimley <bswimley@advanced.pro>
|
2011-02-08 Brett Swimley <bswimley@advanced.pro>
|
||||||
|
|
||||||
* libfs/src/rfs/rtems-rfs-rtems.c: Fix bug where the eval path did
|
* libfs/src/rfs/rtems-rfs-rtems.c: Fix bug where the eval path did
|
||||||
|
|||||||
@@ -40,8 +40,20 @@ int mknod(
|
|||||||
const char *name_start;
|
const char *name_start;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
if ( !(mode & (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
|
/*
|
||||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
* The file type is field within the mode. Check we have a sane mode set.
|
||||||
|
*/
|
||||||
|
switch (mode & S_IFMT)
|
||||||
|
{
|
||||||
|
case S_IFDIR:
|
||||||
|
case S_IFCHR:
|
||||||
|
case S_IFBLK:
|
||||||
|
case S_IFREG:
|
||||||
|
case S_IFIFO:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||||
|
}
|
||||||
|
|
||||||
rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );
|
rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
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);
|
rc = rtems_rfs_inode_alloc (fs, parent, ino);
|
||||||
if (rc > 0)
|
if (rc > 0)
|
||||||
return rc;
|
return rc;
|
||||||
|
|||||||
Reference in New Issue
Block a user