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 /core | |
parent | 38e1c74db64e02152e525c2d5c135cb5793d847e (diff) | |
download | syslinux.git-18ca4d8cc87761c6a5ab763069fad562fec69b59.tar.gz syslinux.git-18ca4d8cc87761c6a5ab763069fad562fec69b59.tar.xz syslinux.git-18ca4d8cc87761c6a5ab763069fad562fec69b59.zip |
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>
Diffstat (limited to 'core')
-rw-r--r-- | core/bootsect.inc | 13 |
1 files changed, 11 insertions, 2 deletions
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 ; |