diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2013-09-18 13:39:30 +0200 |
---|---|---|
committer | Daniel Hellstrom <daniel@gaisler.com> | 2013-09-18 13:39:30 +0200 |
commit | 1fcfb86c390b10408ee9016a5b537f301cb56c69 (patch) | |
tree | f631109fe6bd64f1f1c2f1a44420688ce3a27702 | |
parent | b8b4ce65c4c69c84f349f9bc1ab423cfb870d40d (diff) |
DEVFS mknod stored path pointer, now path is copied instead
-rw-r--r-- | cpukit/libfs/src/devfs/devfs_mknod.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/cpukit/libfs/src/devfs/devfs_mknod.c b/cpukit/libfs/src/devfs/devfs_mknod.c index d8e5a30d5f..6df84a443c 100644 --- a/cpukit/libfs/src/devfs/devfs_mknod.c +++ b/cpukit/libfs/src/devfs/devfs_mknod.c @@ -29,6 +29,7 @@ int devFS_mknod( { int i; int slot; + int len; rtems_device_name_t *device_name_table; rtems_device_major_number major; rtems_device_minor_number minor; @@ -69,8 +70,12 @@ int devFS_mknod( rtems_set_errno_and_return_minus_one( ENOMEM ); _ISR_Disable(level); - device_name_table[slot].device_name = (char *)path; - device_name_table[slot].device_name_length = strlen(path); + len = strlen(path); + device_name_table[slot].device_name = (char *)malloc(len); + if (!device_name_table[slot].device_name) + rtems_set_errno_and_return_minus_one(ENOMEM); + strcpy(device_name_table[slot].device_name, (char *)path); + device_name_table[slot].device_name_length = len; device_name_table[slot].major = major; device_name_table[slot].minor = minor; device_name_table[slot].mode = mode; |