Mark Lord writes:

The config file processing for inetd in busybox-1.00-pre7 and newer
is broken -- the saved command argv[] values overwrite each other.

Patch to fix it is attached.

Cheers
--
Mark Lord
Real-Time Remedies Inc.
This commit is contained in:
Eric Andersen 2004-02-17 20:04:34 +00:00
parent 01cdb66987
commit 60bb3f31af

View File

@ -426,7 +426,7 @@ more:
sep->se_argv[argc++] = NULL; sep->se_argv[argc++] = NULL;
} }
free(cp); //free(cp); // BUG: cp is the argv[] container; we must not free it here!
return (sep); return (sep);
} }
@ -589,7 +589,10 @@ static void config(int signum)
SWAP(char *, sep->se_argv[i], cp->se_argv[i]); SWAP(char *, sep->se_argv[i], cp->se_argv[i]);
#undef SWAP #undef SWAP
sigprocmask(SIG_SETMASK, &oldmask, NULL); sigprocmask(SIG_SETMASK, &oldmask, NULL);
freeconfig(cp); // This freeconfig() is probably a bug, since it will try and free()
// each of the argv[] values, which are really just pointers
// into the middle of a single line buffer for the config file.
//freeconfig(cp); // BUG?
} else { } else {
sep = (struct servtab *)xmalloc(sizeof (*sep)); sep = (struct servtab *)xmalloc(sizeof (*sep));
*sep = *cp; *sep = *cp;