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>
diff --git a/libweston/compositor.c b/libweston/compositor.c
index 767cb80..c3a94d3 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -4511,6 +4511,10 @@
 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
@@ -4532,9 +4536,13 @@
 				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