summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libparted/labels/rdb.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libparted/labels/rdb.c b/libparted/labels/rdb.c
index 7232366..8c77c6e 100644
--- a/libparted/labels/rdb.c
+++ b/libparted/labels/rdb.c
@@ -360,7 +360,11 @@ amiga_alloc (const PedDevice* dev)
}
rdb = disk->disk_specific;
- memset(rdb, 0, sizeof(struct RigidDiskBlock));
+ /* Upon failed assertion this does leak. That's fine, because
+ if the assertion fails, you have bigger problems than this leak. */
+ PED_ASSERT(sizeof(*rdb) <= disk->dev->sector_size, return NULL);
+
+ memset(rdb, 0, disk->dev->sector_size);
rdb->rdb_ID = PED_CPU_TO_BE32 (IDNAME_RIGIDDISK);
rdb->rdb_SummedLongs = PED_CPU_TO_BE32 (64);