mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Fix some memory leaks a problem introduced with the last commit
This commit is contained in:
parent
72b2c58983
commit
a300f1e47d
@ -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>
|
2013-07-13 Steven M. Schweda <sms@antinode.info>
|
||||||
|
|
||||||
* warc.c (warc_tempfile): Fix a portability issue on VMS.
|
* warc.c (warc_tempfile): Fix a portability issue on VMS.
|
||||||
|
12
src/http.c
12
src/http.c
@ -3697,8 +3697,7 @@ digest_authentication_encode (const char *au, const char *user,
|
|||||||
param_token name, value;
|
param_token name, value;
|
||||||
|
|
||||||
|
|
||||||
realm = opaque = nonce = qop = NULL;
|
realm = opaque = nonce = algorithm = qop = NULL;
|
||||||
algorithm = "MD5";
|
|
||||||
|
|
||||||
au += 6; /* skip over `Digest' */
|
au += 6; /* skip over `Digest' */
|
||||||
while (extract_param (&au, &name, &value, ','))
|
while (extract_param (&au, &name, &value, ','))
|
||||||
@ -3755,7 +3754,7 @@ digest_authentication_encode (const char *au, const char *user,
|
|||||||
|
|
||||||
dump_hash (a1buf, hash);
|
dump_hash (a1buf, hash);
|
||||||
|
|
||||||
if (! strcmp (algorithm, "MD5-sess"))
|
if (algorithm && !strcmp (algorithm, "MD5-sess"))
|
||||||
{
|
{
|
||||||
/* A1BUF = H( H(user ":" realm ":" password) ":" nonce ":" cnonce ) */
|
/* A1BUF = H( H(user ":" realm ":" password) ":" nonce ":" cnonce ) */
|
||||||
snprintf (cnonce, sizeof (cnonce), "%08x", random_number(INT_MAX));
|
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);
|
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;
|
return res;
|
||||||
}
|
}
|
||||||
#endif /* ENABLE_DIGEST */
|
#endif /* ENABLE_DIGEST */
|
||||||
|
Loading…
Reference in New Issue
Block a user