summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2008-12-09 22:02:47 +0000
committerChristophe Romain <christophe.romain@process-one.net>2008-12-09 22:02:47 +0000
commite8635b99c850171ef92caaada0c07f5acc9bd99e (patch)
tree9f73a9d703e2d523b1601a5c5dc7f0a90897bceb
parentcosmetic change (intentation and spaces) (diff)
prevent publish items with invalid XML schema (EJAB-699)
SVN Revision: 1722
-rw-r--r--ChangeLog5
-rw-r--r--src/mod_pubsub/mod_pubsub.erl10
2 files changed, 10 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index d0c53ad7..0dad41ac 100644
--- 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
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