Fix an issue where specifying the resource in the username would cause authentication...
authorJoshua Colp <jcolp@digium.com>
Mon, 16 Jul 2012 12:58:18 +0000 (12:58 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 16 Jul 2012 12:58:18 +0000 (12:58 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@370073 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_xmpp.c

index 63e6384..42d15ce 100644 (file)
@@ -2557,7 +2557,14 @@ static int xmpp_client_authenticate_sasl(struct ast_xmpp_client *client, struct
        iks_insert_attrib(auth, "xmlns", IKS_NS_XMPP_SASL);
        iks_insert_attrib(auth, "mechanism", "PLAIN");
 
-       snprintf(combined, sizeof(combined), "%c%s%c%s", 0, cfg->user, 0, cfg->password);
+       if (strchr(cfg->user, '/')) {
+               char *user = ast_strdupa(cfg->user);
+
+               snprintf(combined, sizeof(combined), "%c%s%c%s", 0, strsep(&user, "/"), 0, cfg->password);
+       } else {
+               snprintf(combined, sizeof(combined), "%c%s%c%s", 0, cfg->user, 0, cfg->password);
+       }
+
        ast_base64encode(base64, (const unsigned char *) combined, len - 1, (len + 2) * 4 / 3);
        iks_insert_cdata(auth, base64, 0);