From: Eric Andersen Date: Tue, 17 Feb 2004 20:04:34 +0000 (-0000) Subject: Mark Lord writes: X-Git-Tag: 1_00_pre8~37 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=60bb3f31af5b26fdd2e13f82e83c78f0231704f3;p=platform%2Fupstream%2Fbusybox.git 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. --- diff --git a/networking/inetd.c b/networking/inetd.c index eb61299..2906b3c 100644 --- a/networking/inetd.c +++ b/networking/inetd.c @@ -426,7 +426,7 @@ more: sep->se_argv[argc++] = NULL; } - free(cp); + //free(cp); // BUG: cp is the argv[] container; we must not free it here! return (sep); } @@ -589,7 +589,10 @@ static void config(int signum) SWAP(char *, sep->se_argv[i], cp->se_argv[i]); #undef SWAP 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 { sep = (struct servtab *)xmalloc(sizeof (*sep)); *sep = *cp;