git: 06e4364bd6 - main - Add EN-22:20 and SA-22:13.

From: Gordon Tetlow <gordon_at_FreeBSD.org>
Date: Tue, 30 Aug 2022 23:46:52 UTC
The branch main has been updated by gordon (src committer):

URL: https://cgit.FreeBSD.org/doc/commit/?id=06e4364bd6f4d9fbcb1a124c78f326c9ad63885e

commit 06e4364bd6f4d9fbcb1a124c78f326c9ad63885e
Author:     Gordon Tetlow <gordon@FreeBSD.org>
AuthorDate: 2022-08-30 23:46:11 +0000
Commit:     Gordon Tetlow <gordon@FreeBSD.org>
CommitDate: 2022-08-30 23:46:11 +0000

    Add EN-22:20 and SA-22:13.
    
    Approved by:    so
---
 website/data/security/advisories.toml              |    4 +
 website/data/security/errata.toml                  |    4 +
 .../advisories/FreeBSD-EN-22:20.tzdata.asc         |  175 +
 .../security/advisories/FreeBSD-SA-22:13.zlib.asc  |  148 +
 .../security/patches/EN-22:20/tzdata-2022c.patch   | 4100 ++++++++++++++++++++
 .../patches/EN-22:20/tzdata-2022c.patch.asc        |   16 +
 .../static/security/patches/SA-22:13/zlib.patch    |   14 +
 .../security/patches/SA-22:13/zlib.patch.asc       |   16 +
 8 files changed, 4477 insertions(+)

diff --git a/website/data/security/advisories.toml b/website/data/security/advisories.toml
index 49a8244da2..a5aadbdf0d 100644
--- a/website/data/security/advisories.toml
+++ b/website/data/security/advisories.toml
@@ -1,6 +1,10 @@
 # Sort advisories by year, month and day
 # $FreeBSD$
 
+[[advisories]]
+name = "FreeBSD-SA-22:13.zlib"
+date = "2022-08-30"
+
 [[advisories]]
 name = "FreeBSD-SA-22:12.lib9p"
 date = "2022-08-09"
diff --git a/website/data/security/errata.toml b/website/data/security/errata.toml
index d8b7dd74be..657fa4133e 100644
--- a/website/data/security/errata.toml
+++ b/website/data/security/errata.toml
@@ -1,6 +1,10 @@
 # Sort errata notices by year, month and day
 # $FreeBSD$
 
+[[notices]]
+name = "FreeBSD-EN-22:20.tzdata"
+date = "2022-08-30"
+
 [[notices]]
 name = "FreeBSD-EN-22:19.pam_exec"
 date = "2022-08-09"
