dereferencing ++argp. I'm surprised that no one, including me,
tripped over this before: whatnow(1) would seg fault when
handling, e.g., detach -n 4. But until I upgraded to Fedora 18,
I never noticed it. (valgrind did.)
int trailln = strlen(trailcmd) + 4;
if (ln < 0 || ln + trailln > bufsz)
adios((char *)0, "arguments too long");
-
+
cp = buf + ln;
-
- while (*++argp != (char *)0) {
+
+ while (*argp && *++argp) {
ln = strlen(*argp);
/* +1 for leading space */
if (ln + trailln + 1 > bufsz - (cp-buf))
/* ensure that $SHELL exists, as the cmd was written relying on
a non-blank $SHELL... */
setenv("SHELL","/bin/sh",0); /* don't overwrite */
-
+
if (getcwd(olddir, sizeof(olddir)) == 0)
adios("getcwd", "could not get working directory");
if (chdir(dir) != 0)