From 9d53df5e55e5b990aed299f74a25c6af30dfb4fe Mon Sep 17 00:00:00 2001 From: hpa Date: Fri, 5 Dec 2003 21:55:41 +0000 Subject: [PATCH] - Avoid a memory location overwritten by RBFG. - Change number of vkernels and characters in pxelinux. --- NEWS | 4 ++++ pxelinux.asm | 15 ++++++++++----- pxelinux.doc | 2 +- syslinux.doc | 4 ++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index ec26f7d..f2fde65 100644 --- a/NEWS +++ b/NEWS @@ -19,6 +19,10 @@ Changes in 2.08: disk. * .c32 is now one of the extensions searched for automatically. + * PXELINUX: RFBG.exe seems to randomly overwrite memory + location 0x5700. Thus, don't use it! + * PXELINUX: Change pathname length max from 63 to 127; change + max vkernels from 128 to 64. Changes in 2.07: * MEMDISK: Workaround for BIOSes which go into a snit when diff --git a/pxelinux.asm b/pxelinux.asm index 8f628a2..d2bfe32 100644 --- a/pxelinux.asm +++ b/pxelinux.asm @@ -30,7 +30,7 @@ ; Some semi-configurable constants... change on your own risk. ; my_id equ pxelinux_id -FILENAME_MAX_LG2 equ 6 ; log2(Max filename size Including final null) +FILENAME_MAX_LG2 equ 7 ; log2(Max filename size Including final null) FILENAME_MAX equ (1 << FILENAME_MAX_LG2) NULLFILE equ 0 ; Zero byte == null file name REBOOT_TIME equ 5*60 ; If failure, time until full reset @@ -93,7 +93,7 @@ TFTP_EOPTNEG equ htons(8) ; Option negotiation failure ; ; Note: this structure can be added to, but it must ; -%define vk_power 7 ; log2(max number of vkernels) +%define vk_power 6 ; log2(max number of vkernels) %define max_vk (1 << vk_power) ; Maximum number of vkernels %define vk_shift (16-vk_power) ; Number of bits to shift %define vk_size (1 << vk_shift) ; Size of a vkernel buffer @@ -204,16 +204,21 @@ xbs_textbuf equ 0 ; Also hard-coded, do not change xbs_vgabuf equ trackbufsize xbs_vgatmpbuf equ 2*trackbufsize - absolute 5000h ; Here we keep our BSS stuff + absolute 4000h ; Here we keep our BSS stuff VKernelBuf: resb vk_size ; "Current" vkernel alignb 4 AppendBuf resb max_cmd_len+1 ; append= Ontimeout resb max_cmd_len+1 ; ontimeout Onerror resb max_cmd_len+1 ; onerror KbdMap resb 256 ; Keyboard map -BootFile resb 256 ; Boot file from DHCP packet PathPrefix resb 256 ; Path prefix derived from the above +BootFile resb 256 ; Boot file from DHCP packet ConfigName resb 256 ; Configuration file from DHCP option + +; Warning here: RBFG build 22 seems to randomly overwrite memory location +; 0x5700. Not sure why yet. Consider that if these are realigned. + + absolute 5800h FKeyName resb 10*FILENAME_MAX ; File names for F-key help NumBuf resb 15 ; Buffer to load number NumBufEnd resb 1 ; Last byte in NumBuf @@ -1239,7 +1244,7 @@ searchdir: .pkt_loop: mov bx,[bp-8] ; TID mov di,packet_buf - mov [pxe_udp_read_pkt.status],byte 0 + mov word [pxe_udp_read_pkt.status],0 mov [pxe_udp_read_pkt.buffer],di mov [pxe_udp_read_pkt.buffer+2],ds mov word [pxe_udp_read_pkt.buffersize],packet_buf_size diff --git a/pxelinux.doc b/pxelinux.doc index d03481a..a2717db 100644 --- a/pxelinux.doc +++ b/pxelinux.doc @@ -56,7 +56,7 @@ search for its config file on the boot server in the following way: It should be noted that all filename references are relative to the directory pxelinux.0 lives in (usually /tftpboot). PXELINUX -generally requires that filenames (including any relative path) are 63 +generally requires that filenames (including any relative path) are 127 characters or shorter in length. PXELINUX does not support MTFTP, and I have no immediate plans of diff --git a/syslinux.doc b/syslinux.doc index e621b50..571d078 100644 --- a/syslinux.doc +++ b/syslinux.doc @@ -161,8 +161,8 @@ LABEL label specified in the global section of the file (before the first LABEL command.) The default for "image" is the same as "label", and if no APPEND is given the default is to use the - global entry (if any). Up to 128 LABEL entries are permitted - (for ISOLINUX, 64 LABEL entries.) + global entry (if any). Up to 64 LABEL entries are permitted + (for SYSLINUX, 128 LABEL entries.) Note that LILO uses the syntax: image = mykernel -- 2.7.4