small but potentially deadly ....

diff -c /n/dump/2014/0402/sys/src/cmd/fossil/9fsys.c 9fsys.c
/n/dump/2014/0402/sys/src/cmd/fossil/9fsys.c:34,40 - 9fsys.c:34,40
        char*   curfsys;
  } sbox;
  
- static char *_argv0;
+ char *_argv0;
  #define argv0 _argv0
  
  static char FsysAll[] = "all";
diff -c /n/dump/2014/0402/sys/src/cmd/fossil/Ccli.c Ccli.c
/n/dump/2014/0402/sys/src/cmd/fossil/Ccli.c:33,38 - Ccli.c:33,40
        return 0;
  }
  
+ extern char *_argv0;
+ 
  int
  cliExec(char* buf)
  {
/n/dump/2014/0402/sys/src/cmd/fossil/Ccli.c:57,62 - Ccli.c:59,65
                        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;
                }

Reply via email to