Fix yet another average leak in matcher.c when parsing headers (valgrind).
authorwwp <wwp@free.fr>
Mon, 16 Jan 2017 10:54:24 +0000 (11:54 +0100)
committerwwp <wwp@free.fr>
Mon, 16 Jan 2017 10:54:24 +0000 (11:54 +0100)
src/matcher.c

index 0b56382a81d51069010cc3e703679a8bd45e0d56..a423fab1690f7d5db669d5a4b5efaf80c68c590d 100644 (file)
@@ -1367,11 +1367,16 @@ static gboolean matcherprop_match_one_header(MatcherProp *matcher,
                                /* matching one address header exactly, is that the right one? */
                                header = procheader_parse_header(buf);
                                if (!header ||
-                                               !procheader_headername_equal(header->name, matcher->header))
+                                               !procheader_headername_equal(header->name, matcher->header)) {
+                                       procheader_free_header(header);
                                        return FALSE;
+                               }
                                address_list = address_list_append(address_list, header->body);
-                               if (address_list == NULL)
+                               if (address_list == NULL) {
+                                       procheader_free_header(header);
                                        return FALSE;
+                               }
+                               procheader_free_header(header);
 
                        } else {
                                header = procheader_parse_header(buf);
@@ -1385,6 +1390,7 @@ static gboolean matcherprop_match_one_header(MatcherProp *matcher,
                                         procheader_headername_equal(header->name, "Reply-To") ||
                                         procheader_headername_equal(header->name, "Sender"))
                                        address_list = address_list_append(address_list, header->body);
+                               procheader_free_header(header);
                                if (address_list == NULL)
                                        return FALSE;
                        }