[lxc-devel] [PATCH v2] don't truncate environment sometimes in setproctitle
Serge Hallyn
serge.hallyn at ubuntu.com
Mon Nov 16 22:00:27 UTC 2015
Quoting Tycho Andersen (tycho.andersen at canonical.com):
> Instead, let's just allocate new space for the proctitle to live and point
> the kernel at that.
>
> v2: take out testing hunk
>
> Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
Sorry, one thing, please check that realloc hasn't failed.
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/utils.c | 29 +++++++++--------------------
> 1 file changed, 9 insertions(+), 20 deletions(-)
>
> diff --git a/src/lxc/utils.c b/src/lxc/utils.c
> index dac6418..a5ec2ec 100644
> --- a/src/lxc/utils.c
> +++ b/src/lxc/utils.c
> @@ -1349,6 +1349,7 @@ char *get_template_path(const char *t)
> */
> int setproctitle(char *title)
> {
> + static char *proctitle = NULL;
> char buf[2048], *tmp;
> FILE *f;
> int i, len, ret = 0;
> @@ -1413,28 +1414,16 @@ int setproctitle(char *title)
> * want to have room for it. */
> len = strlen(title) + 1;
>
> - /* We're truncating the environment, so we should use at most the
> - * length of the argument + environment for the title. */
> - if (len > env_end - arg_start) {
> - arg_end = env_end;
> - len = env_end - arg_start;
> - title[len-1] = '\0';
> - } else {
> - /* Only truncate the environment if we're actually going to
> - * overwrite part of it. */
> - if (len >= arg_end - arg_start) {
> - env_start = env_end;
> - }
> -
> - arg_end = arg_start + len;
> -
> - /* check overflow */
> - if (arg_end < len || arg_end < arg_start) {
> - return -1;
> - }
> -
> + /* If we don't have enough room by just overwriting the old proctitle,
> + * let's allocate a new one.
> + */
> + if (len > arg_end - arg_start) {
> + proctitle = realloc(proctitle, len);
> + arg_start = (unsigned long) proctitle;
> }
>
> + arg_end = arg_start + len;
> +
> brk_val = syscall(__NR_brk, 0);
>
> prctl_map = (struct prctl_mm_map) {
> --
> 2.5.0
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list