Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Feb 2015 08:01:17 +0100
From:      Oliver Pinter <oliver.pinter@hardenedbsd.org>
To:        Rui Paulo <rpaulo@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r278545 - head/sys/kern
Message-ID:  <CAPQ4ffsRXy46gbqsxhn042taaZN-=eKjdyMv%2BeTfhYaoHM9Eeg@mail.gmail.com>
In-Reply-To: <201502110058.t1B0wGYZ032751@svn.freebsd.org>
References:  <201502110058.t1B0wGYZ032751@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Feb 11, 2015 at 1:58 AM, Rui Paulo <rpaulo@freebsd.org> wrote:
> Author: rpaulo
> Date: Wed Feb 11 00:58:15 2015
> New Revision: 278545
> URL: https://svnweb.freebsd.org/changeset/base/278545
>
> Log:
>   Restore the data array in coredump(), but use a different style to
>   calculate the length.
>
>   Requested by: kib
>
> Modified:
>   head/sys/kern/kern_sig.c
>
> Modified: head/sys/kern/kern_sig.c
> ==============================================================================
> --- head/sys/kern/kern_sig.c    Tue Feb 10 23:48:06 2015        (r278544)
> +++ head/sys/kern/kern_sig.c    Wed Feb 11 00:58:15 2015        (r278545)
> @@ -3261,9 +3261,11 @@ coredump(struct thread *td)
>         void *rl_cookie;
>         off_t limit;
>         int compress;
> -       char data[MAXPATHLEN * 2 + 16]; /* space for devctl notification */
> +       char *data = NULL;
>         char *fullpath, *freepath = NULL;
>         size_t len;
> +       static const char comm_name[] = "comm=";
> +       static const char core_name[] = "core=";
>
>  #ifdef COMPRESS_USER_CORES
>         compress = compress_user_cores;
> @@ -3357,25 +3359,31 @@ close:
>          */
>         if (coredump_devctl == 0)
>                 goto out;
> +       len = MAXPATHLEN * 2 + sizeof(comm_name) - 1 +
> +           sizeof(' ') + sizeof(core_name) - 1;
> +       data = malloc(len, M_TEMP, M_WAITOK);
> +       if (data == NULL)
> +               goto out;

This check is pointless, as you can see in man 9 malloc:

     M_WAITOK
             Indicates that it is OK to wait for resources.  If the request
             cannot be immediately fulfilled, the current process is put to
             sleep to wait for resources to be released by other processes.
             The malloc(), realloc(), and reallocf() functions cannot return
             NULL if M_WAITOK is specified.


>         if (vn_fullpath_global(td, p->p_textvp, &fullpath, &freepath) != 0)
>                 goto out;
>         if (!coredump_sanitise_path(fullpath))
>                 goto out;
> -       snprintf(data, sizeof(data), "comm=%s ", fullpath);
> +       snprintf(data, len, "%s%s ", comm_name, fullpath);
>         free(freepath, M_TEMP);
>         freepath = NULL;
>         if (vn_fullpath_global(td, vp, &fullpath, &freepath) != 0)
>                 goto out;
>         if (!coredump_sanitise_path(fullpath))
>                 goto out;
> -       strlcat(data, "core=", sizeof(data));
> -       len = strlcat(data, fullpath, sizeof(data));
> +       strlcat(data, core_name, len);
> +       strlcat(data, fullpath, len);
>         devctl_notify("kernel", "signal", "coredump", data);
>  out:
>  #ifdef AUDIT
>         audit_proc_coredump(td, name, error);
>  #endif
>         free(freepath, M_TEMP);
> +       free(data, M_TEMP);
>         free(name, M_TEMP);
>         return (error);
>  }
> _______________________________________________
> svn-src-head@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPQ4ffsRXy46gbqsxhn042taaZN-=eKjdyMv%2BeTfhYaoHM9Eeg>