[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