From 18ca4d8cc87761c6a5ab763069fad562fec69b59 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Sun, 14 Jun 2009 14:32:42 -0700 Subject: 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 --- NEWS | 4 ++++ core/bootsect.inc | 13 +++++++++++-- version | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 5a18525b..2ab59465 100644 --- a/NEWS +++ b/NEWS @@ -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 ; diff --git a/version b/version index 2fc94187..f2649fb3 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.82 2009 +3.83 2009 -- cgit v1.2.1