diff -ru ../jabberd-2.0s4.orig/scod/mech_digest_md5.c ./scod/mech_digest_md5.c --- ../jabberd-2.0s4.orig/scod/mech_digest_md5.c 2004-10-26 10:24:37.681078000 +0200 +++ ./scod/mech_digest_md5.c 2004-10-26 10:25:38.059122000 +0200 @@ -307,6 +307,7 @@ if(nonce == NULL || qop == NULL || charset == NULL || algorithm == NULL) { log_debug(ZONE, "missing attribute"); + xhash_free(attrs); return sd_auth_MALFORMED_DATA; } @@ -396,6 +397,7 @@ *resplen = strlen(*resp); pool_free(p); + xhash_free(attrs); free(cnonce); diff -ru ../jabberd-2.0s4.orig/util/nad.c ./util/nad.c --- ../jabberd-2.0s4.orig/util/nad.c 2004-10-26 10:24:38.100236000 +0200 +++ ./util/nad.c 2004-10-26 11:58:27.816525000 +0200 @@ -252,6 +252,9 @@ free(nad->cdata); free(nad->nss); free(nad->depths); +#ifndef NAD_DEBUG + free(nad); +#endif } /** locate the next elem at a given depth with an optional matching name */