From: Mark Andrews Date: Thu, 17 Jan 2013 03:38:28 +0000 (+1100) Subject: Silence "Access to field 'type' results in a dereference of a null pointer" by adding... X-Git-Tag: v9.6-ESV-R9-P1~6 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=de2b276072796c0276750fcd9517861bf3f866dc;p=thirdparty%2Fbind9.git Silence "Access to field 'type' results in a dereference of a null pointer" by adding appropriate assertions. --- diff --git a/lib/isccfg/include/isccfg/cfg.h b/lib/isccfg/include/isccfg/cfg.h index 0d5e6ea2d8e..91ffc34bb53 100644 --- a/lib/isccfg/include/isccfg/cfg.h +++ b/lib/isccfg/include/isccfg/cfg.h @@ -395,6 +395,10 @@ cfg_obj_istype(const cfg_obj_t *obj, const cfg_type_t *type); void cfg_obj_destroy(cfg_parser_t *pctx, cfg_obj_t **obj); /*%< * Destroy a configuration object. + * + * Require: + * \li '*obj' is a valid cfg_obj_t. + * \li 'pctx' is a valid cfg_parser_t. */ void diff --git a/lib/isccfg/parser.c b/lib/isccfg/parser.c index 3d02379447e..d6e1643a50b 100644 --- a/lib/isccfg/parser.c +++ b/lib/isccfg/parser.c @@ -2390,7 +2390,12 @@ cfg_obj_istype(const cfg_obj_t *obj, const cfg_type_t *type) { */ void cfg_obj_destroy(cfg_parser_t *pctx, cfg_obj_t **objp) { - cfg_obj_t *obj = *objp; + cfg_obj_t *obj; + + REQUIRE(objp != NULL && *objp != NULL); + REQUIRE(pctx != NULL); + + obj = *objp; obj->type->rep->free(pctx, obj); isc_mem_put(pctx->mctx, obj, sizeof(cfg_obj_t)); *objp = NULL;