path: root/memdisk
diff options
authorShao Miller <shao.miller@yrdsb.edu.on.ca>2010-06-14 23:36:34 -0400
committerShao Miller <shao.miller@yrdsb.edu.on.ca>2010-06-15 00:48:50 -0400
commit38792ac66a4d4285a06ba8b6ee5b866792f536f4 (patch)
tree939c7bbf7124c2326dd558694f59e6fed6dce66f /memdisk
parent62ac3a7710b846c66a190156a11b7170015e7afb (diff)
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 <shao.miller@yrdsb.edu.on.ca>
Diffstat (limited to 'memdisk')
1 files changed, 6 insertions, 1 deletions
diff --git a/memdisk/memdisk.inc b/memdisk/memdisk.inc
index 90e6ef9f..91040bad 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