summaryrefslogtreecommitdiffstats
path: root/libblkid
diff options
context:
space:
mode:
authorVaclav Dolezal2018-01-24 13:52:49 +0100
committerVaclav Dolezal2018-01-24 14:40:21 +0100
commit568419b1aa6d3c59c9e55579f18e8c8920337378 (patch)
tree76a6619124e3ad37a5be4f415af3e244192991ae /libblkid
parentlibblkid: atari - test if any partition fits disk size (diff)
downloadkernel-qcow2-util-linux-568419b1aa6d3c59c9e55579f18e8c8920337378.tar.gz
kernel-qcow2-util-linux-568419b1aa6d3c59c9e55579f18e8c8920337378.tar.xz
kernel-qcow2-util-linux-568419b1aa6d3c59c9e55579f18e8c8920337378.zip
libblkid: atari - don't add duplicate entries
This should protect against looped XGMs. Signed-off-by: Vaclav Dolezal <vdolezal@redhat.com>
Diffstat (limited to 'libblkid')
-rw-r--r--libblkid/src/partitions/atari.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libblkid/src/partitions/atari.c b/libblkid/src/partitions/atari.c
index 1ec17d486..432df2025 100644
--- a/libblkid/src/partitions/atari.c
+++ b/libblkid/src/partitions/atari.c
@@ -107,6 +107,13 @@ static int parse_partition(blkid_partlist ls, blkid_parttable tab,
start = be32_to_cpu(part->start) + offset;
size = be32_to_cpu(part->size);
+ if (blkid_partlist_get_partition_by_start(ls, start)) {
+ /* Don't increment partno for extended parts */
+ if (!offset)
+ blkid_partlist_increment_partno(ls);
+ return 0;
+ }
+
par = blkid_partlist_add_partition(ls, tab, start, size);
if (!par)
return -ENOMEM;
@@ -151,7 +158,7 @@ static int parse_extended(blkid_probe pr, blkid_partlist ls,
return 0;
rc = parse_partition(ls, tab, &xrs->part[i], xstart);
- if (rc < 0)
+ if (rc <= 0)
return rc;
if (!IS_ACTIVE(xrs->part[i+1]))