From f7d9efd98ba97bbe9933db17db1980cd25b2cf48 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 17 Jan 2013 14:38:28 +1100 Subject: [PATCH] Silence "Access to field 'type' results in a dereference of a null pointer" by adding appropriate assertions. --- lib/isccfg/include/isccfg/cfg.h | 4 ++++ lib/isccfg/parser.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/isccfg/include/isccfg/cfg.h b/lib/isccfg/include/isccfg/cfg.h index 0d5e6ea2d8..91ffc34bb5 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 3d02379447..d6e1643a50 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;