[syslinux:pathbased] syslinux: fix sector arrays
syslinux-bot for Alek Du
alek.du at intel.com
Thu May 20 20:39:02 PDT 2010
Commit-ID: 38eb0724824139a81342e3f676910187bc57ba9d
Gitweb: http://syslinux.zytor.com/commit/38eb0724824139a81342e3f676910187bc57ba9d
Author: Alek Du <alek.du at intel.com>
AuthorDate: Thu, 20 May 2010 18:24:35 +0800
Committer: H. Peter Anvin <hpa at zytor.com>
CommitDate: Thu, 20 May 2010 19:57:44 -0700
syslinux: fix sector arrays
The first sector ptr is in bs->NextSector not in the array in
the patch_area. And actually the ADV sectors counting is wrong for a
while ...
Signed-off-by: Alek Du <alek.du at intel.com>
Signed-off-by: H. Peter Anvin <hpa at zytor.com>
---
core/adv.inc | 4 ++--
extlinux/main.c | 2 +-
libinstaller/syslxmod.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/core/adv.inc b/core/adv.inc
index 2dc1633..6725261 100644
--- a/core/adv.inc
+++ b/core/adv.inc
@@ -77,8 +77,8 @@ adv_init:
mov bx,[DataSectors]
shl bx,2
mov ecx,[bsHidden]
- mov eax,[bx+SectorPtrs] ; First ADV sector
- mov edx,[bx+SectorPtrs+4] ; Second ADV sector
+ mov eax,[bx+SectorPtrs-4]; First ADV sector
+ mov edx,[bx+SectorPtrs] ; Second ADV sector
add eax,ecx
add edx,ecx
mov [ADVSec0],eax
diff --git a/extlinux/main.c b/extlinux/main.c
index dea2d19..6bf6872 100644
--- a/extlinux/main.c
+++ b/extlinux/main.c
@@ -561,7 +561,7 @@ int patch_file_and_bootblock(int fd, const char *dir, int devfd)
nptrs = get_16(&patcharea->secptrcnt);
memset(wp, 0, nptrs * 4);
- while (nsect--)
+ while (--nsect) /* the first sector in bs->NextSector */
set_32(wp++, *sectp++);
/* Poke in the base directory path */
diff --git a/libinstaller/syslxmod.c b/libinstaller/syslxmod.c
index e18d8a6..be06b9a 100644
--- a/libinstaller/syslxmod.c
+++ b/libinstaller/syslxmod.c
@@ -269,7 +269,7 @@ int syslinux_patch(const uint32_t * sectors, int nsectors,
get_16_sl(&patcharea->secptroffset));
nptrs = get_16_sl(&patcharea->secptrcnt);
- while (nsect--) {
+ while (--nsect) { /* the first sector is in bs->NextSector */
set_32_sl(wp++, *sectors++);
nptrs--;
}
More information about the Syslinux-commits
mailing list