[PATCH weston v3 08/36] libweston: strdup head make, model, serial_number

Quentin Glidic sardemff7+wayland at sardemff7.net
Tue Oct 31 12:33:17 UTC 2017


On 10/31/17 12:48 PM, Pekka Paalanen wrote:
> From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> 
> Duplicate these strings to decouple their lifetime from whatever the
> backends used. This should prevent hard to catch use after frees and
> such problems in the future.
> 
> Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

Straightforward:
Reviewed-by: Quentin Glidic <sardemff7+git at sardemff7.net>

As a nitpick, maybe we could add xstrdup or safe_strdup to handle the 
NULL case?

Thanks,


> ---
>   libweston/compositor.c | 14 +++++++++++---
>   1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/libweston/compositor.c b/libweston/compositor.c
> index 1cc5050a..de667cfa 100644
> --- a/libweston/compositor.c
> +++ b/libweston/compositor.c
> @@ -4479,6 +4479,10 @@ static void
>   weston_head_release(struct weston_head *head)
>   {
>   	weston_head_detach(head);
> +
> +	free(head->make);
> +	free(head->model);
> +	free(head->serial_number);
>   }
>   
>   /** Store monitor make, model and serial number
> @@ -4500,9 +4504,13 @@ weston_head_set_monitor_strings(struct weston_head *head,
>   				const char *model,
>   				const char *serialno)
>   {
> -	head->make = (char *)make;
> -	head->model = (char *)model;
> -	head->serial_number = (char *)serialno;
> +	free(head->make);
> +	free(head->model);
> +	free(head->serial_number);
> +
> +	head->make = make ? strdup(make) : NULL;
> +	head->model = model ? strdup(model) : NULL;
> +	head->serial_number = serialno ? strdup(serialno) : NULL;
>   }
>   
>   /** Store physical image size
> 


-- 

Quentin “Sardem FF7” Glidic


More information about the wayland-devel mailing list