]> granicus.if.org Git - ejabberd/commitdiff
prevent publish items with invalid XML schema (EJAB-699)
authorChristophe Romain <christophe.romain@process-one.net>
Tue, 9 Dec 2008 22:02:47 +0000 (22:02 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Tue, 9 Dec 2008 22:02:47 +0000 (22:02 +0000)
SVN Revision: 1722

ChangeLog
src/mod_pubsub/mod_pubsub.erl

index d0c53ad70f6753ce384c0c373aa54e4c9e56ae94..0dad41acb945dee981024cecfca3e0ad4f3f5166 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index 0fb23757c9cf89c27a7efd0cfcd2c7d9d4226021..23f6d619ded55e5a4b0965210b2865031c515c69 100644 (file)
@@ -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