diff --git a/src/httpauth/digest.c b/src/httpauth/digest.c index 5bd6c3a25..2c3d04ccf 100644 --- a/src/httpauth/digest.c +++ b/src/httpauth/digest.c @@ -635,12 +635,13 @@ static int digest_response(struct httpauth_digest_enc_resp *resp, uint8_t *hash1 = NULL; uint8_t *hash2 = NULL; struct mbuf *mb = NULL; - size_t hashstringl = (resp->hash_length * 2) + 1; int err = 0, n = 0; if (!resp || !resp->hashh) return EINVAL; + size_t hashstringl = (resp->hash_length * 2) + 1; + mb = mbuf_alloc(str_len(user) + str_len(passwd) + chall->realm.l + 2); if (!mb) return ENOMEM; @@ -961,6 +962,9 @@ int httpauth_digest_response_full(struct httpauth_digest_enc_resp **presp, goto out; } + if (err) + goto out; + err = digest_response(resp, chall, method, user, passwd, entitybody); out: