[parted-devel] [PATCH] mac: copy partition type and name correctly
Sergei Antonov
saproj at gmail.com
Thu Jul 2 22:21:23 UTC 2015
Use strncpy() instead of strcpy() to copy partition name and type.
This prevents possible buffer overflow, because the source string
occupies up to 33 bytes with a terminating null.
Static analysis tools complain about the code as it is now:
Function: _generate_raw_part
Destination buffer too small
string_overflow: You might overrun the 32 byte destination string
part_map_entry->type by writing 33 bytes from mac_part_data->system_name
(Destination buffer too small, line 933)
Cc: Sabas Rosales, Blanca E <blanca.e.sabas.rosales at intel.com>
Signed-off-by: Sergei Antonov <saproj at gmail.com>
---
libparted/labels/mac.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libparted/labels/mac.c b/libparted/labels/mac.c
index 1034418..d8da941 100644
--- a/libparted/labels/mac.c
+++ b/libparted/labels/mac.c
@@ -930,8 +930,8 @@ _generate_raw_part (PedDisk* disk, PedPartition* part,
= PED_CPU_TO_BE32 (mac_disk_data->last_part_entry_num);
part_map_entry->start_block = PED_CPU_TO_BE32 (part->geom.start);
part_map_entry->block_count = PED_CPU_TO_BE32 (part->geom.length);
- strcpy (part_map_entry->name, mac_part_data->volume_name);
- strcpy (part_map_entry->type, mac_part_data->system_name);
+ strncpy (part_map_entry->name, mac_part_data->volume_name, 32);
+ strncpy (part_map_entry->type, mac_part_data->system_name, 32);
if (mac_part_data->is_driver) {
mac_part_data->boot_region_length = part->geom.length;
--
2.3.0
More information about the parted-devel
mailing list