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:
parent
01cdb66987
commit
60bb3f31af
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user