]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Compute the base64 value over the [authzid]\0authcid\0password string,
authorPhilippe Sultan <philippe.sultan@gmail.com>
Mon, 7 Jan 2008 14:25:29 +0000 (14:25 +0000)
committerPhilippe Sultan <philippe.sultan@gmail.com>
Mon, 7 Jan 2008 14:25:29 +0000 (14:25 +0000)
thus excluding the trailing NULL byte.

This change has already been committed to trunk, see #11644.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@96797 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_jabber.c

index d106cd4a1e8045cd8fc9ff02f9bb019c769cf27e..03ec4795b1de447738b01b6174cad2c0e26da98d 100644 (file)
@@ -583,7 +583,12 @@ static int aji_act_hook(void *data, int type, iks *node)
                                                                                iks_insert_attrib(x, "xmlns", IKS_NS_XMPP_SASL);
                                                                                iks_insert_attrib(x, "mechanism", "PLAIN");
                                                                                sprintf(s, "%c%s%c%s", 0, client->jid->user, 0, client->password);
-                                                                               ast_base64encode(base64, (const unsigned char *) s, len, len * 2);
+                                                                               
+                                                                               /* exclude the NULL training byte from the base64 encoding operation
+                                                                                  as some XMPP servers will refuse it.
+                                                                                  The format for authentication is [authzid]\0authcid\0password
+                                                                                  not [authzid]\0authcid\0password\0 */
+                                                                               ast_base64encode(base64, (const unsigned char *) s, len - 1, len * 2);
                                                                                iks_insert_cdata(x, base64, 0);
                                                                                iks_send(client->p, x);
                                                                                iks_delete(x);