fix for cnonce crap (tell pekka)

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3982 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2007-01-17 22:04:01 +00:00
parent 39a9e94305
commit 5ea224b3ca
2 changed files with 11 additions and 1 deletions

View File

@ -1 +1 @@
Thu Jan 4 13:01:49 EST 2007
Wed Jan 17 17:00:56 EST 2007

View File

@ -766,12 +766,22 @@ static int auc_digest_challenge(auth_client_t *ca, msg_auth_t const *ch)
if (ac->ac_qop && (cda->cda_cnonce == NULL || ac->ac_stale)) {
su_guid_t guid[1];
char *cnonce;
char *e;
if (cda->cda_cnonce != NULL)
/* Free the old one if we are updating after stale=true */
su_free(home, (void *)cda->cda_cnonce);
su_guid_generate(guid);
cda->cda_cnonce = cnonce = su_alloc(home, BASE64_SIZE(sizeof(guid)) + 1);
base64_e(cnonce, BASE64_SIZE(sizeof(guid)) + 1, guid, sizeof(guid));
/* somewhere else in the code the '=' chars are stripped in the header
we need to strip it now before the digest is created or we're in trouble
cos they won't match.....
*/
e = cnonce + strlen(cnonce) - 1;
while(*e == '=') {
*e-- = '\0';
}
cda->cda_ncount = 0;
}