[master] 245c768fa Split out vcc_acl_insert_entry() again

Nils Goroll nils.goroll at uplex.de
Mon Dec 4 11:33:03 UTC 2023


commit 245c768fa4e509d19bdf5bd308f0fbfc71d280fb
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Mon May 10 17:05:07 2021 +0200

    Split out vcc_acl_insert_entry() again
    
    Reverts d89674d129ef0ed1c495e1169f83ec3203db1b42
    Reinstantiates bbb5db47e02f431598e5a7ff7106a8ac316db8be

diff --git a/lib/libvcc/vcc_acl.c b/lib/libvcc/vcc_acl.c
index dffd9013c..c8219dcc8 100644
--- a/lib/libvcc/vcc_acl.c
+++ b/lib/libvcc/vcc_acl.c
@@ -208,11 +208,30 @@ vcc_acl_chk(struct vcc *tl, const struct acl_e *ae, const int l,
 	return (r);
 }
 
+static void
+vcc_acl_insert_entry(struct vcc *tl, struct acl_e **aenp)
+{
+	struct acl_e *ae2;
+
+	CHECK_OBJ_NOTNULL(*aenp, VCC_ACL_E_MAGIC);
+	ae2 = VRBT_INSERT(acl_tree, &tl->acl->acl_tree, *aenp);
+	if (ae2 != NULL) {
+		if (ae2->not != (*aenp)->not) {
+			VSB_cat(tl->sb, "Conflicting ACL entries:\n");
+			vcc_ErrWhere(tl, ae2->t_addr);
+			VSB_cat(tl->sb, "vs:\n");
+			vcc_ErrWhere(tl, (*aenp)->t_addr);
+		}
+		return;
+	}
+	*aenp = NULL;
+}
+
 static void
 vcc_acl_add_entry(struct vcc *tl, const struct acl_e *ae, int l,
     unsigned char *u, int fam)
 {
-	struct acl_e *aen, *ae2;
+	struct acl_e *aen;
 
 	if (fam == PF_INET && ae->mask > 32) {
 		VSB_printf(tl->sb,
@@ -247,14 +266,9 @@ vcc_acl_add_entry(struct vcc *tl, const struct acl_e *ae, int l,
 	assert(l + 1UL <= sizeof aen->data);
 	memcpy(aen->data + 1L, u, l);
 
-	ae2 = VRBT_INSERT(acl_tree, &tl->acl->acl_tree, aen);
-	if (ae2 != NULL && ae2->not != aen->not) {
-		VSB_cat(tl->sb, "Conflicting ACL entries:\n");
-		vcc_ErrWhere(tl, ae2->t_addr);
-		VSB_cat(tl->sb, "vs:\n");
-		vcc_ErrWhere(tl, aen->t_addr);
+	vcc_acl_insert_entry(tl, &aen);
+	if (aen != NULL)
 		vcl_acl_free(&aen);
-	}
 }
 
 static void


More information about the varnish-commit mailing list