The branch main has been updated by kp:

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

commit e790bcd784c995f7aa8f730d1de1b6c5de5872b2
Author:     Kristof Provost <k...@freebsd.org>
AuthorDate: 2025-06-27 12:23:34 +0000
Commit:     Kristof Provost <k...@freebsd.org>
CommitDate: 2025-06-30 15:00:28 +0000

    pfctl: Use error label in host_if()
    
    This brings it in line with host() and host_dns().
    
    OK sashan miko
    
    Obtained from:  OpenBSD, kn <k...@openbsd.org>, d127311405
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sbin/pfctl/pfctl_parser.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/sbin/pfctl/pfctl_parser.c b/sbin/pfctl/pfctl_parser.c
index 0c5f184106cd..d903b592b1ac 100644
--- a/sbin/pfctl/pfctl_parser.c
+++ b/sbin/pfctl/pfctl_parser.c
@@ -1852,22 +1852,18 @@ host_if(const char *s, int mask)
                        flags |= PFI_AFLAG_PEER;
                else if (!strcmp(p+1, "0"))
                        flags |= PFI_AFLAG_NOALIAS;
-               else {
-                       free(ps);
-                       return (NULL);
-               }
+               else
+                       goto error;
                *p = '\0';
        }
        if (flags & (flags - 1) & PFI_AFLAG_MODEMASK) { /* Yep! */
                fprintf(stderr, "illegal combination of interface modifiers\n");
-               free(ps);
-               return (NULL);
+               goto error;
        }
        if ((flags & (PFI_AFLAG_NETWORK|PFI_AFLAG_BROADCAST)) && mask > -1) {
                fprintf(stderr, "network or broadcast lookup, but "
                    "extra netmask given\n");
-               free(ps);
-               return (NULL);
+               goto error;
        }
        if (ifa_exists(ps) || !strncmp(ps, "self", IFNAMSIZ)) {
                /* interface with this name exists */
@@ -1876,6 +1872,7 @@ host_if(const char *s, int mask)
                        set_ipmask(n, mask > -1 ? mask : 128);
        }
 
+error:
        free(ps);
        return (h);
 }

Reply via email to