Paul, Both patches work as designed on Linux and AIX for me. I have reports that our z/OS build has hit the same issue. That one will take some time for the fix to percolate through the build system to validate it; I don't have easy individual access to z/OS. --- Tim McBrayer From: "Paul Eggert" <eggert@cs.ucla.edu> To: "Guy Harris" <gharris@sonic.net>, "Tim McBrayer" <TMcBrayer@ABINITIO.com> Cc: "Time zone mailing list" <tz@iana.org> Date: 11/04/2022 09:25 PM Subject: Re: [tz] Bug in 2022f version of zic.c On 2022-11-04 16:11, Guy Harris via tz wrote:
In what cases in zic is emalloc() - or erealloc() - called with 0 as the size argument?
It's when zic sees a Zone with no continuation lines. I didn't notice the bug in testing, since I don't test with AIX. The portability bug was triggered by the removal of the Qt bug workaround in tzcode 2022f, which when combined with the -bslim option introduced in tzcode 2019b means that zic can generate TZif files with no time transitions. Thanks for reporting the bug, Tim. I installed the first attached patch; please give it a try. I think this fixes the only place that might call malloc(0) or realloc(p, 0). It's unfortunate that the C standard allows malloc to return NULL on success, as this complicates error checking. Of course zic.c should be portable even to platforms that exploit this glitch in C.
(ecpyalloc() - which should probably be called estrdup() to make it clearer that it's "strdup() with quit on out-of-memory"
Good suggestion, thanks. I installed the attached second patch to do that. [attachment "0001-Port-to-AIX-6.1-malloc.patch" deleted by Tim McBrayer/AbInitio] [attachment "0002-Rename-ecpyalloc-to-estrdup.patch" deleted by Tim McBrayer/AbInitio] NOTICE from Ab Initio: This email (including any attachments) may contain information that is subject to confidentiality obligations or is legally privileged, and sender does not waive confidentiality or privilege. If received in error, please notify the sender, delete this email, and make no further use, disclosure, or distribution.