chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vol_id: probe volume as user nobody
[elogind.git]
/
extras
/
volume_id
/
libvolume_id
/
mac.c
diff --git
a/extras/volume_id/libvolume_id/mac.c
b/extras/volume_id/libvolume_id/mac.c
index 99bcbde6be8ecf34dbecac13f2c9dde309d65e1b..53f0761c8a86300a376db2486312f9b807f488d4 100644
(file)
--- a/
extras/volume_id/libvolume_id/mac.c
+++ b/
extras/volume_id/libvolume_id/mac.c
@@
-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);
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);
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;
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;
id->partition_count = part_count;