summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2013-09-18 13:39:30 +0200
committerDaniel Hellstrom <daniel@gaisler.com>2013-09-18 13:39:30 +0200
commit1fcfb86c390b10408ee9016a5b537f301cb56c69 (patch)
treef631109fe6bd64f1f1c2f1a44420688ce3a27702
parentb8b4ce65c4c69c84f349f9bc1ab423cfb870d40d (diff)
DEVFS mknod stored path pointer, now path is copied instead
-rw-r--r--cpukit/libfs/src/devfs/devfs_mknod.c9
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;