diff --git a/ChangeLog b/ChangeLog index d8fa25c1f..c535e951c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-12-12 Alexey Shchepin + + * src/ejabberd_c2s.erl: Bugfix in "from" attribute checking + 2008-12-09 Christophe Romain * src/mod_pubsub/mod_pubsub.erl: prevent publish items with invalid diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 246218993..7fcff5b41 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1983,26 +1983,20 @@ 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; - true -> + 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' end end end.