The branch main has been updated by kp:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=753da351598a381abe639a62621f5dae28a7bfe6

commit 753da351598a381abe639a62621f5dae28a7bfe6
Author:     Kristof Provost <k...@freebsd.org>
AuthorDate: 2025-06-24 11:39:24 +0000
Commit:     Kristof Provost <k...@freebsd.org>
CommitDate: 2025-06-27 14:55:16 +0000

    pfctl: plug some memory leaks
    
    found by parfait, ok henning
    
    Obtained from:  OpenBSD, deraadt <dera...@openbsd.org>, 2f2ceddc40
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sbin/pfctl/parse.y          | 2 ++
 sbin/pfctl/pfctl.c          | 2 +-
 sbin/pfctl/pfctl_optimize.c | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
index e4cd4883e2c9..8afef160b205 100644
--- a/sbin/pfctl/parse.y
+++ b/sbin/pfctl/parse.y
@@ -7143,6 +7143,8 @@ pushfile(const char *name, int secret)
 
        if ((nfile = calloc(1, sizeof(struct file))) == NULL ||
            (nfile->name = strdup(name)) == NULL) {
+               if (nfile)
+                       free(nfile);
                warn("malloc");
                return (NULL);
        }
diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c
index 15766eb9b704..8435f69e91e0 100644
--- a/sbin/pfctl/pfctl.c
+++ b/sbin/pfctl/pfctl.c
@@ -2261,7 +2261,7 @@ pfctl_rules(int dev, char *filename, int opts, int 
optimize,
        struct pfctl_ruleset    *rs;
        struct pfctl_eth_ruleset        *ethrs;
        struct pfr_table         trs;
-       char                    *path;
+       char                    *path = NULL;
        int                      osize;
 
        RB_INIT(&pf_anchors);
diff --git a/sbin/pfctl/pfctl_optimize.c b/sbin/pfctl/pfctl_optimize.c
index d6417e8e73a1..b4ffcbebb1bb 100644
--- a/sbin/pfctl/pfctl_optimize.c
+++ b/sbin/pfctl/pfctl_optimize.c
@@ -922,6 +922,7 @@ load_feedback_profile(struct pfctl *pf, struct superblocks 
*superblocks)
                if (pfctl_get_rule_h(pf->h, nr, rules.ticket, "", PF_PASS,
                    &rule, anchor_call)) {
                        warn("DIOCGETRULENV");
+                       free(por);
                        return (1);
                }
                memcpy(&por->por_rule, &rule, sizeof(por->por_rule));

Reply via email to