[tz] [PROPOSED] Fix unlikely conversion bug in zic

Paul Eggert eggert at cs.ucla.edu
Sat Nov 5 03:01:07 UTC 2022

* zic.c (puttzcode): Arg is zic_t, not int_fast32_t.  This fixes a
portability bug on platforms where int_fast32_t is a 32-bit ones’
complement or signed-magnitude integer, and where the argument is
-2**31 before conversion to int_fast32_t.  Although I don’t know
of any such platforms, the C standard allows them.
 zic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/zic.c b/zic.c
index d8bdbb96..548c1c5f 100644
--- a/zic.c
+++ b/zic.c
@@ -2216,7 +2216,7 @@ convert64(uint_fast64_t val, char *buf)
 static void
-puttzcode(const int_fast32_t val, FILE *const fp)
+puttzcode(zic_t val, FILE *fp)
 	char	buf[4];

More information about the tz mailing list