diff options
author | Allen Winter <allen.winter@kdab.com> | 2021-02-28 17:42:53 -0500 |
---|---|---|
committer | Allen Winter <allen.winter@kdab.com> | 2021-04-11 13:00:47 -0400 |
commit | 26dabee3ef4a741a829bc241ed3dbd0dd2e91ebe (patch) | |
tree | cf34457d086de30bd5ebfc9f9c16ae7063d0f9bd | |
parent | d6688a6b22b43e160aa1000f76ecafa49d9a8ce4 (diff) | |
download | libical-git-26dabee3ef4a741a829bc241ed3dbd0dd2e91ebe.tar.gz |
various small fixes found by Coverity
-rw-r--r-- | src/libical/icalrecur.c | 9 | ||||
-rw-r--r-- | src/libical/icaltz-util.c | 42 | ||||
-rw-r--r-- | src/libicalss/icalgauge.c | 5 | ||||
-rw-r--r-- | src/libicalss/icalspanlist.c | 1 | ||||
-rw-r--r-- | src/test/regression-component.c | 2 | ||||
-rw-r--r-- | src/test/regression.c | 4 |
6 files changed, 25 insertions, 38 deletions
diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c index 4774cb09..d4f02234 100644 --- a/src/libical/icalrecur.c +++ b/src/libical/icalrecur.c @@ -2745,14 +2745,14 @@ static short daymask_find_next_bit(icalrecur_iterator *impl) short days_index = impl->days_index + 1; unsigned long v; short startBitIndex; - int wordIdx; + unsigned short wordIdx, maxWordIdx; if (days_index >= ICAL_YEARDAYS_MASK_SIZE) return ICAL_YEARDAYS_MASK_SIZE; // Prepare the first word, where searching might not start at the beginning startBitIndex = days_index + ICAL_YEARDAYS_MASK_OFFSET; - wordIdx = (int)(startBitIndex / BITS_PER_LONG); + wordIdx = (unsigned short)(startBitIndex / BITS_PER_LONG); v = days[wordIdx]; v >>= startBitIndex % BITS_PER_LONG; @@ -2761,7 +2761,8 @@ static short daymask_find_next_bit(icalrecur_iterator *impl) days_index += BITS_PER_LONG - startBitIndex % BITS_PER_LONG; // Are there more empty words following? Skip them. - while (days_index < ICAL_YEARDAYS_MASK_SIZE) { + maxWordIdx = (unsigned short)(LONGS_PER_BITS(ICAL_YEARDAYS_MASK_SIZE)) - 1; + while (days_index < ICAL_YEARDAYS_MASK_SIZE && wordIdx < maxWordIdx) { wordIdx++; v = days[wordIdx]; @@ -2774,7 +2775,6 @@ static short daymask_find_next_bit(icalrecur_iterator *impl) } if (v) { - // We found a word containing the next bit but don't know the exact // position yet. Do a b-search to find it. @@ -2783,7 +2783,6 @@ static short daymask_find_next_bit(icalrecur_iterator *impl) mask = (((unsigned long)1) << maskSize) - 1; while (maskSize) { - if ((v & mask) == 0) { v >>= maskSize; days_index += maskSize; diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c index 0afa17fa..7ffe7c68 100644 --- a/src/libical/icaltz-util.c +++ b/src/libical/icaltz-util.c @@ -387,21 +387,19 @@ icalcomponent *icaltzutil_fetch_timezone(const char *location) } EFREAD(r_trans, (size_t)trans_size, num_trans, f); temp = r_trans; - if (num_trans) { - trans_idx = calloc(num_trans, sizeof(int)); - if (trans_idx == NULL) { - icalerror_set_errno(ICAL_NEWFAILED_ERROR); - goto error; - } - for (i = 0; i < num_trans; i++) { - trans_idx[i] = fgetc(f); - if (trans_size == 8) { - transitions[i] = (time_t) decode64(r_trans); - } else { - transitions[i] = (time_t) decode(r_trans); - } - r_trans += trans_size; + trans_idx = calloc(num_trans, sizeof(int)); + if (trans_idx == NULL) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + goto error; + } + for (i = 0; i < num_trans; i++) { + trans_idx[i] = fgetc(f); + if (trans_size == 8) { + transitions[i] = (time_t) decode64(r_trans); + } else { + transitions[i] = (time_t) decode(r_trans); } + r_trans += trans_size; } r_trans = temp; @@ -500,11 +498,7 @@ icalcomponent *icaltzutil_fetch_timezone(const char *location) icalcomponent_add_property(tz_comp, icalprop); prev_idx = 0; - if (num_trans == 0) { - prev_idx = idx = 0; - } else { - idx = trans_idx[0]; - } + idx = trans_idx[0]; for (i = 1; i < num_trans; i++) { int by_day; @@ -681,14 +675,8 @@ icalcomponent *icaltzutil_fetch_timezone(const char *location) icalcomponent_add_component(tz_comp, comp); } - if (num_trans <= 1) { - time_t start; - - if (num_trans == 1) { - start = transitions[0] + types[prev_idx].gmtoff; - } else { - start = 0; - } + if (num_trans == 1) { + time_t start = transitions[0] + types[prev_idx].gmtoff; // This time zone doesn't transition, insert a single VTIMEZONE component if (types[idx].isdst) { diff --git a/src/libicalss/icalgauge.c b/src/libicalss/icalgauge.c index f056ce3d..43d7b549 100644 --- a/src/libicalss/icalgauge.c +++ b/src/libicalss/icalgauge.c @@ -67,10 +67,7 @@ icalgauge *icalgauge_new_from_sql(const char *sql, int expand) int icalgauge_get_expand(icalgauge *gauge) { icalerror_check_arg_rz((gauge != 0), "gauge"); - if (gauge != 0) { - return gauge->expand; - } - return -1; + return gauge->expand; } void icalgauge_free(icalgauge *gauge) diff --git a/src/libicalss/icalspanlist.c b/src/libicalss/icalspanlist.c index b43bd686..2ea91cf8 100644 --- a/src/libicalss/icalspanlist.c +++ b/src/libicalss/icalspanlist.c @@ -233,6 +233,7 @@ struct icalperiodtype icalspanlist_next_free_time(icalspanlist *sl, struct icalt period.start = icaltime_null_time(); period.end = icaltime_null_time(); + period.duration = icaldurationtype_null_duration(); itr = pvl_head(sl->spans); s = (struct icaltime_span *)pvl_data(itr); diff --git a/src/test/regression-component.c b/src/test/regression-component.c index e51d2821..3e147e9e 100644 --- a/src/test/regression-component.c +++ b/src/test/regression-component.c @@ -97,6 +97,7 @@ void create_new_component() rtime.period.start = icaltime_from_timet_with_zone(1023398689, 0, NULL); rtime.period.end = icaltime_from_timet_with_zone(1023409689, 0, NULL); rtime.period.end.hour++; + rtime.period.duration = icaldurationtype_null_duration(); rtime.time = icaltime_null_time(); /* Create calendar and add properties */ @@ -221,6 +222,7 @@ void create_new_component_with_va_args() rtime.period.start = icaltime_from_timet_with_zone(time(0), 0, NULL); rtime.period.end = icaltime_from_timet_with_zone(time(0), 0, NULL); rtime.period.end.hour++; + rtime.period.duration = icaldurationtype_null_duration(); rtime.time = icaltime_null_time(); calendar = diff --git a/src/test/regression.c b/src/test/regression.c index 91646df1..8faf2713 100644 --- a/src/test/regression.c +++ b/src/test/regression.c @@ -1090,6 +1090,7 @@ void test_restriction() rtime.period.start = icaltime_from_timet_with_zone(time(0), 0, NULL); rtime.period.end = icaltime_from_timet_with_zone(time(0), 0, NULL); rtime.period.end.hour++; + rtime.period.duration = icaldurationtype_null_duration(); rtime.time = icaltime_null_time(); comp = @@ -1141,8 +1142,7 @@ void test_restriction() icalproperty_vanew_dtend(atime, icalparameter_new_tzid("America/New_York"), (void *)0), - icalproperty_new_location("1CP Conference Room 4350"), (void *)0), - (void *)0); + icalproperty_new_location("1CP Conference Room 4350"), (void *)0), (void *)0); valid = icalrestriction_check(comp); |