Ensure ParseTzFile() closes the input file after failing.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 31 May 2022 18:47:44 +0000 (14:47 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 31 May 2022 18:47:44 +0000 (14:47 -0400)
commit16c80e7d0cdad933103968aec7cd024bca5274c0
treef3ba33f4a4f9d6061d63fc9205672ae8a3cc60b7
parentc03b7f52607f20e8b49e662927ba5810d49f3427
Ensure ParseTzFile() closes the input file after failing.

We hadn't noticed this because (a) few people feed invalid
timezone abbreviation files to the server, and (b) in typical
scenarios guc.c would throw ereport(ERROR) and then transaction
abort handling would silently clean up the leaked file reference.
However, it was possible to observe file leakage warnings if one
breaks an already-active abbreviation file, because guc.c does
not throw ERROR when loading supposedly-validated settings during
session start or SIGHUP processing.

Report and fix by Kyotaro Horiguchi (cosmetic adjustments by me)

Discussion: https://postgr.es/m/20220530.173740.748502979257582392.horikyota.ntt@gmail.com
src/backend/utils/misc/tzparser.c