From e531dcb1af9a3864a306d00be2ef997b0fa02879 Mon Sep 17 00:00:00 2001 From: Philippe Sultan Date: Mon, 7 Jan 2008 14:25:29 +0000 Subject: [PATCH] Compute the base64 value over the [authzid]\0authcid\0password string, 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/res/res_jabber.c b/res/res_jabber.c index d106cd4a1e..03ec4795b1 100644 --- a/res/res_jabber.c +++ b/res/res_jabber.c @@ -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);