]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix for cnonce crap (tell pekka)
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 17 Jan 2007 22:04:01 +0000 (22:04 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 17 Jan 2007 22:04:01 +0000 (22:04 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3982 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/sofia-sip/.update
libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c

index 152d9c80370e9bfca9d3f3d33d1cd7e05a0c18a9..64d79eac98e76ad98d6cd5929b2ed89d7bd7fe45 100644 (file)
@@ -1 +1 @@
-Thu Jan  4 13:01:49 EST 2007
+Wed Jan 17 17:00:56 EST 2007
index 963f1421b9d501ba3ce0bd7cf9152e4ee43fb651..5c7dd4b1c2967e418ac1350820386b6340f09142 100644 (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;
   }