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

Matt Hoosier matt.hoosier at gmail.com
Fri May 25 14:38:50 UTC 2018


Any takers to accept this one?

On Fri, May 4, 2018 at 9:26 AM, 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>
> ---
>  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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20180525/76469fac/attachment.html>


More information about the wayland-devel mailing list