Blame SOURCES/0066-mac-copy-partition-type-and-name-correctly.patch

7fd79c
From 783e08a4e5f6769f7ebd2f3e43ca4ccfab003e8b Mon Sep 17 00:00:00 2001
7fd79c
From: Sergei Antonov <saproj@gmail.com>
7fd79c
Date: Fri, 3 Jul 2015 00:21:23 +0200
7fd79c
Subject: [PATCH 66/75] mac: copy partition type and name correctly
7fd79c
7fd79c
Use strncpy() instead of strcpy() to copy partition name and type.
7fd79c
This prevents possible buffer overflow, because the source string
7fd79c
occupies up to 33 bytes with a terminating null.
7fd79c
7fd79c
Static analysis tools complain about the code as it is now:
7fd79c
  Function: _generate_raw_part
7fd79c
  Destination buffer too small
7fd79c
  string_overflow: You might overrun the 32 byte destination string
7fd79c
  part_map_entry->type by writing 33 bytes from mac_part_data->system_name
7fd79c
  (Destination buffer too small, line 933)
7fd79c
7fd79c
Cc: Sabas Rosales, Blanca E <blanca.e.sabas.rosales@intel.com>
7fd79c
Signed-off-by: Sergei Antonov <saproj@gmail.com>
7fd79c
Signed-off-by: Brian C. Lane <bcl@brianlane.com>
7fd79c
(cherry picked from commit 282e25e0384e8d1275ccacf904fdaf65f1d4a8af)
7fd79c
---
7fd79c
 libparted/labels/mac.c | 4 ++--
7fd79c
 1 file changed, 2 insertions(+), 2 deletions(-)
7fd79c
7fd79c
diff --git a/libparted/labels/mac.c b/libparted/labels/mac.c
7fd79c
index 1034418..d8da941 100644
7fd79c
--- a/libparted/labels/mac.c
7fd79c
+++ b/libparted/labels/mac.c
7fd79c
@@ -930,8 +930,8 @@ _generate_raw_part (PedDisk* disk, PedPartition* part,
7fd79c
 		= PED_CPU_TO_BE32 (mac_disk_data->last_part_entry_num);
7fd79c
 	part_map_entry->start_block = PED_CPU_TO_BE32 (part->geom.start);
7fd79c
 	part_map_entry->block_count = PED_CPU_TO_BE32 (part->geom.length);
7fd79c
-	strcpy (part_map_entry->name, mac_part_data->volume_name);
7fd79c
-	strcpy (part_map_entry->type, mac_part_data->system_name);
7fd79c
+	strncpy (part_map_entry->name, mac_part_data->volume_name, 32);
7fd79c
+	strncpy (part_map_entry->type, mac_part_data->system_name, 32);
7fd79c
 
7fd79c
 	if (mac_part_data->is_driver) {
7fd79c
 		mac_part_data->boot_region_length = part->geom.length;
7fd79c
-- 
7fd79c
2.9.3
7fd79c