efreet_xml: make sure we unmap the right pointer.
authorAl Poole <netstar@gmail.com>
Sat, 3 Mar 2018 13:13:05 +0000 (13:13 +0000)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 11:10:47 +0000 (20:10 +0900)
Seems Linux would munmap a lump of coal without failing. Make
sure the pointers match. Again bogus unmap not detected by
valgrind and not failing.

@fix T5949

src/lib/efreet/efreet_xml.c

index 05261b2..4f4cd2f 100644 (file)
@@ -86,7 +86,7 @@ efreet_xml_new(const char *file)
 {
     Efreet_Xml *xml = NULL;
     int size, fd = -1;
-    char *data = MAP_FAILED;
+    char *tmp, *data = MAP_FAILED;
     struct stat st;
     int error = 0;
 
@@ -109,11 +109,12 @@ efreet_xml_new(const char *file)
     data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
     if (data == MAP_FAILED) goto efreet_error;
 
+    tmp = data;
+
     error = 0;
     size = st.st_size;
-    xml = efreet_xml_parse(&data, &size, &error);
+    xml = efreet_xml_parse(&tmp, &size, &error);
     if (!xml || error) goto efreet_error;
-
     munmap(data, st.st_size);
     close(fd);
     return xml;