The branch main has been updated by kp:

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

commit 40c611d0939f187d9a211e9e497291e251deddd3
Author:     Kristof Provost <[email protected]>
AuthorDate: 2026-07-14 07:32:41 +0000
Commit:     Kristof Provost <[email protected]>
CommitDate: 2026-07-15 11:44:59 +0000

    pfctl: fix incorrect errno checks
    
    These calls return an error value, they do not set errno. Check their
    return values.
    
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sbin/pfctl/pfctl_table.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/sbin/pfctl/pfctl_table.c b/sbin/pfctl/pfctl_table.c
index aec02c493f1b..1af1538387c7 100644
--- a/sbin/pfctl/pfctl_table.c
+++ b/sbin/pfctl/pfctl_table.c
@@ -74,6 +74,17 @@ static const char    *istats_text[2][2][2] = {
        { { "In6/Pass:", "In6/Block:" }, { "Out6/Pass:", "Out6/Block:" } }
 };
 
+#define RETTEST(fct) do {                                              \
+               int _ret;                                               \
+               if ((!(opts & PF_OPT_NOACTION) ||                       \
+                   (opts & PF_OPT_DUMMYACTION)) &&                     \
+                   (_ret = (fct) != 0)) {                              \
+                       if ((opts & PF_OPT_RECURSE) == 0)               \
+                               warnx("%s", pf_strerror(_ret));         \
+                       goto _error;                                    \
+               }                                                       \
+       } while (0)
+
 #define RVTEST(fct) do {                                               \
                if ((!(opts & PF_OPT_NOACTION) ||                       \
                    (opts & PF_OPT_DUMMYACTION)) &&                     \
@@ -157,7 +168,7 @@ pfctl_table(int argc, char *argv[], char *tname, const char 
*command,
        if (!strcmp(command, "-F")) {
                if (argc || file != NULL)
                        usage();
-               RVTEST(pfctl_clear_tables(pfh, &table, &ndel, flags));
+               RETTEST(pfctl_clear_tables(pfh, &table, &ndel, flags));
                xprintf(opts, "%d tables deleted", ndel);
        } else if (!strcmp(command, "-s")) {
                b.pfrb_type = (opts & PF_OPT_VERBOSE2) ?
@@ -192,12 +203,12 @@ pfctl_table(int argc, char *argv[], char *tname, const 
char *command,
        } else if (!strcmp(command, "kill")) {
                if (argc || file != NULL)
                        usage();
-               RVTEST(pfr_del_table(&table, &ndel, flags));
+               RETTEST(pfr_del_table(&table, &ndel, flags));
                xprintf(opts, "%d table deleted", ndel);
        } else if (!strcmp(command, "flush")) {
                if (argc || file != NULL)
                        usage();
-               RVTEST(pfr_clr_addrs(&table, &ndel, flags));
+               RETTEST(pfr_clr_addrs(&table, &ndel, flags));
                xprintf(opts, "%d addresses deleted", ndel);
        } else if (!strcmp(command, "add")) {
                b.pfrb_type = PFRB_ADDRS;
@@ -390,7 +401,7 @@ pfctl_table(int argc, char *argv[], char *tname, const char 
*command,
                                            opts & PF_OPT_USEDNS);
        } else if (!strcmp(command, "zero")) {
                flags |= PFR_FLAG_ADDRSTOO;
-               RVTEST(pfctl_clear_tstats(pfh, &table, &nzero, flags));
+               RETTEST(pfctl_clear_tstats(pfh, &table, &nzero, flags));
                xprintf(opts, "%d table/stats cleared", nzero);
        } else
                warnx("pfctl_table: unknown command '%s'", command);

Reply via email to