since ARGBEGIN checks to see if argv0 is nil before assignment, old commands can leave argv0 set. since this is an on-stack value, it is likely bogus. fix to prevent crashes. Reference: /n/atom/patch/applied/fossilboguserr Date: Thu Apr 3 05:35:34 CES 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/fossil/Ccli.c Thu Apr 3 05:34:28 2014 +++ /sys/src/cmd/fossil/Ccli.c Thu Apr 3 05:34:29 2014 @@ -33,6 +33,8 @@ return 0; } +extern char *_argv0; + int cliExec(char* buf) { @@ -57,6 +59,7 @@ vtUnlock(cbox.lock); if(!(r = cbox.cmd[i].cmd(argc, argv))) consPrint("%s\n", vtGetError()); + _argv0 = nil; /* evade defn of ARGBEGIN */ vtMemFree(p); return r; } --- /sys/src/cmd/fossil/9fsys.c Thu Apr 3 05:34:33 2014 +++ /sys/src/cmd/fossil/9fsys.c Thu Apr 3 05:34:35 2014 @@ -34,7 +34,7 @@ char* curfsys; } sbox; -static char *_argv0; +char *_argv0; #define argv0 _argv0 static char FsysAll[] = "all";