git: eed3a36c5475 - stable/12 - pfctl: fix recursive printing of rules

From: Kristof Provost <kp_at_FreeBSD.org>
Date: Wed, 04 May 2022 12:50:28 UTC
The branch stable/12 has been updated by kp:

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

commit eed3a36c547530be0eaf3ff93ebec9b22cc7bfaa
Author:     Matteo Riondato <matteo@FreeBSD.org>
AuthorDate: 2022-04-13 07:38:44 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2022-05-04 12:49:50 +0000

    pfctl: fix recursive printing of rules
    
    When asked to print rules recursively, correctly recurse for anchors
    included in pf.conf with "anchorname/*".
    
    PR:             262590
    Reviewed by:    kp
    MFC after:      3 weeks
    
    (cherry picked from commit d86cf4435021d0abf3f3d65039583ee8cfde1be1)
---
 sbin/pfctl/pfctl.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c
index eccfe319207e..165114781a1f 100644
--- a/sbin/pfctl/pfctl.c
+++ b/sbin/pfctl/pfctl.c
@@ -1143,13 +1143,11 @@ pfctl_show_rules(int dev, char *path, int opts, enum pfctl_show format,
 			   ((void *)p == (void *)anchor_call ||
 			   *(--p) == '/')) || (opts & PF_OPT_RECURSE))) {
 				brace++;
-				if ((p = strrchr(anchor_call, '/')) !=
-				    NULL)
-					p++;
-				else
-					p = &anchor_call[0];
-			} else
-				p = &anchor_call[0];
+				int aclen = strlen(anchor_call);
+				if (anchor_call[aclen - 1] == '*')
+					anchor_call[aclen - 2] = '\0';
+			}
+			p = &anchor_call[0];
 		
 			print_rule(&rule, p, rule_numbers, numeric);
 			if (brace)