Fix some memory leaks a problem introduced with the last commit

This commit is contained in:
Giuseppe Scrivano 2013-07-12 23:44:21 +02:00
parent 72b2c58983
commit a300f1e47d
2 changed files with 16 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2013-07-13 Giuseppe Scrivano <gscrivano@gnu.org>
* http.c (digest_authentication_encode): Fix a crash when the algorithm
is not specified in the server response. Free dynamic memory used by
the function when the function exits.
Reported by: Tim Ruehsen <tim.ruehsen@gmx.de>.
2013-07-13 Steven M. Schweda <sms@antinode.info>
* warc.c (warc_tempfile): Fix a portability issue on VMS.

View File

@ -3697,8 +3697,7 @@ digest_authentication_encode (const char *au, const char *user,
param_token name, value;
realm = opaque = nonce = qop = NULL;
algorithm = "MD5";
realm = opaque = nonce = algorithm = qop = NULL;
au += 6; /* skip over `Digest' */
while (extract_param (&au, &name, &value, ','))
@ -3755,7 +3754,7 @@ digest_authentication_encode (const char *au, const char *user,
dump_hash (a1buf, hash);
if (! strcmp (algorithm, "MD5-sess"))
if (algorithm && !strcmp (algorithm, "MD5-sess"))
{
/* A1BUF = H( H(user ":" realm ":" password) ":" nonce ":" cnonce ) */
snprintf (cnonce, sizeof (cnonce), "%08x", random_number(INT_MAX));
@ -3855,6 +3854,13 @@ digest_authentication_encode (const char *au, const char *user,
snprintf(res + res_len, res_size - res_len, ", algorithm=\"%s\"", algorithm);
}
}
xfree_null (realm);
xfree_null (opaque);
xfree_null (nonce);
xfree_null (qop);
xfree_null (algorithm);
return res;
}
#endif /* ENABLE_DIGEST */