summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2022-03-23 14:19:23 +0100
committer Olivier Galibert <galibert@pobox.com>2022-03-23 14:19:44 +0100
commit01b611a51ffd4f7422e84ee764d1c05581cd41e1 (patch)
tree2119cbf8b284f4b9464d98d0c45069e2e391bef5
parent4b3dcdbcc15e8792b34b1108bbf44a226479f807 (diff)
floppy formats: correct sector extraction in wd/upd when extracted sector is smaller than expected
-rw-r--r--src/lib/formats/upd765_dsk.cpp2
-rw-r--r--src/lib/formats/wd177x_dsk.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/formats/upd765_dsk.cpp b/src/lib/formats/upd765_dsk.cpp
index 7c82e9b769a..630bd3da172 100644
--- a/src/lib/formats/upd765_dsk.cpp
+++ b/src/lib/formats/upd765_dsk.cpp
@@ -436,7 +436,7 @@ void upd765_format::extract_sectors(floppy_image *image, const format &f, desc_s
else if(sectors[ds.sector_id].size() < ds.size) {
memcpy((void *)ds.data, sectors[ds.sector_id].data(), sectors[ds.sector_id].size());
- memset((uint8_t *)ds.data + sectors[ds.sector_id].size(), 0, sectors[ds.sector_id].size() - ds.size);
+ memset((uint8_t *)ds.data + sectors[ds.sector_id].size(), 0, ds.size - sectors[ds.sector_id].size());
} else
memcpy((void *)ds.data, sectors[ds.sector_id].data(), ds.size);
diff --git a/src/lib/formats/wd177x_dsk.cpp b/src/lib/formats/wd177x_dsk.cpp
index 5675e3bd5aa..eab69bb5a15 100644
--- a/src/lib/formats/wd177x_dsk.cpp
+++ b/src/lib/formats/wd177x_dsk.cpp
@@ -527,7 +527,7 @@ void wd177x_format::extract_sectors(floppy_image *image, const format &f, desc_s
else if(sectors[ds.sector_id].size() < ds.size) {
memcpy((void *)ds.data, sectors[ds.sector_id].data(), sectors[ds.sector_id].size());
- memset((uint8_t *)ds.data + sectors[ds.sector_id].size(), 0, sectors[ds.sector_id].size() - ds.size);
+ memset((uint8_t *)ds.data + sectors[ds.sector_id].size(), 0, ds.size - sectors[ds.sector_id].size());
} else
memcpy((void *)ds.data, sectors[ds.sector_id].data(), ds.size);