X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit-ng%2Fserver%2Fcaldav_reports.c;h=08972cb860b71cec655b5bd58da33c98fcc194e0;hb=2c1cfe66047a3a6618812688b8c43769602d48a9;hp=80d6627ba0da9eb70a49a41b63115b646c36efaf;hpb=59cf6823582d86ea826d3ed9625791da13d6f92b;p=citadel.git diff --git a/webcit-ng/server/caldav_reports.c b/webcit-ng/server/caldav_reports.c index 80d6627ba..08972cb86 100644 --- a/webcit-ng/server/caldav_reports.c +++ b/webcit-ng/server/caldav_reports.c @@ -291,11 +291,17 @@ int caldav_apply_filters(void *cal, Array *filters, int apply_at_level) { syslog(LOG_DEBUG, "caldav: apply_at_level=%d, this_rule_level=%d, skipping this rule", apply_at_level, this_rule_level); } - else if ( (!strcasecmp(t[1], "comp-filter")) - && (!disregard_further_comp_filters) - ) { // RFC4791 9.7.1 - filter by component + else if ( (!strcasecmp(t[1], "comp-filter")) // RFC4791 9.7.1 - filter by component + && (!disregard_further_comp_filters) // one is enough to succeed + ) { syslog(LOG_DEBUG, "component filter at level %d", this_rule_level); + // comp-filter requires exactly one parameter (name="VXXXX") + if (num_tokens < 4) { + syslog(LOG_DEBUG, "caldav: comp-filter has no parameters - rejecting"); + return(0); + } + // Root element is NOT a component, but the root filter is "comp-filter" -- reject! if ( (!icalcomponent_isa_component(cal)) && (this_rule_level == 0) ) { syslog(LOG_DEBUG, "caldav: root element is not a component, rejecting"); @@ -367,6 +373,9 @@ int caldav_apply_filters(void *cal, Array *filters, int apply_at_level) { else if (!strcasecmp(t[1], "time-range")) { syslog(LOG_DEBUG, "time range filter at level %d FIXME not implemented yet", this_rule_level); + for (int i=0; i", i, t[i]); + } } ++f;