summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2007-11-17 16:02:49 -0800
committerH. Peter Anvin <hpa@zytor.com>2007-11-17 16:02:49 -0800
commit985cf28934f31f179bea64e1badb644007e6dec7 (patch)
tree2052cd7b0c6eca9713a098a1ac50cda712f3ebbb
parent2c2fed8305e2cf52c27d8a5c1fd5b5982f541711 (diff)
downloadsyslinux-985cf28934f31f179bea64e1badb644007e6dec7.tar.gz
Fix invalid segment assumption in pxelinuxsyslinux-3.53-pre6
Fix an invalid segment assumption in pxelinux, which caused the "naked ::" not to work correctly.
-rw-r--r--dnsresolv.inc4
-rw-r--r--pxelinux.asm14
2 files changed, 12 insertions, 6 deletions
diff --git a/dnsresolv.inc b/dnsresolv.inc
index 4fe2040a..a8f7dbd2 100644
--- a/dnsresolv.inc
+++ b/dnsresolv.inc
@@ -182,7 +182,9 @@ LastDNSServer dw DNSServers
; Points to a null-terminated or :-terminated string in DS:SI
; and returns the name in EAX if it exists and can be found.
; If EAX = 0 on exit, the lookup failed.
-
+;
+; No segment assumptions permitted.
+;
section .text
dns_resolv:
push ds
diff --git a/pxelinux.asm b/pxelinux.asm
index fbfc1a47..3ce89b03 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -1382,11 +1382,13 @@ free_socket:
;
; parse_dotquad:
-; Read a dot-quad pathname in DS:SI and output an IP
-; address in EAX, with SI pointing to the first
-; nonmatching character.
+; Read a dot-quad pathname in DS:SI and output an IP
+; address in EAX, with SI pointing to the first
+; nonmatching character.
;
-; Return CF=1 on error.
+; Return CF=1 on error.
+;
+; No segment assumptions permitted.
;
parse_dotquad:
push cx
@@ -1436,10 +1438,12 @@ parse_dotquad:
; The first four bytes of the manged name is the IP address of
; the download host.
;
+; No segment assumptions permitted.
+;
mangle_name:
push di
push si
- mov eax,[ServerIP]
+ mov eax,[cs:ServerIP]
cmp byte [si],0
je .noip ; Null filename?!?!
cmp word [si],'::' ; Leading ::?