memdisk: Correct El Torito termination response
authorShao Miller <shao.miller@yrdsb.edu.on.ca>
Tue, 15 Jun 2010 03:36:34 +0000 (23:36 -0400)
committerShao Miller <shao.miller@yrdsb.edu.on.ca>
Tue, 15 Jun 2010 04:48:50 +0000 (00:48 -0400)
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 <shao.miller@yrdsb.edu.on.ca>
memdisk/memdisk.inc

index 90e6ef9..91040ba 100644 (file)
@@ -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