diff --git a/src/bplist.c b/src/bplist.c
index 5789f26148a4f5c8954da82dd21895da013e088f..91d55785ca568d3e33d8dbb924ccacea25d50910 100644
--- a/src/bplist.c
+++ b/src/bplist.c
@@ -251,6 +251,7 @@ static plist_t parse_real_node(char *bnode, uint8_t size)
         data->realval = *(double *) buf;
         break;
     default:
+        free(buf);
         free(data);
         return NULL;
     }
diff --git a/src/xplist.c b/src/xplist.c
index 96539a61a908797c6643435c8d73b71fe1b6c972..a889cb50733e45bfbd1f06b2dd89bb0556046394 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -120,9 +120,6 @@ static xmlDocPtr new_xml_plist(void)
     char *plist = strdup(plist_base);
     xmlDocPtr plist_xml = xmlParseMemory(plist, strlen(plist));
 
-    if (!plist_xml)
-        return NULL;
-
     free(plist);
 
     return plist_xml;