chiark / gitweb /
vol_id: probe volume as user nobody
[elogind.git] / extras / volume_id / libvolume_id / mac.c
index 99bcbde6be8ecf34dbecac13f2c9dde309d65e1b..53f0761c8a86300a376db2486312f9b807f488d4 100644 (file)
@@ -84,14 +84,15 @@ int volume_id_probe_mac_partition_map(struct volume_id *id, uint64_t off)
 
                part_count = be32_to_cpu(part->map_count);
                dbg("expecting %d partition entries", part_count);
+               if (part_count < 1 || part_count > 256)
+                       return -1;
 
                if (id->partitions != NULL)
                        free(id->partitions);
-               id->partitions =
-                       malloc(part_count * sizeof(struct volume_id_partition));
+               id->partitions = malloc(part_count * sizeof(struct volume_id_partition));
                if (id->partitions == NULL)
                        return -1;
-               memset(id->partitions, 0x00, sizeof(struct volume_id_partition));
+               memset(id->partitions, 0x00, part_count * sizeof(struct volume_id_partition));
 
                id->partition_count = part_count;