diff -Naur opendkim-2.7.1.orig/libopendkim/dkim-dns.c opendkim-2.7.1/libopendkim/dkim-dns.c --- opendkim-2.7.1.orig/libopendkim/dkim-dns.c 2012-10-25 01:12:31.000000000 +0300 +++ opendkim-2.7.1/libopendkim/dkim-dns.c 2012-11-08 15:03:16.864335102 +0200 @@ -57,12 +57,14 @@ dkim_res_init(void **srv) { #ifdef HAVE_RES_NINIT - struct state *res; + struct __res_state *res; - res = malloc(sizeof(struct state)); + res = (struct __res_state *)malloc(sizeof(struct __res_state)); if (res == NULL) return -1; + memset(res, 0, sizeof(struct __res_state)); + if (res_ninit(res) != 0) { free(res); @@ -99,13 +101,14 @@ dkim_res_close(void *srv) { #ifdef HAVE_RES_NINIT - struct state *res; + struct __res_state *res; res = srv; - res_nclose(res); - - free(res); + if (res) { + res_nclose(res); + free(res); + } #endif /* HAVE_RES_NINIT */ }