libweston: strdup head make, model, serial_number

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@collabora.co.uk>
v5 Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Ian Ray <ian.ray@ge.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Acked-by: Derek Foreman <derekf@osg.samsung.com>
dev
Pekka Paalanen 8 years ago
parent d9dcc6dc8f
commit 06f99efc9c
  1. 14
      libweston/compositor.c

@ -4511,6 +4511,10 @@ static void
weston_head_release(struct weston_head *head) weston_head_release(struct weston_head *head)
{ {
weston_head_detach(head); weston_head_detach(head);
free(head->make);
free(head->model);
free(head->serial_number);
} }
/** Store monitor make, model and serial number /** Store monitor make, model and serial number
@ -4532,9 +4536,13 @@ weston_head_set_monitor_strings(struct weston_head *head,
const char *model, const char *model,
const char *serialno) const char *serialno)
{ {
head->make = (char *)make; free(head->make);
head->model = (char *)model; free(head->model);
head->serial_number = (char *)serialno; 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 /** Store physical image size

Loading…
Cancel
Save