aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2011-08-18 23:30:19 +0800
committerMilan Crha <mcrha@redhat.com>2011-08-18 23:30:19 +0800
commit213bb761b1cddb18840e9c9a3150a57af503568d (patch)
treeb23163a46d197d74d69e7401267f7bcfbadc9a75
parentccbe39a7cbd755fddc4bbbc0cef9b5585634a9b7 (diff)
downloadgsoc2013-evolution-213bb761b1cddb18840e9c9a3150a57af503568d.tar
gsoc2013-evolution-213bb761b1cddb18840e9c9a3150a57af503568d.tar.gz
gsoc2013-evolution-213bb761b1cddb18840e9c9a3150a57af503568d.tar.bz2
gsoc2013-evolution-213bb761b1cddb18840e9c9a3150a57af503568d.tar.lz
gsoc2013-evolution-213bb761b1cddb18840e9c9a3150a57af503568d.tar.xz
gsoc2013-evolution-213bb761b1cddb18840e9c9a3150a57af503568d.tar.zst
gsoc2013-evolution-213bb761b1cddb18840e9c9a3150a57af503568d.zip
Bug #656810 - Too strict checking for validity of received calendars
-rw-r--r--calendar/gui/itip-utils.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index 6163d59fae..b59cb9f384 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -1906,8 +1906,22 @@ check_time (const struct icaltimetype tmval, gboolean can_null_time)
gboolean
is_icalcomp_valid (icalcomponent *icalcomp)
{
- return icalcomp &&
- icalcomponent_is_valid (icalcomp) &&
- check_time (icalcomponent_get_dtstart (icalcomp), FALSE) &&
- check_time (icalcomponent_get_dtend (icalcomp), TRUE);
+ if (!icalcomp || !icalcomponent_is_valid (icalcomp))
+ return FALSE;
+
+ switch (icalcomponent_isa (icalcomp)) {
+ case ICAL_VEVENT_COMPONENT:
+ return check_time (icalcomponent_get_dtstart (icalcomp), FALSE) &&
+ check_time (icalcomponent_get_dtend (icalcomp), TRUE);
+ case ICAL_VTODO_COMPONENT:
+ return check_time (icalcomponent_get_dtstart (icalcomp), TRUE) &&
+ check_time (icalcomponent_get_due (icalcomp), TRUE);
+ case ICAL_VJOURNAL_COMPONENT:
+ return check_time (icalcomponent_get_dtstart (icalcomp), TRUE) &&
+ check_time (icalcomponent_get_dtend (icalcomp), TRUE);
+ default:
+ break;
+ }
+
+ return TRUE;
}