From 38792ac66a4d4285a06ba8b6ee5b866792f536f4 Mon Sep 17 00:00:00 2001 From: Shao Miller Date: Mon, 14 Jun 2010 23:36:34 -0400 Subject: [PATCH] memdisk: Correct El Torito termination response Two changes to the INT 0x13, AH=0x7B El Torito function: 1. Support the DL=0x7F "terminate all" parameter 2. Only respond to DL=0x7F or DL=our particular emulated drive number This prevents tools like Bart Lagerweij's El Torito tools from receiving false positives when probing all drive numbers. Signed-off-by: Shao Miller --- memdisk/memdisk.inc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/memdisk/memdisk.inc b/memdisk/memdisk.inc index 90e6ef9..91040ba 100644 --- a/memdisk/memdisk.inc +++ b/memdisk/memdisk.inc @@ -616,7 +616,12 @@ ElToritoTerminate: mov ax,[cs:SavedAX] cmp al,1 ; We only support query, not terminate jne ElToritoErr ; Fail - mov es,P_DS ; Caller's DS:SI pointed to packet + cmp dl,7fh ; Terminate all? + je .doit + cmp dl,[cs:DriveNo] ; Terminate our drive? + je .doit + jmp ElToritoErr ; Fail +.doit: mov es,P_DS ; Caller's DS:SI pointed to packet mov di,P_SI ; We'll use ES:DI mov si,CD_PKT.size ; First byte is packet size xor cx,0 ; Empty our count -- 2.7.4