EXT: [PATCH] log: improve handling of use-before-init

Ray, Ian (GE Healthcare) ian.ray at ge.com
Mon May 7 06:23:07 UTC 2018



> On 4 May 2018, at 17.26, Matt Hoosier <matt.hoosier at gmail.com> wrote:
> 
> Rather than segfaulting by attempting to traverse an initially
> null log handler pointer, explicitly print a message and abort.
> 
> Signed-off-by: Matt Hoosier <matt.hoosier at gmail.com>

Nice improvement!

Reviewed-by: Ian Ray <ian.ray at ge.com>


> ---
> libweston/log.c | 22 ++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/libweston/log.c b/libweston/log.c
> index 7d99a95d..c21f25e9 100644
> --- a/libweston/log.c
> +++ b/libweston/log.c
> @@ -36,8 +36,26 @@
> 
> #include "compositor.h"
> 
> -static log_func_t log_handler = 0;
> -static log_func_t log_continue_handler = 0;
> +static int default_log_handler(const char *fmt, va_list ap);
> +
> +static log_func_t log_handler = default_log_handler;
> +static log_func_t log_continue_handler = default_log_handler;
> +
> +/** Sentinel log message handler
> + *
> + * This function is used as the default handler for log messages. It
> + * exists only to issue a noisy reminder to the user that a real handler
> + * must be installed prior to issuing logging calls. The process is
> + * immediately aborted after the reminder is printed.
> + *
> + * \param fmt The format string. Ignored.
> + * \param va The variadic argument list. Ignored.
> + */
> +static int default_log_handler(const char *fmt, va_list ap)
> +{
> +        fprintf(stderr, "weston_log_set_handler() must be called before using of weston_log().\n");
> +        abort();
> +}
> 
> /** Install the log handler
>  *
> -- 
> 2.13.6
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel



More information about the wayland-devel mailing list