summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllen Winter <allen.winter@kdab.com>2015-06-01 10:34:20 -0400
committerAllen Winter <allen.winter@kdab.com>2015-06-01 10:34:20 -0400
commit2df05fe169b3fbd7fe7781cb19b5b3962edb0abe (patch)
treea9a21ef14937c4ba4d6ad841fedaa1e4b9054407
parentd071f61e7c5eeb078253eff078660126467172b3 (diff)
downloadlibical-git-coverity_scan.tar.gz
icalvcal - use the return value of rrule_parse_duration() in rule_prop()coverity_scan
-rw-r--r--src/libicalvcal/icalvcal.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/libicalvcal/icalvcal.c b/src/libicalvcal/icalvcal.c
index ca8e9ef9..325a6d50 100644
--- a/src/libicalvcal/icalvcal.c
+++ b/src/libicalvcal/icalvcal.c
@@ -1170,7 +1170,7 @@ static void *rule_prop(int icaltype, VObject *object, icalcomponent *comp,
icalvcal_defaults *defaults)
{
icalproperty *prop = NULL;
- char *s, *p, *error_message = NULL;
+ char *s, *p, *parsestat, *error_message;
const char *property_name;
int free_string;
struct icalrecurrencetype recur;
@@ -1185,47 +1185,50 @@ static void *rule_prop(int icaltype, VObject *object, icalcomponent *comp,
icalrecurrencetype_clear(&recur);
+ error_message = NULL;
+ parsestat = NULL;
if (*s == 'D') {
/* The DAILY RRULE only has an interval and duration (COUNT/UNTIL). */
recur.freq = ICAL_DAILY_RECURRENCE;
p = rrule_parse_interval(s + 1, &recur, &error_message);
- rrule_parse_duration(p, &recur, &error_message);
+ parsestat = rrule_parse_duration(p, &recur, &error_message);
} else if (*s == 'W') {
/* The WEEKLY RRULE has weekday modifiers - MO TU WE. */
recur.freq = ICAL_WEEKLY_RECURRENCE;
p = rrule_parse_interval(s + 1, &recur, &error_message);
p = rrule_parse_weekly_days(p, &recur, &error_message);
- rrule_parse_duration(p, &recur, &error_message);
+ parsestat = rrule_parse_duration(p, &recur, &error_message);
} else if (*s == 'M' && *(s + 1) == 'D') {
/* The MONTHLY By Day RRULE has day number modifiers - 1 1- LD. */
recur.freq = ICAL_MONTHLY_RECURRENCE;
p = rrule_parse_interval(s + 2, &recur, &error_message);
p = rrule_parse_monthly_days(p, &recur, &error_message);
- rrule_parse_duration(p, &recur, &error_message);
+ parsestat = rrule_parse_duration(p, &recur, &error_message);
} else if (*s == 'M' && *(s + 1) == 'P') {
/* The MONTHLY By Position RRULE has position modifiers - 1 2- and
weekday modifiers - MO TU. */
recur.freq = ICAL_MONTHLY_RECURRENCE;
p = rrule_parse_interval(s + 2, &recur, &error_message);
p = rrule_parse_monthly_positions(p, &recur, &error_message);
- rrule_parse_duration(p, &recur, &error_message);
+ parsestat = rrule_parse_duration(p, &recur, &error_message);
} else if (*s == 'Y' && *(s + 1) == 'M') {
/* The YEARLY By Month RRULE has month modifiers - 1 3 12. */
recur.freq = ICAL_YEARLY_RECURRENCE;
p = rrule_parse_interval(s + 2, &recur, &error_message);
p = rrule_parse_yearly_months(p, &recur, &error_message);
- rrule_parse_duration(p, &recur, &error_message);
+ parsestat = rrule_parse_duration(p, &recur, &error_message);
} else if (*s == 'Y' && *(s + 1) == 'D') {
/* The YEARLY By Day RRULE has day number modifiers - 100 200. */
recur.freq = ICAL_YEARLY_RECURRENCE;
p = rrule_parse_interval(s + 2, &recur, &error_message);
p = rrule_parse_yearly_days(p, &recur, &error_message);
- rrule_parse_duration(p, &recur, &error_message);
- } else {
- error_message = "Invalid RRULE Frequency";
+ parsestat = rrule_parse_duration(p, &recur, &error_message);
}
- if (error_message) {
+ if (!parsestat) {
+ if (!error_message) {
+ error_message = "Invalid RRULE Frequency";
+ }
prop = create_parse_error_property(error_message, property_name, s);
} else {
if (!strcmp(property_name, "RRULE")) {