[ovs-dev] [PATCH] vlog: Avoid use-after-free in corner case.

Ethan Jackson ethan at nicira.com
Tue Jun 12 23:53:57 UTC 2012


Looks good, thanks.

Ethan

On Tue, Jun 12, 2012 at 4:45 PM, Ben Pfaff <blp at nicira.com> wrote:
> Found by valgrind.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
>  lib/vlog.c |    9 ++++++++-
>  1 files changed, 8 insertions(+), 1 deletions(-)
>
> diff --git a/lib/vlog.c b/lib/vlog.c
> index a7d9e48..899072e 100644
> --- a/lib/vlog.c
> +++ b/lib/vlog.c
> @@ -477,6 +477,7 @@ vlog_unixctl_reopen(struct unixctl_conn *conn, int argc OVS_UNUSED,
>  void
>  vlog_init(void)
>  {
> +    static char *program_name_copy;
>     time_t now;
>
>     if (vlog_inited) {
> @@ -484,7 +485,13 @@ vlog_init(void)
>     }
>     vlog_inited = true;
>
> -    openlog(program_name, LOG_NDELAY, LOG_DAEMON);
> +    /* openlog() is allowed to keep the pointer passed in, without making a
> +     * copy.  The daemonize code sometimes frees and replaces 'program_name',
> +     * so make a private copy just for openlog().  (We keep a pointer to the
> +     * private copy to suppress memory leak warnings in case openlog() does
> +     * make its own copy.) */
> +    program_name_copy = program_name ? xstrdup(program_name) : NULL;
> +    openlog(program_name_copy, LOG_NDELAY, LOG_DAEMON);
>
>     now = time_wall();
>     if (now < 0) {
> --
> 1.7.2.5
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list