[syslinux] [PATCH] com32: write_sectors fixes

路尧 luyao-c at 360.cn
Fri Aug 7 06:57:10 PDT 2015


Based on syslinux 6.03

Memory allocation and copy length should be SECTOR * size for sectors operation.

Signed-off-by: Robert <luyao-c at 360.cn>

diff --git a/com32/gpllib/disk/write.c b/com32/gpllib/disk/write.c
index d183ade..3c9edff 100644
--- a/com32/gpllib/disk/write.c
+++ b/com32/gpllib/disk/write.c
@@ -40,7 +40,7 @@ int write_sectors(const struct driveinfo *drive_info, const unsigned int lba,
     void *buf;
     int rv = -1;
 
-    buf = lmalloc(size);
+    buf = lmalloc(SECTOR * size);
     if (!buf)
 	return -1;
 
@@ -48,7 +48,7 @@ int write_sectors(const struct driveinfo *drive_info, const unsigned int lba,
     if (!dapa)
 	goto out;
 
-    memcpy(buf, data, size);
+    memcpy(buf, data, SECTOR * size);
     memset(&inreg, 0, sizeof inreg);
 
     if (drive_info->ebios) {
@@ -123,7 +123,7 @@ int write_verify_sectors(struct driveinfo *drive_info,
 			 const unsigned int lba,
 			 const void *data, const int size)
 {
-    char *rb = malloc(SECTOR * size * sizeof(char));
+    char *rb = malloc(SECTOR * size);
     int status;
 
     if (write_sectors(drive_info, lba, data, size) == -1)




More information about the Syslinux mailing list