From: H. Peter Anvin Date: Fri, 8 Jun 2007 22:30:22 +0000 (-0700) Subject: Capture the UUID from packet 1 (request) X-Git-Tag: syslinux-3.50-pre22^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e710751ff60647432123dbfe823f9692b8669765;p=profile%2Fivi%2Fsyslinux.git Capture the UUID from packet 1 (request) Make sure we capture only the first instance of the UUID, in case the server does something silly like send back its own UUID. --- diff --git a/pxelinux.asm b/pxelinux.asm index 8003f89..ef4bf50 100644 --- a/pxelinux.asm +++ b/pxelinux.asm @@ -231,8 +231,10 @@ MAC resb MAC_MAX+1 ; Actual MAC address BOOTIFStr resb 7 ; Space for "BOOTIF=" MACStr resb 3*(MAC_MAX+1) ; MAC address as a string -; One byte extra since dhcp_copyoption zero-terminates -UUID resb 16+1 ; UUID, from the PXE stack +; The relative position of these fields matter! +UUIDType resb 1 ; Type byte from DHCP option +UUID resb 16 ; UUID, from the PXE stack +UUIDNull resb 1 ; dhcp_copyoption zero-terminates ; ; PXE packets which don't need static initialization @@ -2279,12 +2281,11 @@ dopt_%2: dopt 97, uuid_client_identifier cmp ax,17 ; type byte + 16 bytes UUID jne .skip - cmp [si],ah ; type 0 == UUID - jne .skip - inc si - dec ax + mov dl,[si] ; Must have type 0 == UUID + or dl,[HaveUUID] ; Capture only the first instance + jnz .skip mov byte [HaveUUID],1 ; Got UUID - mov di,UUID + mov di,UUIDType jmp dhcp_copyoption .skip: ret