diff --git a/website/static/security/advisories/FreeBSD-EN-22:20.tzdata.asc b/website/static/security/advisories/FreeBSD-EN-22:20.tzdata.asc
new file mode 100644
index 0000000000..25bc1eabab
--- /dev/null
+++ b/website/static/security/advisories/FreeBSD-EN-22:20.tzdata.asc
@@ -0,0 +1,175 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-EN-22:20.tzdata                                         Errata Notice
+                                                          The FreeBSD Project
+
+Topic:          Timezone database information update
+
+Category:       contrib
+Module:         zoneinfo
+Announced:      2022-08-30
+Affects:        All supported versions of FreeBSD.
+Corrected:      2022-08-17 01:48:01 UTC (stable/13, 13.1-STABLE)
+                2022-08-30 23:02:48 UTC (releng/13.1, 13.1-RELEASE-p2)
+                2022-08-30 23:01:22 UTC (releng/13.0, 13.0-RELEASE-p13)
+                2022-08-17 01:56:52 UTC (stable/12, 12.3-STABLE)
+                2022-08-30 23:16:54 UTC (releng/12.3, 12.3-RELEASE-p7)
+
+For general information regarding FreeBSD Errata Notices and Security
+Advisories, including descriptions of the fields above, security
+branches, and the following sections, please visit
+<URL:https://security.FreeBSD.org/>.
+
+I.   Background
+
+The IANA Time Zone Database (often called tz or zoneinfo) contains code and
+data that represent the history of local time for many representative
+locations around the globe.  It is updated periodically to reflect changes
+made by political bodies to time zone boundaries, UTC offsets, and
+daylight-saving rules.
+
+FreeBSD releases install the IANA Time Zone Database in /usr/share/zoneinfo.
+The tzsetup(8) utility allows the user to specify the default local time
+zone.  Based on the selected time zone, tzsetup(8) copies one of the files
+from /usr/share/zoneinfo to /etc/localtime.  A time zone may also be selected
+for an individual process by setting its TZ environment variable to a desired
+time zone name.
+
+II.  Problem Description
+
+Several changes to future and past timestamps have been recorded in the IANA
+Time Zone Database after previous FreeBSD releases were released.  This
+affects many users in different parts of the world.  Because of these
+changes, the data in the zoneinfo files need to be updated.  If the local
+timezone on the running system is affected, tzsetup(8) needs to be run to
+update /etc/localtime.
+
+III. Impact
+
+An incorrect time will be displayed on a system configured to use one of the
+affected time zones if the /usr/share/zoneinfo and /etc/localtime files are
+not updated, and all applications on the system that rely on the system time,
+such as cron(8) and syslog(8), will be affected.
+
+IV.  Workaround
+
+The system administrator can install an updated version of the IANA Time Zone
+Database from the misc/zoneinfo port and run tzsetup(8).
+
+Applications that store and display times in Coordinated Universal Time (UTC)
+are not affected.
+
+V.   Solution
+
+Upgrade your system to a supported FreeBSD stable or release / security
+branch (releng) dated after the correction date.
+
+Please note that some third party software, for instance PHP, Ruby, Java,
+Perl and Python, may be using different zoneinfo data sources, in such cases
+this software must be updated separately.  Software packages that are
+installed via binary packages can be upgraded by executing 'pkg upgrade'.
+
+Following the instructions in this Errata Notice will only update the IANA
+Time Zone Database installed in /usr/share/zoneinfo.
+
+Perform one of the following:
+
+1) To update your system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the amd64, i386, or
+(on FreeBSD 13 and later) arm64 platforms can be updated via the
+freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+Restart all the affected applications and daemons, or reboot the system.
+
+2) To update your system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+# fetch https://security.FreeBSD.org/patches/EN-22:20/tzdata-2022c.patch
+# fetch https://security.FreeBSD.org/patches/EN-22:20/tzdata-2022c.patch.asc
+# gpg --verify tzdata-2022c.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
+
+Restart all the affected applications and daemons, or reboot the system.
+
+VI.  Correction details
+
+This issue is corrected by the corresponding Git commit hash or Subversion
+revision number in the following stable and release branches:
+
+Branch/path                             Hash                     Revision
+- -------------------------------------------------------------------------
+stable/13/                              f7cb47731675    stable/13-n252124
+releng/13.1/                            e86b610b8744  releng/13.1-n250157
+releng/13.0/                            707cecae4e34  releng/13.0-n244809
+stable/12/                                                        r372409
+releng/12.3/                                                      r372461
+- -------------------------------------------------------------------------
+
+For FreeBSD 13 and later:
+
+Run the following command to see which files were modified by a
+particular commit:
+
+# git show --stat <commit hash>
+
+Or visit the following URL, replacing NNNNNN with the hash:
+
+<URL:https://cgit.freebsd.org/src/commit/?id=NNNNNN>
+
+To determine the commit count in a working tree (for comparison against
+nNNNNNN in the table above), run:
+
+# git rev-list --count --first-parent HEAD
+
+For FreeBSD 12 and earlier:
+
+Run the following command to see which files were modified by a particular
+revision, replacing NNNNNN with the revision number:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<URL:https://github.com/eggert/tz/blob/2022b/NEWS>
+<URL:https://github.com/eggert/tz/blob/2022c/NEWS>
+
+The latest revision of this advisory is available at
+<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-22:20.tzdata.asc>
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAEBCgAdFiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmMOoGgACgkQ05eS9J6n
+5cKipg/6Axbh9KTIXF/Z/KZtna+2/Fvs4zIvV1PnT/6VJge9JrPShRtKuTOHE7at
+8tFFFLplDV3uGF3PxJ0vB66sd5A7VchS8UDJoyrr8Q1kfOGlMge5W3UQbHp4u4II
+DCRlvocXIv7SygmfWlrQg5Ia6c2CmIa13BcMcxNv8tu/TShsJZD8AUtu/sF01xZh
+RaPQE5Y0dMErQx1FpGrxcxqw5DVNz6utpxeGgz8SU/bMRUs17u9HbktiPdDpJVzh
+gw26DfMJS9CflrTBF1RKmCj6934ghz6fbHqnw7IrcnLjaitVsVqgktFjgmUje9OH
+JyCvY5ysAYEQD74HxncvgiJ3OjkQ/EYTwdL2lfTZRiWqQjncfFHchZ2ioIslR84e
+3NQlJYxosvWa/NIFxclR69I8d9outXRkClAEQo5tgjOPF7Q1F4TzH38IN7YMrwK7
+G9N2qXO6+GQo0E2yVmqQbam9KIRsyy9rf5Yp14Lc0P9GFiD0bMok0/C1zfE+Qi9U
+Y0lM7vtNFg7QM2Gi9OOhaCWJscDDf4OfuxaCWhh8Mq3cNrdaCY56t0SzPKmgF7qY
+sZPRpI6YXv9+m9c8V+sklPituTMXa2maGzSYJNTOWhDNmf4Ah1YvxbMWhoxI0hsF
+nSgCr/LQh0c+dTXthIW1fYv4mt5uXXNg5uMs0mIfncLin3syJ7s=
+=DcSW
+-----END PGP SIGNATURE-----
diff --git a/website/static/security/advisories/FreeBSD-SA-22:13.zlib.asc b/website/static/security/advisories/FreeBSD-SA-22:13.zlib.asc
new file mode 100644
index 0000000000..546b8282bc
--- /dev/null
+++ b/website/static/security/advisories/FreeBSD-SA-22:13.zlib.asc
@@ -0,0 +1,148 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-SA-22:13.zlib                                       Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          zlib heap buffer overflow
+
+Category:       contrib
+Module:         zlib
+Announced:      2022-08-30
+Credits:        Evgeny Legerov of @intevydis
+Affects:        All supported versions of FreeBSD.
+Corrected:      2022-08-09 14:40:35 UTC (stable/13, 13.1-STABLE)
+                2022-08-30 23:02:48 UTC (releng/13.1, 13.1-RELEASE-p2)
+                2022-08-30 22:57:49 UTC (releng/13.0, 13.0-RELEASE-p13)
+                2022-08-09 14:45:04 UTC (stable/12, 12.3-STABLE)
+                2022-08-30 23:16:45 UTC (releng/12.3, 12.3-RELEASE-p7)
+CVE Name:       CVE-2022-37434
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:https://security.FreeBSD.org/>.
+
+I.   Background
+
+zlib is a software library implementing compression and decompression.
+It is used in various places in the FreeBSD kernel and userland.
+
+II.  Problem Description
+
+zlib through 1.2.12 has a heap-based buffer over-read or buffer overflow
+in inflate in inflate.c via a large gzip header extra field.
+
+III. Impact
+
+Applications that call inflateGetHeader may be vulnerable to a buffer
+overflow.  Note that inflateGetHeader is not used by anything in the
+FreeBSD base system, but may be used by third party software.
+
+IV.  Workaround
+
+No workaround is available, but applications that do not call
+inflateGetHeader are not vulnerable.
+
+V.   Solution
+
+Upgrade your vulnerable system to a supported FreeBSD stable or
+release / security branch (releng) dated after the correction date, and
+restart daemons if necessary.
+
+Perform one of the following:
+
+1) To update your vulnerable system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the amd64, i386, or
+(on FreeBSD 13 and later) arm64 platforms can be updated via the
+freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+2) To update your vulnerable system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+# fetch https://security.FreeBSD.org/patches/SA-22:13/zlib.patch
+# fetch https://security.FreeBSD.org/patches/SA-22:13/zlib.patch.asc
+# gpg --verify zlib.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
+
+Restart all daemons that use the library, or reboot the system.
+
+VI.  Correction details
+
+This issue is corrected by the corresponding Git commit hash or Subversion
+revision number in the following stable and release branches:
+
+Branch/path                             Hash                     Revision
+- -------------------------------------------------------------------------
+stable/13/                              10cc2bf5f7a5    stable/13-n252073
+releng/13.1/                            289231c9634a  releng/13.1-n250156
+releng/13.0/                            77cd23716ffb  releng/13.0-n244808
+stable/12/                                                        r372370
+releng/12.3/                                                      r372460
+- -------------------------------------------------------------------------
+
+For FreeBSD 13 and later:
+
+Run the following command to see which files were modified by a
+particular commit:
+
+# git show --stat <commit hash>
+
+Or visit the following URL, replacing NNNNNN with the hash:
+
+<URL:https://cgit.freebsd.org/src/commit/?id=NNNNNN>
+
+To determine the commit count in a working tree (for comparison against
+nNNNNNN in the table above), run:
+
+# git rev-list --count --first-parent HEAD
+
+For FreeBSD 12 and earlier:
+
+Run the following command to see which files were modified by a particular
+revision, replacing NNNNNN with the revision number:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-37434>
+
+The latest revision of this advisory is available at
+<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-22:13.zlib.asc>
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAEBCgAdFiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmMOoG4ACgkQ05eS9J6n
+5cIITA//WMND8i3L8agw4QBMZTmL8M6bbbKK+eua7bhH4MNxguruULwcWNoHvhuO
++ebgomd4cWlPfY2TJcpd9OCXCjuMGMLvwE6XmPlGzW5DuMdD893wWPdsYJtDK+6p
+yMSihFyZP+ELWFbLeO3SFedRRKBQiDEmO3X2oOR1Ukj5wjsUOFPv0/dLphyBiq3t
+3tn/0O9NfAmyONvHSozoVs34MIFC9Qc/8oxlp5wKjomFn6OifPRwNu4yeWDfVL/c
+11IwotsKNTR6QNckdNBwbFC2NwdWfl8Tqv7gbJ3PhXDlzCDC5hOQoIeOol3Nf8et
+9+FjCr9y/jTH0tzEHCgevO3U711UZYIu2s+STHTlJRNly/n+2CMG+YOn1XkKtu6A
+4x4Pw+YRHl5VesQCNcJOkwVwRiyrirp5yOaaUPhSKo0teykypgV/WS9Z1U0VVfGP
+xgxJ7ElcT2HoNiz06QUSG374dPyEBKqoZTo/g2tJ0mL17JLW7IAtlUpIHzU475YR
+1itARL0z7O3bbUa/h35LxRTCxT2Ojt0qZO9WsS4dIraz2gb8QbHkgUXETnLAx9Ih
+UwaPrLGkzqpMjkQFASDS+LeacFOZARdxT/tUFwTRCQI27Aujl1OJzy7t0drL5I9f
+pO529OH4plSsT0x4j89tAUZxIHB2RQet94777vP4T0J5UcBegxc=
+=y87U
+-----END PGP SIGNATURE-----
diff --git a/website/static/security/patches/EN-22:20/tzdata-2022c.patch b/website/static/security/patches/EN-22:20/tzdata-2022c.patch
new file mode 100644
index 0000000000..c140bddcd5
--- /dev/null
+++ b/website/static/security/patches/EN-22:20/tzdata-2022c.patch
@@ -0,0 +1,4100 @@
+--- ObsoleteFiles.inc.orig
++++ ObsoleteFiles.inc
+@@ -8579,8 +8579,6 @@
+ OLD_FILES+=usr/share/examples/etc/rc.firewall6
+ # 20091117: removal of rc.early(8) link
+ OLD_FILES+=usr/share/man/man8/rc.early.8.gz
+-# 20091117: usr/share/zoneinfo/GMT link removed
+-OLD_FILES+=usr/share/zoneinfo/GMT
+ # 20091027: pselect.3 implemented as syscall
+ OLD_FILES+=usr/share/man/man3/pselect.3.gz
+ # 20091005: fusword.9 and susword.9 removed
+--- contrib/tzdata/Makefile.orig
++++ contrib/tzdata/Makefile
+@@ -33,7 +33,7 @@
+ #	make zonenames
+ # to get a list of the values you can use for LOCALTIME.
+ 
+-LOCALTIME=	GMT
++LOCALTIME=	Factory
+ 
+ # The POSIXRULES macro controls interpretation of nonstandard and obsolete
+ # POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules.
+@@ -176,12 +176,19 @@
+ 
+ BACKWARD=	backward
+ 
+-# If you want out-of-scope and often-wrong data from the file 'backzone', use
++# If you want out-of-scope and often-wrong data from the file 'backzone',
++# but only for entries listed in the backward-compatibility file zone.tab, use
+ #	PACKRATDATA=	backzone
++#	PACKRATLIST=	zone.tab
++# If you want all the 'backzone' data, use
++#	PACKRATDATA=	backzone
++#	PACKRATLIST=
+ # To omit this data, use
+ #	PACKRATDATA=
++#	PACKRATLIST=
+ 
+ PACKRATDATA=
++PACKRATLIST=
+ 
+ # The name of a locale using the UTF-8 encoding, used during self-tests.
+ # The tests are skipped if the name does not appear to work on this system.
+@@ -264,7 +271,7 @@
+   $(GCC_INSTRUMENT) \
+   -Wall -Wextra \
+   -Walloc-size-larger-than=100000 -Warray-bounds=2 \
+-  -Wbad-function-cast -Wcast-align=strict -Wdate-time \
++  -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wdate-time \
+   -Wdeclaration-after-statement -Wdouble-promotion \
+   -Wduplicated-branches -Wduplicated-cond \
+   -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
+@@ -278,7 +285,7 @@
+   -Wsuggest-attribute=const -Wsuggest-attribute=format \
+   -Wsuggest-attribute=malloc \
+   -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
+-  -Wtrampolines -Wundef -Wuninitialized -Wunused-macros \
++  -Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \
+   -Wvariadic-macros -Wvla -Wwrite-strings \
+   -Wno-address -Wno-format-nonliteral -Wno-sign-compare \
+   -Wno-type-limits -Wno-unused-parameter
+@@ -291,8 +298,9 @@
+ # guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this.
+ # Similarly, if your system has a "zone abbreviation" field, define
+ #	-DTM_ZONE=tm_zone
+-# and define NO_TM_ZONE to suppress any guessing.  These two fields are not
+-# required by POSIX, but are widely available on GNU/Linux and BSD systems.
++# and define NO_TM_ZONE to suppress any guessing.  Although these two fields
++# not required by POSIX, a future version of POSIX is planned to require them
++# and they are widely available on GNU/Linux and BSD systems.
+ #
+ # The next batch of options control support for external variables
+ # exported by tzcode.  In practice these variables are less useful
+@@ -448,6 +456,9 @@
+ # useful in commentary.
+ UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)$(UNUSUAL_OK_IPA)
+ 
++# Put this in a bracket expression to match spaces.
++s = [:space:]
++
+ # OK_CHAR matches any character allowed in the distributed files.
+ # This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and
+ # multibyte letters are also allowed so that commentary can contain a
+@@ -521,21 +532,23 @@
+ ZONETABLES=	zone1970.tab zone.tab
+ TABDATA=	iso3166.tab $(TZDATA_TEXT) $(ZONETABLES)
+ LEAP_DEPS=	leapseconds.awk leap-seconds.list
+-TZDATA_ZI_DEPS=	ziguard.awk zishrink.awk version $(TDATA) $(PACKRATDATA)
+-DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA)
++TZDATA_ZI_DEPS=	ziguard.awk zishrink.awk version $(TDATA) \
++		  $(PACKRATDATA) $(PACKRATLIST)
++DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA) $(PACKRATLIST)
+ DATA=		$(TDATA_TO_CHECK) backzone iso3166.tab leap-seconds.list \
+ 			leapseconds $(ZONETABLES)
+ AWK_SCRIPTS=	checklinks.awk checktab.awk leapseconds.awk \
+ 			ziguard.awk zishrink.awk
+-MISC=		$(AWK_SCRIPTS) zoneinfo2tdf.pl
++MISC=		$(AWK_SCRIPTS)
+ TZS_YEAR=	2050
+ TZS_CUTOFF_FLAG=	-c $(TZS_YEAR)
+ TZS=		to$(TZS_YEAR).tzs
+ TZS_NEW=	to$(TZS_YEAR)new.tzs
+ TZS_DEPS=	$(YDATA) asctime.c localtime.c \
+ 			private.h tzfile.h zdump.c zic.c
++TZDATA_DIST = $(COMMON) $(DATA) $(MISC)
+ # EIGHT_YARDS is just a yard short of the whole ENCHILADA.
+-EIGHT_YARDS = $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) tzdata.zi
++EIGHT_YARDS = $(TZDATA_DIST) $(DOCS) $(SOURCES) tzdata.zi
+ ENCHILADA = $(EIGHT_YARDS) $(TZS)
+ 
+ # Consult these files when deciding whether to rebuild the 'version' file.
+@@ -555,7 +568,7 @@
+ 		tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
+ 		workman.sh zdump.8 zdump.c zic.8 zic.c \
+ 		ziguard.awk zishrink.awk \
+-		zone.tab zone1970.tab zoneinfo2tdf.pl
++		zone.tab zone1970.tab
+ 
+ # And for the benefit of csh users on systems that assume the user
+ # shell should be used to handle commands in Makefiles. . .
+@@ -608,13 +621,17 @@
+ 		printf '%s\n' "$$V" >$@.out
+ 		mv $@.out $@
+ 
+-# These files can be tailored by setting BACKWARD and PACKRATDATA.
++# These files can be tailored by setting BACKWARD, PACKRATDATA, PACKRATLIST.
+ vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS)
+-		$(AWK) -v DATAFORM=`expr $@ : '\(.*\).zi'` -f ziguard.awk \
++		$(AWK) \
++		  -v DATAFORM=`expr $@ : '\(.*\).zi'` \
++		  -v PACKRATDATA='$(PACKRATDATA)' \
++		  -v PACKRATLIST='$(PACKRATLIST)' \
++		  -f ziguard.awk \
+ 		  $(TDATA) $(PACKRATDATA) >$@.out
+ 		mv $@.out $@
+ # This file has a version comment that attempts to capture any tailoring
+-# via BACKWARD, DATAFORM, PACKRATDATA, and REDO.
++# via BACKWARD, DATAFORM, PACKRATDATA, PACKRATLIST, and REDO.
+ tzdata.zi:	$(DATAFORM).zi version zishrink.awk
+ 		version=`sed 1q version` && \
+ 		  LC_ALL=C $(AWK) \
+@@ -652,6 +669,7 @@
+  DESTDIR='$(DESTDIR)' \
+  LEAPSECONDS='$(LEAPSECONDS)' \
+  PACKRATDATA='$(PACKRATDATA)' \
++ PACKRATLIST='$(PACKRATLIST)' \
+  TZDEFAULT='$(TZDEFAULT)' \
+  TZDIR='$(TZDIR)' \
+  ZIC='$(ZIC)'
+@@ -690,11 +708,6 @@
+ 		  $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only
+ 		$(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only
+ 
+-# This obsolescent rule is present for backwards compatibility with
+-# tz releases 2014g through 2015g.  It should go away eventually.
+-posix_packrat: $(INSTALL_DATA_DEPS)
+-		$(MAKE) $(INSTALLARGS) PACKRATDATA=backzone posix_only
+-
+ zones:		$(REDO)
+ 
+ # dummy.zd is not a real file; it is mentioned here only so that the
+@@ -755,8 +768,8 @@
+ 		mv $@.out $@
+ 
+ check:		check_character_set check_white_space check_links \
+-		  check_name_lengths check_sorted \
+-		  check_tables check_web check_zishrink check_tzs
++		  check_name_lengths check_slashed_abbrs check_sorted \
++		  check_tables check_web check_ziguard check_zishrink check_tzs
+ 
+ check_character_set: $(ENCHILADA)
+ 	test ! '$(UTF8_LOCALE)' || \
+@@ -780,19 +793,28 @@
+ 		patfmt=' \t|[\f\r\v]' && pat=`printf "$$patfmt\\n"` && \
+ 		! grep -En "$$pat" \
+ 			$$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
+-		! grep -n '[[:space:]]$$' \
++		! grep -n '[$s]$$' \
+ 			$$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
+ 		touch $@
+ 
+-PRECEDES_FILE_NAME = ^(Zone|Link[[:space:]]+[^[:space:]]+)[[:space:]]+
+-FILE_NAME_COMPONENT_TOO_LONG = \
+-  $(PRECEDES_FILE_NAME)[^[:space:]]*[^/[:space:]]{15}
++PRECEDES_FILE_NAME = ^(Zone|Link[$s]+[^$s]+)[$s]+
++FILE_NAME_COMPONENT_TOO_LONG = $(PRECEDES_FILE_NAME)[^$s]*[^/$s]{15}
+ 
+ check_name_lengths: $(TDATA_TO_CHECK) backzone
+ 		! grep -En '$(FILE_NAME_COMPONENT_TOO_LONG)' \
+ 			$(TDATA_TO_CHECK) backzone
+ 		touch $@
+ 
++PRECEDES_STDOFF = ^(Zone[$s]+[^$s]+)?[$s]+
++STDOFF = [-+]?[0-9:.]+
++RULELESS_SAVE = (-|$(STDOFF)[sd]?)
++RULELESS_SLASHED_ABBRS = \
++  $(PRECEDES_STDOFF)$(STDOFF)[$s]+$(RULELESS_SAVE)[$s]+[^$s]*/
++
++check_slashed_abbrs: $(TDATA_TO_CHECK)
++		! grep -En '$(RULELESS_SLASHED_ABBRS)' $(TDATA_TO_CHECK)
++		touch $@
++
+ CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
+ 
+ check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
+@@ -832,11 +854,19 @@
+ 		  test ! -s $@.out || { cat $@.out; exit 1; }
+ 		mv $@.out $@
+ 
++check_ziguard: rearguard.zi vanguard.zi ziguard.awk
++		$(AWK) -v DATAFORM=rearguard -f ziguard.awk vanguard.zi | \
++		  diff -u rearguard.zi -
++		$(AWK) -v DATAFORM=vanguard -f ziguard.awk rearguard.zi | \
++		  diff -u vanguard.zi -
++		touch $@
++
+ # Check that zishrink.awk does not alter the data, and that ziguard.awk
+ # preserves main-format data.
+ check_zishrink: check_zishrink_posix check_zishrink_right
+ check_zishrink_posix check_zishrink_right: \
+-  zic leapseconds $(PACKRATDATA) $(TDATA) $(DATAFORM).zi tzdata.zi
++  zic leapseconds $(PACKRATDATA) $(PACKRATLIST) \
++  $(TDATA) $(DATAFORM).zi tzdata.zi
+ 		rm -fr $@.dir $@-t.dir $@-shrunk.dir
+ 		mkdir $@.dir $@-t.dir $@-shrunk.dir
+ 		case $@ in \
+@@ -845,8 +875,8 @@
+ 		esac && \
+ 		  $(ZIC) $$leap -d $@.dir $(DATAFORM).zi && \
+ 		  $(ZIC) $$leap -d $@-shrunk.dir tzdata.zi && \
+-		  case $(DATAFORM) in \
+-		    main) \
++		  case $(DATAFORM),$(PACKRATLIST) in \
++		    main,) \
+ 		      $(ZIC) $$leap -d $@-t.dir $(TDATA) && \
+ 		      $(AWK) '/^Rule/' $(TDATA) | \
+ 			$(ZIC) $$leap -d $@-t.dir - $(PACKRATDATA) && \
+@@ -967,6 +997,10 @@
+ 		rm public.dir/main.zi
+ 		cd public.dir && $(MAKE) PACKRATDATA=backzone main.zi
+ 		public.dir/zic -d public.dir/zoneinfo main.zi
++		rm public.dir/main.zi
++		cd public.dir && \
++		  $(MAKE) PACKRATDATA=backzone PACKRATLIST=zone.tab main.zi
++		public.dir/zic -d public.dir/zoneinfo main.zi
+ 		:
+ 		rm -fr public.dir
+ 		touch $@
+@@ -1027,9 +1061,9 @@
+ ALL_ASC = $(TRADITIONAL_ASC) $(REARGUARD_ASC) \
+   tzdb-$(VERSION).tar.lz.asc
+ 
+-tarballs rearguard_tarballs traditional_tarballs \
++tarballs rearguard_tarballs tailored_tarballs traditional_tarballs \
+ signatures rearguard_signatures traditional_signatures: \
+-  version set-timestamps.out rearguard.zi
++  version set-timestamps.out rearguard.zi vanguard.zi
+ 		VERSION=`cat version` && \
+ 		$(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version
+ 
+@@ -1042,6 +1076,8 @@
+   tzdata$(VERSION)-rearguard.tar.gz
+ traditional_tarballs_version: \
+   tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz
++tailored_tarballs_version: \
++  tzdata$(VERSION)-tailored.tar.gz
+ signatures_version: $(ALL_ASC)
+ rearguard_signatures_version: $(REARGUARD_ASC)
+ traditional_signatures_version: $(TRADITIONAL_ASC)
+@@ -1055,34 +1091,76 @@
+ 
+ tzdata$(VERSION).tar.gz: set-timestamps.out
+ 		LC_ALL=C && export LC_ALL && \
+-		tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \
++		tar $(TARFLAGS) -cf - $(TZDATA_DIST) | \
+ 		  gzip $(GZIPFLAGS) >$@.out
+ 		mv $@.out $@
+ 
++# Create empty files with a reproducible timestamp.
++CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00
++
++# The obsolescent *rearguard* targets and related macros are present
++# for backwards compatibility with tz releases 2018e through 2022a.
++# They should go away eventually.  To build rearguard tarballs you
++# can instead use 'make DATAFORM=rearguard tailored_tarballs'.
+ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
+-		rm -fr tzdata$(VERSION)-rearguard.dir
+-		mkdir tzdata$(VERSION)-rearguard.dir
+-		ln $(COMMON) $(DATA) $(MISC) tzdata$(VERSION)-rearguard.dir
+-		cd tzdata$(VERSION)-rearguard.dir && \
+-		  rm -f $(TDATA) $(PACKRATDATA) version
++		rm -fr $@.dir
++		mkdir $@.dir
++		ln $(TZDATA_DIST) $@.dir
++		cd $@.dir && rm -f $(TDATA) $(PACKRATDATA) version
+ 		for f in $(TDATA) $(PACKRATDATA); do \
+-		  rearf=tzdata$(VERSION)-rearguard.dir/$$f; \
++		  rearf=$@.dir/$$f; \
+ 		  $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
+ 		  $(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \
+ 		done
+-		sed '1s/$$/-rearguard/' \
+-		  <version >tzdata$(VERSION)-rearguard.dir/version
++		sed '1s/$$/-rearguard/' <version >$@.dir/version
+ 		: The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
+-		TZ=UTC0 touch -mt 202010122253.00 \
+-		  tzdata$(VERSION)-rearguard.dir/pacificnew
+-		touch -cmr version tzdata$(VERSION)-rearguard.dir/version
++		$(CREATE_EMPTY) $@.dir/pacificnew
++		touch -cmr version $@.dir/version
+ 		LC_ALL=C && export LC_ALL && \
+-		  (cd tzdata$(VERSION)-rearguard.dir && \
++		  (cd $@.dir && \
+ 		   tar $(TARFLAGS) -cf - \
+-			$(COMMON) $(DATA) $(MISC) pacificnew | \
++			$(TZDATA_DIST) pacificnew | \
+ 		     gzip $(GZIPFLAGS)) >$@.out
+ 		mv $@.out $@
+ 
++# Create a tailored tarball suitable for TZUpdater and compatible tools.
++# For example, 'make DATAFORM=vanguard tailored_tarballs' makes a tarball
++# useful for testing whether TZUpdater supports vanguard form.
++# The generated tarball is not byte-for-byte equivalent to a hand-tailored
++# traditional tarball, as data entries are put into 'etcetera' even if they
++# came from some other source file.  However, the effect should be the same
++# for ordinary use, which reads all the source files.
++tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out
++		rm -fr $@.dir
++		mkdir $@.dir
++		: The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
++		cd $@.dir && \
++		  $(CREATE_EMPTY) $(PRIMARY_YDATA) $(NDATA) backward \
++		  `test $(DATAFORM) = vanguard || echo pacificnew`
++		(grep '^#' tzdata.zi && echo && cat $(DATAFORM).zi) \
++		  >$@.dir/etcetera
++		touch -cmr tzdata.zi $@.dir/etcetera
++		sed -n \
++		  -e '/^# *version  *\(.*\)/h' \
++		  -e '/^# *ddeps  */H' \
++		  -e '$$!d' \
++		  -e 'g' \
++		  -e 's/^# *version  *//' \
++		  -e 's/\n# *ddeps  */-/' \
++		  -e 's/ /-/g' \
++		  -e 'p' \
++		  <tzdata.zi >$@.dir/version
++		touch -cmr version $@.dir/version
++		links= && \
++		  for file in $(TZDATA_DIST); do \
++		    test -f $@.dir/$$file || links="$$links $$file"; \
++		  done && \
++		  ln $$links $@.dir
++		LC_ALL=C && export LC_ALL && \
++		  (cd $@.dir && \
++		   tar $(TARFLAGS) -cf - * | gzip $(GZIPFLAGS)) >$@.out
++		mv $@.out $@
++
+ tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out
+ 		rm -fr tzdb-$(VERSION)
+ 		mkdir tzdb-$(VERSION)
+@@ -1134,13 +1212,14 @@
+ .PHONY: check_web check_zishrink
+ .PHONY: clean clean_misc dummy.zd force_tzs
+ .PHONY: install install_data maintainer-clean names
+-.PHONY: posix_only posix_packrat posix_right public
++.PHONY: posix_only posix_right public
+ .PHONY: rearguard_signatures rearguard_signatures_version
+ .PHONY: rearguard_tarballs rearguard_tarballs_version
+ .PHONY: right_only right_posix signatures signatures_version
+ .PHONY: tarballs tarballs_version
+ .PHONY: traditional_signatures traditional_signatures_version
+ .PHONY: traditional_tarballs traditional_tarballs_version
++.PHONY: tailored_tarballs tailored_tarballs_version
+ .PHONY: typecheck
+ .PHONY: zonenames zones
+ .PHONY: $(ZDS)
+--- contrib/tzdata/NEWS.orig
++++ contrib/tzdata/NEWS
+@@ -1,5 +1,140 @@
+ News for the tz database
+ 
++Release 2022c - 2022-08-15 17:47:18 -0700
++
++  Briefly:
++    Work around awk bug in FreeBSD, macOS, etc.
++    Improve tzselect on intercontinental Zones.
++
++  Changes to code
++
++    Work around a bug in onetrueawk that broke commands like
++    'make traditional_tarballs' on FreeBSD, macOS, etc.
++    (Problem reported by Deborah Goldsmith.)
++
++    Add code to tzselect that uses experimental structured comments in
++    zone1970.tab to clarify whether Zones like Africa/Abidjan and
++    Europe/Istanbul cross continent or ocean boundaries.
++    (Inspired by a problem reported by Peter Krefting.)
++
++    Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
++    directory /a/b already exists.
++
++    Remove zoneinfo2tdf.pl, as it was unused and triggered false
++    malware alarms on some email servers.
++
++
++Release 2022b - 2022-08-10 15:38:32 -0700
++
++  Briefly:
++    Chile's DST is delayed by a week in September 2022.
++    Iran no longer observes DST after 2022.
++    Rename Europe/Kiev to Europe/Kyiv.
++    New zic -R option
++    Vanguard form now uses %z.
++    Finish moving duplicate-since-1970 zones to 'backzone'.
++    New build option PACKRATLIST
++    New tailored_tarballs target, replacing rearguard_tarballs
++
++  Changes to future timestamps
++
++    Chile's 2022 DST start is delayed from September 4 to September 11.
++    (Thanks to Juan Correa.)
++
++    Iran plans to stop observing DST permanently, after it falls back
++    on 2022-09-21.  (Thanks to Ali Mirjamali.)
++
++  Changes to past timestamps
++
++    Finish moving to 'backzone' the location-based zones whose
++    timestamps since 1970 are duplicates; adjust links accordingly.
++    This change ordinarily affects only pre-1970 timestamps, and with
++    the new PACKRATLIST option it does not affect any timestamps.
++    In this round the affected zones are Antarctica/Vostok,
++    Asia/Brunei, Asia/Kuala_Lumpur, Atlantic/Reykjavik,
++    Europe/Amsterdam, Europe/Copenhagen, Europe/Luxembourg,
++    Europe/Monaco, Europe/Oslo, Europe/Stockholm, Indian/Christmas,
++    Indian/Cocos, Indian/Kerguelen, Indian/Mahe, Indian/Reunion,
++    Pacific/Chuuk, Pacific/Funafuti, Pacific/Majuro, Pacific/Pohnpei,
++    Pacific/Wake and Pacific/Wallis, and the affected links are
++    Arctic/Longyearbyen, Atlantic/Jan_Mayen, Iceland, Pacific/Ponape,
++    Pacific/Truk, and Pacific/Yap.
++
++    From fall 1994 through fall 1995, Shanks wrote that Crimea's
++    DST transitions were at 02:00 standard time, not at 00:00.
++    (Thanks to Michael Deckers.)
++
++    Iran adopted standard time in 1935, not 1946.  In 1977 it observed
++    DST from 03-21 23:00 to 10-20 24:00; its 1978 transitions were on
++    03-24 and 08-05, not 03-20 and 10-20; and its spring 1979
++    transition was on 05-27, not 03-21.
++    (Thanks to Roozbeh Pournader and Francis Santoni.)
++
++    Chile's observance of -04 from 1946-08-29 through 1947-03-31 was
++    considered DST, not standard time.  Santiago and environs had moved
++    their clocks back to rejoin the rest of mainland Chile; put this
++    change at the end of 1946-08-28.  (Thanks to Michael Deckers.)
++
++    Some old, small clock transitions have been removed, as people at
++    the time did not change their clocks.  This affects Asia/Hong_Kong
++    in 1904, Asia/Ho_Chi_Minh in 1906, and Europe/Dublin in 1880.
++
++  Changes to zone name
++
++    Rename Europe/Kiev to Europe/Kyiv, as "Kyiv" is more common in
++    English now.  Spelling of other names in Ukraine has not yet
++    demonstrably changed in common English practice so for now these
++    names retain old spellings, as in other countries (e.g.,
++    Europe/Prague not "Praha", and Europe/Sofia not "Sofiya").
++
++  Changes to code
++
++    zic has a new option '-R @N' to output explicit transitions < N.
++    (Need suggested by Almaz Mingaleev.)
++
++    'zic -r @N' no longer outputs bad data when N < first transition.
++    (Problem introduced in 2021d and reported by Peter Krefting.)
++
++    zic now checks its input for NUL bytes and unterminated lines, and
++    now supports input line lengths up to 2048 (not 512) bytes.
++
++    gmtime and related code now use the abbreviation "UTC" not "GMT".
++    POSIX is being revised to require this.
++
++    When tzset and related functions set vestigial static variables
++    like tzname, they now prefer specified timestamps to unspecified ones.
++    (Problem reported by Almaz Mingaleev.)
++
++    zic no longer complains "can't determine time zone abbreviation to
++    use just after until time" when a transition to a new standard
++    time occurs simultaneously with the first DST fallback transition.
++
++  Changes to build procedure
++
++    Source data in vanguard form now uses the %z notation, introduced
++    in release 2015f.  For example, for America/Sao_Paulo vanguard
++    form contains the zone continuation line "-3:00 Brazil %z", which
++    is simpler and more reliable than the line "-3:00 Brazil -03/-02"
++    used in main and rearguard forms.  The plan is for the main form
++    to use %z eventually; in the meantime maintainers of zi parsers
++    are encouraged to test the parsers on vanguard.zi.
++
++    The Makefile has a new PACKRATLIST option to select a subset of
++    'backzone'.  For example, 'make PACKRATDATA=backzone
++    PACKRATLIST=zone.tab' now generates TZif files identical to those
++    of the global-tz project.
++
++    The Makefile has a new tailored_tarballs target for generating
++    special-purpose tarballs.  It generalizes and replaces the
++    rearguard_tarballs target and related targets and macros, which
++    are now obsolescent.
++
++    'make install' now defaults LOCALTIME to Factory not GMT,
++    which means the default abbreviation is now "-00" not "GMT".
++
++    Remove the posix_packrat target, marked obsolescent in 2016a.
++
++
+ Release 2022a - 2022-03-15 23:02:01 -0700
+ 
+   Briefly:
+@@ -161,7 +296,7 @@
+     Rename Pacific/Enderbury to Pacific/Kanton.  When we added
+     Enderbury in 1993, we did not know that it is uninhabited and that
+     Kanton (population two dozen) is the only inhabited location in
+-    that timezone.  The old name is now a backward-compatility link.
++    that timezone.  The old name is now a backward-compatibility link.
+ 
+   Changes to past timestamps
+ 
+@@ -1315,7 +1450,7 @@
+   Changes to build procedure
+ 
+     The distribution now contains the file 'pacificnew' again.
+-    This file was inadvertantly omitted in the 2018a distribution.
++    This file was inadvertently omitted in the 2018a distribution.
+     (Problem reported by Matias Fonzo.)
+ 
+ 
+@@ -4387,7 +4522,7 @@
+ 
+   changes by Paul Eggert
+ 
+-  Derick Rethan's Asmara change
++  Derick Rethans's Asmara change
+ 
+   Oscar van Vlijmen's Easter Island local mean time change
+ 
+--- contrib/tzdata/africa.orig
++++ contrib/tzdata/africa
+@@ -159,6 +159,7 @@
+ Link Africa/Abidjan Africa/Lome		# Togo
+ Link Africa/Abidjan Africa/Nouakchott	# Mauritania
+ Link Africa/Abidjan Africa/Ouagadougou	# Burkina Faso
++Link Africa/Abidjan Atlantic/Reykjavik	# Iceland
+ Link Africa/Abidjan Atlantic/St_Helena	# St Helena
+ 
+ # Djibouti
+@@ -169,7 +170,7 @@
+ # Egypt
+ 
+ # Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh
+-# observatory; round to nearest.  Milne also says that the official time for
++# observatory.  Milne also says that the official time for
+ # Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
+ # did not apply to Cairo, Alexandria, or Port Said.
+ 
+@@ -354,6 +355,7 @@
+ Rule	Egypt	2014	only	-	Sep	lastThu	24:00	0	-
+ 
+ # Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
++		#STDOFF	2:05:08.9
+ Zone	Africa/Cairo	2:05:09 -	LMT	1900 Oct
+ 			2:00	Egypt	EE%sT
+ 
+@@ -407,7 +409,7 @@
+ # At midnight on 30 June 1928 the clocks throughout Kenya was put forward
+ # half an hour by the Alteration of Time Ordinance, 1928.
+ # https://gazettes.africa/archive/ke/1928/ke-government-gazette-dated-1928-05-11-no-28.pdf
+-# [Ordinance No. 11 of 1928, The Offical Gazette, 1928-06-26, p 813]
++# [Ordinance No. 11 of 1928, The Official Gazette, 1928-06-26, p 813]
+ # https://books.google.com/books?id=2S0S6os32ZUC&pg=PA813
+ #
+ # The 1928 ordinance was repealed by the Alteration of Time (repeal) Ordinance,
+@@ -1310,21 +1312,9 @@
+ Link Africa/Lagos Africa/Porto-Novo	# Benin
+ 
+ # Réunion
+-# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun # Saint-Denis
+-			4:00	-	+04
+-#
+-# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
+-# The following information about them is taken from
*** 3572 LINES SKIPPED ***