diff options
Diffstat (limited to 'libblkid/src')
-rw-r--r-- | libblkid/src/superblocks/hfs.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libblkid/src/superblocks/hfs.c b/libblkid/src/superblocks/hfs.c index ef746d4e2..c2344114a 100644 --- a/libblkid/src/superblocks/hfs.c +++ b/libblkid/src/superblocks/hfs.c @@ -244,6 +244,7 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag) leaf_node_head = be32_to_cpu(bnode->leaf_head); leaf_node_size = be16_to_cpu(bnode->node_size); leaf_node_count = be32_to_cpu(bnode->leaf_count); + if (leaf_node_size < sizeof(struct hfsplus_bnode_descriptor) + sizeof(struct hfsplus_catalog_key) || leaf_node_count == 0) return 0; @@ -286,7 +287,7 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag) &buf[sizeof(struct hfsplus_bnode_descriptor)]; if (be32_to_cpu(key->parent_id) != HFSPLUS_POR_CNID || - be16_to_cpu(key->unicode_len > 255)) + be16_to_cpu(key->unicode_len) > 255) return 0; blkid_probe_set_utf8label(pr, key->unicode, |