[master] aff516b77 vcc_acl: struct acl_e to miniobj
Nils Goroll
nils.goroll at uplex.de
Sat Mar 27 13:40:07 UTC 2021
commit aff516b776039c5317b3ee8126e854984b22e2ab
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Sat Mar 27 14:13:02 2021 +0100
vcc_acl: struct acl_e to miniobj
note: struct acl_e could be compacted, but we prefer clarify over
efficiency in VCC.
diff --git a/lib/libvcc/vcc_acl.c b/lib/libvcc/vcc_acl.c
index 6d0cd6b25..6f6591d7d 100644
--- a/lib/libvcc/vcc_acl.c
+++ b/lib/libvcc/vcc_acl.c
@@ -46,6 +46,8 @@
#define ACL_MAXADDR (sizeof(struct in6_addr) + 1)
struct acl_e {
+ unsigned magic;
+#define VCC_ACL_E_MAGIC 0xcac81e23
VRBT_ENTRY(acl_e) branch;
unsigned char data[ACL_MAXADDR];
unsigned mask;
@@ -73,6 +75,9 @@ vcl_acl_cmp(const struct acl_e *ae1, const struct acl_e *ae2)
const unsigned char *p1, *p2;
unsigned m;
+ CHECK_OBJ_NOTNULL(ae1, VCC_ACL_E_MAGIC);
+ CHECK_OBJ_NOTNULL(ae2, VCC_ACL_E_MAGIC);
+
p1 = ae1->data;
p2 = ae2->data;
m = ae1->mask;
@@ -159,6 +164,7 @@ vcc_acl_insert_entry(struct vcc *tl, struct acl_e *aen)
{
struct acl_e *ae2;
+ CHECK_OBJ_NOTNULL(aen, VCC_ACL_E_MAGIC);
ae2 = VRBT_INSERT(acl_tree, &tl->acl_tree, aen);
if (ae2 != NULL) {
if (ae2->not != aen->not) {
@@ -167,7 +173,7 @@ vcc_acl_insert_entry(struct vcc *tl, struct acl_e *aen)
VSB_cat(tl->sb, "vs:\n");
vcc_ErrWhere(tl, aen->t_addr);
}
- free(aen);
+ FREE_OBJ(aen);
return;
}
}
@@ -195,8 +201,7 @@ vcc_acl_add_entry(struct vcc *tl, const struct acl_e *ae, int l,
}
/* Make a copy from the template */
- aen = TlAlloc(tl, sizeof *aen);
- AN(aen);
+ ALLOC_OBJ(aen, VCC_ACL_E_MAGIC);
*aen = *ae;
aen->fixed = vcc_acl_chk(tl, ae, l, u, fam);
@@ -221,6 +226,7 @@ vcc_acl_try_getaddrinfo(struct vcc *tl, struct acl_e *ae)
unsigned char *u, i4, i6;
int error;
+ CHECK_OBJ_NOTNULL(ae, VCC_ACL_E_MAGIC);
memset(&hint, 0, sizeof hint);
hint.ai_family = PF_UNSPEC;
hint.ai_socktype = SOCK_STREAM;
@@ -319,6 +325,7 @@ vcc_acl_try_netnotation(struct vcc *tl, struct acl_e *ae)
unsigned u;
const char *p;
+ CHECK_OBJ_NOTNULL(ae, VCC_ACL_E_MAGIC);
memset(b, 0, sizeof b);
p = ae->addr;
for (i = 0; i < 4; i++) {
@@ -346,8 +353,7 @@ vcc_acl_entry(struct vcc *tl)
struct acl_e *ae;
char *sl, *e;
- ae = TlAlloc(tl, sizeof *ae);
- AN(ae);
+ ALLOC_OBJ(ae, VCC_ACL_E_MAGIC);
if (tl->t->tok == '!') {
ae->not = 1;
@@ -379,14 +385,14 @@ vcc_acl_entry(struct vcc *tl)
if (*e != '\0') {
VSB_cat(tl->sb, ".../mask is not numeric.\n");
vcc_ErrWhere(tl, ae->t_addr);
- free(ae);
+ FREE_OBJ(ae);
return;
}
ae->t_mask = ae->t_addr;
if (tl->t->tok == '/') {
VSB_cat(tl->sb, "/mask only allowed once.\n");
vcc_ErrWhere(tl, tl->t);
- free(ae);
+ FREE_OBJ(ae);
return;
}
} else if (tl->t->tok == '/') {
@@ -416,6 +422,7 @@ vcc_acl_emit_tokens(const struct vcc *tl, const struct acl_e *ae)
struct token *t;
const char *sep = "";
+ CHECK_OBJ_NOTNULL(ae, VCC_ACL_E_MAGIC);
t = ae->t_addr;
do {
if (t->tok == CSTR) {
More information about the varnish-commit
mailing list