summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-10-08 11:24:36 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-10-08 11:26:27 +0200
commit22cd2821de2dcec7117fa0370a495e675de206a4 (patch)
tree4448ed74d0951eb5c6f80347a7d579c93073dfa6
parentposix: Add auto initializaton for rwlock (diff)
downloadrtems-22cd2821de2dcec7117fa0370a495e675de206a4.tar.bz2
IMFS: Avoid NULL pointer access
Avoid NULL pointer access in IMFS_is_imfs_instance(). File systems mounted via mount() always have a valid type string.
-rw-r--r--cpukit/libcsupport/src/__usrenv.c3
-rw-r--r--testsuites/fstests/fsimfsgeneric01/init.c11
2 files changed, 13 insertions, 1 deletions
diff --git a/cpukit/libcsupport/src/__usrenv.c b/cpukit/libcsupport/src/__usrenv.c
index 71efda9d7f..d032aea4ab 100644
--- a/cpukit/libcsupport/src/__usrenv.c
+++ b/cpukit/libcsupport/src/__usrenv.c
@@ -229,7 +229,8 @@ rtems_filesystem_mount_table_entry_t rtems_filesystem_null_mt_entry = {
.mt_point_node = &rtems_filesystem_global_location_null,
.mt_fs_root = &rtems_filesystem_global_location_null,
.mounted = false,
- .writeable = false
+ .writeable = false,
+ .type = ""
};
rtems_filesystem_global_location_t rtems_filesystem_global_location_null = {
diff --git a/testsuites/fstests/fsimfsgeneric01/init.c b/testsuites/fstests/fsimfsgeneric01/init.c
index 09e7ed67f8..40f0aed70a 100644
--- a/testsuites/fstests/fsimfsgeneric01/init.c
+++ b/testsuites/fstests/fsimfsgeneric01/init.c
@@ -472,6 +472,17 @@ static void test_imfs_make_generic_node_errors(void)
rtems_test_assert(rv == -1);
rtems_test_assert(errno == EIO);
rtems_test_assert(rtems_resource_snapshot_check(&before));
+
+ errno = 0;
+ rv = IMFS_make_generic_node(
+ "/nil/nada",
+ S_IFCHR | S_IRWXU | S_IRWXG | S_IRWXO,
+ &node_control,
+ NULL
+ );
+ rtems_test_assert(rv == -1);
+ rtems_test_assert(errno == ENOENT);
+ rtems_test_assert(rtems_resource_snapshot_check(&before));
}
static void Init(rtems_task_argument arg)