Message ID | 1516739452-24505-1-git-send-email-rosenp@gmail.com |
---|---|
State | Accepted |
Delegated to: | John Crispin |
Headers | show |
Series | [LEDE-DEV] procd: get rid of putenv usage. | expand |
I just realized the original code leaks memory. ld_preload was not freed. On Tue, Jan 23, 2018 at 12:30 PM, Rosen Penev <rosenp@gmail.com> wrote: > setenv is prefered according to POSIX. Also allows staticly allocated strings. > > Saves 200 bytes when stripped. 432 without. > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > --- > service/instance.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/service/instance.c b/service/instance.c > index 12c2efe..ecbb6ea 100644 > --- a/service/instance.c > +++ b/service/instance.c > @@ -279,7 +279,6 @@ instance_run(struct service_instance *in, int _stdout, int _stderr) > struct blobmsg_list_node *var; > struct blob_attr *cur; > char **argv; > - char *ld_preload; > int argc = 1; /* NULL terminated */ > int rem, _stdin; > bool seccomp = !in->trace && !in->has_jail && in->seccomp; > @@ -297,8 +296,8 @@ instance_run(struct service_instance *in, int _stdout, int _stderr) > if (seccomp) > setenv("SECCOMP_FILE", in->seccomp, 1); > > - if (setlbf && asprintf(&ld_preload, "LD_PRELOAD=/lib/libsetlbf.so") > 0) > - putenv(ld_preload); > + if (setlbf) > + setenv("LD_PRELOAD", "/lib/libsetlbf.so", 1); > > blobmsg_list_for_each(&in->limits, var) > instance_limits(blobmsg_name(var->data), blobmsg_data(var->data)); > -- > 2.7.4 >
diff --git a/service/instance.c b/service/instance.c index 12c2efe..ecbb6ea 100644 --- a/service/instance.c +++ b/service/instance.c @@ -279,7 +279,6 @@ instance_run(struct service_instance *in, int _stdout, int _stderr) struct blobmsg_list_node *var; struct blob_attr *cur; char **argv; - char *ld_preload; int argc = 1; /* NULL terminated */ int rem, _stdin; bool seccomp = !in->trace && !in->has_jail && in->seccomp; @@ -297,8 +296,8 @@ instance_run(struct service_instance *in, int _stdout, int _stderr) if (seccomp) setenv("SECCOMP_FILE", in->seccomp, 1); - if (setlbf && asprintf(&ld_preload, "LD_PRELOAD=/lib/libsetlbf.so") > 0) - putenv(ld_preload); + if (setlbf) + setenv("LD_PRELOAD", "/lib/libsetlbf.so", 1); blobmsg_list_for_each(&in->limits, var) instance_limits(blobmsg_name(var->data), blobmsg_data(var->data));
setenv is prefered according to POSIX. Also allows staticly allocated strings. Saves 200 bytes when stripped. 432 without. Signed-off-by: Rosen Penev <rosenp@gmail.com> --- service/instance.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)