summaryrefslogtreecommitdiff
path: root/libparted/labels/rdb.c
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2007-12-21 15:39:09 +0100
committerJim Meyering <meyering@redhat.com>2009-07-24 15:04:40 +0200
commit5f8bd453cbc2430e346cc40575029f36e2be50dc (patch)
treea8163f1b16df32d9556b0e5fb1395f876b58a19d /libparted/labels/rdb.c
parentfff559b4e987d9404a788a817630c394af89db48 (diff)
downloadparted-5f8bd453cbc2430e346cc40575029f36e2be50dc.tar.gz
amiga: Avoid writing uninitialized 1.5KB after initial 512B.
Diffstat (limited to 'libparted/labels/rdb.c')
-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);