]> granicus.if.org Git - ejabberd/commitdiff
* src/web/ejabberd_http.erl (parse_auth): Allow password that
authorBadlop <badlop@process-one.net>
Mon, 12 May 2008 17:56:27 +0000 (17:56 +0000)
committerBadlop <badlop@process-one.net>
Mon, 12 May 2008 17:56:27 +0000 (17:56 +0000)
include colon character (EJAB-522)

SVN Revision: 1322

ChangeLog
src/web/ejabberd_http.erl

index 63eb9df84b047b1751651a9d9b5d452a2a0159dd..6a163c51d8de6566f6902a17e1dcb3d8d5b53560 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-12  Badlop  <badlop@process-one.net>
+
+       * src/web/ejabberd_http.erl (parse_auth): Allow password that
+       include colon character (EJAB-522)
+
 2008-05-09  Mickael Remond <mremond@process-one.net>
 
        * src/mod_ip_blacklist.erl: Better error handling (EJAB-625).
index 5c14a287b5d566f892069db1f2dff827520b108d..a5391080381cde08064af87d12325f2d0148444b 100644 (file)
@@ -635,11 +635,14 @@ parse_auth(_Orig = "Basic " ++ Auth64) ->
        {error, _Err} ->
            undefined;
        Auth ->
-           case string:tokens(Auth, ":") of
-               [User, Pass] ->
-                   {User, Pass};
-               _ ->
-                   undefined
+           %% Auth should be a string with the format: user@server:password
+           %% Note that password can contain additional characters '@' and ':'
+           case string:chr(Auth, $:) of
+               0 ->
+                   undefined;
+               SplitIndex ->
+                   {User, [$: | Pass]} = lists:split(SplitIndex-1, Auth),
+                   {User, Pass}
            end
     end;
 parse_auth(_) ->