diff options
Diffstat (limited to 'contrib/unbound/dynlibmod/dynlibmod.c')
-rw-r--r-- | contrib/unbound/dynlibmod/dynlibmod.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/contrib/unbound/dynlibmod/dynlibmod.c b/contrib/unbound/dynlibmod/dynlibmod.c index f9751d8c6f73..3bf9d1acb0b8 100644 --- a/contrib/unbound/dynlibmod/dynlibmod.c +++ b/contrib/unbound/dynlibmod/dynlibmod.c @@ -242,6 +242,10 @@ int inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbarg, struct module_env* env, int id) { struct cb_pair* cb_pair = malloc(sizeof(struct cb_pair)); + if(cb_pair == NULL) { + log_err("dynlibmod[%d]: malloc failure", id); + return 0; + } cb_pair->cb = cb; cb_pair->cb_arg = cbarg; if(type >= inplace_cb_reply && type <= inplace_cb_reply_servfail) { @@ -253,6 +257,7 @@ inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbar } else if(type == inplace_cb_edns_back_parsed) { return inplace_cb_register(&dynlib_inplace_cb_edns_back_parsed, type, (void*) cb_pair, env, id); } else { + free(cb_pair); return 0; } } |