aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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