]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_c2s.erl: Bugfix in "from" attribute checking
authorAlexey Shchepin <alexey@process-one.net>
Mon, 29 Dec 2008 11:11:37 +0000 (11:11 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Mon, 29 Dec 2008 11:11:37 +0000 (11:11 +0000)
SVN Revision: 1763

ChangeLog
src/ejabberd_c2s.erl

index 24b09e0b7275257bf7939acddad4d4343bde2e1a..f7f84b8c245e4c687ac7996eb1425ec6deaf56b8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-12-29  Alexey Shchepin  <alexey@process-one.net>
+
+       * src/ejabberd_c2s.erl: Bugfix in "from" attribute checking
+
 2008-12-29  Evgeniy Khramtsov <ekhramtsov@process-one.net>
 
        * src/odbc/ejabberd_odbc.erl: Print meaningful error message when
index c8ae3f188f1d8df2e05415eee18e3cc03797e2da..10d323ab7c937c9b8aaa92519a6bf79e2f31f14b 100644 (file)
@@ -1983,14 +1983,21 @@ is_ip_blacklisted({IP,_Port}) ->
 check_from(El, FromJID) ->
     case xml:get_tag_attr("from", El) of
        false ->
-           jlib:replace_from(FromJID, El);
-       {value, JIDElString} ->
-           JIDEl = jlib:string_to_jid(JIDElString),
-           case JIDEl#jid.lresource of 
-               "" ->
-                   %% Matching JID: The stanza is ok
-                   if JIDEl#jid.luser == FromJID#jid.luser andalso
-                      JIDEl#jid.lserver == FromJID#jid.lserver ->
+           El;
+       {value, SJID} ->
+           JID = jlib:string_to_jid(SJID),
+           case JID of
+               error ->
+                   'invalid-from';
+               #jid{} ->
+                   if
+                       (JID#jid.luser == FromJID#jid.luser) and
+                       (JID#jid.lserver == FromJID#jid.lserver) and
+                       (JID#jid.lresource == FromJID#jid.lresource) ->
+                           El;
+                       (JID#jid.luser == FromJID#jid.luser) and
+                       (JID#jid.lserver == FromJID#jid.lserver) and
+                       (JID#jid.lresource == "") ->
                            %% We force the resource on the from attribute in the packet.
                            %% This is strictly needed only for IQ (to
                            %% reply to the client), but I do not see
@@ -1998,18 +2005,9 @@ check_from(El, FromJID) ->
                            %% all packets.
                            %% Need to be changed to support multiple
                            %% resource binding per connection.
-                           jlib:replace_from(FromJID, El);
-                      true ->
-                           'invalid-from'
-                   end;
-               _ ->
-                   %% Matching JID: The stanza is ok
-                   if JIDEl#jid.luser == FromJID#jid.luser andalso
-                      JIDEl#jid.lserver == FromJID#jid.lserver andalso 
-                      JIDEl#jid.lresource == FromJID#jid.lresource ->
                            El;
-                      true ->
-                          'invalid-from'
+                       true ->
+                           'invalid-from'
                    end
            end
     end.