aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-06-24 05:00:50 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-06-24 05:00:50 +0200
commitdd8adde3866ac22bd510348b733bb29e1662ac6d (patch)
tree2408903bb476f50821ed5edbe5b13abafe4a5439
parentda75f4484469ca0122b80de69bf3b75a6be71efc (diff)
downloadbusybox-w32-dd8adde3866ac22bd510348b733bb29e1662ac6d.tar.gz
busybox-w32-dd8adde3866ac22bd510348b733bb29e1662ac6d.tar.bz2
busybox-w32-dd8adde3866ac22bd510348b733bb29e1662ac6d.zip
*: introduce and use bb_unsetenv_and_free
function old new delta bb_unsetenv_and_free - 17 +17 tcpudpsvd_main 1819 1810 -9 safe_setenv 58 47 -11 udhcp_run_script 630 616 -14 make_device 1683 1663 -20 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/4 up/down: 17/-54) Total: -37 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--include/libbb.h1
-rw-r--r--libbb/xfuncs_printf.c5
-rw-r--r--miscutils/crond.c3
-rw-r--r--networking/tcpudp.c3
-rw-r--r--networking/udhcp/dhcpc.c3
-rw-r--r--util-linux/mdev.c6
6 files changed, 11 insertions, 10 deletions
diff --git a/include/libbb.h b/include/libbb.h
index 5e962fdb6..58719a85b 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -408,6 +408,7 @@ void xchdir(const char *path) FAST_FUNC;
408void xchroot(const char *path) FAST_FUNC; 408void xchroot(const char *path) FAST_FUNC;
409void xsetenv(const char *key, const char *value) FAST_FUNC; 409void xsetenv(const char *key, const char *value) FAST_FUNC;
410void bb_unsetenv(const char *key) FAST_FUNC; 410void bb_unsetenv(const char *key) FAST_FUNC;
411void bb_unsetenv_and_free(char *key) FAST_FUNC;
411void xunlink(const char *pathname) FAST_FUNC; 412void xunlink(const char *pathname) FAST_FUNC;
412void xstat(const char *pathname, struct stat *buf) FAST_FUNC; 413void xstat(const char *pathname, struct stat *buf) FAST_FUNC;
413int xopen(const char *pathname, int flags) FAST_FUNC; 414int xopen(const char *pathname, int flags) FAST_FUNC;
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c
index 03aeaaa38..f021493b1 100644
--- a/libbb/xfuncs_printf.c
+++ b/libbb/xfuncs_printf.c
@@ -323,6 +323,11 @@ void FAST_FUNC bb_unsetenv(const char *var)
323 free(tp); 323 free(tp);
324} 324}
325 325
326void FAST_FUNC bb_unsetenv_and_free(char *var)
327{
328 bb_unsetenv(var);
329 free(var);
330}
326 331
327// Die with an error message if we can't set gid. (Because resource limits may 332// Die with an error message if we can't set gid. (Because resource limits may
328// limit this user to a given number of processes, and if that fills up the 333// limit this user to a given number of processes, and if that fills up the
diff --git a/miscutils/crond.c b/miscutils/crond.c
index f51159233..4a3103cb9 100644
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -264,8 +264,7 @@ static void safe_setenv(char **pvar_val, const char *var, const char *val)
264 char *var_val = *pvar_val; 264 char *var_val = *pvar_val;
265 265
266 if (var_val) { 266 if (var_val) {
267 bb_unsetenv(var_val); 267 bb_unsetenv_and_free(var_val);
268 free(var_val);
269 } 268 }
270 *pvar_val = xasprintf("%s=%s", var, val); 269 *pvar_val = xasprintf("%s=%s", var, val);
271 putenv(*pvar_val); 270 putenv(*pvar_val);
diff --git a/networking/tcpudp.c b/networking/tcpudp.c
index 42845df0e..b32fad624 100644
--- a/networking/tcpudp.c
+++ b/networking/tcpudp.c
@@ -85,8 +85,7 @@ static void undo_xsetenv(void)
85 char **pp = env_cur = &env_var[0]; 85 char **pp = env_cur = &env_var[0];
86 while (*pp) { 86 while (*pp) {
87 char *var = *pp; 87 char *var = *pp;
88 bb_unsetenv(var); 88 bb_unsetenv_and_free(var);
89 free(var);
90 *pp++ = NULL; 89 *pp++ = NULL;
91 } 90 }
92} 91}
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index c2b21c695..de1b79844 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -327,8 +327,7 @@ static void udhcp_run_script(struct dhcp_packet *packet, const char *name)
327 327
328 for (curr = envp; *curr; curr++) { 328 for (curr = envp; *curr; curr++) {
329 log2(" %s", *curr); 329 log2(" %s", *curr);
330 bb_unsetenv(*curr); 330 bb_unsetenv_and_free(*curr);
331 free(*curr);
332 } 331 }
333 free(envp); 332 free(envp);
334} 333}
diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index 217075660..b4042c07e 100644
--- a/util-linux/mdev.c
+++ b/util-linux/mdev.c
@@ -374,10 +374,8 @@ static void make_device(char *path, int delete)
374 putenv(s1); 374 putenv(s1);
375 if (system(command) == -1) 375 if (system(command) == -1)
376 bb_perror_msg("can't run '%s'", command); 376 bb_perror_msg("can't run '%s'", command);
377 unsetenv("SUBSYSTEM"); 377 bb_unsetenv_and_free(s1);
378 free(s1); 378 bb_unsetenv_and_free(s);
379 unsetenv("MDEV");
380 free(s);
381 free(command); 379 free(command);
382 } 380 }
383 381