2000-11-20 Dmitry Kargapolov <dk@gentex.ru>

* libc/mount.c: Make sure there is space allocated for a device name
	in the mount table entry.
This commit is contained in:
Joel Sherrill
2000-11-20 13:29:21 +00:00
parent 2e3ce06b7f
commit bde7e18ea0
4 changed files with 43 additions and 9 deletions

View File

@@ -74,6 +74,7 @@ int mount(
rtems_filesystem_location_info_t loc;
rtems_filesystem_mount_table_entry_t *temp_mt_entry;
rtems_filesystem_location_info_t *loc_to_free = NULL;
size_t size;
/* XXX add code to check for required operations */
@@ -100,7 +101,10 @@ int mount(
* Allocate a mount table entry
*/
temp_mt_entry = malloc( sizeof(rtems_filesystem_mount_table_entry_t) );
size = sizeof(rtems_filesystem_mount_table_entry_t);
if ( device )
size += strlen( device ) + 1;
temp_mt_entry = malloc( size );
if ( !temp_mt_entry ) {
errno = ENOMEM;
@@ -109,9 +113,11 @@ int mount(
temp_mt_entry->mt_fs_root.mt_entry = temp_mt_entry;
temp_mt_entry->options = options;
if ( device )
if ( device ) {
temp_mt_entry->dev =
(char *)temp_mt_entry + sizeof( rtems_filesystem_mount_table_entry_t );
strcpy( temp_mt_entry->dev, device );
else
} else
temp_mt_entry->dev = 0;
/*

View File

@@ -1,4 +1,20 @@
2000-11-20 Dmitry Kargapolov <dk@gentex.ru>
* libc/mount.c: Make sure there is space allocated for a device name
in the mount table entry.
2000-11-17 Jennifer Averret <jennifer@OARcorp.com>
* libc/mount.c (search_mt_for_mount_point): Deleted routine.
* libc/mount.c (Is_node_fs_root): Replacement for above that
accounts for the imaginary root node being returned by the
filesystem evaluation routine.
* libc/unmount.c (unmount): Account for imaginary root node
being returned and improved variable names to clarify code.
* libc/unmount.c (file_systems_below_this_mountpoint): Body of
routine replaced to account for imaginary root node being returned.
2000-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* libc/libio.c: Special treatment of O_NDELAY for Cygwin.

View File

@@ -74,6 +74,7 @@ int mount(
rtems_filesystem_location_info_t loc;
rtems_filesystem_mount_table_entry_t *temp_mt_entry;
rtems_filesystem_location_info_t *loc_to_free = NULL;
size_t size;
/* XXX add code to check for required operations */
@@ -100,7 +101,10 @@ int mount(
* Allocate a mount table entry
*/
temp_mt_entry = malloc( sizeof(rtems_filesystem_mount_table_entry_t) );
size = sizeof(rtems_filesystem_mount_table_entry_t);
if ( device )
size += strlen( device ) + 1;
temp_mt_entry = malloc( size );
if ( !temp_mt_entry ) {
errno = ENOMEM;
@@ -109,9 +113,11 @@ int mount(
temp_mt_entry->mt_fs_root.mt_entry = temp_mt_entry;
temp_mt_entry->options = options;
if ( device )
if ( device ) {
temp_mt_entry->dev =
(char *)temp_mt_entry + sizeof( rtems_filesystem_mount_table_entry_t );
strcpy( temp_mt_entry->dev, device );
else
} else
temp_mt_entry->dev = 0;
/*

View File

@@ -74,6 +74,7 @@ int mount(
rtems_filesystem_location_info_t loc;
rtems_filesystem_mount_table_entry_t *temp_mt_entry;
rtems_filesystem_location_info_t *loc_to_free = NULL;
size_t size;
/* XXX add code to check for required operations */
@@ -100,7 +101,10 @@ int mount(
* Allocate a mount table entry
*/
temp_mt_entry = malloc( sizeof(rtems_filesystem_mount_table_entry_t) );
size = sizeof(rtems_filesystem_mount_table_entry_t);
if ( device )
size += strlen( device ) + 1;
temp_mt_entry = malloc( size );
if ( !temp_mt_entry ) {
errno = ENOMEM;
@@ -109,9 +113,11 @@ int mount(
temp_mt_entry->mt_fs_root.mt_entry = temp_mt_entry;
temp_mt_entry->options = options;
if ( device )
if ( device ) {
temp_mt_entry->dev =
(char *)temp_mt_entry + sizeof( rtems_filesystem_mount_table_entry_t );
strcpy( temp_mt_entry->dev, device );
else
} else
temp_mt_entry->dev = 0;
/*