[LEDE-DEV] [PATCH] procd: get rid of putenv usage.

Rosen Penev rosenp at gmail.com
Tue Jan 23 12:33:57 PST 2018


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 at 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 at 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
>



More information about the Lede-dev mailing list