Skip to content

Commit 316e0a9

Browse files
author
Зишан Мирза
committed
fix: bytes for timezone file
1 parent 59b3582 commit 316e0a9

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

libc/src/time/timezone.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ void rev_str(char *str) {
4242
int get_timezone_offset(char *timezone) {
4343
(void)timezone;
4444

45-
unsigned char hdr[TIMEZONE_HDR_SIZE];
45+
unsigned char hdr[TIMEZONE_HDR_SIZE + 1];
4646

4747
int32_t magic;
4848
unsigned char version;
@@ -76,16 +76,16 @@ int get_timezone_offset(char *timezone) {
7676
// for `tzfile`
7777
magic = (hdr[0] << 24) | (hdr[1] << 16) | (hdr[2] << 8) | hdr[3];
7878
version = hdr[4];
79-
for (i = 5; i <= 20; i++) {
79+
for (i = 5; i < 21; i++) {
8080
tmp = (tmp << 8) | hdr[i];
8181
}
8282
reserved = tmp;
83-
tzh_ttisutcnt = (hdr[20] << 24) | (hdr[21] << 16) | (hdr[22] << 8) | hdr[23];
84-
tzh_ttisstdcnt = (hdr[24] << 24) | (hdr[25] << 16) | (hdr[26] << 8) | hdr[27];
85-
tzh_leapcnt = (hdr[28] << 24) | (hdr[29] << 16) | (hdr[30] << 8) | hdr[31];
86-
tzh_timecnt = (hdr[32] << 24) | (hdr[33] << 16) | (hdr[34] << 8) | hdr[35];
87-
tzh_typecnt = (hdr[36] << 24) | (hdr[37] << 16) | (hdr[38] << 8) | hdr[39];
88-
tzh_charcnt = (hdr[40] << 24) | (hdr[41] << 16) | (hdr[42] << 8) | hdr[43];
83+
tzh_ttisutcnt = (hdr[21] << 24) | (hdr[22] << 16) | (hdr[23] << 8) | hdr[24];
84+
tzh_ttisstdcnt = (hdr[25] << 24) | (hdr[26] << 16) | (hdr[27] << 8) | hdr[28];
85+
tzh_leapcnt = (hdr[29] << 24) | (hdr[30] << 16) | (hdr[31] << 8) | hdr[32];
86+
tzh_timecnt = (hdr[33] << 24) | (hdr[34] << 16) | (hdr[35] << 8) | hdr[36];
87+
tzh_typecnt = (hdr[37] << 24) | (hdr[38] << 16) | (hdr[39] << 8) | hdr[40];
88+
tzh_charcnt = (hdr[41] << 24) | (hdr[42] << 16) | (hdr[43] << 8) | hdr[44];
8989
(void)tzh_ttisutcnt;
9090
(void)tzh_ttisstdcnt;
9191
(void)tzh_leapcnt;
@@ -101,7 +101,7 @@ int get_timezone_offset(char *timezone) {
101101
}
102102

103103
// according to `tzfile`, 15 bytes should be 0
104-
if ((reserved ^ 0x00) != 0) {
104+
if (reserved != 0) {
105105
return 0;
106106
}
107107

0 commit comments

Comments
 (0)