]> err.no Git - varnish/commitdiff
More miniobj paranoia
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 2 Aug 2006 04:57:58 +0000 (04:57 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 2 Aug 2006 04:57:58 +0000 (04:57 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@594 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache_hash.c
varnish-cache/bin/varnishd/hash_classic.c

index 5b8f9116d7e0347fa51c4615a0d8c7ad6c8fa954..fab907464998905f39aeb680f741beb52195f6bd 100644 (file)
@@ -162,8 +162,11 @@ HSH_Ref(struct object *o)
 {
        struct objhead *oh;
 
+       CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
        oh = o->objhead;
+       CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
        AZ(pthread_mutex_lock(&oh->mtx));
+       assert(o->refcnt > 0);
        o->refcnt++;
        AZ(pthread_mutex_unlock(&oh->mtx));
 }
@@ -175,10 +178,13 @@ HSH_Deref(struct object *o)
        struct storage *st, *stn;
        unsigned r;
 
+       CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
        oh = o->objhead;
+       CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
 
        /* drop ref on object */
        AZ(pthread_mutex_lock(&oh->mtx));
+       assert(o->refcnt > 0);
        r = --o->refcnt;
        if (!r)
                TAILQ_REMOVE(&oh->objects, o, list);
@@ -193,6 +199,7 @@ HSH_Deref(struct object *o)
        }
 
        TAILQ_FOREACH_SAFE(st, &o->store, list, stn) {
+               CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
                TAILQ_REMOVE(&o->store, st, list);
                st->stevedore->free(st);
        }
index 0b0f99c9deb5c71857d726c675933c005e3f33af..33df6106471ae6f64bab1b3fdd7121bec3bd479d 100644 (file)
@@ -174,9 +174,11 @@ hcl_deref(struct objhead *oh)
 
        CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
        CAST_OBJ_NOTNULL(he, oh->hashpriv, HCL_ENTRY_MAGIC);
+       assert(he->refcnt > 0);
+       assert(he->mtx < hcl_nmtx);
+       assert(he->hash < hcl_nhash);
        mtx = he->mtx;
        AZ(pthread_mutex_lock(&hcl_mutex[mtx]));
-       assert(he->refcnt > 0);
        if (--he->refcnt > 0) {
                AZ(pthread_mutex_unlock(&hcl_mutex[mtx]));
                return (1);