[syslinux] "UI" keyword, pc_default and getline

Sebastian Herbszt herbszt at gmx.de
Sat Jan 31 11:45:20 PST 2009


There is a problem with "pc_default" if the following is present in the config file (line order does matter):

UI gfxboot.com init
DEFAULT memtest

"pc_default" is called on the "DEFAULT" keyword, but "getline" is skipped, so the code now tries to
parse the keywords parameter. The config line should be skipped in this case.

This could be fixed by converting "skipline" to a function and calling it from "pc_default".

- Sebastian

diff --git a/core/parsecmd.inc b/core/parsecmd.inc
index edca0b7..27e115f 100644
--- a/core/parsecmd.inc
+++ b/core/parsecmd.inc
@@ -97,12 +97,18 @@ getcommand:
 .eof:          stc
                ret

-.skipline:     cmp al,10               ; Search for LF
+.skipline:     call skipline
                je .find
-               call getc
                jc .eof
                jmp short .skipline

+skipline:      cmp al,10               ; Search for LF
+               je .end
+               call getc
+               jc .end
+               jmp short skipline
+.end:          ret
+
                section .data
 err_badcfg      db 'Unknown keyword in configuration file: ',0
 err_noparm      db 'Missing parameter in configuration file. Keyword: ',0
diff --git a/core/parseconfig.inc b/core/parseconfig.inc
index fcf18d9..57ee5a5 100644
--- a/core/parseconfig.inc
+++ b/core/parseconfig.inc
@@ -26,7 +26,9 @@ pc_default:   cmp ax,[DefaultLevel]
                mov di,default_cmd
                call getline
                mov byte [di-1],0               ; null-terminate
-.skip:         ret
+               ret
+.skip:         call skipline
+               ret

 ;
 ; "ontimeout" command




More information about the Syslinux mailing list