[syslinux] ldlinux: CurrentDir not set if syslinux.cfg is missing

Sebastian Herbszt herbszt at gmx.de
Tue Jun 17 12:51:12 PDT 2008


If a syslinux floppy does not contain a config file (syslinux.cfg) modules are
not being found unless specified with a directory prefix (e.g. /pcitest.c32).
The reason is that CurrentDir is only set if there is a config file present. This is a
possible regression since commit 68eefb79e2cbb590ebf958dd0c50ce00b941abd2.
Before this change RootDir was used in searchdir and now it's CurrentDir unless
the filename starts with '/'. Possible fix is to set CurrentDir to RootDir if no config
file is found.

- Sebastian

--- core/ldlinux.asm.orig 2008-06-17 19:25:35.000000000 +0200
+++ core/ldlinux.asm 2008-06-17 19:36:13.000000000 +0200
@@ -909,6 +909,8 @@
   jnz .config_open
   mov di,syslinux_cfg3
   call open
+  mov eax,[RootDir] ; Make the root directory ...
+  mov [CurrentDir],eax ; ... the current directory
   jz no_config_file
 .config_open:
   mov eax,[PrevDir] ; Make the directory with syslinux.cfg ...




More information about the Syslinux mailing list