[PATCH] cpukit/libblock/bdpart-register.c: Fix string truncation warning.
Aschref Ben-Thabet
aschref.ben-thabet at embedded-brains.de
Tue Sep 15 09:09:35 UTC 2020
From: Aschref Ben Thabet <aschref.ben-thabet at embedded-brains.de>
Replace strncpy() with memcpy() to guarantee a safe copying of
characters.
---
cpukit/libblock/src/bdpart-mount.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/cpukit/libblock/src/bdpart-mount.c b/cpukit/libblock/src/bdpart-mount.c
index cfc08ead30..dd4c09c59e 100644
--- a/cpukit/libblock/src/bdpart-mount.c
+++ b/cpukit/libblock/src/bdpart-mount.c
@@ -54,7 +54,7 @@ rtems_status_code rtems_bdpart_mount(
if (logical_disk_name == NULL) {
return RTEMS_NO_MEMORY;
}
- strncpy( logical_disk_name, disk_name, disk_name_size);
+ memcpy(logical_disk_name, disk_name, disk_name_size);
/* Get disk file name */
if (disk_file_name != NULL) {
@@ -71,9 +71,8 @@ rtems_status_code rtems_bdpart_mount(
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
- strncpy( mount_point, mount_base, mount_base_size);
- mount_point [mount_base_size] = '/';
- strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
+ memcpy(mount_point, mount_base, mount_base_size);
+ memcpy(mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
/* Markers */
logical_disk_marker = logical_disk_name + disk_name_size;
@@ -89,7 +88,7 @@ rtems_status_code rtems_bdpart_mount(
}
/* Create mount point */
- strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
+ memcpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);
if (rv != 0) {
esc = RTEMS_IO_ERROR;
@@ -148,9 +147,8 @@ rtems_status_code rtems_bdpart_unmount(
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
- strncpy( mount_point, mount_base, mount_base_size);
- mount_point [mount_base_size] = '/';
- strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
+ memcpy(mount_point, mount_base, mount_base_size);
+ memcpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
/* Marker */
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
--
2.26.2
More information about the devel
mailing list