diff options
author | Christophe Romain <christophe.romain@process-one.net> | 2008-12-09 22:02:47 +0000 |
---|---|---|
committer | Christophe Romain <christophe.romain@process-one.net> | 2008-12-09 22:02:47 +0000 |
commit | e8635b99c850171ef92caaada0c07f5acc9bd99e (patch) | |
tree | 9f73a9d703e2d523b1601a5c5dc7f0a90897bceb | |
parent | cosmetic change (intentation and spaces) (diff) |
prevent publish items with invalid XML schema (EJAB-699)
SVN Revision: 1722
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/mod_pubsub/mod_pubsub.erl | 10 |
2 files changed, 10 insertions, 5 deletions
@@ -1,3 +1,8 @@ +2008-12-09 Christophe Romain <christophe.romain@process-one.net> + + * src/mod_pubsub/mod_pubsub.erl: prevent publish items with invalid + XML schema bugfix (EJAB-699) (previous commit was uncomplete) + 2008-12-08 Christophe Romain <christophe.romain@process-one.net> * src/ejabberd_c2s.erl: Reduce memory consumption due to caps handling diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index 0fb23757..23f6d619 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -1485,7 +1485,7 @@ publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload) -> PublishFeature = lists:member("publish", Features), PublishModel = get_option(Options, publish_model), MaxItems = max_items(Options), - PayloadCount = payload_elements(xmlelement, Payload), + PayloadCount = payload_xmlelements(Payload), PayloadSize = size(term_to_binary(Payload)), PayloadMaxSize = get_option(Options, max_payload_size), % pubsub#deliver_payloads true @@ -2127,10 +2127,10 @@ is_to_delivered({User, Server, _}, _, true) -> %% Elem = atom() %% Payload = term() %% @doc <p>Count occurence of given element in payload.</p> -payload_elements(Elem, Payload) -> payload_elements(Elem, Payload, 0). -payload_elements(_, [], Count) -> Count; -payload_elements(Elem, [Elem|Tail], Count) -> payload_elements(Elem, Tail, Count+1); -payload_elements(Elem, [_|Tail], Count) -> payload_elements(Elem, Tail, Count). +payload_xmlelements(Payload) -> payload_xmlelements(Payload, 0). +payload_xmlelements([], Count) -> Count; +payload_xmlelements([{xmlelement, _, _, _}|Tail], Count) -> payload_xmlelements(Tail, Count+1); +payload_xmlelements([_|Tail], Count) -> payload_xmlelements(Tail, Count). %%%%%% broadcast functions |