Commit 65cd2e05 authored by Nils Goroll's avatar Nils Goroll

TAKE_OBJ_NOTNULLification: cases with the first AN(objp) missing

in these cases, the initial AN(objp) was missing, so we would
potentially dereference a NULL pointer without an explicit assertion
failure.

in VCL_Rel(), AN(*vcc) was likely just a typo resulting in a semantic
noop (the check was a duplication of the NULL check in
CHECK_OBJ_NOTNULL).

... more examples why using the macro is a good idea
parent 7ce983ec
......@@ -316,9 +316,7 @@ VCP_Recycle(const struct worker *wrk, struct pfd **pfdp)
int i = 0;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
pfd = *pfdp;
*pfdp = NULL;
CHECK_OBJ_NOTNULL(pfd, PFD_MAGIC);
TAKE_OBJ_NOTNULL(pfd, pfdp, PFD_MAGIC);
cp = pfd->conn_pool;
CHECK_OBJ_NOTNULL(cp, CONN_POOL_MAGIC);
......@@ -451,9 +449,7 @@ VCP_Close(struct pfd **pfdp)
struct pfd *pfd;
struct conn_pool *cp;
pfd = *pfdp;
*pfdp = NULL;
CHECK_OBJ_NOTNULL(pfd, PFD_MAGIC);
TAKE_OBJ_NOTNULL(pfd, pfdp, PFD_MAGIC);
cp = pfd->conn_pool;
CHECK_OBJ_NOTNULL(cp, CONN_POOL_MAGIC);
......
......@@ -123,11 +123,7 @@ VCL_Rel(struct vcl **vcc)
{
struct vcl *vcl;
AN(*vcc);
vcl = *vcc;
*vcc = NULL;
CHECK_OBJ_NOTNULL(vcl, VCL_MAGIC);
TAKE_OBJ_NOTNULL(vcl, vcc, VCL_MAGIC);
Lck_Lock(&vcl_mtx);
assert(vcl->busy > 0);
vcl->busy--;
......
......@@ -24,6 +24,19 @@ expression obj, objp, magic;
expression obj, objp, magic;
@@
- AN(*objp);
...
- obj = *objp;
...
- *objp = NULL;
...
- CHECK_OBJ_NOTNULL(obj, magic);
+ TAKE_OBJ_NOTNULL(obj, objp, magic);
@@
expression obj, objp, magic;
@@
- AN(objp);
...
- obj = *objp;
......@@ -45,3 +58,14 @@ expression obj, objp, magic;
+ TAKE_OBJ_NOTNULL(obj, objp, magic);
...
- *objp = NULL;
@@
expression obj, objp, magic;
@@
- obj = *objp;
...
- *objp = NULL;
...
- CHECK_OBJ_NOTNULL(obj, magic);
+ TAKE_OBJ_NOTNULL(obj, objp, magic);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment