You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1.0 KiB
27 lines
1.0 KiB
commit 515a6f53cd984d5e6e374fbee52772f967fc3c73 |
|
Author: Paul Eggert <eggert@cs.ucla.edu> |
|
Date: Mon Sep 13 22:49:45 2021 -0700 |
|
|
|
Fix subscript error with odd TZif file [BZ #28338] |
|
|
|
* 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. |
|
|
|
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> |
|
(cherry picked from commit 645277434a42efc547d2cac8bfede4da10b4049f) |
|
|
|
diff --git a/time/tzfile.c b/time/tzfile.c |
|
index 4377018a55936389..190a777152b31cee 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
|
|
|