diff options
author | Allen Winter <allen.winter@kdab.com> | 2015-06-01 10:34:20 -0400 |
---|---|---|
committer | Allen Winter <allen.winter@kdab.com> | 2015-06-01 10:34:20 -0400 |
commit | 2df05fe169b3fbd7fe7781cb19b5b3962edb0abe (patch) | |
tree | a9a21ef14937c4ba4d6ad841fedaa1e4b9054407 | |
parent | d071f61e7c5eeb078253eff078660126467172b3 (diff) | |
download | libical-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.c | 23 |
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")) { |