]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
pcap-log: fix memory leak on error paths after SCStrdup(prefix)
authorBoris Tonofa <b.tonofa@ideco.ru>
Sat, 14 Jun 2025 08:44:57 +0000 (11:44 +0300)
committerVictor Julien <victor@inliniac.net>
Wed, 18 Jun 2025 16:22:53 +0000 (18:22 +0200)
When PcapLogDataCopy() fails after duplicating pl->prefix,
the allocated 'prefix' string was not freed, leading to a leak.

Ticket: 7759

src/log-pcap.c

index 0a3ca5e8458ecdd8d044bc3c9d4d47eeff498c89..c46921b2823a7e988eac49413ad0402350ca015b 100644 (file)
@@ -785,6 +785,7 @@ static PcapLogData *PcapLogDataCopy(const PcapLogData *pl)
         copy_comp->buffer = SCMalloc(copy_comp->buffer_size);
         if (copy_comp->buffer == NULL) {
             SCLogError("SCMalloc failed: %s", strerror(errno));
+            SCFree(copy->prefix);
             SCFree(copy->h);
             SCFree(copy);
             return NULL;
@@ -793,6 +794,7 @@ static PcapLogData *PcapLogDataCopy(const PcapLogData *pl)
         if (copy_comp->pcap_buf == NULL) {
             SCLogError("SCMalloc failed: %s", strerror(errno));
             SCFree(copy_comp->buffer);
+            SCFree(copy->prefix);
             SCFree(copy->h);
             SCFree(copy);
             return NULL;
@@ -803,6 +805,7 @@ static PcapLogData *PcapLogDataCopy(const PcapLogData *pl)
             SCLogError("SCFmemopen failed: %s", strerror(errno));
             SCFree(copy_comp->buffer);
             SCFree(copy_comp->pcap_buf);
+            SCFree(copy->prefix);
             SCFree(copy->h);
             SCFree(copy);
             return NULL;
@@ -817,6 +820,7 @@ static PcapLogData *PcapLogDataCopy(const PcapLogData *pl)
             fclose(copy_comp->pcap_buf_wrapper);
             SCFree(copy_comp->buffer);
             SCFree(copy_comp->pcap_buf);
+            SCFree(copy->prefix);
             SCFree(copy->h);
             SCFree(copy);
             return NULL;