diff options
author | H. Peter Anvin <hpa@zytor.com> | 2009-06-14 14:32:42 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-06-14 14:32:42 -0700 |
commit | 18ca4d8cc87761c6a5ab763069fad562fec69b59 (patch) | |
tree | 0cb9dd50977c230e9e7ef0e0e6274088c13ce613 | |
parent | 38e1c74db64e02152e525c2d5c135cb5793d847e (diff) | |
download | syslinux-18ca4d8cc87761c6a5ab763069fad562fec69b59.tar.gz |
bootsect: zero memory above a chainloaded boot sector/NBP
Windows RIS has been reported to make inappropriate use of data found
in uninitialized memory. To avoid that, clear memory between
a chainloaded boot sector or NBP and Free Base Memory.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | core/bootsect.inc | 13 | ||||
-rw-r--r-- | version | 2 |
3 files changed, 16 insertions, 3 deletions
@@ -2,6 +2,10 @@ Starting with 1.47, changes marked with SYSLINUX, PXELINUX, ISOLINUX or EXTLINUX apply to that specific program only; other changes apply to all derivatives. +Changes in 3.83: + * PXELINUX: clear memory before handing over to a chainloaded + NBP. This may help avoid a bug in Windows RIS. + Changes in 3.82: * isohybrid: fix the -partok logic for loading from a partition. * ISOLINUX: deal with systems which return from INT 13h with diff --git a/core/bootsect.inc b/core/bootsect.inc index b107eb5c..3ea36bf5 100644 --- a/core/bootsect.inc +++ b/core/bootsect.inc @@ -84,11 +84,20 @@ load_bootsec: ; ; replace_bootstrap for the special case where we have exactly one -; descriptor. +; descriptor, based in low memory. We will generate a second descriptor +; to clear remaining FBM. ; replace_bootstrap_one: - push word 1 ; Length of descriptor list + mov eax,[trackbuf] ; Base address + add eax,[trackbuf+8] ; Length + movzx edx,word [BIOS_fbm] + shl edx,10 ; Free Base Memory + sub edx,eax + mov [trackbuf+12],eax + or dword [trackbuf+16],-1 ; Zero memory + mov [trackbuf+20],edx + push word 2 ; Length of descriptor list ; Fall through ; @@ -1 +1 @@ -3.82 2009 +3.83 2009 |