summaryrefslogtreecommitdiff
path: root/contrib/unbound/dynlibmod/dynlibmod.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/unbound/dynlibmod/dynlibmod.c')
-rw-r--r--contrib/unbound/dynlibmod/dynlibmod.c5
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;
}
}