Fix subscript error with odd TZif file [BZ #28338]
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
dj/TryBot-32bit |
success
|
Build for i686
|
Commit Message
* time/tzfile.c (__tzfile_compute): Fix unlikely off-by-one bug
that accessed before start of an array when an oddball-but-valid
TZif file was queried with an unusual time_t value.
---
time/tzfile.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Comments
On 14/09/2021 02:49, Paul Eggert wrote:
> * time/tzfile.c (__tzfile_compute): Fix unlikely off-by-one bug
> that accessed before start of an array when an oddball-but-valid
> TZif file was queried with an unusual time_t value.
LGTM, thanks. Do we have a testcase to trigger it by chance?
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> time/tzfile.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/time/tzfile.c b/time/tzfile.c
> index 4377018a55..190a777152 100644
> --- a/time/tzfile.c
> +++ b/time/tzfile.c
> @@ -765,8 +765,7 @@ __tzfile_compute (__time64_t timer, int use_localtime,
> *leap_correct = leaps[i].change;
>
> if (timer == leaps[i].transition /* Exactly at the transition time. */
> - && ((i == 0 && leaps[i].change > 0)
> - || leaps[i].change > leaps[i - 1].change))
> + && (leaps[i].change > (i == 0 ? 0 : leaps[i - 1].change)))
> {
> *leap_hit = 1;
> while (i > 0
>
On 9/28/21 10:42, Adhemerval Zanella wrote:
> LGTM, thanks. Do we have a testcase to trigger it by chance?
Sorry, no.
@@ -765,8 +765,7 @@ __tzfile_compute (__time64_t timer, int use_localtime,
*leap_correct = leaps[i].change;
if (timer == leaps[i].transition /* Exactly at the transition time. */
- && ((i == 0 && leaps[i].change > 0)
- || leaps[i].change > leaps[i - 1].change))
+ && (leaps[i].change > (i == 0 ? 0 : leaps[i - 1].change)))
{
*leap_hit = 1;
while (i > 0