From 9030a72250f232686e22d8e36a51cf196221c361 Mon Sep 17 00:00:00 2001 From: Gordon Tetlow <gordon@FreeBSD.org> Date: Thu, 28 Jan 2021 18:17:45 -0800 Subject: [PATCH] Add EN-21:01 to EN-21:05, SA-21:01, and SA-21:02. Approved by: so --- website/data/security/advisories.toml | 8 + website/data/security/errata.toml | 20 + .../advisories/FreeBSD-EN-21:01.tzdata.asc | 148 ++ .../advisories/FreeBSD-EN-21:02.extattr.asc | 129 ++ .../advisories/FreeBSD-EN-21:03.vnet.asc | 130 ++ .../advisories/FreeBSD-EN-21:04.zfs.asc | 130 ++ .../advisories/FreeBSD-EN-21:05.libatomic.asc | 125 ++ .../FreeBSD-SA-21:01.fsdisclosure.asc | 150 ++ .../advisories/FreeBSD-SA-21:02.xenoom.asc | 142 ++ .../patches/EN-21:01/tzdata-2021a.patch | 1498 +++++++++++++++++ .../patches/EN-21:01/tzdata-2021a.patch.asc | 18 + .../security/patches/EN-21:02/extattr.patch | 11 + .../patches/EN-21:02/extattr.patch.asc | 18 + .../security/patches/EN-21:03/vnet.patch | 291 ++++ .../security/patches/EN-21:03/vnet.patch.asc | 18 + .../security/patches/EN-21:04/zfs.patch | 150 ++ .../security/patches/EN-21:04/zfs.patch.asc | 18 + .../security/patches/EN-21:05/libatomic.patch | 71 + .../patches/EN-21:05/libatomic.patch.asc | 18 + .../patches/SA-21:01/fsdisclosure.11.patch | 10 + .../SA-21:01/fsdisclosure.11.patch.asc | 18 + .../patches/SA-21:01/fsdisclosure.12.patch | 166 ++ .../SA-21:01/fsdisclosure.12.patch.asc | 18 + .../security/patches/SA-21:02/xenoom.11.patch | 255 +++ .../patches/SA-21:02/xenoom.11.patch.asc | 18 + .../security/patches/SA-21:02/xenoom.12.patch | 300 ++++ .../patches/SA-21:02/xenoom.12.patch.asc | 18 + 27 files changed, 3896 insertions(+) create mode 100644 website/static/security/advisories/FreeBSD-EN-21:01.tzdata.asc create mode 100644 website/static/security/advisories/FreeBSD-EN-21:02.extattr.asc create mode 100644 website/static/security/advisories/FreeBSD-EN-21:03.vnet.asc create mode 100644 website/static/security/advisories/FreeBSD-EN-21:04.zfs.asc create mode 100644 website/static/security/advisories/FreeBSD-EN-21:05.libatomic.asc create mode 100644 website/static/security/advisories/FreeBSD-SA-21:01.fsdisclosure.asc create mode 100644 website/static/security/advisories/FreeBSD-SA-21:02.xenoom.asc create mode 100644 website/static/security/patches/EN-21:01/tzdata-2021a.patch create mode 100644 website/static/security/patches/EN-21:01/tzdata-2021a.patch.asc create mode 100644 website/static/security/patches/EN-21:02/extattr.patch create mode 100644 website/static/security/patches/EN-21:02/extattr.patch.asc create mode 100644 website/static/security/patches/EN-21:03/vnet.patch create mode 100644 website/static/security/patches/EN-21:03/vnet.patch.asc create mode 100644 website/static/security/patches/EN-21:04/zfs.patch create mode 100644 website/static/security/patches/EN-21:04/zfs.patch.asc create mode 100644 website/static/security/patches/EN-21:05/libatomic.patch create mode 100644 website/static/security/patches/EN-21:05/libatomic.patch.asc create mode 100644 website/static/security/patches/SA-21:01/fsdisclosure.11.patch create mode 100644 website/static/security/patches/SA-21:01/fsdisclosure.11.patch.asc create mode 100644 website/static/security/patches/SA-21:01/fsdisclosure.12.patch create mode 100644 website/static/security/patches/SA-21:01/fsdisclosure.12.patch.asc create mode 100644 website/static/security/patches/SA-21:02/xenoom.11.patch create mode 100644 website/static/security/patches/SA-21:02/xenoom.11.patch.asc create mode 100644 website/static/security/patches/SA-21:02/xenoom.12.patch create mode 100644 website/static/security/patches/SA-21:02/xenoom.12.patch.asc diff --git a/website/data/security/advisories.toml b/website/data/security/advisories.toml index db5d4bcb24..95683bed85 100644 --- a/website/data/security/advisories.toml +++ b/website/data/security/advisories.toml @@ -1,6 +1,14 @@ # Sort advisories by year, month and day # $FreeBSD$ +[[advisories]] +name = "FreeBSD-SA-21:02.xenoom" +date = "2021-01-29" + +[[advisories]] +name = "FreeBSD-SA-21:01.fsdisclosure" +date = "2021-01-29" + [[advisories]] name = "FreeBSD-SA-20:33.openssl" date = "2020-12-08" diff --git a/website/data/security/errata.toml b/website/data/security/errata.toml index 6dc8406ef5..eb4071d077 100644 --- a/website/data/security/errata.toml +++ b/website/data/security/errata.toml @@ -1,6 +1,26 @@ # Sort errata notices by year, month and day # $FreeBSD$ +[[notices]] +name = "FreeBSD-EN-21:05.libatomic" +date = "2021-01-29" + +[[notices]] +name = "FreeBSD-EN-21:04.zfs" +date = "2021-01-29" + +[[notices]] +name = "FreeBSD-EN-21:03.vnet" +date = "2021-01-29" + +[[notices]] +name = "FreeBSD-EN-21:02.extattr" +date = "2021-01-29" + +[[notices]] +name = "FreeBSD-EN-21:01.tzdata" +date = "2021-01-29" + [[notices]] name = "FreeBSD-EN-20:22.callout" date = "2020-12-01" diff --git a/website/static/security/advisories/FreeBSD-EN-21:01.tzdata.asc b/website/static/security/advisories/FreeBSD-EN-21:01.tzdata.asc new file mode 100644 index 0000000000..dc16699e8e --- /dev/null +++ b/website/static/security/advisories/FreeBSD-EN-21:01.tzdata.asc @@ -0,0 +1,148 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-21:01.tzdata Errata Notice + The FreeBSD Project + +Topic: Timezone database information update + +Category: contrib +Module: zoneinfo +Announced: 2021-01-29 +Affects: All supported versions of FreeBSD. +Corrected: 2021-01-25 21:56:55 UTC (stable/12, 12.2-STABLE) + 2021-01-29 01:20:49 UTC (releng/12.2, 12.2-RELEASE-p3) + 2021-01-29 01:05:59 UTC (releng/12.1, 12.1-RELEASE-p13) + 2021-01-25 21:57:06 UTC (stable/11, 11.4-STABLE) + 2021-01-29 00:19:59 UTC (releng/11.4, 11.4-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 tzsetup(8) program allows the user to specify the default local timezone. +Based on the selected timezone, tzsetup(8) copies one of the files from +/usr/share/zoneinfo to /etc/localtime. This file actually controls the +conversion. + +II. Problem Description + +Several changes in Daylight Savings Time happened after previous FreeBSD +releases were released that would affect many people who live in different +countries. Because of these changes, the data in the zoneinfo files need to +be updated, and if the local timezone on the running system is affected, +tzsetup(8) needs to be run so the /etc/localtime is updated. + +III. Impact + +An incorrect time will be displayed on a system configured to use one of the +affected timezones 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 timezone database from the +misc/zoneinfo port and run tzsetup(8) to get the timezone database corrected. + +Applications that store and display times in Coordinated Universal Time (UTC) +are not affected. + +V. Solution + +Please note that some third party software, for instance PHP, Ruby, Java and +Perl, may be using different zoneinfo data source, in such cases this +software must be updated separately. For software packages that is installed +via binary packages, they can be upgraded by executing `pkg upgrade'. + +Following the instructions in this Errata Notice will update all of the +zoneinfo files to be the same as what was released with FreeBSD release. + +Perform one of the following: + +1) Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date. Restart all the affected +applications and daemons, or reboot the system. + +2) To update your system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +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. + +3) 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-21:01/tzdata-2021a.patch +# fetch https://security.FreeBSD.org/patches/EN-21:01/tzdata-2021a.patch.asc +# gpg --verify tzdata-2021a.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 + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/12 r369143 +releng/12.2 r369171 +releng/12.1 r369162 +stable/11/ r369144 +releng/11.4/ r369153 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base + +Or visit the following URL, replacing NNNNNN with the revision hash: + +<URL:https://cgit.freebsd.org/src/commit/?id=NNNNNN> + +VII. References + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-21:01.tzdata.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbfZfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cKOpA//Urdpqngx7TTrUYuIFijatPi+MWNWEgW04TPXfa7Vmp5bPFC/fJGJ0o2u +lMUVwodrlfX5GUvPENwC/xVVxlzGCX4ljpFbocJIBWczA6LQ+P0u4ibdgSWuh9IS +4Aj/MFrd6b+Ui7JY6LF+g0n9M6Tcprui9ZVef7AmcEAOcKQEdIA/kNEfOSnlBy8t +HgSVQOmVRbsWYN9B7ZfrsztaiPzFwLfm4Wu62CyrN7H1uSGve9JLrz56W1t3t7u+ +pKaemOZM6g1efHWVYHUIJh7A7KPSNaLHY3tuQ5Sw6KetST9PCrGwwWVyn+0Cirwp +kL/1tjBAB31hsBNJxpvw6NSAazsUfMmKwmtaO9+Gy11ay5neCD2CPUNLCIa7KbjC +XT1PcrNnkodID0xdnNGy77toZwbjN81ADurLc+O63FycVugENB81ZtSJWTW7teIL +sIfh4A6yf+0szPU9/TIOZx9Qhnp2+Az2C39bgqmeWiv4SwTJnxvYZ6gqGaimdHtX +kIozG96X7qyBD4y1Zm45QRrABmb+3AbF1PyCj3pq1re/GpqFlm8ADog3VWE6FaWn +f/TlgtQtbknMcnWtpqXlvajWFa6vvq/2o7M7TRGPInQr0SA4gk5K6U9OQtrdKRGe +QugdkOMBRuJt1+RO/XAgtcTDpV7CI8QncCONWOItPq4+n5J7PyU= +=irIL +-----END PGP SIGNATURE----- diff --git a/website/static/security/advisories/FreeBSD-EN-21:02.extattr.asc b/website/static/security/advisories/FreeBSD-EN-21:02.extattr.asc new file mode 100644 index 0000000000..d30949a2ad --- /dev/null +++ b/website/static/security/advisories/FreeBSD-EN-21:02.extattr.asc @@ -0,0 +1,129 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-21:02.extattr Errata Notice + The FreeBSD Project + +Topic: UFS extattr corruption + +Category: core +Module: UFS +Announced: 2021-01-29 +Affects: FreeBSD 11.4 +Corrected: 2021-01-18 18:54:32 UTC (stable/11, 11.4-STABLE) + 2021-01-29 19:20:02 UTC (releng/11.4, 11.4-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 + +Named extended attributes are meta-data associated with vnodes representing +files and directories. They exist as "name=value" pairs within a set of +namespaces. The UFS filesystem supports extended attributes. + +II. Problem Description + +Under certain conditions FreeBSD 11.x releases may produce a corrupt extattr +file, and later attempts to access these extended attributes may result in +system misbehavior. For example, lsextattr may spin at 100% CPU until the +system is shut down. + +The issue that results in corrupt extattr data is not present in supported +FreeBSD 12.x versions. + +III. Impact + +The system may not function as required with extended attributes in use. + +IV. Workaround + +No workaround is available. Systems not using extended attributes are not +vulnerable. + +V. Solution + +Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date, and reboot. + +Perform one of the following: + +1) To update your system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install +# shutdown -r +10min "Rebooting for an errata update" + +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. + +[FreeBSD 11.4] +# fetch https://security.FreeBSD.org/patches/EN-12:02/extattr.patch +# fetch https://security.FreeBSD.org/patches/EN-12:02/extattr.patch.asc +# gpg --verify extattr.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile your kernel as described in +<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the +system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/11/ r369045 +releng/11.4/ r369154 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# 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://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244089> + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-21:02.extattr.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbiRfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cKxMBAAjpesCOTrkqvjjKZmez8ACSUdaa7IYMLbJpeXW+0IbFVU/IQdK5/aq6r1 +j/LytAbQ0yDlzfEggCeIWKGkbvaNs0eUVCx/1AOjWdxWePvrlpJ2GQNsHGZeWzBc +QUv9LEao0MQF9UGjd0JV81nTE2DT4a2F3WVdfuX2QfkWntfWwpXf3Uf3Cvi6Cpfy +rbZTkFeBmFvfgJu13co4re1gur8eYvMyNqcp+FO9OttEr/Fg5D/okQfp+0uZ1uIl +80WNZLwgnJG07FBVgcjbbVr/JJJqzVQh3opUa4+6UZaaHoRszs4jE4Mc22C0G4Ma +8vtBp4Z/Ndznv04TvTNiAyS3aAe0ums4yotZJBJEuVr1rA1lC6YgRVT9+qfsPcWT +SuVM16NS4VGVpN5SruptLbrbTHQARDAAWDbtP1fB8ccvBIonf0hh5AOcKFBxHHY3 +NoKHLV373zTauvxqy7RKRAtnB2oB0uMT4j0lwJmn7CM1h+lL1GcVy1PTDVQ4mk+N +2/I51AcbURjmWqxTTORI6p8CgLsiwPfdsup5T2g/JPu2nc9COWL/WKCytP2pXji3 ++Lu+SJldxUCx8JiiCSFma7ZG/sjB+B1vOajzULqBWUgTH6YpX8gV78amDHmzRq20 +2is7fa+63ImVHtCZAIeSs/PGU2v+MDQ6eBNqFTccbgVvINEmMNE= +=XIov +-----END PGP SIGNATURE----- diff --git a/website/static/security/advisories/FreeBSD-EN-21:03.vnet.asc b/website/static/security/advisories/FreeBSD-EN-21:03.vnet.asc new file mode 100644 index 0000000000..c9832e1268 --- /dev/null +++ b/website/static/security/advisories/FreeBSD-EN-21:03.vnet.asc @@ -0,0 +1,130 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-21:03.vnet Errata Notice + The FreeBSD Project + +Topic: Panic when destroying VNET and epair simultaneously + +Category: core +Module: kernel +Announced: 2021-01-29 +Affects: FreeBSD 12.1 and later. +Corrected: 2020-12-15 15:33:28 UTC (stable/12, 12.2-STABLE) + 2021-01-29 01:20:52 UTC (releng/12.2, 12.2-RELEASE-p3) + 2021-01-29 01:06:03 UTC (releng/12.1, 12.1-RELEASE-p13) + +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 + +VNET permits systems to be configured with multiple instances of the in-kernel +network stack. + +The epair(4) interface provides a pair of virtual back-to-back connected +Ethernet interfaces. + +II. Problem Description + +Insufficient locking in the kernel meant that destroying an epair and a vnet +jail at the same time often resulted in panics. + +III. Impact + +Users with root level access (or the PRIV_NET_IFCREATE privilege) can panic +the system. + +IV. Workaround + +The panic can be avoided by ensuring that epair interfaces are fully destroyed +before the vnet jails containing them are destroyed. + +Systems not using vnet jails are not affected. + +V. Solution + +Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date and reboot. + +Perform one of the following: + +1) To update your system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install +# shutdown -r +10min "Rebooting for an errata update" + +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-21:03/vnet.patch +# fetch https://security.FreeBSD.org/patches/EN-21:03/vnet.patch.asc +# gpg --verify vnet.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile your kernel as described in +<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the +system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/12/ r368663 +releng/12.2/ r369172 +releng/12.1/ r369163 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# 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://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238870> + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-21:03.vnet.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbipfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cKE3Q/+KQ96Grm2zOsWHVAl5Oz2TBdc7nGkIYSk59zFcmVMqduvKSjiJ3S1yLdX +NsPm3KyFYeU7L/QM9Owsk1DTSnRrlwhbcM3/x+662bcgP1RWe3XL6n9fQ2V5eESO +9wAKtwrkE5btGxp6WLNAZ1Ximb1rKtOi4hqLK1Rhqhl93ecw7gyp+Qs6ukj41cnT +8+9AwHjvzYokrUDP7lIsKMQ4C29Fw4o2/0RwCCEmLlGRWLOWGM910RjgaFat02Gi +nOLXXlI9mSApthMnlTun4cSn+rbzawyTXD8AIa/kwEd00yDej4IceBlqWXot8Sjw +aXqJuix5qs0aVJcrQ2g9bkytnSMeO79EpCLyy/PDMJ1NUcQG8oaN/EcxNjb/U9p2 +sbjWSf4t1leTl76TWsGsNAWHkjUwMPYHDstG4jsRv+Y+m4sSWa6gYYitaOtK4paO +wDDqpWHFJXOCEIrL3+HJcwOWr4hxhmZFgKNXeZN6l5WCKY/Xqjxqt7zBSpixiz01 +VEn3uNs1ePuEA80Ae+D8v4yzjjfuE5/MDfEsoaxtP6dalNtJlIaFhVgZYcsxpOfK +xKC8dzdnEyq970+ZW/2ESYBxGTcnVQMxASI73QYuaKbRkcVqgW6XjHJHh+0tNLkV +sPhgxy/eOkbsu9qcIOn+tTbNTo3CjW0/ZmdE0YX9XItgbGHFQvg= +=1ekp +-----END PGP SIGNATURE----- diff --git a/website/static/security/advisories/FreeBSD-EN-21:04.zfs.asc b/website/static/security/advisories/FreeBSD-EN-21:04.zfs.asc new file mode 100644 index 0000000000..2e090bc9ee --- /dev/null +++ b/website/static/security/advisories/FreeBSD-EN-21:04.zfs.asc @@ -0,0 +1,130 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-21:04.zfs Errata Notice + The FreeBSD Project + +Topic: zfs recv fails to propagate snapshot deletion + +Category: core +Module: zfs +Announced: 2021-01-29 +Affects: FreeBSD 12.2 +Corrected: 2020-12-01 08:15:18 UTC (stable/12, 12.2-STABLE) + 2021-01-29 01:20:55 UTC (releng/12.2, 12.2-RELEASE-p3) + +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 zfs send/receive commands are used to efficiently copy datasets from one +location to another. With the -i or -I flags, zfs send can incrementally +update an already-copied dataset. When using the -R flag with zfs send and the +- -F flag with zfs receive, zfs receive will delete any snapshots on the +destination that have already been deleted on the source. + +II. Problem Description + +A regression in FreeBSD 12.2 causes zfs receive to fail to delete snapshots +that have been deleted on the source side. + +III. Impact + +Backup and replication systems based on ZFS send/receive that manage snapshots +solely on the source side will fail to delete snapshots on the destination +side. This may lead to out-of-space conditions on the destination. + +IV. Workaround + +Errant snapshots can be manually removed from the destination with "zfs destroy". + +Backup and replication systems that don't use the -R flag with zfs send will be +unaffected. For example, sysutils/zrepl is unaffected. + +V. Solution + +Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date. + +Perform one of the following: + +1) To update your system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install + +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-21:04/zfs.patch +# fetch https://security.FreeBSD.org/patches/EN-21:04/zfs.patch.asc +# gpg --verify zfs.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 link directly to libzfs.so. A restart is not required +for daemons that invoke the zfs executable. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/12/ r368233 +releng/12.2/ r369173 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# 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://bugs.freebsd.org/bugzilla/show_bug.cgi?id=249438> + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-21:04.zfs.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbipfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJhhw//ajaGQV4/Ln4SmgsyYS01De9bXSI26dBcZlfGDUDL4l/W4qF1KnsTuPXx +ubGoFDjAArT+AzAoTddQeKuty8VPR8UUCQfONgdWUvjlSZ3k1iLa6pTR/BHxSyZ3 +rh7olc8wSt13JBOoafCjGkuzRNLtz7oqP0qrGB/aKSbU3IzCW8fHSFnIFVaRK/Nh +Zr9Lisp4mIBgBmAY3Oof50ONPrjoDEYff+G+52LSUSMIwGPVmEqFz1qrSzQ+SFO0 +kylegth1sBeEgPQZAuyXX6liJpsL/AEdYQvosykmBw3DGQqt9glo+hl6CU7/g2dn +iA8O7tO0zgaHtWbAUQYdtHJKeqa5UbaDRKeDw3aXm6TwHmZN7BfQz6SWRK2QOhcc +btn5yP6QhbpTFmWRkWtSehn+eISolDF4iCG9St664xpNV7l0AzSXm8saVrR2/Eix +IPCK2nyhddyDyVCkkSaZw8rris5De8gAGsv0K+nvJqYhVMdbIyTnU62UzHrgPPXS +kAe0Z/FnPmcQ7GXN/dSIzd17WMqKwGgsHMbLFw/BMP+kaM++mMY7ZdyPyx1gapB+ +qzvRhFoNKpNVGMaMK/y+BPB2Ak3OHj6lqPFptjd9HNlszVYuZ3Od25oQBO0dupQf +jsTSler1ShPYyOwG8QE0sXjpMYVZhFgsZXiZVUrACkfunuDnXtI= +=fhrM +-----END PGP SIGNATURE----- diff --git a/website/static/security/advisories/FreeBSD-EN-21:05.libatomic.asc b/website/static/security/advisories/FreeBSD-EN-21:05.libatomic.asc new file mode 100644 index 0000000000..5a88888bf5 --- /dev/null +++ b/website/static/security/advisories/FreeBSD-EN-21:05.libatomic.asc @@ -0,0 +1,125 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-21:05.libatomic Errata Notice + The FreeBSD Project + +Topic: Addition of atomic and bswap functions to libcompiler_rt + +Category: core +Module: libcompiler_rt +Announced: 2021-01-29 +Affects: FreeBSD 11.4 +Corrected: 2020-09-12 16:33:05 UTC (stable/11, 11.4-STABLE) + 2021-01-29 00:20:06 UTC (releng/11.4, 11.4-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 + +libcompiler_rt is a simple library that provides an implementation of low-level +target-specific functionality required by the Clang compiler. + +II. Problem Description + +The FreeBSD build system does not include all source files of libcompiler_rt. +In particular, it misses the atomic.c file, which implements atomic memory +routines for the i386 architecture. + +III. Impact + +When compiling software that makes use of atomic functions, as well as __bswap* +functions, the compiler emits calls to them expecting that these will be +available from libcompiler_rt. Due to this, the linker fails to resolve +mentioned functions and the build fails. + +The problem occurs only when targeting the i386 platform. + +IV. Workaround + +The problem can be worked around by using GCC compiler to build the software. + +V. Solution + +Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date. + +Perform one of the following: + +1) To update your system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install + +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-21:05/libatomic.patch +# fetch https://security.FreeBSD.org/patches/EN-21:05/libatomic.patch.asc +# gpg --verify libatomic.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 + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/11/ r365661 +releng/11.4/ r369155 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# 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 + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-21:05.libatomic.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbipfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cKteBAAicm8nXlOWYeIu2qcgqKVEhWNwleLdfnAGPcs0ALuUEnSGZ2DIfsdl4J0 +eTOeIJC9ELpHrSoaAtlrM7huEkdtMDRHrLWfSlW7Zev3B7ZQ+v+GsdYAw1h86Erf +uNt3iCvfhltDGVHVb0bGHQw2biIn9UD36CVOC9WqMhubLU/sjEy4FbjwRvVWUyRc +UtR+WUf6W8IZnd3iJOlF/YnxDcEWclMPFnEdKMgBByl0dSoVuwIQfwuWm6Wl4WjA +p1KUs+l/AUn5IJB7U7dLmB5tIGgvElzONwPb9S3M1BQaLDjS2+PLrE6/pxSpDNHS +y/Oo2652ZaGG1OWAGzemKinpllLelkywPjbQwEEkjelqPnPoVMWzjM4UwmF0S5gj +hnlB17BvH5qomMFnAiyVQO9cH85G4sKcKgVQSMU/gRzlrSMyqZ5ImLfltMOJi27H +U3SQ36LljP6cu55bDlswBmAe6Ria748d5z4efSs/DGfgeFSYlSYF7zTLZtbw8wcP +bXjeDVTMcAEGGjDFWjy2hU2zUhgQVBOSb1+IB3ziOHizUdOe9U5NaEZSoTA/S4rp +Hrf8P8LKN5BgWh6j+jXI18RpwGtRNbL4Ev0wP0iG7SXth8cRkjymzq4qcGsIBMh/ +GjyNqC1CzzvQz4YDf6GqkOZWE3kAzUM+iyGyYpZIDdCx32Ir/e4= +=RTBx +-----END PGP SIGNATURE----- diff --git a/website/static/security/advisories/FreeBSD-SA-21:01.fsdisclosure.asc b/website/static/security/advisories/FreeBSD-SA-21:01.fsdisclosure.asc new file mode 100644 index 0000000000..c6bab78916 --- /dev/null +++ b/website/static/security/advisories/FreeBSD-SA-21:01.fsdisclosure.asc @@ -0,0 +1,150 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-21:01.fsdisclosure Security Advisory + The FreeBSD Project + +Topic: Uninitialized kernel stack leaks in several file systems + +Category: core +Module: fs +Announced: 2021-01-29 +Credits: Syed Faraz Abrar +Affects: All supported versions of FreeBSD. +Corrected: 2021-01-06 14:58:41 UTC (stable/12, 12.2-STABLE) + 2021-01-29 01:20:59 UTC (releng/12.2, 12.2-RELEASE-p3) + 2021-01-29 01:06:09 UTC (releng/12.1, 12.1-RELEASE-p13) + 2021-01-18 19:16:24 UTC (stable/11, 11.4-STABLE) + 2021-01-29 00:20:09 UTC (releng/11.4, 11.4-RELEASE-p7) +CVE Name: CVE-2020-25578, CVE-2020-25579 + +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 + +The FreeBSD kernel exports file system directory entries to userspace +using the generic "dirent" structure. Individual file systems implement +VOP_READDIR to convert from the file system's internal directory entry +layout to the generic form. dirent structures can be fetched from +userspace using the getdirentries(2) system call. + +II. Problem Description + +Several file systems were not properly initializing the d_off field of +the dirent structures returned by VOP_READDIR. In particular, tmpfs(5), +smbfs(5), autofs(5) and mqueuefs(5) were failing to do so. As a result, +eight uninitialized kernel stack bytes may be leaked to userspace by +these file systems. This problem is not present in FreeBSD 11. + +Additionally, msdosfs(5) was failing to zero-fill a pair of padding +fields in the dirent structure, resulting in a leak of three +uninitialized bytes. + +III. Impact + +Kernel stack disclosures may leak sensitive information which could be +used to compromise the security of the system. + +IV. Workaround + +Systems that do not have any of the affected file systems mounted are +not affected. To trigger the leaks, an unprivileged user must have read +access to a directory belonging to one of the mounted file systems. + +V. Solution + +Upgrade your vulnerable system to a supported FreeBSD stable or +release / security branch (releng) dated after the correction date, +and reboot. + +Perform one of the following: + +1) To update your vulnerable system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install +# shutdown -r +10min "Rebooting for a security update" + +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. + +[FreeBSD 12.x] +# fetch https://security.FreeBSD.org/patches/SA-21:01/fsdisclosure.12.patch +# fetch https://security.FreeBSD.org/patches/SA-21:01/fsdisclosure.12.patch.asc +# gpg --verify fsdisclosure.12.patch.asc + +[FreeBSD 11.x] +# fetch https://security.FreeBSD.org/patches/SA-21:01/fsdisclosure.11.patch +# fetch https://security.FreeBSD.org/patches/SA-21:01/fsdisclosure.11.patch.asc +# gpg --verify fsdisclosure.11.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile your kernel as described in +<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the +system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/12/ r368969 +releng/12.2/ r369175 +releng/12.1/ r369165 +stable/11/ r369047 +releng/11.4/ r369156 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# 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-2020-25578> + +<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-25579> + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-21:01.fsdisclosure.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbjNfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJr9xAAkZz7B1xlb66yVYXmyIo8eFf2ZyYPXxoH9hIxx1N7PxY6l9MeU9xzcYrf +tOYtsWyPxx+M+g0KZc2Q846zu3JySSBkGKT1Kx3aqMmfEqWMa6b2u/wM+rG/8NjR +qzsU9SfnzgcBg0tu4m55en+7muuiO3JopCbQDdTSl0EgOFkMI6cuMXc2lm9BAEKj +zpmKFbelSCIUjISpLASJzNKRfQV1UajpgyM/tWYSrlQwaejNkFOmBO1ylLBbigBo +bqH5xCsttGGUC91QmsEdcrF3pSNuHEtW5nT8sbAlm6ue8bjY9AGhEB1fkV877KDG +otN3sPe367uQA1AHWCq3qPseTgAV9pDW4Mctxi5VSz0P3tUzG+hqojtn+mDAvFob +DnFWFJnMZC6mueunp555LXlgFzA79Vberjo15240kEvaf4B+PiCqVLr9baK/2KyW +EEj3pn/ciGq/wBn5ZPoCDVk0hbcfVNxaXytHLDBZ7l/ti7ZC08SRyaPdhG8Tblbx +ha/6+/viGbBHktuTU5Vz48cHja9RnDq0EUiTmplinUDhyouVyG4i2Yrn3anMnhd5 +atULlylJlEPGq1WNH0A7yiKqQa6Bu4OFMdJ69YIYskcn3FC2vjz0LpRb+soFOIAH +2/o0UAMup9buG8CbPVLoCRPyPrEw0liaUJEUlxTVPDc3AJGM0xM= +=gD1K +-----END PGP SIGNATURE----- diff --git a/website/static/security/advisories/FreeBSD-SA-21:02.xenoom.asc b/website/static/security/advisories/FreeBSD-SA-21:02.xenoom.asc new file mode 100644 index 0000000000..4d8560498a --- /dev/null +++ b/website/static/security/advisories/FreeBSD-SA-21:02.xenoom.asc @@ -0,0 +1,142 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-21:02.xenoom Security Advisory + The FreeBSD Project + +Topic: Xen guests can triger backend Out Of Memory + +Category: contrib +Module: Xen +Announced: 2021-01-29 +Credits: See Xen XSA-349 for details +Affects: All supported versions of FreeBSD. +Corrected: 2021-01-18 16:26:36 UTC (stable/12, 12.2-STABLE) + 2021-01-29 01:21:04 UTC (releng/12.2, 12.2-RELEASE-p3) + 2021-01-29 01:06:16 UTC (releng/12.1, 12.1-RELEASE-p13) + 2021-01-21 09:14:50 UTC (stable/11, 11.4-STABLE) + 2021-01-29 00:20:16 UTC (releng/11.4, 11.4-RELEASE-p7) +CVE Name: CVE-2020-29568 + +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 + +Xen is a type-1 hypervisor which supports FreeBSD as a Dom0 (or host +domain). + +II. Problem Description + +Some OSes (including Linux, FreeBSD, and NetBSD) are processing watch +events using a single thread. If the events are received faster than +the thread is able to handle, they will get queued. + +As the queue is unbound, a guest may be able to trigger a OOM in +the backend. + +III. Impact + +A malicious guest can trigger an OOM in backends. + +IV. Workaround + +No workaround is available. FreeBSD systems not using Xen are not +affected. + +V. Solution + +Upgrade your vulnerable system to a supported FreeBSD stable or +release / security branch (releng) dated after the correction date, +and reboot. + +Perform one of the following: + +1) To update your vulnerable system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the i386 or amd64 +platforms can be updated via the freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install +# shutdown -r +10min "Rebooting for a security update" + +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. + +[FreeBSD 12.x] +# fetch https://security.FreeBSD.org/patches/SA-21:02/xenoom.12.patch +# fetch https://security.FreeBSD.org/patches/SA-21:02/xenoom.12.patch.asc +# gpg --verify xenoom.12.patch.asc + +[FreeBSD 11.x] +# fetch https://security.FreeBSD.org/patches/SA-21:02/xenoom.11.patch +# fetch https://security.FreeBSD.org/patches/SA-21:02/xenoom.11.patch.asc +# gpg --verify xenoom.11.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile your kernel as described in +<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the +system. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/12/ r369038 +releng/12.2/ r369177 +releng/12.1/ r369167 +stable/11/ r369072 +releng/11.4/ r369158 +- ------------------------------------------------------------------------- + +To see which files were modified by a particular revision, run the +following command, replacing NNNNNN with the revision number, on a +machine with Subversion installed: + +# 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://xenbits.xen.org/xsa/advisory-349.html> + +<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-29568> + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-21:02.xenoom.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbjNfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJjmhAAloDel7j9rgyDK8Ozk5wPJQlUM/1Ddc4e5Q5vdzT29mNdWKfXjH5SEkGq +Jx7w4fUronf8vsXn+bNXwn1u5PWGVTVX/Y4ljQ4JVwJ+NdxhxTuhNsbg7j2AZmdO +PsfI+eFX1xq8wr3oDUl3GTHHcUI1Ol259tsOgJE7ISriazgbRk8/QVowMgS3jdHA +OYJS8ADFWSO6d4TC2B5pvgC6NAiZjhgTDtjxzTnaWoUb0157JyhRh3Z2FQTBxoxU +3OQcTj7x7KBtbsiAI/Iq8Qu7JXyxtscVQfbXsk4Jt1uOskgsr8n9F+UGiP+GRIKb +0IsgNUlsPavINlNJjAwQWHtB8VJqH7LpG9t3/EMizUXjZAuRLxEjAFiHV8ju1U++ +O9Xf9nB9auVrBn1WMYgH23bZ5D15W1HosEywifBw64R7CLDliD/HpJ3QaDEe3lCn +pB0jgxuoE5RCbTppgUZM7tLUrtwgih+lOiZcLcA5xS9hQo8TWBLIJNBf5rRjJA6q +/3vh5lOv/w8AHyBgA5395QIkkgw9dxy2o+LbtuVhdD/NbLX4GnNVMkQDsTF79PMT +8rl0Zn6Ldo0ypHAwPAVHektl+izuMftNQuQXSbEjkw/Xr1VCjIjllJET3K2e9X6z +4nPmq6t/0kuHWYSSDQAKdq/8Dosn3HLw1uQdst4ka7wf1Eon7Ow= +=3L3L +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/EN-21:01/tzdata-2021a.patch b/website/static/security/patches/EN-21:01/tzdata-2021a.patch new file mode 100644 index 0000000000..194ec24461 --- /dev/null +++ b/website/static/security/patches/EN-21:01/tzdata-2021a.patch @@ -0,0 +1,1498 @@ +--- contrib/tzdata/Makefile.orig ++++ contrib/tzdata/Makefile +@@ -583,11 +583,19 @@ + cp date '$(DESTDIR)$(BINDIR)/.' + cp -f date.1 '$(DESTDIR)$(MANDIR)/man1/.' + ++# Calculate version number from git, if available. ++# Otherwise, use $(VERSION) unless it is "unknown" and there is already ++# a 'version' file, in which case reuse the existing 'version' contents ++# and append "-dirty" if the contents do not already end in "-dirty". + version: $(VERSION_DEPS) + { (type git) >/dev/null 2>&1 && \ + V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \ + --abbrev=7 --dirty` || \ +- V='$(VERSION)'; } && \ ++ if test '$(VERSION)' = unknown && V=`cat $@`; then \ ++ case $$V in *-dirty);; *) V=$$V-dirty;; esac; \ ++ else \ ++ V='$(VERSION)'; \ ++ fi; } && \ + printf '%s\n' "$$V" >$@.out + mv $@.out $@ + +@@ -872,11 +880,34 @@ + LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@.out + mv $@.out $@ + ++# Set file timestamps deterministically if possible, ++# so that tarballs containing the timestamps are reproducible. ++# ++# '$(SET_TIMESTAMP_N) N DEST A B C ...' sets the timestamp of the ++# file DEST to the maximum of the timestamps of the files A B C ..., ++# plus N if GNU ls and touch are available. ++SET_TIMESTAMP_N = sh -c '\ ++ n=$$0 dest=$$1; shift; \ ++ touch -cmr `ls -t "$$@" | sed 1q` "$$dest" && \ ++ if test $$n != 0 && \ ++ lsout=`ls -n --time-style="+%s" "$$dest" 2>/dev/null`; then \ ++ set x $$lsout && \ ++ touch -cmd @`expr $$7 + $$n` "$$dest"; \ ++ else :; fi' ++# If DEST depends on A B C ... in this Makefile, callers should use ++# $(SET_TIMESTAMP_DEP) DEST A B C ..., for the benefit of any ++# downstream 'make' that considers equal timestamps to be out of date. ++# POSIX allows this 'make' behavior, and HP-UX 'make' does it. ++# If all that matters is that the timestamp be reproducible ++# and plausible, use $(SET_TIMESTAMP). ++SET_TIMESTAMP = $(SET_TIMESTAMP_N) 0 ++SET_TIMESTAMP_DEP = $(SET_TIMESTAMP_N) 1 ++ + # Set the timestamps to those of the git repository, if available, + # and if the files have not changed since then. +-# This uses GNU 'touch' syntax 'touch -d@N FILE', +-# where N is the number of seconds since 1970. +-# If git or GNU 'touch' is absent, don't bother to sync with git timestamps. ++# This uses GNU 'ls --time-style=+%s', which outputs the seconds count, ++# and GNU 'touch -d@N FILE', where N is the number of seconds since 1970. ++# If git or GNU is absent, don't bother to sync with git timestamps. + # Also, set the timestamp of each prebuilt file like 'leapseconds' + # to be the maximum of the files it depends on. + set-timestamps.out: $(EIGHT_YARDS) +@@ -894,16 +925,16 @@ + fi || exit; \ + done; \ + fi +- touch -cmr `ls -t $(LEAP_DEPS) | sed 1q` leapseconds ++ $(SET_TIMESTAMP_DEP) leapseconds $(LEAP_DEPS) + for file in `ls $(MANTXTS) | sed 's/\.txt$$//'`; do \ +- touch -cmr `ls -t $$file workman.sh | sed 1q` $$file.txt || \ ++ $(SET_TIMESTAMP_DEP) $$file.txt $$file workman.sh || \ + exit; \ + done +- touch -cmr `ls -t $(TZDATA_ZI_DEPS) | sed 1q` tzdata.zi +- touch -cmr `ls -t $(VERSION_DEPS) | sed 1q` version ++ $(SET_TIMESTAMP_DEP) version $(VERSION_DEPS) ++ $(SET_TIMESTAMP_DEP) tzdata.zi $(TZDATA_ZI_DEPS) + touch $@ + set-tzs-timestamp.out: $(TZS) +- touch -cmr `ls -t $(TZS_DEPS) | sed 1q` $(TZS) ++ $(SET_TIMESTAMP_DEP) $(TZS) $(TZS_DEPS) + touch $@ + + # The zics below ensure that each data file can stand on its own. +@@ -914,7 +945,10 @@ + mkdir public.dir + ln $(VERSION_DEPS) public.dir + cd public.dir && $(MAKE) CFLAGS='$(GCC_DEBUG_FLAGS)' ALL +- for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi; do \ ++ for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi \ ++ public.dir/vanguard.zi public.dir/main.zi \ ++ public.dir/rearguard.zi; \ ++ do \ + public.dir/zic -v -d public.dir/zoneinfo $$i 2>&1 || exit; \ + done + public.dir/zic -v -d public.dir/zoneinfo-all $(TDATA_TO_CHECK) +@@ -981,7 +1015,7 @@ + signatures rearguard_signatures traditional_signatures: \ + version set-timestamps.out rearguard.zi + VERSION=`cat version` && \ +- $(MAKE) VERSION="$$VERSION" $@_version ++ $(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version + + # These *_version rules are intended for use if VERSION is set by some + # other means. Ordinarily these rules are used only by the above +@@ -1018,7 +1052,7 @@ + for f in $(TDATA) $(PACKRATDATA); do \ + rearf=tzdata$(VERSION)-rearguard.dir/$$f; \ + $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \ +- touch -cmr `ls -t ziguard.awk $$f` $$rearf || exit; \ ++ $(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \ + done + sed '1s/$$/-rearguard/' \ + <version >tzdata$(VERSION)-rearguard.dir/version +@@ -1037,7 +1071,7 @@ + rm -fr tzdb-$(VERSION) + mkdir tzdb-$(VERSION) + ln $(ENCHILADA) tzdb-$(VERSION) +- touch -cmr `ls -t tzdb-$(VERSION)/* | sed 1q` tzdb-$(VERSION) ++ $(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/* + LC_ALL=C && export LC_ALL && \ + tar $(TARFLAGS) -cf - tzdb-$(VERSION) | lzip -9 >$@.out + mv $@.out $@ +@@ -1079,8 +1113,6 @@ + zdump.o: version.h + zic.o: private.h tzfile.h version.h + +-.KEEP_STATE: +- + .PHONY: ALL INSTALL all + .PHONY: check check_time_t_alternatives + .PHONY: check_web check_zishrink +--- contrib/tzdata/NEWS.orig ++++ contrib/tzdata/NEWS +@@ -1,5 +1,67 @@ + News for the tz database + ++Release 2021a - 2021-01-24 10:54:57 -0800 ++ ++ Changes to future timestamps ++ ++ South Sudan changes from +03 to +02 on 2021-02-01 at 00:00. ++ (Thanks to Steffen Thorsen.) ++ ++ ++Release 2020f - 2020-12-29 00:17:46 -0800 ++ ++ Change to build procedure ++ ++ 'make rearguard_tarballs' no longer generates a bad rearguard.zi, ++ fixing a 2020e bug. (Problem reported by Deborah Goldsmith.) ++ ++ ++Release 2020e - 2020-12-22 15:14:34 -0800 ++ ++ Briefly: ++ Volgograd switches to Moscow time on 2020-12-27 at 02:00. ++ ++ Changes to future timestamps ++ ++ Volgograd changes time zone from +04 to +03 on 2020-12-27 at 02:00. ++ (Thanks to Alexander Krivenyshev and Stepan Golosunov.) ++ ++ Changes to past timestamps ++ ++ Correct many pre-1986 transitions, fixing entries originally ++ derived from Shanks. The fixes include: ++ - Australia: several 1917 through 1971 transitions ++ - Bahamas: several 1941 through 1945 transitions ++ - Bermuda: several 1917 through 1956 transitions ++ - Belize: several 1942 through 1968 transitions ++ - Ghana: several 1915 through 1956 transitions ++ - Israel and Palestine: several 1940 through 1985 transitions ++ - Kenya and adjacent: several 1908 through 1960 transitions ++ - Nigeria and adjacent: correcting LMT in Lagos, and several 1905 ++ through 1919 transitions ++ - Seychelles: the introduction of standard time in 1907, not 1906 ++ - Vanuatu: DST in 1973-1974, and a corrected 1984 transition ++ (Thanks to P Chan.) ++ ++ Because of the Australia change, Australia/Currie (King Island) is ++ no longer needed, as it is identical to Australia/Hobart for all ++ timestamps since 1970 and was therefore created by mistake. ++ Australia/Currie has been moved to the 'backward' file and its ++ corrected data moved to the 'backzone' file. ++ ++ Changes to past time zone abbreviations and DST flags ++ ++ To better match legislation in Turks and Caicos, the 2015 shift to ++ year-round observance of -04 is now modeled as AST throughout before ++ returning to Eastern Time with US DST in 2018, rather than as ++ maintaining EDT until 2015-11-01. (Thanks to P Chan.) ++ ++ Changes to documentation ++ ++ The zic man page now documents zic's coalescing of transitions ++ when a zone falls back just before DST springs forward. ++ ++ + Release 2020d - 2020-10-21 11:24:13 -0700 + + Briefly: +--- contrib/tzdata/africa.orig ++++ contrib/tzdata/africa +@@ -386,36 +386,87 @@ + + # Ghana + +-# From Paul Eggert (2018-01-30): +-# Whitman says DST was observed from 1931 to "the present"; +-# Shanks & Pottenger say 1936 to 1942 with 20 minutes of DST, +-# with transitions on 09-01 and 12-31 at 00:00. +-# Page 33 of Parish GCB, Colonial Reports - Annual. No. 1066. Gold +-# Coast. Report for 1919. (March 1921), OCLC 784024077 +-# http://libsysdigi.library.illinois.edu/ilharvest/africana/books2011-05/5530214/5530214_1919/5530214_1919_opt.pdf +-# lists the Determination of the Time Ordinance, 1919, No. 18, +-# "to advance the time observed locally by the space of twenty minutes +-# during the last four months of each year; the object in view being +-# to extend during those months the period of daylight-time available +-# for evening recreation after office hours." +-# Vanessa Ogle, The Global Transformation of Time, 1870-1950 (2015), p 33, +-# writes "In 1919, the Gold Coast (Ghana as of 1957) made Greenwich +-# time its legal time and simultaneously legalized a summer time of +-# UTC - 00:20 minutes from March to October."; a footnote lists +-# the ordinance as being dated 1919-11-24. +-# The Crown Colonist, Volume 12 (1942), p 176, says "the Government +-# intend advancing Gold Coast time half an hour ahead of G.M.T. +-# The actual date of the alteration has not yet been announced." +-# These sources are incomplete and contradictory. Possibly what is +-# now Ghana observed different DST regimes in different years. For +-# lack of better info, use Shanks except treat the minus sign as a +-# typo, and assume DST started in 1920 not 1936. ++# From P Chan (2020-11-20): ++# Interpretation Amendment Ordinance, 1915 (No.24 of 1915) [1915-11-02] ++# Ordinances of the Gold Coast, Ashanti, Northern Territories 1915, p 69-71 ++# https://books.google.com/books?id=ErA-AQAAIAAJ&pg=PA70 ++# This Ordinance added "'Time' shall mean Greenwich Mean Time" to the ++# Interpretation Ordinance, 1876. ++# ++# Determination of the Time Ordinance, 1919 (No. 18 of 1919) [1919-11-24] ++# Ordinances of the Gold Coast, Ashanti, Northern Territories 1919, p 75-76 ++# https://books.google.com/books?id=MbA-AQAAIAAJ&pg=PA75 ++# This Ordinance removed the previous definition of time and introduced DST. ++# ++# Time Determination Ordinance (Cap. 214) ++# The Laws of the Gold Coast (including Togoland Under British Mandate) ++# Vol. II (1937), p 2328 ++# https://books.google.com/books?id=Z7M-AQAAIAAJ&pg=PA2328 ++# Revised edition of the 1919 Ordinance. ++# ++# Time Determination (Amendment) Ordinance, 1940 (No. 9 of 1940) [1940-04-06] ++# Annual Volume of the Laws of the Gold Coast: ++# Containing All Legislation Enacted During Year 1940, p 22 ++# https://books.google.com/books?id=1ao-AQAAIAAJ&pg=PA22 ++# This Ordinance changed the forward transition from September to May. ++# ++# Defence (Time Determination Ordinance Amendment) Regulations, 1942 ++# (Regulations No. 6 of 1942) [1942-01-31, commenced on 1942-02-08] ++# Annual Volume of the Laws of the Gold Coast: ++# Containing All Legislation Enacted During Year 1942, p 48 ++# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA48 ++# These regulations advanced the [standard] time by thirty minutes. ++# ++# Defence (Time Determination Ordinance Amendment (No.2)) Regulations, ++# 1942 (Regulations No. 28 of 1942) [1942-04-25] ++# Annual Volume of the Laws of the Gold Coast: ++# Containing All Legislation Enacted During Year 1942, p 87 ++# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA87 ++# These regulations abolished DST and changed the time to GMT+0:30. ++# ++# Defence (Revocation) (No.4) Regulations, 1945 (Regulations No. 45 of ++# 1945) [1945-10-24, commenced on 1946-01-06] ++# Annual Volume of the Laws of the Gold Coast: ++# Containing All Legislation Enacted During Year 1945, p 256 ++# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA256 ++# These regulations revoked the previous two sets of Regulations. ++# ++# Time Determination (Amendment) Ordinance, 1945 (No. 18 of 1945) [1946-01-06] ++# Annual Volume of the Laws of the Gold Coast: ++# Containing All Legislation Enacted During Year 1945, p 69 ++# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA69 ++# This Ordinance abolished DST. ++# ++# Time Determination (Amendment) Ordinance, 1950 (No. 26 of 1950) [1950-07-22] ++# Annual Volume of the Laws of the Gold Coast: ++# Containing All Legislation Enacted During Year 1950, p 35 ++# https://books.google.com/books?id=e60-AQAAIAAJ&pg=PA35 ++# This Ordinance restored DST but with thirty minutes offset. ++# ++# Time Determination Ordinance (Cap. 264) ++# The Laws of the Gold Coast, Vol. V (1954), p 380 ++# https://books.google.com/books?id=Mqc-AQAAIAAJ&pg=PA380 ++# Revised edition of the Time Determination Ordinance. ++# ++# Time Determination (Amendment) Ordinance, 1956 (No. 21 of 1956) [1956-08-29] ++# Annual Volume of the Ordinances of the Gold Coast Enacted During the ++# Year 1956, p 83 ++# https://books.google.com/books?id=VLE-AQAAIAAJ&pg=PA83 ++# This Ordinance abolished DST. ++ + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +-Rule Ghana 1920 1942 - Sep 1 0:00 0:20 - +-Rule Ghana 1920 1942 - Dec 31 0:00 0 - ++Rule Ghana 1919 only - Nov 24 0:00 0:20 +0020 ++Rule Ghana 1920 1942 - Jan 1 2:00 0 GMT ++Rule Ghana 1920 1939 - Sep 1 2:00 0:20 +0020 ++Rule Ghana 1940 1941 - May 1 2:00 0:20 +0020 ++Rule Ghana 1950 1955 - Sep 1 2:00 0:30 +0030 ++Rule Ghana 1951 1956 - Jan 1 2:00 0 GMT ++ + # Zone NAME STDOFF RULES FORMAT [UNTIL] +-Zone Africa/Accra -0:00:52 - LMT 1918 +- 0:00 Ghana GMT/+0020 ++Zone Africa/Accra -0:00:52 - LMT 1915 Nov 2 ++ 0:00 Ghana %s 1942 Feb 8 ++ 0:30 - +0030 1946 Jan 6 ++ 0:00 Ghana %s + + # Guinea + # See Africa/Abidjan. +@@ -433,11 +484,54 @@ + 0:00 - GMT + + # Kenya ++ ++# From P Chan (2020-10-24): ++# ++# The standard time of GMT+2:30 was adopted in the East Africa Protectorate.... ++# [The Official Gazette, 1908-05-01, p 274] ++# https://books.google.com/books?id=e-cAC-sjPSEC&pg=PA274 ++# ++# 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] ++# https://books.google.com/books?id=2S0S6os32ZUC&pg=PA813 ++# ++# The 1928 ordinance was repealed by the Alteration of Time (repeal) Ordinance, ++# 1929 and the time was restored to GMT+2:30 at midnight on 4 January 1930. ++# [Ordinance No. 97 of 1929, The Official Gazette, 1929-12-31, p 2701] ++# https://books.google.com/books?id=_g18jIZQlwwC&pg=PA2701 ++# ++# The Alteration of Time Ordinance, 1936 changed the time to GMT+2:45 ++# and repealed the previous ordinance at midnight on 31 December 1936. ++# [The Official Gazette, 1936-07-21, p 705] ++# https://books.google.com/books?id=K7j41z0aC5wC&pg=PA705 ++# ++# The Defence (Amendment of Laws No. 120) Regulations changed the time ++# to GMT+3 at midnight on 31 July 1942. ++# [Kenya Official Gazette Supplement No. 32, 1942-07-21, p 331] ++# https://books.google.com/books?hl=zh-TW&id=c_E-AQAAIAAJ&pg=PA331 ++# The provision of the 1936 ordinance was not repealed and was later ++# incorporated in the Interpretation and General Clauses Ordinance in 1948. ++# Although it was overridden by the 1942 regulations. ++# [The Laws of Kenya in force on 1948-09-21, Title I, Chapter 1, 31] ++# https://dds.crl.edu/item/217517 (p.101) ++# In 1950 the Interpretation and General Clauses Ordinance was amended to adopt ++# GMT+3 permanently as the 1942 regulations were due to expire on 10 December. ++# https://books.google.com/books?id=jvR8mUDAwR0C&pg=PA787 ++# [Ordinance No. 44 of 1950, Kenya Ordinances 1950, Vol. XXIX, p 294] ++# https://books.google.com/books?id=-_dQAQAAMAAJ&pg=PA294 ++ ++# From Paul Eggert (2020-10-24): ++# The 1908-05-01 announcement does not give an effective date, ++# so just say "1908 May". ++ + # Zone NAME STDOFF RULES FORMAT [UNTIL] +-Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul +- 3:00 - EAT 1930 +- 2:30 - +0230 1940 +- 2:45 - +0245 1960 ++Zone Africa/Nairobi 2:27:16 - LMT 1908 May ++ 2:30 - +0230 1928 Jun 30 24:00 ++ 3:00 - EAT 1930 Jan 4 24:00 ++ 2:30 - +0230 1936 Dec 31 24:00 ++ 2:45 - +0245 1942 Jul 31 24:00 + 3:00 - EAT + Link Africa/Nairobi Africa/Addis_Ababa # Ethiopia + Link Africa/Nairobi Africa/Asmara # Eritrea +@@ -1224,8 +1318,69 @@ + # See Africa/Lagos. + + # Nigeria ++ ++# From P Chan (2020-12-03): ++# GMT was adopted as the standard time of Lagos on 1905-07-01. ++# Lagos Weekly Record, 1905-06-24, p 3 ++# http://ddsnext.crl.edu/titles/31558#?c=0&m=668&s=0&cv=2&r=0&xywh=1446%2C5221%2C1931%2C1235 ++# says "It is officially notified that on and after the 1st of July 1905 ++# Greenwich Mean Solar Time will be adopted thought the Colony and ++# Protectorate, and that it will be necessary to put all clocks 13 minutes and ++# 35 seconds back, recording local mean time." ++# ++# It seemed that Lagos returned to LMT on 1908-07-01. ++# [The Lagos Standard], 1908-07-01, p 5 ++# http://ddsnext.crl.edu/titles/31556#?c=0&m=78&s=0&cv=4&r=0&xywh=-92%2C3590%2C3944%2C2523 ++# says "Scarcely have the people become accustomed to this new time, when ++# another official notice has now appeared announcing that from and after the ++# 1st July next, return will be made to local mean time." ++# ++# From P Chan (2020-11-27): ++# On 1914-01-01, standard time of GMT+0:30 was adopted for the unified Nigeria. ++# Colonial Reports - Annual. No. 878. Nigeria. Report for 1914. (April 1916), ++# p 27 ++# https://libsysdigi.library.illinois.edu/ilharvest/Africana/Books2011-05/3064634/3064634_1914/3064634_1914_opt.pdf#page=27 ++# "On January 1st [1914], a universal standard time for Nigeria was adopted, ++# viz., half an hour fast on Greenwich mean time, corresponding to the meridian ++# 7 [degrees] 30' E. long." ++# Lloyd's Register of Shipping (1915) says "Hitherto the time observed in Lagos ++# was the local mean time. On 1st January, 1914, standard time for the whole of ++# Nigeria was introduced ... Lagos time has been advanced about 16 minutes ++# accordingly." ++# ++# In 1919, standard time was changed to GMT+1. ++# Interpretation Ordinance (Cap 2) ++# The Laws of Nigeria, Containing the Ordinances of Nigeria, in Force on the ++# 1st Day of January, 1923, Vol.I [p 16] ++# https://books.google.com/books?id=BOMrAQAAMAAJ&pg=PA16 ++# "The expression 'Standard time' means standard time as used in Nigeria: ++# namely, 60 minutes in advance of Greenwich mean time. (As amended by 18 of ++# 1919, s. 2.)" ++# From Tim Parenti (2020-12-10): ++# The Lagos Weekly Record, 1919-09-20, p 3 details discussion on the first ++# reading of this Bill by the Legislative Council of the Colony of Nigeria on ++# Thursday 1919-08-28: ++# http://ddsnext.crl.edu/titles/31558?terms&item_id=303484#?m=1118&c=1&s=0&cv=2&r=0&xywh=1261%2C3408%2C2994%2C1915 ++# "The proposal is that the Globe should be divided into twelve zones East and ++# West of Greenwich, of one hour each, Nigeria falling into the zone with a ++# standard of one hour fast on Greenwich Mean Time. Nigeria standard time is ++# now 30 minutes in advance of Greenwich Mean Time ... according to the new ++# proposal, standard time will be advanced another 30 minutes". It was further ++# proposed that the firing of the time guns likewise be adjusted by 30 minutes ++# to compensate. ++# From Tim Parenti (2020-12-10), per P Chan (2020-12-11): ++# The text of Ordinance 18 of 1919, published in Nigeria Gazette, Vol 6, No 52, ++# shows that the change was assented to the following day and took effect "on ++# the 1st day of September, 1919." ++# Nigeria Gazette and Supplements 1919 Jan-Dec, Reference: 73266B-40, ++# img 245-246 ++# https://microform.digital/boa/collections/77/volumes/539/nigeria-lagos-1887-1919 ++ + # Zone NAME STDOFF RULES FORMAT [UNTIL] +-Zone Africa/Lagos 0:13:36 - LMT 1919 Sep ++Zone Africa/Lagos 0:13:35 - LMT 1905 Jul 1 ++ 0:00 - GMT 1908 Jul 1 ++ 0:13:35 - LMT 1914 Jan 1 ++ 0:30 - +0030 1919 Sep 1 + 1:00 - WAT + Link Africa/Lagos Africa/Bangui # Central African Republic + Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo +@@ -1298,8 +1453,21 @@ + # See Africa/Abidjan. + + # Seychelles ++ ++# From P Chan (2020-11-27): ++# Standard Time was adopted on 1907-01-01. ++# ++# Standard Time Ordinance (Chapter 237) ++# The Laws of Seychelles in Force on the 31st December, 1971, Vol. 6, p 571 ++# https://books.google.com/books?id=efE-AQAAIAAJ&pg=PA571 ++# ++# From Tim Parenti (2020-12-05): ++# A footnote on https://books.google.com/books?id=DYdDAQAAMAAJ&pg=PA1689 ++# confirms that Ordinance No. 9 of 1906 "was brought into force on the 1st ++# January, 1907." ++ + # Zone NAME STDOFF RULES FORMAT [UNTIL] +-Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria ++Zone Indian/Mahe 3:41:48 - LMT 1907 Jan 1 # Victoria + 4:00 - +04 + # From Paul Eggert (2001-05-30): + # Aldabra, Farquhar, and Desroches, originally dependencies of the +@@ -1359,11 +1527,17 @@ + 3:00 - EAT 2017 Nov 1 + 2:00 - CAT + ++# From Steffen Thorsen (2021-01-18): ++# "South Sudan will change its time zone by setting the clock back 1 ++# hour on February 1, 2021...." ++# from https://eyeradio.org/south-sudan-adopts-new-time-zone-makuei/ ++ + # South Sudan + # Zone NAME STDOFF RULES FORMAT [UNTIL] + Zone Africa/Juba 2:06:28 - LMT 1931 + 2:00 Sudan CA%sT 2000 Jan 15 12:00 +- 3:00 - EAT ++ 3:00 - EAT 2021 Feb 1 00:00 ++ 2:00 - CAT + + # Tanzania + # See Africa/Nairobi. +--- contrib/tzdata/asia.orig ++++ contrib/tzdata/asia +@@ -1723,40 +1723,180 @@ + # high on my favorite-country list (and not only because my wife's + # family is from India). + +-# From Shanks & Pottenger: ++# From P Chan (2020-10-27), with corrections: ++# ++# 1940-1946 Supplement No. 2 to the Palestine Gazette ++# # issue page Order No. dated start end note ++# 1 1010 729 67 of 1940 1940-05-22 1940-05-31* 1940-09-30* revoked by #2 ++# 2 1013 758 73 of 1940 1940-05-31 1940-05-31 1940-09-30 ++# 3 1055 1574 196 of 1940 1940-11-06 1940-11-16 1940-12-31 ++# 4 1066 1811 208 of 1940 1940-12-17 1940-12-31 1941-12-31 ++# 5 1156 1967 116 of 1941 1941-12-16 1941-12-31 1942-12-31* amended by #6 ++# 6 1228 1608 86 of 1942 1942-10-14 1941-12-31 1942-10-31 ++# 7 1256 279 21 of 1943 1943-03-18 1943-03-31 1943-10-31 ++# 8 1323 249 19 of 1944 1944-03-13 1944-03-31 1944-10-31 ++# 9 1402 328 20 of 1945 1945-04-05 1945-04-15 1945-10-31 ++#10 1487 596 14 of 1946 1946-04-04 1946-04-15 1946-10-31 ++# ++# 1948 Iton Rishmi (Official Gazette of the Provisional Government) ++# # issue page dated start end ++#11 2 7 1948-05-20 1948-05-22 1948-10-31* ++# ^This moved timezone to +04, replaced by #12 from 1948-08-31 24:00 GMT. ++#12 17 (Annex B) 84 1948-08-22 1948-08-31 1948-10-31 ++# ++# 1949-2000 Kovetz HaTakanot (Collection of Regulations) ++# # issue page dated start end note ++#13 6 133 1949-03-23 1949-04-30 1949-10-31 ++#14 80 755 1950-03-17 1950-04-15 1950-09-14 ++#15 164 782 1951-03-22 1951-03-31 1951-09-29* amended by #16 ++#16 206 1940 1951-09-23 ---------- 1951-10-22* amended by #17 ++#17 212 78 1951-10-19 ---------- 1951-11-10 ++#18 254 652 1952-03-03 1952-04-19 1952-09-27* amended by #19 ++#19 300 11 1952-09-15 ---------- 1952-10-18 ++#20 348 817 1953-03-03 1953-04-11 1953-09-12 ++#21 420 385 1954-02-17 1954-06-12 1954-09-11 ++#22 497 548 1955-01-14 1955-06-11 1955-09-10 ++#23 591 608 1956-03-12 1956-06-02 1956-09-29 ++#24 680 957 1957-02-08 1957-04-27 1957-09-21 ++#25 3192 1418 1974-06-28 1974-07-06 1974-10-12 ++#26 3322 1389 1975-04-03 1975-04-19 1975-08-30 ++#27 4146 2089 1980-07-15 1980-08-02 1980-09-13 ++#28 4604 1081 1984-02-22 1984-05-05* 1984-08-25* revoked by #29 ++#29 4619 1312 1984-04-06 1984-05-05 1984-08-25 ++#30 4744 475 1984-12-23 1985-04-13 1985-09-14* amended by #31 ++#31 4851 1848 1985-08-18 ---------- 1985-08-31 ++#32 4932 899 1986-04-22 1986-05-17 1986-09-06 ++#33 5013 580 1987-02-15 1987-04-18* 1987-08-22* revoked by #34 ++#34 5021 744 1987-03-30 1987-04-14 1987-09-12 ++#35 5096 659 1988-02-14 1988-04-09 1988-09-03 ++#36 5167 514 1989-02-03 1989-04-29 1989-09-02 ++#37 5248 375 1990-01-23 1990-03-24 1990-08-25 ++#38 5335 612 1991-02-10 1991-03-09* 1991-08-31 amended by #39 ++# 1992-03-28 1992-09-05 ++#39 5339 709 1991-03-04 1991-03-23 ---------- ++#40 5506 503 1993-02-18 1993-04-02 1993-09-05 ++# 1994-04-01 1994-08-28 ++# 1995-03-31 1995-09-03 ++#41 5731 438 1996-01-01 1996-03-14 1996-09-15 ++# 1997-03-13* 1997-09-18* overridden by 1997 Temp Prov ++# 1998-03-19* 1998-09-17* revoked by #42 ++#42 5853 1243 1997-09-18 1998-03-19 1998-09-05 ++#43 5937 77 1998-10-18 1999-04-02 1999-09-03 ++# 2000-04-14* 2000-09-15* revoked by #44 ++# 2001-04-13* 2001-09-14* revoked by #44 ++#44 6024 39 2000-03-14 2000-04-14 2000-10-22* overridden by 2000 Temp Prov ++# 2001-04-06* 2001-10-10* overridden by 2000 Temp Prov ++# 2002-03-29* 2002-10-29* overridden by 2000 Temp Prov ++# ++# These are laws enacted by the Knesset since the Minister could only alter the ++# transition dates at least six months in advanced under the 1992 Law. ++# dated start end ++# 1997 Temporary Provisions 1997-03-06 1997-03-20 1997-09-13 ++# 2000 Temporary Provisions 2000-07-28 ---------- 2000-10-06 ++# 2001-04-09 2001-09-24 ++# 2002-03-29 2002-10-07 ++# 2003-03-28 2003-10-03 ++# 2004-04-07 2004-09-22 ++# Note: ++# Transition times in 1940-1957 (#1-#24) were midnight GMT, ++# in 1974-1998 (#25-#42 and the 1997 Temporary Provisions) were midnight, ++# in 1999-April 2000 (#43,#44) were 02:00, ++# in the 2000 Temporary Provisions were 01:00. ++# ++# ----------------------------------------------------------------------------- ++# Links: ++# 1 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=687 ++# 2 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=716 ++# 3 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=721 ++# 4 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=958 ++# 5 https://findit.library.yale.edu/images_layout/view?parentoid=15537502&increment=558 ++# 6 https://findit.library.yale.edu/images_layout/view?parentoid=15537511&increment=105 ++# 7 https://findit.library.yale.edu/images_layout/view?parentoid=15537516&increment=278 ++# 8 https://findit.library.yale.edu/images_layout/view?parentoid=15537522&increment=248 ++# 9 https://findit.library.yale.edu/images_layout/view?parentoid=15537530&increment=329 ++#10 https://findit.library.yale.edu/images_layout/view?parentoid=15537537&increment=601 ++#11 https://www.nevo.co.il/law_word/law12/er-002.pdf#page=3 ++#12 https://www.nevo.co.il/law_word/law12/er-017-t2.pdf#page=4 ++#13 https://www.nevo.co.il/law_word/law06/tak-0006.pdf#page=3 ++#14 https://www.nevo.co.il/law_word/law06/tak-0080.pdf#page=7 ++#15 https://www.nevo.co.il/law_word/law06/tak-0164.pdf#page=10 ++#16 https://www.nevo.co.il/law_word/law06/tak-0206.pdf#page=4 ++#17 https://www.nevo.co.il/law_word/law06/tak-0212.pdf#page=2 ++#18 https://www.nevo.co.il/law_word/law06/tak-0254.pdf#page=4 ++#19 https://www.nevo.co.il/law_word/law06/tak-0300.pdf#page=5 ++#20 https://www.nevo.co.il/law_word/law06/tak-0348.pdf#page=3 ++#21 https://www.nevo.co.il/law_word/law06/tak-0420.pdf#page=5 ++#22 https://www.nevo.co.il/law_word/law06/tak-0497.pdf#page=10 ++#23 https://www.nevo.co.il/law_word/law06/tak-0591.pdf#page=6 ++#24 https://www.nevo.co.il/law_word/law06/tak-0680.pdf#page=3 ++#25 https://www.nevo.co.il/law_word/law06/tak-3192.pdf#page=2 ++#26 https://www.nevo.co.il/law_word/law06/tak-3322.pdf#page=5 ++#27 https://www.nevo.co.il/law_word/law06/tak-4146.pdf#page=2 ++#28 https://www.nevo.co.il/law_word/law06/tak-4604.pdf#page=7 ++#29 https://www.nevo.co.il/law_word/law06/tak-4619.pdf#page=2 ++#30 https://www.nevo.co.il/law_word/law06/tak-4744.pdf#page=11 ++#31 https://www.nevo.co.il/law_word/law06/tak-4851.pdf#page=2 ++#32 https://www.nevo.co.il/law_word/law06/tak-4932.pdf#page=19 ++#33 https://www.nevo.co.il/law_word/law06/tak-5013.pdf#page=8 ++#34 https://www.nevo.co.il/law_word/law06/tak-5021.pdf#page=8 ++#35 https://www.nevo.co.il/law_word/law06/tak-5096.pdf#page=3 ++#36 https://www.nevo.co.il/law_word/law06/tak-5167.pdf#page=2 ++#37 https://www.nevo.co.il/law_word/law06/tak-5248.pdf#page=7 ++#38 https://www.nevo.co.il/law_word/law06/tak-5335.pdf#page=6 ++#39 https://www.nevo.co.il/law_word/law06/tak-5339.pdf#page=7 ++#40 https://www.nevo.co.il/law_word/law06/tak-5506.pdf#page=19 ++#41 https://www.nevo.co.il/law_word/law06/tak-5731.pdf#page=2 ++#42 https://www.nevo.co.il/law_word/law06/tak-5853.pdf#page=3 ++#43 https://www.nevo.co.il/law_word/law06/tak-5937.pdf#page=9 ++#44 https://www.nevo.co.il/law_word/law06/tak-6024.pdf#page=4 ++# ++# Time Determination (Temporary Provisions) Law, 1997 ++# https://www.nevo.co.il/law_html/law19/p201_003.htm ++# ++# Time Determination (Temporary Provisions) Law, 2000 ++# https://www.nevo.co.il/law_html/law19/p201_004.htm ++# ++# Time Determination Law, 1992 and amendments ++# https://www.nevo.co.il/law_html/law01/p201_002.htm ++# https://main.knesset.gov.il/Activity/Legislation/Laws/Pages/LawPrimary.aspx?lawitemid=2001174 ++ ++# From Paul Eggert (2020-10-27): ++# Several of the midnight transitions mentioned above are ambiguous; ++# are they 00:00, 00:00s, 24:00, or 24:00s? When resolving these ambiguities, ++# try to minimize changes from previous tzdb versions, for lack of better info. ++# Commentary from previous versions is included below, to help explain this. ++ + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +-Rule Zion 1940 only - Jun 1 0:00 1:00 D +-Rule Zion 1942 1944 - Nov 1 0:00 0 S +-Rule Zion 1943 only - Apr 1 2:00 1:00 D +-Rule Zion 1944 only - Apr 1 0:00 1:00 D +-Rule Zion 1945 only - Apr 16 0:00 1:00 D +-Rule Zion 1945 only - Nov 1 2:00 0 S +-Rule Zion 1946 only - Apr 16 2:00 1:00 D +-Rule Zion 1946 only - Nov 1 0:00 0 S +-Rule Zion 1948 only - May 23 0:00 2:00 DD +-Rule Zion 1948 only - Sep 1 0:00 1:00 D +-Rule Zion 1948 1949 - Nov 1 2:00 0 S +-Rule Zion 1949 only - May 1 0:00 1:00 D +-Rule Zion 1950 only - Apr 16 0:00 1:00 D +-Rule Zion 1950 only - Sep 15 3:00 0 S +-Rule Zion 1951 only - Apr 1 0:00 1:00 D +-Rule Zion 1951 only - Nov 11 3:00 0 S +-Rule Zion 1952 only - Apr 20 2:00 1:00 D +-Rule Zion 1952 only - Oct 19 3:00 0 S +-Rule Zion 1953 only - Apr 12 2:00 1:00 D +-Rule Zion 1953 only - Sep 13 3:00 0 S +-Rule Zion 1954 only - Jun 13 0:00 1:00 D +-Rule Zion 1954 only - Sep 12 0:00 0 S +-Rule Zion 1955 only - Jun 11 2:00 1:00 D +-Rule Zion 1955 only - Sep 11 0:00 0 S +-Rule Zion 1956 only - Jun 3 0:00 1:00 D +-Rule Zion 1956 only - Sep 30 3:00 0 S +-Rule Zion 1957 only - Apr 29 2:00 1:00 D +-Rule Zion 1957 only - Sep 22 0:00 0 S +-Rule Zion 1974 only - Jul 7 0:00 1:00 D +-Rule Zion 1974 only - Oct 13 0:00 0 S +-Rule Zion 1975 only - Apr 20 0:00 1:00 D +-Rule Zion 1975 only - Aug 31 0:00 0 S ++Rule Zion 1940 only - May 31 24:00u 1:00 D ++Rule Zion 1940 only - Sep 30 24:00u 0 S ++Rule Zion 1940 only - Nov 16 24:00u 1:00 D ++Rule Zion 1942 1946 - Oct 31 24:00u 0 S ++Rule Zion 1943 1944 - Mar 31 24:00u 1:00 D ++Rule Zion 1945 1946 - Apr 15 24:00u 1:00 D ++Rule Zion 1948 only - May 22 24:00u 2:00 DD ++Rule Zion 1948 only - Aug 31 24:00u 1:00 D ++Rule Zion 1948 1949 - Oct 31 24:00u 0 S ++Rule Zion 1949 only - Apr 30 24:00u 1:00 D ++Rule Zion 1950 only - Apr 15 24:00u 1:00 D ++Rule Zion 1950 only - Sep 14 24:00u 0 S ++Rule Zion 1951 only - Mar 31 24:00u 1:00 D ++Rule Zion 1951 only - Nov 10 24:00u 0 S ++Rule Zion 1952 only - Apr 19 24:00u 1:00 D ++Rule Zion 1952 only - Oct 18 24:00u 0 S ++Rule Zion 1953 only - Apr 11 24:00u 1:00 D ++Rule Zion 1953 only - Sep 12 24:00u 0 S ++Rule Zion 1954 only - Jun 12 24:00u 1:00 D ++Rule Zion 1954 only - Sep 11 24:00u 0 S ++Rule Zion 1955 only - Jun 11 24:00u 1:00 D ++Rule Zion 1955 only - Sep 10 24:00u 0 S ++Rule Zion 1956 only - Jun 2 24:00u 1:00 D ++Rule Zion 1956 only - Sep 29 24:00u 0 S ++Rule Zion 1957 only - Apr 27 24:00u 1:00 D ++Rule Zion 1957 only - Sep 21 24:00u 0 S ++Rule Zion 1974 only - Jul 6 24:00 1:00 D ++Rule Zion 1974 only - Oct 12 24:00 0 S ++Rule Zion 1975 only - Apr 19 24:00 1:00 D ++Rule Zion 1975 only - Aug 30 24:00 0 S + + # From Alois Treindl (2019-03-06): + # http://www.moin.gov.il/Documents/שעון%20קיץ/clock-50-years-7-2014.pdf +@@ -1769,25 +1909,24 @@ + # From Paul Eggert (2019-03-06): + # Also see this thread about the moin.gov.il URL: + # https://mm.icann.org/pipermail/tz/2018-November/027194.html +-Rule Zion 1980 only - Aug 2 0:00 1:00 D +-Rule Zion 1980 only - Sep 13 1:00 0 S +-Rule Zion 1984 only - May 5 0:00 1:00 D +-Rule Zion 1984 only - Aug 25 1:00 0 S +- +-# From Shanks & Pottenger: +-Rule Zion 1985 only - Apr 14 0:00 1:00 D +-Rule Zion 1985 only - Sep 15 0:00 0 S +-Rule Zion 1986 only - May 18 0:00 1:00 D +-Rule Zion 1986 only - Sep 7 0:00 0 S +-Rule Zion 1987 only - Apr 15 0:00 1:00 D +-Rule Zion 1987 only - Sep 13 0:00 0 S ++Rule Zion 1980 only - Aug 2 24:00s 1:00 D ++Rule Zion 1980 only - Sep 13 24:00s 0 S ++Rule Zion 1984 only - May 5 24:00s 1:00 D ++Rule Zion 1984 only - Aug 25 24:00s 0 S ++ ++Rule Zion 1985 only - Apr 13 24:00 1:00 D ++Rule Zion 1985 only - Aug 31 24:00 0 S ++Rule Zion 1986 only - May 17 24:00 1:00 D ++Rule Zion 1986 only - Sep 6 24:00 0 S ++Rule Zion 1987 only - Apr 14 24:00 1:00 D ++Rule Zion 1987 only - Sep 12 24:00 0 S + + # From Avigdor Finkelstein (2014-03-05): + # I check the Parliament (Knesset) records and there it's stated that the + # [1988] transition should take place on Saturday night, when the Sabbath + # ends and changes to Sunday. +-Rule Zion 1988 only - Apr 10 0:00 1:00 D +-Rule Zion 1988 only - Sep 4 0:00 0 S ++Rule Zion 1988 only - Apr 9 24:00 1:00 D ++Rule Zion 1988 only - Sep 3 24:00 0 S + + # From Ephraim Silverberg + # (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22, +@@ -1817,14 +1956,14 @@ + # (the eve of the 7th of Tishrei in the lunar Hebrew calendar). + + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +-Rule Zion 1989 only - Apr 30 0:00 1:00 D +-Rule Zion 1989 only - Sep 3 0:00 0 S +-Rule Zion 1990 only - Mar 25 0:00 1:00 D +-Rule Zion 1990 only - Aug 26 0:00 0 S +-Rule Zion 1991 only - Mar 24 0:00 1:00 D +-Rule Zion 1991 only - Sep 1 0:00 0 S +-Rule Zion 1992 only - Mar 29 0:00 1:00 D +-Rule Zion 1992 only - Sep 6 0:00 0 S ++Rule Zion 1989 only - Apr 29 24:00 1:00 D ++Rule Zion 1989 only - Sep 2 24:00 0 S ++Rule Zion 1990 only - Mar 24 24:00 1:00 D ++Rule Zion 1990 only - Aug 25 24:00 0 S ++Rule Zion 1991 only - Mar 23 24:00 1:00 D ++Rule Zion 1991 only - Aug 31 24:00 0 S ++Rule Zion 1992 only - Mar 28 24:00 1:00 D ++Rule Zion 1992 only - Sep 5 24:00 0 S + Rule Zion 1993 only - Apr 2 0:00 1:00 D + Rule Zion 1993 only - Sep 5 0:00 0 S + +@@ -1853,10 +1992,10 @@ + # where YYYY is the relevant year. + + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +-Rule Zion 1996 only - Mar 15 0:00 1:00 D +-Rule Zion 1996 only - Sep 16 0:00 0 S +-Rule Zion 1997 only - Mar 21 0:00 1:00 D +-Rule Zion 1997 only - Sep 14 0:00 0 S ++Rule Zion 1996 only - Mar 14 24:00 1:00 D ++Rule Zion 1996 only - Sep 15 24:00 0 S ++Rule Zion 1997 only - Mar 20 24:00 1:00 D ++Rule Zion 1997 only - Sep 13 24:00 0 S + Rule Zion 1998 only - Mar 20 0:00 1:00 D + Rule Zion 1998 only - Sep 6 0:00 0 S + Rule Zion 1999 only - Apr 2 2:00 1:00 D +@@ -1908,14 +2047,15 @@ + Rule Zion 2011 only - Oct 2 2:00 0 S + Rule Zion 2012 only - Sep 23 2:00 0 S + +-# From Ephraim Silverberg (2013-06-27): +-# On June 23, 2013, the Israeli government approved changes to the +-# Time Decree Law. The next day, the changes passed the First Reading +-# in the Knesset. The law is expected to pass the Second and Third +-# (final) Readings by the beginning of September 2013. +-# +-# As of 2013, DST starts at 02:00 on the Friday before the last Sunday +-# in March. DST ends at 02:00 on the last Sunday of October. ++# From Ephraim Silverberg (2020-10-26): ++# The current time law (2013) from the State of Israel can be viewed ++# (in Hebrew) at: ++# ftp://ftp.cs.huji.ac.il/pub/tz/israel/announcements/2013+law.pdf ++# It translates to: ++# Every year, in the period from the Friday before the last Sunday in ++# the month of March at 02:00 a.m. until the last Sunday of the month ++# of October at 02:00 a.m., Israel Time will be advanced an additional ++# hour such that it will be UTC+3. + + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S + Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D +--- contrib/tzdata/australasia.orig ++++ contrib/tzdata/australasia +@@ -14,16 +14,13 @@ + # Please see the notes below for the controversy about "EST" versus "AEST" etc. + + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +-Rule Aus 1917 only - Jan 1 0:01 1:00 D +-Rule Aus 1917 only - Mar 25 2:00 0 S +-Rule Aus 1942 only - Jan 1 2:00 1:00 D +-Rule Aus 1942 only - Mar 29 2:00 0 S +-Rule Aus 1942 only - Sep 27 2:00 1:00 D +-Rule Aus 1943 1944 - Mar lastSun 2:00 0 S +-Rule Aus 1943 only - Oct 3 2:00 1:00 D +-# Go with Whitman and the Australian National Standards Commission, which +-# says W Australia didn't use DST in 1943/1944. Ignore Whitman's claim that +-# 1944/1945 was just like 1943/1944. ++Rule Aus 1917 only - Jan 1 2:00s 1:00 D ++Rule Aus 1917 only - Mar lastSun 2:00s 0 S ++Rule Aus 1942 only - Jan 1 2:00s 1:00 D ++Rule Aus 1942 only - Mar lastSun 2:00s 0 S ++Rule Aus 1942 only - Sep 27 2:00s 1:00 D ++Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S ++Rule Aus 1943 only - Oct 3 2:00s 1:00 D + + # Zone NAME STDOFF RULES FORMAT [UNTIL] + # Northern Territory +@@ -115,8 +112,12 @@ + # says King Island didn't observe DST from WWII until late 1971. + # + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S ++Rule AT 1916 only - Oct Sun>=1 2:00s 1:00 D ++Rule AT 1917 only - Mar lastSun 2:00s 0 S ++Rule AT 1917 1918 - Oct Sun>=22 2:00s 1:00 D ++Rule AT 1918 1919 - Mar Sun>=1 2:00s 0 S + Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 D +-Rule AT 1968 only - Mar lastSun 2:00s 0 S ++Rule AT 1968 only - Mar Sun>=29 2:00s 0 S + Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D + Rule AT 1969 1971 - Mar Sun>=8 2:00s 0 S + Rule AT 1972 only - Feb lastSun 2:00s 0 S +@@ -136,15 +137,9 @@ + Rule AT 2008 max - Apr Sun>=1 2:00s 0 S + # Zone NAME STDOFF RULES FORMAT [UNTIL] + Zone Australia/Hobart 9:49:16 - LMT 1895 Sep +- 10:00 - AEST 1916 Oct 1 2:00 +- 10:00 1:00 AEDT 1917 Feb ++ 10:00 AT AE%sT 1919 Oct 24 + 10:00 Aus AE%sT 1967 + 10:00 AT AE%sT +-Zone Australia/Currie 9:35:28 - LMT 1895 Sep +- 10:00 - AEST 1916 Oct 1 2:00 +- 10:00 1:00 AEDT 1917 Feb +- 10:00 Aus AE%sT 1971 Jul +- 10:00 AT AE%sT + + # Victoria + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +@@ -873,13 +868,36 @@ + + + # Vanuatu ++ ++# From P Chan (2020-11-27): ++# Joint Daylight Saving Regulation No 59 of 1973 ++# New Hebrides Condominium Gazette No 336. December 1973 ++# http://www.paclii.org/vu/other/VUNHGovGaz//1973/11.pdf#page=15 ++# ++# Joint Daylight Saving (Repeal) Regulation No 10 of 1974 ++# New Hebrides Condominium Gazette No 336. March 1974 ++# http://www.paclii.org/vu/other/VUNHGovGaz//1974/3.pdf#page=11 ++# ++# Summer Time Act No. 35 of 1982 [commenced 1983-09-01] ++# http://www.paclii.org/vu/other/VUGovGaz/1982/32.pdf#page=48 ++# ++# Summer Time Act (Cap 157) ++# Laws of the Republic of Vanuatu Revised Edition 1988 ++# http://www.paclii.org/cgi-bin/sinodisp/vu/legis/consol_act1988/sta147/sta147.html ++# ++# Summer Time (Amendment) Act No. 6 of 1991 [commenced 1991-11-11] ++# http://www.paclii.org/vu/legis/num_act/sta1991227/ ++# ++# Summer Time (Repeal) Act No. 4 of 1993 [commenced 1993-05-03] ++# http://www.paclii.org/vu/other/VUGovGaz/1993/15.pdf#page=59 ++ + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +-Rule Vanuatu 1983 only - Sep 25 0:00 1:00 - +-Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 - +-Rule Vanuatu 1984 only - Oct 23 0:00 1:00 - +-Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 - +-Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 - +-Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 - ++Rule Vanuatu 1973 only - Dec 22 12:00u 1:00 - ++Rule Vanuatu 1974 only - Mar 30 12:00u 0 - ++Rule Vanuatu 1983 1991 - Sep Sat>=22 24:00 1:00 - ++Rule Vanuatu 1984 1991 - Mar Sat>=22 24:00 0 - ++Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 - ++Rule Vanuatu 1992 only - Oct Sat>=22 24:00 1:00 - + # Zone NAME STDOFF RULES FORMAT [UNTIL] + Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila + 11:00 Vanuatu +11/+12 +@@ -958,6 +976,25 @@ + # Electronic Journal of Australian and New Zealand History (1997-03-03) + # http://www.jcu.edu.au/aff/history/reviews/davison.htm + ++# From P Chan (2020-11-20): ++# Daylight Saving Act 1916 (No. 40 of 1916) [1916-12-21, commenced 1917-01-01] ++# http://classic.austlii.edu.au/au/legis/cth/num_act/dsa1916401916192/ ++# ++# Daylight Saving Repeal Act 1917 (No. 35 of 1917) [1917-09-25] ++# http://classic.austlii.edu.au/au/legis/cth/num_act/dsra1917351917243/ ++# ++# Statutory Rules 1941, No. 323 [1941-12-24] ++# https://www.legislation.gov.au/Details/C1941L00323 ++# ++# Statutory Rules 1942, No. 392 [1942-09-10] ++# https://www.legislation.gov.au/Details/C1942L00392 ++# ++# Statutory Rules 1943, No. 241 [1943-09-29] ++# https://www.legislation.gov.au/Details/C1943L00241 ++# ++# All transition times should be 02:00 standard time. ++ ++ + # From Paul Eggert (2005-12-08): + # Implementation Dates of Daylight Saving Time within Australia + # http://www.bom.gov.au/climate/averages/tables/dst_times.shtml +@@ -1350,6 +1387,27 @@ + + # Tasmania + ++# From P Chan (2020-11-20): ++# Tasmania observed DST in 1916-1919. ++# ++# Daylight Saving Act, 1916 (7 Geo V, No 2) [1916-09-22] ++# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsa19167gvn2267/ ++# ++# Daylight Saving Amendment Act, 1917 (8 Geo V, No 5) [1917-10-01] ++# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsaa19178gvn5347/ ++# ++# Daylight Saving Act Repeal Act, 1919 (10 Geo V, No 9) [1919-10-24] ++# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsara191910gvn9339/ ++# ++# King Island is mentioned in the 1967 Act but not the 1968 Act. ++# Therefore it possibly observed DST from 1968/69. ++# ++# Daylight Saving Act 1967 (No. 33 of 1967) [1967-09-22] ++# http://classic.austlii.edu.au/au/legis/tas/num_act/dsa196733o1967211/ ++# ++# Daylight Saving Act 1968 (No. 42 of 1968) [1968-10-15] ++# http://classic.austlii.edu.au/au/legis/tas/num_act/dsa196842o1968211/ ++ + # The rules for 1967 through 1991 were reported by George Shepherd + # via Simon Woodhead via Robert Elz (1991-03-06): + # # The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ] +--- contrib/tzdata/backward.orig ++++ contrib/tzdata/backward +@@ -49,6 +49,7 @@ + Link Europe/Oslo Atlantic/Jan_Mayen + Link Australia/Sydney Australia/ACT + Link Australia/Sydney Australia/Canberra ++Link Australia/Hobart Australia/Currie + Link Australia/Lord_Howe Australia/LHI + Link Australia/Sydney Australia/NSW + Link Australia/Darwin Australia/North +--- contrib/tzdata/backzone.orig ++++ contrib/tzdata/backzone +@@ -623,6 +623,12 @@ + -0:22:48 - JMT 1951 # Jamestown Mean Time + 0:00 - GMT + ++# King Island ++Zone Australia/Currie 9:35:28 - LMT 1895 Sep ++ 10:00 AT AE%sT 1919 Oct 24 ++ 10:00 Aus AE%sT 1968 Oct 15 ++ 10:00 AT AE%sT ++ + # Northern Ireland + Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2 + -0:25:21 - DMT 1916 May 21 2:00 +--- contrib/tzdata/etcetera.orig ++++ contrib/tzdata/etcetera +@@ -3,12 +3,11 @@ + # This file is in the public domain, so clarified as of + # 2009-05-17 by Arthur David Olson. + +-# These entries are mostly present for historical reasons, so that +-# people in areas not otherwise covered by the tz files could "zic -l" +-# to a timezone that was right for their area. These days, the +-# tz files cover almost all the inhabited world, and the only practical +-# need now for the entries that are not on UTC are for ships at sea +-# that cannot use POSIX TZ settings. ++# These entries are for uses not otherwise covered by the tz database. ++# Their main practical use is for platforms like Android that lack ++# support for POSIX-style TZ strings. On such platforms these entries ++# can be useful if the timezone database is wrong or if a ship or ++# aircraft at sea is not in a timezone. + + # Starting with POSIX 1003.1-2001, the entries below are all + # unnecessary as settings for the TZ environment variable. E.g., +--- contrib/tzdata/europe.orig ++++ contrib/tzdata/europe +@@ -2892,6 +2892,19 @@ + # The law has been published today on + # http://publication.pravo.gov.ru/Document/View/0001201810110037 + ++# From Alexander Krivenyshev (2020-11-27): ++# The State Duma approved (Nov 24, 2020) the transition of the Volgograd ++# region to the Moscow time zone.... ++# https://sozd.duma.gov.ru/bill/1012130-7 ++# ++# From Stepan Golosunov (2020-12-05): ++# Currently proposed text for the second reading (expected on December 8) ... ++# changes the date to December 27. https://v1.ru/text/gorod/2020/12/04/69601031/ ++# ++# From Stepan Golosunov (2020-12-22): ++# The law was published today on ++# http://publication.pravo.gov.ru/Document/View/0001202012220002 ++ + Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3 + 3:00 - +03 1930 Jun 21 + 4:00 - +04 1961 Nov 11 +@@ -2901,7 +2914,8 @@ + 3:00 Russia +03/+04 2011 Mar 27 2:00s + 4:00 - +04 2014 Oct 26 2:00s + 3:00 - +03 2018 Oct 28 2:00s +- 4:00 - +04 ++ 4:00 - +04 2020 Dec 27 2:00s ++ 3:00 - +03 + + # From Paul Eggert (2016-11-11): + # Europe/Saratov covers: +--- contrib/tzdata/leap-seconds.list.orig ++++ contrib/tzdata/leap-seconds.list +@@ -204,10 +204,10 @@ + # current -- the update time stamp, the data and the name of the file + # will not change. + # +-# Updated through IERS Bulletin C60 +-# File expires on: 28 June 2021 ++# Updated through IERS Bulletin C61 ++# File expires on: 28 December 2021 + # +-#@ 3833827200 ++#@ 3849638400 + # + 2272060800 10 # 1 Jan 1972 + 2287785600 11 # 1 Jul 1972 +@@ -252,4 +252,4 @@ + # the hash line is also ignored in the + # computation. + # +-#h 064356a8 39268b92 76e4d5ef 3e22fae1 0cca529c ++#h 2ab8253d d4380d28 75f01343 381504f8 8f8a4bfc +--- contrib/tzdata/leapseconds.orig ++++ contrib/tzdata/leapseconds +@@ -6,6 +6,10 @@ + # NIST format leap-seconds.list file, which can be copied from + # <ftp://ftp.nist.gov/pub/time/leap-seconds.list> + # or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>. ++# The NIST file is used instead of its IERS upstream counterpart ++# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list> ++# because under US law the NIST file is public domain ++# whereas the IERS file's copyright and license status is unclear. + # For more about leap-seconds.list, please see + # The NTP Timescale and Leap Seconds + # <https://www.eecis.udel.edu/~mills/leap.html>. +@@ -68,11 +72,11 @@ + # Any additional leap seconds will come after this. + # This Expires line is commented out for now, + # so that pre-2020a zic implementations do not reject this file. +-#Expires 2021 Jun 28 00:00:00 ++#Expires 2021 Dec 28 00:00:00 + + # POSIX timestamps for the data in this file: + #updated 1467936000 (2016-07-08 00:00:00 UTC) +-#expires 1624838400 (2021-06-28 00:00:00 UTC) ++#expires 1640649600 (2021-12-28 00:00:00 UTC) + +-# Updated through IERS Bulletin C60 +-# File expires on: 28 June 2021 ++# Updated through IERS Bulletin C61 ++# File expires on: 28 December 2021 +--- contrib/tzdata/leapseconds.awk.orig ++++ contrib/tzdata/leapseconds.awk +@@ -24,6 +24,10 @@ + print "# NIST format leap-seconds.list file, which can be copied from" + print "# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>" + print "# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>." ++ print "# The NIST file is used instead of its IERS upstream counterpart" ++ print "# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>" ++ print "# because under US law the NIST file is public domain" ++ print "# whereas the IERS file's copyright and license status is unclear." + print "# For more about leap-seconds.list, please see" + print "# The NTP Timescale and Leap Seconds" + print "# <https://www.eecis.udel.edu/~mills/leap.html>." +--- contrib/tzdata/northamerica.orig ++++ contrib/tzdata/northamerica +@@ -2234,7 +2234,7 @@ + # to say eight hours behind Greenwich Time. + # + # * O.I.C. 1980/02 INTERPRETATION ACT +-# [no online source found] ++# https://mm.icann.org/pipermail/tz/attachments/20201125/d5adc93b/CAYTOIC1980-02DST1980-01-04-0001.pdf + # + # * Yukon Daylight Saving Time, YOIC 1987/56 + # https://www.canlii.org/en/yk/laws/regu/yoic-1987-56/latest/yoic-1987-56.html +@@ -2935,12 +2935,38 @@ + # + # For 1899 Milne gives -5:09:29.5; round that. + # ++# From P Chan (2020-11-27, corrected on 2020-12-02): ++# There were two periods of DST observed in 1942-1945: 1942-05-01 ++# midnight to 1944-12-31 midnight and 1945-02-01 to 1945-10-17 midnight. ++# "midnight" should mean 24:00 from the context. ++# ++# War Time Order 1942 [1942-05-01] and War Time (No. 2) Order 1942 [1942-09-29] ++# Appendix to the Statutes of 7 George VI. and the Year 1942. p 34, 43 ++# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA34 ++# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA43 ++# ++# War Time Order 1943 [1943-03-31] and War Time Order 1944 [1943-12-29] ++# Appendix to the Statutes of 8 George VI. and the Year 1943. p 9-10, 28-29 ++# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA9 ++# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA28 ++# ++# War Time Order 1945 [1945-01-31] and the Order which revoke War Time Order ++# 1945 [1945-10-16] Appendix to the Statutes of 9 George VI. and the Year ++# 1945. p 160, 247-248 ++# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA160 ++# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA247 ++# + # From Sue Williams (2006-12-07): + # The Bahamas announced about a month ago that they plan to change their DST + # rules to sync with the U.S. starting in 2007.... + # http://www.jonesbahamas.com/?c=45&a=10412 + + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S ++Rule Bahamas 1942 only - May 1 24:00 1:00 W ++Rule Bahamas 1944 only - Dec 31 24:00 0 S ++Rule Bahamas 1945 only - Feb 1 0:00 1:00 W ++Rule Bahamas 1945 only - Aug 14 23:00u 1:00 P # Peace ++Rule Bahamas 1945 only - Oct 17 24:00 0 S + Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S + Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D + # Zone NAME STDOFF RULES FORMAT [UNTIL] +@@ -2964,34 +2990,161 @@ + -4:00 Barb A%sT + + # Belize +-# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger. ++ ++# From P Chan (2020-11-03): ++# Below are some laws related to the time in British Honduras/Belize: ++# ++# Definition of Time Ordinance, 1927 (No.4 of 1927) [1927-04-01] ++# Ordinances of British Honduras Passed in the Year 1927, p 19-20 ++# https://books.google.com/books?id=LqEpAQAAMAAJ&pg=RA3-PA19 ++# ++# Definition of Time (Amendment) Ordinance, 1942 (No. 5 of 1942) [1942-06-27] ++# Ordinances of British Honduras Passed in the Year 1942, p 31-32 ++# https://books.google.com/books?id=h6MpAQAAMAAJ&pg=RA6-PA95-IA44 ++# ++# Definition of Time Ordinance, 1945 (No. 19 of 1945) [1945-12-15] ++# Ordinances of British Honduras Passed in the Year 1945, p 49-50 ++# https://books.google.com/books?id=xaMpAQAAMAAJ&pg=RA2-PP1 ++# ++# Definition of Time Ordinance, 1947 (No. 1 of 1947) [1947-03-11] ++# Ordinances of British Honduras Passed in the Year 1947, p 1-2 ++# https://books.google.com/books?id=xaMpAQAAMAAJ&pg=RA3-PA1 ++# ++# Time (Definition of) Ordinance (Chapter 180) ++# The Laws of British Honduras in Force on the 15th Day of September, 1958 , Volume IV, p 2580 ++# https://books.google.com/books?id=v5QpAQAAMAAJ&pg=PA2580 ++# ++# Time (Definition of) (Amendment) Ordinance, 1968 (No. 13 of 1968) [1968-08-03] ++# https://books.google.com/books?id=xij7KEB_58wC&pg=RA1-PA428-IA9 ++# ++# Definition of Time Act (Chapter 339) ++# Law of Belize, Revised Edition 2000 ++# http://www.belizelaw.org/web/lawadmin/PDF%20files/cap339.pdf ++ ++# From Paul Eggert (2020-11-03): ++# The transitions below are derived from P Chan's sources, except that the ++# 1973 through 1983 transitions are from Shanks & Pottenger since we have ++# no better data there. ++ + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S +-Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 -0530 +-Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 CST ++Rule Belize 1918 1941 - Oct Sat>=1 24:00 0:30 -0530 ++Rule Belize 1919 1942 - Feb Sat>=8 24:00 0 CST ++Rule Belize 1942 only - Jun 27 24:00 1:00 CWT ++Rule Belize 1945 only - Aug 14 23:00u 1:00 CPT ++Rule Belize 1945 only - Dec 15 24:00 0 CST ++Rule Belize 1947 1967 - Oct Sat>=1 24:00 0:30 -0530 ++Rule Belize 1948 1968 - Feb Sat>=8 24:00 0 CST + Rule Belize 1973 only - Dec 5 0:00 1:00 CDT + Rule Belize 1974 only - Feb 9 0:00 0 CST + Rule Belize 1982 only - Dec 18 0:00 1:00 CDT + Rule Belize 1983 only - Feb 12 0:00 0 CST + # Zone NAME STDOFF RULES FORMAT [UNTIL] +-Zone America/Belize -5:52:48 - LMT 1912 Apr ++Zone America/Belize -5:52:48 - LMT 1912 Apr 1 + -6:00 Belize %s + + # Bermuda + ++# From Paul Eggert (2020-11-24): + # For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower, +-# Bermuda dockyard, Ireland I; round that. ++# Bermuda dockyard, Ireland I. This agrees with standard offset given in the ++# Daylight Saving Act, 1917 cited below. Round that to the nearest second. ++# It is not known when this time became standard for Bermuda; guess 1890. ++# The transition to -04 was specified by: ++# 1930: The Time Zone Act, 1929 (1929: No. 39) [1929-11-08] ++# https://books.google.com/books?id=7tdMAQAAIAAJ&pg=RA54-PP1 ++ ++# From P Chan (2020-11-20): ++# Most of the information can be found online from the Bermuda National ++# Library - Digital Collection which includes The Royal Gazette (RG) until 1957 ++# https://bnl.contentdm.oclc.org/digital/ ++# I will cite the ID. For example, [10000] means ++# https://bnl.contentdm.oclc.org/digital/collection/BermudaNP02/id/10000 ++# ++# 1917: Apr 5 midnight to Sep 30 midnight ++# Daylight Saving Act, 1917 (1917 No. 13) [1917-04-02] ++# Bermuda Acts and Resolves 1917, p 37-38 ++# https://books.google.com/books?id=M-lCAQAAMAAJ&pg=PA36-IA2 ++# RG, 1917-04-04, p 6 [42340] gives the spring forward date. ++# ++# 1918: Apr 13 midnight to Sep 15 midnight ++# Daylight Saving Act, 1918 (1918 No. 9) [1918-04-06] ++# Bermuda Acts and Resolves 1917, p 13 ++# https://books.google.com/books?id=K-lCAQAAMAAJ&pg=RA1-PA7 ++# ++# Note that local mean time was still used before 1930. ++# ++# During WWII, DST was introduced by Defence Regulations ++# 1942: Jan 11 02:00 to Oct 18 02:00 [113646], [115726] ++# 1943: Mar 21 02:00 to Oct 31 02:00 [116704], [118193] ++# 1944: Mar 12 02:00 to Nov 5 02:00 [119225], [121593] ++# 1945: Mar 11 02:00 to Nov 4 02:00 [122369], [124461] ++# RG, 1942-01-08, p 2, 1942-10-12, p 2 , 1943-03-06, p 2, 1943-09-03, p 1, ++# 1944-02-29, p 6, 1944-09-20, p 2, 1945-02-13, p 2, 1945-11-03, p 1 ++# ++# In 1946, the House of Assembly rejected DST twice. [128686], [128076] ++# RG, 1946-03-16 p 1,1946-04-13 p 1 ++# ++# 1947: third Sunday in May 02:00 to second Sunday in September 02:00 ++# DST in 1947 was defined in the Daylight Saving Act, 1947 (1947: No. 12) ++# which expired at the end of the year. [125784] ,[132405], [144454], [138226] ++# RG, 1947-02-27, p 1, 1947-05-15, p 1, 1947-09-13, p 1, 1947-12-30, p 1 ++# ++# 1948-1952: fourth Sunday in May 02:00 to first Sunday in September 02:00 ++# DST in 1948 was defined in the Daylight Saving Act, 1948 (1948 : No. 12) ++# which was set to expired at the end of the year but it was extended until ++# the end of 1952 and was not further extended. ++# [129802], [139403], [146008], [135240], [144330], [139049], [143309], ++# [148271], [149773], [153589], [153802], [155924] ++# RG, 1948-04-13, p 1, 1948-05-22, p 1, 1948-09-04, p 1, 1949-05-21, p1, ++# 1949-09-03, p 1, 1950-05-27 p 1, 1950-09-02, p 1, 1951-05-27, p 1, ++# 1951-09-01, p 1, 1952-05-23, p 1, 1952-09-26, p 1, 1952-12-21, p 8 ++# ++# In 1953-1955, the House of Assembly rejected DST each year. [158996], ++# [162620], [166720] RG, 1953-05-02, p 1, 1954-04-01 p 1, 1955-03-12, p 1 ++# ++# 1956: fourth Sunday in May 02:00 to last Sunday in October 02:00 ++# Time Zone (Seasonal Variation) Act, 1956 (1956: No.44) [1956-05-25] ++# Bermuda Public Acts 1956, p 331-332 ++# https://books.google.com/books?id=Xs1AlmD_cEwC&pg=PA63 ++# ++# The extension of the Act was rejected by the House of Assembly. [176218] ++# RG, 1956-12-13, p 1 ++# ++# From the Chronological Table of Public and Private Acts up to 1985, it seems ++# that there does not exist other Acts related to DST before 1973. ++# https://books.google.com/books?id=r9hMAQAAIAAJ&pg=RA23-PA1 ++# Public Acts of the Legislature of the Islands of Bermuda, Together with ++# Statutory Instruments in Force Thereunder, Vol VII + + # From Dan Jones, reporting in The Royal Gazette (2006-06-26): +- + # Next year, however, clocks in the US will go forward on the second Sunday + # in March, until the first Sunday in November. And, after the Time Zone + # (Seasonal Variation) Bill 2006 was passed in the House of Assembly on + # Friday, the same thing will happen in Bermuda. + # http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135 + ++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S ++Rule Bermuda 1917 only - Apr 5 24:00 1:00 - ++Rule Bermuda 1917 only - Sep 30 24:00 0 - ++Rule Bermuda 1918 only - Apr 13 24:00 1:00 - ++Rule Bermuda 1918 only - Sep 15 24:00 0 S ++Rule Bermuda 1942 only - Jan 11 2:00 1:00 D ++Rule Bermuda 1942 only - Oct 18 2:00 0 S ++Rule Bermuda 1943 only - Mar 21 2:00 1:00 D ++Rule Bermuda 1943 only - Oct 31 2:00 0 S ++Rule Bermuda 1944 1945 - Mar Sun>=8 2:00 1:00 D ++Rule Bermuda 1944 1945 - Nov Sun>=1 2:00 0 S ++Rule Bermuda 1947 only - May Sun>=15 2:00 1:00 D ++Rule Bermuda 1947 only - Sep Sun>=8 2:00 0 S ++Rule Bermuda 1948 1952 - May Sun>=22 2:00 1:00 D ++Rule Bermuda 1948 1952 - Sep Sun>=1 2:00 0 S ++Rule Bermuda 1956 only - May Sun>=22 2:00 1:00 D ++Rule Bermuda 1956 only - Oct lastSun 2:00 0 S ++ + # Zone NAME STDOFF RULES FORMAT [UNTIL] +-Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton +- -4:00 - AST 1974 Apr 28 2:00 ++Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton ++ -4:19:18 Bermuda BMT/BST 1930 Jan 1 2:00 ++ -4:00 Bermuda A%sT 1974 Apr 28 2:00 + -4:00 Canada A%sT 1976 + -4:00 US A%sT + +@@ -3574,7 +3727,7 @@ + # "Eastern Standard Times Begins 2007 + # Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time" + # indicating that the normal ET rules are followed. +-# ++ + # From Paul Eggert (2014-08-19): + # The 2014-08-13 Cabinet meeting decided to stay on UT -04 year-round. See: + # http://tcweeklynews.com/daylight-savings-time-to-be-maintained-p5353-127.htm +@@ -3589,19 +3742,42 @@ + # during the summer months and Standard Time, also known as Local + # Time, during the winter months with effect from April 2018 ... + # https://www.gov.uk/government/news/turks-and-caicos-post-cabinet-meeting-statement--3 +-# + # From Paul Eggert (2017-08-26): + # The date of effect of the spring 2018 change appears to be March 11, + # which makes more sense. See: Hamilton D. Time change back + # by March 2018 for TCI. Magnetic Media. 2017-08-25. + # http://magneticmediatv.com/2017/08/time-change-back-by-march-2018-for-tci/ + # ++# From P Chan (2020-11-27): ++# Standard Time Declaration Order 2015 (L.N. 15/2015) ++# http://online.fliphtml5.com/fizd/czin/#p=2 ++# ++# Standard Time Declaration Order 2017 (L.N. 31/2017) ++# http://online.fliphtml5.com/fizd/dmcu/#p=2 ++# ++# From Tim Parenti (2020-12-05): ++# Although L.N. 31/2017 reads that it "shall come into operation at 2:00 a.m. ++# on 11th March 2018", a precise interpretation here poses some problems. The ++# order states that "the standard time to be observed throughout the Turks and ++# Caicos Islands shall be the same time zone as the Eastern United States of ++# America" and further clarifies "[f]or the avoidance of doubt" that it ++# "applies to the Eastern Standard Time as well as any changes thereto for ++# Daylight Saving Time." However, as clocks in Turks and Caicos approached ++# 02:00 -04, and thus the declared implementation time, it was still 01:00 EST ++# (-05), as DST in the Eastern US would not start until an hour later. ++# ++# Since it is unlikely that those on the islands switched their clocks twice in ++# the span of an hour, we assume instead that the adoption of EDT actually took ++# effect once clocks in the Eastern US had sprung forward, from 03:00 -04. ++# This discrepancy only affects the time zone abbreviation and DST flag for the ++# intervening hour, not wall clock times, as -04 was maintained throughout. ++ + # Zone NAME STDOFF RULES FORMAT [UNTIL] + Zone America/Grand_Turk -4:44:32 - LMT 1890 + -5:07:10 - KMT 1912 Feb # Kingston Mean Time + -5:00 - EST 1979 +- -5:00 US E%sT 2015 Nov Sun>=1 2:00 +- -4:00 - AST 2018 Mar 11 3:00 ++ -5:00 US E%sT 2015 Mar 8 2:00 ++ -4:00 - AST 2018 Mar 11 3:00 + -5:00 US E%sT + + # British Virgin Is +--- contrib/tzdata/theory.html.orig ++++ contrib/tzdata/theory.html +@@ -474,8 +474,8 @@ + <p> + <small>These abbreviations are: + AMT Amsterdam, Asunción, Athens; +- BMT Baghdad, Bangkok, Batavia, Bern, Bogotá, Bridgetown, Brussels, +- Bucharest; ++ BMT Baghdad, Bangkok, Batavia, Bermuda, Bern, Bogotá, Bridgetown, ++ Brussels, Bucharest; + CMT Calamarca, Caracas, Chisinau, Colón, Copenhagen, Córdoba; + DMT Dublin/Dunsink; + EMT Easter; +@@ -506,6 +506,7 @@ + <small>A few abbreviations also follow the pattern that + <abbr>GMT</abbr>/<abbr>BST</abbr> established for time in the UK. + They are: ++ BMT/BST for Bermuda 1890–1930, + CMT/BST for Calamarca Mean Time and Bolivian Summer Time + 1890–1932, + DMT/IST for Dublin/Dunsink Mean Time and Irish Summer Time +--- contrib/tzdata/version.orig ++++ contrib/tzdata/version +@@ -1 +1 @@ +-2020d ++2021a +--- contrib/tzdata/ziguard.awk.orig ++++ contrib/tzdata/ziguard.awk +@@ -37,7 +37,7 @@ + + # If this line should differ due to Czechoslovakia using negative SAVE values, + # uncomment the desired version and comment out the undesired one. +- if (zone == "Europe/Prague" && /1947 Feb 23/) { ++ if (zone == "Europe/Prague" && /^#?[\t ]+[01]:00[\t ]/ && /1947 Feb 23/) { + if (($(in_comment + 2) != "-") == vanguard) { + uncomment = in_comment + } else { +@@ -65,10 +65,11 @@ + # uncomment the desired version and comment out the undesired one. + Rule_Namibia = /^#?Rule[\t ]+Namibia[\t ]/ + Zone_using_Namibia_rule \ +- = (zone == "Africa/Windhoek" \ ++ = (zone == "Africa/Windhoek" && /^#?[\t ]+[12]:00[\t ]/ \ + && ($(in_comment + 2) == "Namibia" \ +- || (1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \ +- || in_comment + 3 == NF)) ++ || ($(in_comment + 2) == "-" && $(in_comment + 3) == "CAT" \ ++ && ((1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \ ++ || in_comment + 3 == NF)))) + if (Rule_Namibia || Zone_using_Namibia_rule) { + if ((Rule_Namibia \ + ? ($(in_comment + 9) ~ /^-/ \ +--- contrib/tzdata/zone.tab.orig ++++ contrib/tzdata/zone.tab +@@ -56,8 +56,7 @@ + AT +4813+01620 Europe/Vienna + AU -3133+15905 Australia/Lord_Howe Lord Howe Island + AU -5430+15857 Antarctica/Macquarie Macquarie Island +-AU -4253+14719 Australia/Hobart Tasmania (most areas) +-AU -3956+14352 Australia/Currie Tasmania (King Island) ++AU -4253+14719 Australia/Hobart Tasmania + AU -3749+14458 Australia/Melbourne Victoria + AU -3352+15113 Australia/Sydney New South Wales (most areas) + AU -3157+14127 Australia/Broken_Hill New South Wales (Yancowinna) +@@ -130,9 +129,9 @@ + CA +4906-11631 America/Creston MST - BC (Creston) + CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John) + CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson) ++CA +6043-13503 America/Whitehorse MST - Yukon (east) ++CA +6404-13925 America/Dawson MST - Yukon (west) + CA +4916-12307 America/Vancouver Pacific - BC (most areas) +-CA +6043-13503 America/Whitehorse Pacific - Yukon (east) +-CA +6404-13925 America/Dawson Pacific - Yukon (west) + CC -1210+09655 Indian/Cocos + CD -0418+01518 Africa/Kinshasa Dem. Rep. of Congo (west) + CD -1140+02728 Africa/Lubumbashi Dem. Rep. of Congo (east) +@@ -337,8 +336,8 @@ + # Programs should use zone1970.tab instead; see above. + UA +4457+03406 Europe/Simferopol Crimea + RU +5836+04939 Europe/Kirov MSK+00 - Kirov ++RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd + RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan +-RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd + RU +5134+04602 Europe/Saratov MSK+01 - Saratov + RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk + RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia +--- contrib/tzdata/zone1970.tab.orig ++++ contrib/tzdata/zone1970.tab +@@ -64,8 +64,7 @@ + AT +4813+01620 Europe/Vienna + AU -3133+15905 Australia/Lord_Howe Lord Howe Island + AU -5430+15857 Antarctica/Macquarie Macquarie Island +-AU -4253+14719 Australia/Hobart Tasmania (most areas) +-AU -3956+14352 Australia/Currie Tasmania (King Island) ++AU -4253+14719 Australia/Hobart Tasmania + AU -3749+14458 Australia/Melbourne Victoria + AU -3352+15113 Australia/Sydney New South Wales (most areas) + AU -3157+14127 Australia/Broken_Hill New South Wales (Yancowinna) +@@ -128,9 +127,9 @@ + CA +4906-11631 America/Creston MST - BC (Creston) + CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John) + CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson) ++CA +6043-13503 America/Whitehorse MST - Yukon (east) ++CA +6404-13925 America/Dawson MST - Yukon (west) + CA +4916-12307 America/Vancouver Pacific - BC (most areas) +-CA +6043-13503 America/Whitehorse Pacific - Yukon (east) +-CA +6404-13925 America/Dawson Pacific - Yukon (west) + CC -1210+09655 Indian/Cocos + CH,DE,LI +4723+00832 Europe/Zurich Swiss time + CI,BF,GM,GN,ML,MR,SH,SL,SN,TG +0519-00402 Africa/Abidjan +@@ -293,8 +292,8 @@ + # Mention RU and UA alphabetically. See "territorial claims" above. + RU,UA +4457+03406 Europe/Simferopol Crimea + RU +5836+04939 Europe/Kirov MSK+00 - Kirov ++RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd + RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan +-RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd + RU +5134+04602 Europe/Saratov MSK+01 - Saratov + RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk + RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia diff --git a/website/static/security/patches/EN-21:01/tzdata-2021a.patch.asc b/website/static/security/patches/EN-21:01/tzdata-2021a.patch.asc new file mode 100644 index 0000000000..ae76c0013c --- /dev/null +++ b/website/static/security/patches/EN-21:01/tzdata-2021a.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbgVfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cL0kQ//RYNiBRCzjAawttj9Wz6ryKf1rTERp1FJ17NpLRzRHp/WnjTKZ4uyEqGn +pb4VWPbhVjiiCCyA0zvwGAOF5Yviv1UR79i5U+G0ErxVPdQKapqoQ240CY09eObG +rqKGLJIhdXIyEEPK9YrYYDUb0kAwOzpnvt3xgPH1sph0QT8fga0bffnr2sDthDu7 +b5NOKMA51JkB1G2tlevHGUXrTnh+gZntXApSYVZ8/c8jKqnzAdcm9Co80hb8oVuC +yWwEM7s2v/HTF0NUPPIz3PfAETLWCzVHGb0ZjXdZO6rd1BV6Zm1TIZ4wRoNOzl5n +4PQGmEQckxojDcDIUImF9EDS+8SxxnP3cDUyN3vIqmTKUkVjAIStqqq5AfFZBs0+ +CjvkX9v0LgaCNHfPPknUuldeORO4YLTc/6dj4Ern7gocHRE9/feBcHdV58XGQLB/ +jI92wckBD0G738TCKQg74rX21A3564h/cbThmsGUP05C2D1vW+jT+v9DJy15LpG6 +CIF9zU8IwLFKlzI28Oc8vLekgU/6E8z7V0+ObmpboRIVJTXetkRCN61SyIKSnJT+ +nZgIgvd22jTFXJh6j18SmQS6cN2kEq22AtYLimNKEgrsGcT7uMrWyTJQ6vJiooqc +a5txbMB2R4uRNv810IpMl0li2J0kshNBsnmsv0UxNQcAVyORBm8= +=ynES +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/EN-21:02/extattr.patch b/website/static/security/patches/EN-21:02/extattr.patch new file mode 100644 index 0000000000..ce1908786d --- /dev/null +++ b/website/static/security/patches/EN-21:02/extattr.patch @@ -0,0 +1,11 @@ +--- sys/ufs/ffs/ffs_vnops.c.orig ++++ sys/ufs/ffs/ffs_vnops.c +@@ -1663,7 +1663,7 @@ + *p++ = ap->a_attrnamespace; + *p++ = eapad2; + *p++ = strlen(ap->a_name); +- strcpy(p, ap->a_name); ++ memcpy(p, ap->a_name, strlen(ap->a_name)); + p += strlen(ap->a_name); + bzero(p, eapad1); + p += eapad1; diff --git a/website/static/security/patches/EN-21:02/extattr.patch.asc b/website/static/security/patches/EN-21:02/extattr.patch.asc new file mode 100644 index 0000000000..a8d0eb4d21 --- /dev/null +++ b/website/static/security/patches/EN-21:02/extattr.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbilfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cLRwQ//cPFjEPuSDNSMa6NcQnDKo7pZ+0jYON5t8CSMj9CqxKs3V/wa6F9rB78l +px6lkasBBFClmXH/lnVBrg8KTTD699Q8q7SHbydC7cG3XVB73QJnDjJrm6XgdcFt +RKF546+h50JQBXqlW5JRpCCzqMzqzdqa5eFGjJfPI16TjbAuz8ywOez1PHTuTmuS +lSJaT+UN78s5tD2D2WgQzzTG/o8umuJXisfCGFLsK7RI3p7c9N8QcrIGikrose9R +yu/NFpfs/5iIE40VtTb6J/4PcOBlzfdjDv4EgAyRKzhTkFxPDgh3cgfh/gtJg9CV +AZtf5K0qOufD79l1PA25znU3nf761VFQIyPv/sIT5nuhITm1WkPtV4mvHlN+bb9C +tVF4HkLx6raghE5XnIAg0cFndVlS+zwAmzety/75W0h0AUqofrn4jbdcmeFGogG+ +BAtaPE39xWGJMT4R9zXMnF+mojX2GOqSKOyfshBrolsnkT9oEQQAVGb0N3ZxRT/2 +tmvV2Q01d5NORvtBlD0yvJ/qkihiF0UrfG+I9GJ2+gMjibpU/iZik8y0msboBYIB +2zjf3DdNZY/n+hSN8cxN32maU0ZYl+he394rmMt0Lj1Ff7EuUz5RsKtzHoYPHoWm +mTnXK/PUrJTEdvYxUzMbOsfM41Pqq476XYl/7B6bU4ZnSNlTxNM= +=ntJx +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/EN-21:03/vnet.patch b/website/static/security/patches/EN-21:03/vnet.patch new file mode 100644 index 0000000000..0f875b029d --- /dev/null +++ b/website/static/security/patches/EN-21:03/vnet.patch @@ -0,0 +1,291 @@ +--- sys/net/if.c.orig ++++ sys/net/if.c +@@ -274,6 +274,8 @@ + static void if_delgroups(struct ifnet *); + static void if_attach_internal(struct ifnet *, int, struct if_clone *); + static int if_detach_internal(struct ifnet *, int, struct if_clone **); ++static void if_link_ifnet(struct ifnet *); ++static bool if_unlink_ifnet(struct ifnet *, bool); + #ifdef VIMAGE + static void if_vmove(struct ifnet *, struct vnet *); + #endif +@@ -305,12 +307,8 @@ + + /* + * The global network interface list (V_ifnet) and related state (such as +- * if_index, if_indexlim, and ifindex_table) are protected by an sxlock and +- * an rwlock. Either may be acquired shared to stablize the list, but both +- * must be acquired writable to modify the list. This model allows us to +- * both stablize the interface list during interrupt thread processing, but +- * also to stablize it over long-running ioctls, without introducing priority +- * inversions and deadlocks. ++ * if_index, if_indexlim, and ifindex_table) are protected by an sxlock. ++ * This may be acquired to stabilise the list, or we may rely on NET_EPOCH. + */ + struct rwlock ifnet_rwlock; + RW_SYSINIT_FLAGS(ifnet_rw, &ifnet_rwlock, "ifnet_rw", RW_RECURSE); +@@ -317,6 +315,9 @@ + struct sx ifnet_sxlock; + SX_SYSINIT_FLAGS(ifnet_sx, &ifnet_sxlock, "ifnet_sx", SX_RECURSE); + ++struct sx ifnet_detach_sxlock; ++SX_SYSINIT(ifnet_detach, &ifnet_detach_sxlock, "ifnet_detach_sx"); ++ + /* + * The allocation of network interfaces is a rather non-atomic affair; we + * need to select an index before we are ready to expose the interface for +@@ -476,17 +477,87 @@ + } + VNET_SYSUNINIT(vnet_if_uninit, SI_SUB_INIT_IF, SI_ORDER_FIRST, + vnet_if_uninit, NULL); ++#endif + + static void ++if_link_ifnet(struct ifnet *ifp) ++{ ++ ++ IFNET_WLOCK(); ++ CK_STAILQ_INSERT_TAIL(&V_ifnet, ifp, if_link); ++#ifdef VIMAGE ++ curvnet->vnet_ifcnt++; ++#endif ++ IFNET_WUNLOCK(); ++} ++ ++static bool ++if_unlink_ifnet(struct ifnet *ifp, bool vmove) ++{ ++ struct ifnet *iter; ++ int found = 0; ++ ++ IFNET_WLOCK(); ++ CK_STAILQ_FOREACH(iter, &V_ifnet, if_link) ++ if (iter == ifp) { ++ CK_STAILQ_REMOVE(&V_ifnet, ifp, ifnet, if_link); ++ if (!vmove) ++ ifp->if_flags |= IFF_DYING; ++ found = 1; ++ break; ++ } ++#ifdef VIMAGE ++ curvnet->vnet_ifcnt--; ++#endif ++ IFNET_WUNLOCK(); ++ ++ return (found); ++} ++ ++#ifdef VIMAGE ++static void + vnet_if_return(const void *unused __unused) + { + struct ifnet *ifp, *nifp; ++ struct ifnet **pending; ++ int found, i; + ++ i = 0; ++ ++ /* ++ * We need to protect our access to the V_ifnet tailq. Ordinarily we'd ++ * enter NET_EPOCH, but that's not possible, because if_vmove() calls ++ * if_detach_internal(), which waits for NET_EPOCH callbacks to ++ * complete. We can't do that from within NET_EPOCH. ++ * ++ * However, we can also use the IFNET_xLOCK, which is the V_ifnet ++ * read/write lock. We cannot hold the lock as we call if_vmove() ++ * though, as that presents LOR w.r.t ifnet_sx, in_multi_sx and iflib ++ * ctx lock. ++ */ ++ IFNET_WLOCK(); ++ ++ pending = malloc(sizeof(struct ifnet *) * curvnet->vnet_ifcnt, ++ M_IFNET, M_WAITOK | M_ZERO); ++ + /* Return all inherited interfaces to their parent vnets. */ + CK_STAILQ_FOREACH_SAFE(ifp, &V_ifnet, if_link, nifp) { +- if (ifp->if_home_vnet != ifp->if_vnet) +- if_vmove(ifp, ifp->if_home_vnet); ++ if (ifp->if_home_vnet != ifp->if_vnet) { ++ found = if_unlink_ifnet(ifp, true); ++ MPASS(found); ++ ++ pending[i++] = ifp; ++ } + } ++ IFNET_WUNLOCK(); ++ ++ for (int j = 0; j < i; j++) { ++ sx_xlock(&ifnet_detach_sxlock); ++ if_vmove(pending[j], pending[j]->if_home_vnet); ++ sx_xunlock(&ifnet_detach_sxlock); ++ } ++ ++ free(pending, M_IFNET); + } + VNET_SYSUNINIT(vnet_if_return, SI_SUB_VNET_DONE, SI_ORDER_ANY, + vnet_if_return, NULL); +@@ -894,12 +965,7 @@ + } + #endif + +- IFNET_WLOCK(); +- CK_STAILQ_INSERT_TAIL(&V_ifnet, ifp, if_link); +-#ifdef VIMAGE +- curvnet->vnet_ifcnt++; +-#endif +- IFNET_WUNLOCK(); ++ if_link_ifnet(ifp); + + if (domain_init_status >= 2) + if_attachdomain1(ifp); +@@ -1037,9 +1103,15 @@ + void + if_detach(struct ifnet *ifp) + { ++ bool found; + + CURVNET_SET_QUIET(ifp->if_vnet); +- if_detach_internal(ifp, 0, NULL); ++ found = if_unlink_ifnet(ifp, false); ++ if (found) { ++ sx_slock(&ifnet_detach_sxlock); ++ if_detach_internal(ifp, 0, NULL); ++ sx_sunlock(&ifnet_detach_sxlock); ++ } + CURVNET_RESTORE(); + } + +@@ -1059,8 +1131,6 @@ + struct ifaddr *ifa; + int i; + struct domain *dp; +- struct ifnet *iter; +- int found = 0; + #ifdef VIMAGE + int shutdown; + +@@ -1067,39 +1137,11 @@ + shutdown = (ifp->if_vnet->vnet_state > SI_SUB_VNET && + ifp->if_vnet->vnet_state < SI_SUB_VNET_DONE) ? 1 : 0; + #endif +- IFNET_WLOCK(); +- CK_STAILQ_FOREACH(iter, &V_ifnet, if_link) +- if (iter == ifp) { +- CK_STAILQ_REMOVE(&V_ifnet, ifp, ifnet, if_link); +- if (!vmove) +- ifp->if_flags |= IFF_DYING; +- found = 1; +- break; +- } +- IFNET_WUNLOCK(); +- if (!found) { +- /* +- * While we would want to panic here, we cannot +- * guarantee that the interface is indeed still on +- * the list given we don't hold locks all the way. +- */ +- return (ENOENT); +-#if 0 +- if (vmove) +- panic("%s: ifp=%p not on the ifnet tailq %p", +- __func__, ifp, &V_ifnet); +- else +- return; /* XXX this should panic as well? */ +-#endif +- } + + /* + * At this point we know the interface still was on the ifnet list + * and we removed it so we are in a stable state. + */ +-#ifdef VIMAGE +- curvnet->vnet_ifcnt--; +-#endif + epoch_wait_preempt(net_epoch_preempt); + + /* +@@ -1326,6 +1368,7 @@ + struct prison *pr; + struct ifnet *difp; + int shutdown; ++ bool found; + + /* Try to find the prison within our visibility. */ + sx_slock(&allprison_lock); +@@ -1362,6 +1405,9 @@ + } + CURVNET_RESTORE(); + ++ found = if_unlink_ifnet(ifp, true); ++ MPASS(found); ++ + /* Move the interface into the child jail/vnet. */ + if_vmove(ifp, pr->pr_vnet); + +@@ -1378,7 +1424,8 @@ + struct prison *pr; + struct vnet *vnet_dst; + struct ifnet *ifp; +- int shutdown; ++ int shutdown; ++ bool found; + + /* Try to find the prison within our visibility. */ + sx_slock(&allprison_lock); +@@ -1416,6 +1463,8 @@ + } + + /* Get interface back from child jail/vnet. */ ++ found = if_unlink_ifnet(ifp, true); ++ MPASS(found); + if_vmove(ifp, vnet_dst); + CURVNET_RESTORE(); + +@@ -3100,8 +3149,12 @@ + goto out_noref; + case SIOCIFDESTROY: + error = priv_check(td, PRIV_NET_IFDESTROY); +- if (error == 0) ++ ++ if (error == 0) { ++ sx_slock(&ifnet_detach_sxlock); + error = if_clone_destroy(ifr->ifr_name); ++ sx_sunlock(&ifnet_detach_sxlock); ++ } + goto out_noref; + + case SIOCIFGCLONERS: +--- sys/net/if_var.h.orig ++++ sys/net/if_var.h +@@ -569,27 +569,11 @@ + extern struct rwlock ifnet_rwlock; + extern struct sx ifnet_sxlock; + +-#define IFNET_WLOCK() do { \ +- sx_xlock(&ifnet_sxlock); \ +- rw_wlock(&ifnet_rwlock); \ +-} while (0) +- +-#define IFNET_WUNLOCK() do { \ +- rw_wunlock(&ifnet_rwlock); \ +- sx_xunlock(&ifnet_sxlock); \ +-} while (0) +- +-/* +- * To assert the ifnet lock, you must know not only whether it's for read or +- * write, but also whether it was acquired with sleep support or not. +- */ +-#define IFNET_RLOCK_ASSERT() sx_assert(&ifnet_sxlock, SA_SLOCKED) ++#define IFNET_WLOCK() sx_xlock(&ifnet_sxlock) ++#define IFNET_WUNLOCK() sx_xunlock(&ifnet_sxlock) ++#define IFNET_RLOCK_ASSERT() sx_assert(&ifnet_sxlock, SA_SLOCKED) + #define IFNET_RLOCK_NOSLEEP_ASSERT() MPASS(in_epoch(net_epoch_preempt)) +-#define IFNET_WLOCK_ASSERT() do { \ +- sx_assert(&ifnet_sxlock, SA_XLOCKED); \ +- rw_assert(&ifnet_rwlock, RA_WLOCKED); \ +-} while (0) +- ++#define IFNET_WLOCK_ASSERT() sx_assert(&ifnet_sxlock, SA_XLOCKED) + #define IFNET_RLOCK() sx_slock(&ifnet_sxlock) + #define IFNET_RLOCK_NOSLEEP() struct epoch_tracker ifnet_rlock_et; epoch_enter_preempt(net_epoch_preempt, &ifnet_rlock_et) + #define IFNET_RUNLOCK() sx_sunlock(&ifnet_sxlock) diff --git a/website/static/security/patches/EN-21:03/vnet.patch.asc b/website/static/security/patches/EN-21:03/vnet.patch.asc new file mode 100644 index 0000000000..bac6f744af --- /dev/null +++ b/website/static/security/patches/EN-21:03/vnet.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbipfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cLRyQ//du+e1JRQvV+xth02xPmDbklqvfsH9ge20DeExN/grbrqv1nLkGBP0I1j +CnxMMDPsm33fATsxa6HndAcQXDO4bRf0E7qjE+bgC1gJevCrCptXI7LaOgTWrlpP +0iszfjqF0DIJhXL7MiFVDYkt5EBvPkvJMBo1q3A7HKG8YKzZHI6EUa6g+yspHip0 +p4TKVexl7L4ERb0h8hDUIycAPSmK4lNn9SOlErD9mTUUYRp/xvkVdAV53xnuo2aD +zt/sqO7lPRP1oiOCp/8D2ZiMbtg6dzOKyw0xhfnsW8a/h0k7nthWKWL+KpyOQVpj +QZ/lYnzzqxu93/2cZSuGFpIUw3WKl67IlYNW0qtGsvXeFjpx85AqFyYueg00Wvew +jUQk0lONd6k2XkyMS/mYgYXOuadA5uzJwgffRuKNP7aVxXIXM+4PJFleJ86c0q2b +qRLUWeWC4l+1oYY+0YHEAzv0VWc+VQilcERgUXezwF40vbUIvc+AhAzUDIO919Yg +PBz8vAGiDPSfeveihTtuD9FTugw4oaM6mgxFBSnkrHK6EyNuwMk5kvHjx25rjuzX +eqVEE1gUaigGzXoy1FsFpUeaAr4/vZcwwVu9sZ2Oysyknm7c6j6q/kR1JzH8Y8am +H0NX4nlccagnfTy5aGPQWPrV8QHAmOYuzw6LltUZxcIMDdLSGH4= +=edmV +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/EN-21:04/zfs.patch b/website/static/security/patches/EN-21:04/zfs.patch new file mode 100644 index 0000000000..f83ce9229d --- /dev/null +++ b/website/static/security/patches/EN-21:04/zfs.patch @@ -0,0 +1,150 @@ +--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c.orig ++++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c +@@ -613,8 +613,8 @@ + const char *fromsnap; + const char *tosnap; + boolean_t recursive; +- boolean_t verbose; + boolean_t replicate; ++ boolean_t verbose; + + /* + * The header nvlist is of the following format: +@@ -848,36 +848,36 @@ + rv = -1; + goto out; + } +- VERIFY(0 == nvlist_add_uint64(nvfs, "origin", +- origin->zfs_dmustats.dds_guid)); ++ fnvlist_add_uint64(nvfs, "origin", ++ origin->zfs_dmustats.dds_guid); + } + + /* iterate over props */ +- VERIFY(0 == nvlist_alloc(&nv, NV_UNIQUE_NAME, 0)); ++ nv = fnvlist_alloc(); + send_iterate_prop(zhp, nv); +- VERIFY(0 == nvlist_add_nvlist(nvfs, "props", nv)); +- nvlist_free(nv); ++ fnvlist_add_nvlist(nvfs, "props", nv); ++ fnvlist_free(nv); + + /* iterate over snaps, and set sd->parent_fromsnap_guid */ ++ sd->parent_fromsnap_guid = 0; ++ sd->parent_snaps = fnvlist_alloc(); ++ sd->snapprops = fnvlist_alloc(); + if (!sd->replicate && fromsnap_txg != 0) + min_txg = fromsnap_txg; + if (!sd->replicate && tosnap_txg != 0) + max_txg = tosnap_txg; +- sd->parent_fromsnap_guid = 0; +- VERIFY(0 == nvlist_alloc(&sd->parent_snaps, NV_UNIQUE_NAME, 0)); +- VERIFY(0 == nvlist_alloc(&sd->snapprops, NV_UNIQUE_NAME, 0)); + (void) zfs_iter_snapshots_sorted(zhp, send_iterate_snap, sd, + min_txg, max_txg); +- VERIFY(0 == nvlist_add_nvlist(nvfs, "snaps", sd->parent_snaps)); +- VERIFY(0 == nvlist_add_nvlist(nvfs, "snapprops", sd->snapprops)); ++ fnvlist_add_nvlist(nvfs, "snaps", sd->parent_snaps); ++ fnvlist_add_nvlist(nvfs, "snapprops", sd->snapprops); + fnvlist_free(sd->parent_snaps); + fnvlist_free(sd->snapprops); + + /* add this fs to nvlist */ + (void) snprintf(guidstring, sizeof (guidstring), + "0x%llx", (longlong_t)guid); +- VERIFY(0 == nvlist_add_nvlist(sd->fss, guidstring, nvfs)); +- nvlist_free(nvfs); ++ fnvlist_add_nvlist(sd->fss, guidstring, nvfs); ++ fnvlist_free(nvfs); + + /* iterate over children */ + if (sd->recursive) +@@ -894,13 +894,12 @@ + + static int + gather_nvlist(libzfs_handle_t *hdl, const char *fsname, const char *fromsnap, +- const char *tosnap, boolean_t recursive, boolean_t verbose, +- boolean_t replicate, nvlist_t **nvlp, avl_tree_t **avlp) ++ const char *tosnap, boolean_t recursive, boolean_t replicate, ++ boolean_t verbose, nvlist_t **nvlp, avl_tree_t **avlp) + { + zfs_handle_t *zhp; +- int error; +- uint64_t min_txg = 0, max_txg = 0; + send_data_t sd = { 0 }; ++ int error; + + zhp = zfs_open(hdl, fsname, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); + if (zhp == NULL) +@@ -911,8 +910,8 @@ + sd.fromsnap = fromsnap; + sd.tosnap = tosnap; + sd.recursive = recursive; +- sd.verbose = verbose; + sd.replicate = replicate; ++ sd.verbose = verbose; + + if ((error = send_iterate_fs(zhp, &sd)) != 0) { + nvlist_free(sd.fss); +@@ -1349,10 +1348,10 @@ + dump_filesystem(zfs_handle_t *zhp, void *arg) + { + int rv = 0; +- uint64_t min_txg = 0, max_txg = 0; + send_dump_data_t *sdd = arg; + boolean_t missingfrom = B_FALSE; + zfs_cmd_t zc = { 0 }; ++ uint64_t min_txg = 0, max_txg = 0; + + (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s", + zhp->zfs_name, sdd->tosnap); +@@ -1853,8 +1852,8 @@ + } + + err = gather_nvlist(zhp->zfs_hdl, zhp->zfs_name, +- fromsnap, tosnap, flags->replicate, flags->verbose, +- flags->replicate, &fss, &fsavl); ++ fromsnap, tosnap, flags->replicate, ++ flags->replicate, flags->verbose, &fss, &fsavl); + if (err) + goto err_out; + VERIFY(0 == nvlist_add_nvlist(hdrnv, "fss", fss)); +@@ -2497,7 +2496,7 @@ + VERIFY(0 == nvlist_alloc(&deleted, NV_UNIQUE_NAME, 0)); + + if ((error = gather_nvlist(hdl, tofs, fromsnap, NULL, +- recursive, B_FALSE, B_FALSE, &local_nv, &local_avl)) != 0) ++ recursive, recursive, B_FALSE, &local_nv, &local_avl)) != 0) + return (error); + + /* +--- sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h.orig ++++ sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h +@@ -881,6 +881,13 @@ + VDEV_INITIALIZE_COMPLETE + } vdev_initializing_state_t; + ++/* ++ * nvlist name constants. Facilitate restricting snapshot iteration range for ++ * the "list next snapshot" ioctl ++ */ ++#define SNAP_ITER_MIN_TXG "snap_iter_min_txg" ++#define SNAP_ITER_MAX_TXG "snap_iter_max_txg" ++ + /* + * Vdev statistics. Note: all fields should be 64-bit because this + * is passed between kernel and userland as an nvlist uint64 array. +@@ -1157,13 +1164,6 @@ + #define ZCP_DEFAULT_MEMLIMIT (10 * 1024 * 1024) + #define ZCP_MAX_MEMLIMIT (10 * ZCP_DEFAULT_MEMLIMIT) + +-/* +- * nvlist name constants. Facilitate restricting snapshot iteration range for +- * the "list next snapshot" ioctl +- */ +-#define SNAP_ITER_MIN_TXG "snap_iter_min_txg" +-#define SNAP_ITER_MAX_TXG "snap_iter_max_txg" +- + /* + * Sysevent payload members. ZFS will generate the following sysevents with the + * given payloads: diff --git a/website/static/security/patches/EN-21:04/zfs.patch.asc b/website/static/security/patches/EN-21:04/zfs.patch.asc new file mode 100644 index 0000000000..f386991ee1 --- /dev/null +++ b/website/static/security/patches/EN-21:04/zfs.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbipfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJ9ow/9Hpft2BnP9cFpvRtXtc6J6Pw3s7iS36PHXJXiRTbif72pzUU0dhnGxXT1 +AA8YX8BvyoHOFxUDqTRFcG+/B6HOpjGEq9aqNiBsGxmA8OXPdtjg1nhR23QH+NNt +tJ5YTVztO2tq/VHri41Ez0ttMMYDIpdPAGJIsnJwzFGMgsXKFcNGhG1IXhSzpJOo +ZE3R0117MWETR07LJjK7aY5sAvCPA0rtWqosh8DtGa1Qz8k3nNVq91qikAdG2/Ea +ymICIz/x1vp9J6SUlMt/2Y3t9V3pCyrL2VwyKbBzKZ+PrJUxM9HgA1w5sMn3ANe0 +sT+Ijk3TbAkSkV01PgQsYIwX2mHAH38MKO5foq3oU3bLWCGkxu0jDlSvEgLCE5U+ +4jcJpbH1k1uLOKaLXH3FcK3X0ahIWwOr7ckvcKmsem4f18VLcfQuZ7qHQq3oQT/B +ooIvF4Xvv/3kfMK2mdMGza6x5AhkJHp4+cDJhw7CVvTWuo+jb+dQYSlrOVOaaaSl +OQDEqSaja+xGh02asMrtdrCm5+DoMfQ+28jMkb2QyA6IHhUkEa8xa/JBka9o71rZ +45KIlM7aFxiCACi4LScUNGh94qPnNkG9Mgez1O91nhiFMVCaUSdEDNkz4HMRseli +hPD2/3rUJ9pRRFcXMbZHrtXK7gwJ+A8Fd++MgYvedwbjke+efe4= +=mdRJ +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/EN-21:05/libatomic.patch b/website/static/security/patches/EN-21:05/libatomic.patch new file mode 100644 index 0000000000..959e24bd51 --- /dev/null +++ b/website/static/security/patches/EN-21:05/libatomic.patch @@ -0,0 +1,71 @@ +--- contrib/llvm-project/compiler-rt/lib/builtins/atomic.c.orig ++++ contrib/llvm-project/compiler-rt/lib/builtins/atomic.c +@@ -124,8 +124,8 @@ + #define IS_LOCK_FREE_2 __c11_atomic_is_lock_free(2) + #define IS_LOCK_FREE_4 __c11_atomic_is_lock_free(4) + +-/// 32 bit PowerPC doesn't support 8-byte lock_free atomics +-#if !defined(__powerpc64__) && defined(__powerpc__) ++/// 32 bit MIPS and PowerPC don't support 8-byte lock_free atomics ++#if defined(__mips__) || (!defined(__powerpc64__) && defined(__powerpc__)) + #define IS_LOCK_FREE_8 0 + #else + #define IS_LOCK_FREE_8 __c11_atomic_is_lock_free(8) +--- lib/libcompiler_rt/Makefile.inc.orig ++++ lib/libcompiler_rt/Makefile.inc +@@ -18,6 +18,8 @@ + SRCF+= ashlti3 + SRCF+= ashrdi3 + SRCF+= ashrti3 ++SRCF+= bswapdi2 ++SRCF+= bswapsi2 + SRCF+= clear_cache + SRCF+= clzdi2 + SRCF+= clzsi2 +@@ -117,6 +119,14 @@ + SRCF+= umoddi3 + SRCF+= umodti3 + ++# Enable compiler-rt's atomic implementation only for clang, as it uses clang ++# specific builtins, and gcc packages usually come with their own libatomic. ++# Exclude arm which has its own implementations of atomic functions, below. ++.if "${COMPILER_TYPE}" == "clang" && \ ++ !(${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6") ++SRCF+= atomic ++.endif ++ + # Avoid using SSE2 instructions on i386, if unsupported. + .if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2) + SRCS+= floatdidf.c +@@ -215,12 +225,6 @@ + SRCF+= stdatomic + .endif + +-.if "${COMPILER_TYPE}" == "clang" && \ +- (${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpcspe") +-SRCS+= atomic.c +-CFLAGS.atomic.c+= -Wno-atomic-alignment +-.endif +- + .for file in ${SRCF} + .if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \ + && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S) +@@ -242,18 +246,9 @@ + SRCS+= aeabi_memset.S + SRCS+= aeabi_uidivmod.S + SRCS+= aeabi_uldivmod.S +-SRCS+= bswapdi2.S +-SRCS+= bswapsi2.S + SRCS+= switch16.S + SRCS+= switch32.S + SRCS+= switch8.S + SRCS+= switchu8.S + SRCS+= sync_synchronize.S + .endif +- +-# GCC-6.3 on mips32 requires bswap32 built-in. +-.if ${MACHINE_CPUARCH} == "mips" +-SRCS+= bswapdi2.c +-SRCS+= bswapsi2.c +-.endif +- diff --git a/website/static/security/patches/EN-21:05/libatomic.patch.asc b/website/static/security/patches/EN-21:05/libatomic.patch.asc new file mode 100644 index 0000000000..8b650be0d2 --- /dev/null +++ b/website/static/security/patches/EN-21:05/libatomic.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbipfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cITKxAAipVfcvry45Ih14/dOrobd6s4NtFpck4x+CT9p/SMS5LLLFAJYpjazGtf +1WytYOv305wZo0toQQDZwTOwGdjPCdZyXzJFXfQGX2KpVA/pqEqY+SBxBEDbzU0X +4LKiijtGNDqikrb7Rs4m5DiOgcY0UFHvwisGvX4/1yHEx33cSPR6P90uLSwiIUlu +qxTa400oN79ICecRibtr1rjTRZbSoP/9p3Si2UFVLZPD/mXaYU626T70yIARaach +8oO8afQHVrvMfdDJrKIuas4DrbhORtZsst4mtmWRDuQlDAIcZuI43uLCjTjMVVjk +VsQlS/YprSGkzVyBz/hyKqPa8eYkmpmWekSW8mvyNudfjqCfHh6qFAZD9yqqufRr +am3nWKLqjIclLeF7/nBoyC9Vvhb+okCS3slkejm/4WDpgUoJWyd262Hj4jsviQ3f +8/MkhkAahSJJTXf9CVDM5iz4DpobCMc27mX/uctfeQrMzw6JMZ3IcSZ/k9mPqlR/ +znhW4gSc1bCrN2t/UCaBeGvnL8eGa5ohhLIHGm3vekMvlpFmj3kPidmgjts1RoHA +gW0MWfYod54/WceTGC/RVwUQyQjjj4qlLrWZCmU2SAK5Atw54w+l/skj9HZlGJC3 +0OBeQvqSOUszbn8H48+1l039t90rdCbYW5/suZfhoK6OeudbMmY= +=DgCX +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/SA-21:01/fsdisclosure.11.patch b/website/static/security/patches/SA-21:01/fsdisclosure.11.patch new file mode 100644 index 0000000000..fea427e96e --- /dev/null +++ b/website/static/security/patches/SA-21:01/fsdisclosure.11.patch @@ -0,0 +1,10 @@ +--- sys/fs/msdosfs/msdosfs_vnops.c.orig ++++ sys/fs/msdosfs/msdosfs_vnops.c +@@ -1701,6 +1701,7 @@ + mbnambuf_flush(&nb, &dirbuf); + chksum = -1; + dirbuf.d_reclen = GENERIC_DIRSIZ(&dirbuf); ++ dirent_terminate(&dirbuf); + if (uio->uio_resid < dirbuf.d_reclen) { + brelse(bp); + goto out; diff --git a/website/static/security/patches/SA-21:01/fsdisclosure.11.patch.asc b/website/static/security/patches/SA-21:01/fsdisclosure.11.patch.asc new file mode 100644 index 0000000000..1bf6b21c8a --- /dev/null +++ b/website/static/security/patches/SA-21:01/fsdisclosure.11.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbjNfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJ8HA/+PgmcD+mXjlONm6S2iODbNlot81XtSJFZBVvGsuez3YnDt4NV4TVivf+A +SFs/3olGaMxtAT/ME8dVrgAF8+cHcjBMj5Vd+SYEgYAS3gQsOm4jfzWTh+z0Wwm7 +SGDgW3h9wMb7WKevudvZ9kI5xV5uOD3IeCs8zag5eNoOp+BvgPbOgP9GdqgP1WmT +vEFtk8g1PAXoOkDm89rdYf05oUHyC6FvVF1vxCTEypmHt97meIkOn71f+CBMBLTS +qyFf/DHeXjuWg6XNZckbShRXgJufv8cf2GkK/dX37VzX5qXk4HKsOckQTwxXLjtc +xQGXyhw2lCWlkJUS6yzeeH4elzl3Z+EPE9t1zrEq5fmwGCV2cGuDQbdgWTfr4LnZ +5uTFJ6RtAT66hnbTu0LWhsBh7JWTYih6Vhq/RDS/HaIt0tgf20xaiVEwbtshAfsR +djHU2KgFCua+Y0NHKsFlgE7wM1i7lcPC4oJQxVvgtK1Zac49VVgMn1M9V9K4iFrq +D2j9mcW4Bi8bWPH2c3MdqSZZo5s1VfWWPH5CEDGyYRWC9TR8MLbeu5svnQrPgTcm +CoQysqeP9/50LADgSwIgnEdyJizydAhecck5t6BbkimanUAfGKw4lH3d9xWP24y/ +F3MmYHkrAw88np2rlmaVFnydu4I1stzUiE5Nyrp00ATybc2vny0= +=tSMc +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/SA-21:01/fsdisclosure.12.patch b/website/static/security/patches/SA-21:01/fsdisclosure.12.patch new file mode 100644 index 0000000000..cee40d343f --- /dev/null +++ b/website/static/security/patches/SA-21:01/fsdisclosure.12.patch @@ -0,0 +1,166 @@ +--- sys/fs/autofs/autofs_vnops.c.orig ++++ sys/fs/autofs/autofs_vnops.c +@@ -369,6 +369,7 @@ + return (EINVAL); + + dirent.d_fileno = fileno; ++ dirent.d_off = uio->uio_offset + reclen; + dirent.d_reclen = reclen; + dirent.d_type = DT_DIR; + dirent.d_namlen = namlen; +--- sys/fs/msdosfs/msdosfs_vnops.c.orig ++++ sys/fs/msdosfs/msdosfs_vnops.c +@@ -1687,6 +1687,7 @@ + dirbuf.d_reclen = GENERIC_DIRSIZ(&dirbuf); + /* NOTE: d_off is the offset of the *next* entry. */ + dirbuf.d_off = offset + sizeof(struct direntry); ++ dirent_terminate(&dirbuf); + if (uio->uio_resid < dirbuf.d_reclen) { + brelse(bp); + goto out; +--- sys/fs/smbfs/smbfs_io.c.orig ++++ sys/fs/smbfs/smbfs_io.c +@@ -103,6 +103,7 @@ + (np->n_parent ? np->n_parentino : 2); + if (de.d_fileno == 0) + de.d_fileno = 0x7ffffffd + offset; ++ de.d_off = offset + 1; + de.d_namlen = offset + 1; + de.d_name[0] = '.'; + de.d_name[1] = '.'; +@@ -153,6 +154,7 @@ + bzero((caddr_t)&de, DE_SIZE); + de.d_reclen = DE_SIZE; + de.d_fileno = ctx->f_attr.fa_ino; ++ de.d_off = offset + 1; + de.d_type = (ctx->f_attr.fa_attr & SMB_FA_DIR) ? DT_DIR : DT_REG; + de.d_namlen = ctx->f_nmlen; + bcopy(ctx->f_name, de.d_name, de.d_namlen); +--- sys/fs/tmpfs/tmpfs_subr.c.orig ++++ sys/fs/tmpfs/tmpfs_subr.c +@@ -1188,6 +1188,7 @@ + MPASS(uio->uio_offset == TMPFS_DIRCOOKIE_DOT); + + dent.d_fileno = node->tn_id; ++ dent.d_off = TMPFS_DIRCOOKIE_DOTDOT; + dent.d_type = DT_DIR; + dent.d_namlen = 1; + dent.d_name[0] = '.'; +@@ -1213,7 +1214,7 @@ + */ + static int + tmpfs_dir_getdotdotdent(struct tmpfs_mount *tm, struct tmpfs_node *node, +- struct uio *uio) ++ struct uio *uio, off_t next) + { + struct tmpfs_node *parent; + struct dirent dent; +@@ -1234,6 +1235,7 @@ + dent.d_fileno = parent->tn_id; + TMPFS_NODE_UNLOCK(parent); + ++ dent.d_off = next; + dent.d_type = DT_DIR; + dent.d_namlen = 2; + dent.d_name[0] = '.'; +@@ -1263,7 +1265,7 @@ + struct uio *uio, int maxcookies, u_long *cookies, int *ncookies) + { + struct tmpfs_dir_cursor dc; +- struct tmpfs_dirent *de; ++ struct tmpfs_dirent *de, *nde; + off_t off; + int error; + +@@ -1284,18 +1286,19 @@ + error = tmpfs_dir_getdotdent(tm, node, uio); + if (error != 0) + return (error); +- uio->uio_offset = TMPFS_DIRCOOKIE_DOTDOT; ++ uio->uio_offset = off = TMPFS_DIRCOOKIE_DOTDOT; + if (cookies != NULL) +- cookies[(*ncookies)++] = off = uio->uio_offset; ++ cookies[(*ncookies)++] = off; + /* FALLTHROUGH */ + case TMPFS_DIRCOOKIE_DOTDOT: +- error = tmpfs_dir_getdotdotdent(tm, node, uio); ++ de = tmpfs_dir_first(node, &dc); ++ off = tmpfs_dirent_cookie(de); ++ error = tmpfs_dir_getdotdotdent(tm, node, uio, off); + if (error != 0) + return (error); +- de = tmpfs_dir_first(node, &dc); +- uio->uio_offset = tmpfs_dirent_cookie(de); ++ uio->uio_offset = off; + if (cookies != NULL) +- cookies[(*ncookies)++] = off = uio->uio_offset; ++ cookies[(*ncookies)++] = off; + /* EOF. */ + if (de == NULL) + return (0); +@@ -1310,13 +1313,17 @@ + off = tmpfs_dirent_cookie(de); + } + +- /* Read as much entries as possible; i.e., until we reach the end of +- * the directory or we exhaust uio space. */ ++ /* ++ * Read as much entries as possible; i.e., until we reach the end of the ++ * directory or we exhaust uio space. ++ */ + do { + struct dirent d; + +- /* Create a dirent structure representing the current +- * tmpfs_node and fill it. */ ++ /* ++ * Create a dirent structure representing the current tmpfs_node ++ * and fill it. ++ */ + if (de->td_node == NULL) { + d.d_fileno = 1; + d.d_type = DT_WHT; +@@ -1360,20 +1367,27 @@ + MPASS(de->td_namelen < sizeof(d.d_name)); + (void)memcpy(d.d_name, de->ud.td_name, de->td_namelen); + d.d_reclen = GENERIC_DIRSIZ(&d); +- dirent_terminate(&d); + +- /* Stop reading if the directory entry we are treating is +- * bigger than the amount of data that can be returned. */ ++ /* ++ * Stop reading if the directory entry we are treating is bigger ++ * than the amount of data that can be returned. ++ */ + if (d.d_reclen > uio->uio_resid) { + error = EJUSTRETURN; + break; + } + +- /* Copy the new dirent structure into the output buffer and +- * advance pointers. */ ++ nde = tmpfs_dir_next(node, &dc); ++ d.d_off = tmpfs_dirent_cookie(nde); ++ dirent_terminate(&d); ++ ++ /* ++ * Copy the new dirent structure into the output buffer and ++ * advance pointers. ++ */ + error = uiomove(&d, d.d_reclen, uio); + if (error == 0) { +- de = tmpfs_dir_next(node, &dc); ++ de = nde; + if (cookies != NULL) { + off = tmpfs_dirent_cookie(de); + MPASS(*ncookies < maxcookies); +--- sys/kern/uipc_mqueue.c.orig ++++ sys/kern/uipc_mqueue.c +@@ -1426,6 +1426,7 @@ + if (!pn->mn_fileno) + mqfs_fileno_alloc(mi, pn); + entry.d_fileno = pn->mn_fileno; ++ entry.d_off = offset + entry.d_reclen; + for (i = 0; i < MQFS_NAMELEN - 1 && pn->mn_name[i] != '\0'; ++i) + entry.d_name[i] = pn->mn_name[i]; + entry.d_namlen = i; diff --git a/website/static/security/patches/SA-21:01/fsdisclosure.12.patch.asc b/website/static/security/patches/SA-21:01/fsdisclosure.12.patch.asc new file mode 100644 index 0000000000..fe012400fa --- /dev/null +++ b/website/static/security/patches/SA-21:01/fsdisclosure.12.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbjNfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJY7A//cxfRPjkTLhctIEVx1PCFqEQ02Fj8rarjyKu8fWPrjB7zB9DuJPIMDfzs +VEupOfXlw0R71n+6UV3EuplbHF7jodX5g79FG0AqjrhzKmGVmN3azx/erbAQj46Q +ccRyGNltZLtji3iD9eespNNbuXkE0HB4hgR8uwbzTtEI12l9FybrRfR/Lo0EpakX +avnwAMSmbUp8IHvXJmiae6jNqW5qbXH0j0wUaQGIhF/ZgJtvZhRN2xbXWb7A0Uqm +DkUSatoFnTZ3YXKh1dY7wr9qUQujoO7tqvM1RMsgX+GGQNIwIzWsWJo6bcMNKmN+ +bjVRQgLp8o2okApFKbEX535tzudGwet9xJGCrz8znUhgN0riUVsPy8/AbVFiLoWi +Rp8YlBTuuIQEG1naOlkdwbyoNXnIKajuA3s+BawdcpQEoB8o9OSd1jdQcdafZE6d +E9Oo/yIetviAmcu4Xt/KYXT2NbLIezDO26EYLsLver1qF9QE2A8syy3qld/mz4+n +Q90L/Qs4iN7nDzB0WenreA7YlG0rXjG5WyXxfxIpefdaSWvd51LUU56tGJEkGzAt +VT1kOyNKKI5zfV6K+pN3+0G7MPmfMN7au7UoAnC3C2QnbvvZZ4kxd/8+FerWyHrT +2CQAxwErn2hDLXJn9SDU8uQnXY3cJ3efO6lx9jwGQtCpJPzKd/A= +=DVI2 +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/SA-21:02/xenoom.11.patch b/website/static/security/patches/SA-21:02/xenoom.11.patch new file mode 100644 index 0000000000..057a656114 --- /dev/null +++ b/website/static/security/patches/SA-21:02/xenoom.11.patch @@ -0,0 +1,255 @@ +--- sys/dev/xen/balloon/balloon.c.orig ++++ sys/dev/xen/balloon/balloon.c +@@ -310,7 +310,8 @@ + + static struct xs_watch target_watch = + { +- .node = "memory/target" ++ .node = "memory/target", ++ .max_pending = 1, + }; + + /* React to a change in the target key */ +--- sys/dev/xen/blkback/blkback.c.orig ++++ sys/dev/xen/blkback/blkback.c +@@ -3767,6 +3767,12 @@ + xbb->hotplug_watch.callback = xbb_attach_disk; + KASSERT(xbb->hotplug_watch.node == NULL, ("watch node already setup")); + xbb->hotplug_watch.node = strdup(sbuf_data(watch_path), M_XENBLOCKBACK); ++ /* ++ * We don't care about the path updated, just about the value changes ++ * on that single node, hence there's no need to queue more that one ++ * event. ++ */ ++ xbb->hotplug_watch.max_pending = 1; + sbuf_delete(watch_path); + error = xs_register_watch(&xbb->hotplug_watch); + if (error != 0) { +--- sys/dev/xen/control/control.c.orig ++++ sys/dev/xen/control/control.c +@@ -432,6 +432,12 @@ + xctrl->xctrl_watch.node = "control/shutdown"; + xctrl->xctrl_watch.callback = xctrl_on_watch_event; + xctrl->xctrl_watch.callback_data = (uintptr_t)xctrl; ++ /* ++ * We don't care about the path updated, just about the value changes ++ * on that single node, hence there's no need to queue more that one ++ * event. ++ */ ++ xctrl->xctrl_watch.max_pending = 1; + xs_register_watch(&xctrl->xctrl_watch); + + if (xen_pv_domain()) +--- sys/dev/xen/xenstore/xenstore.c.orig ++++ sys/dev/xen/xenstore/xenstore.c +@@ -668,12 +668,17 @@ + mtx_lock(&xs.registered_watches_lock); + msg->u.watch.handle = find_watch( + msg->u.watch.vec[XS_WATCH_TOKEN]); +- if (msg->u.watch.handle != NULL) { +- mtx_lock(&xs.watch_events_lock); ++ mtx_lock(&xs.watch_events_lock); ++ if (msg->u.watch.handle != NULL && ++ (!msg->u.watch.handle->max_pending || ++ msg->u.watch.handle->pending < ++ msg->u.watch.handle->max_pending)) { ++ msg->u.watch.handle->pending++; + TAILQ_INSERT_TAIL(&xs.watch_events, msg, list); + wakeup(&xs.watch_events); + mtx_unlock(&xs.watch_events_lock); + } else { ++ mtx_unlock(&xs.watch_events_lock); + free(msg->u.watch.vec, M_XENSTORE); + free(msg, M_XENSTORE); + } +@@ -1045,8 +1050,10 @@ + + mtx_lock(&xs.watch_events_lock); + msg = TAILQ_FIRST(&xs.watch_events); +- if (msg) ++ if (msg) { + TAILQ_REMOVE(&xs.watch_events, msg, list); ++ msg->u.watch.handle->pending--; ++ } + mtx_unlock(&xs.watch_events_lock); + + if (msg != NULL) { +@@ -1629,6 +1636,7 @@ + char token[sizeof(watch) * 2 + 1]; + int error; + ++ watch->pending = 0; + sprintf(token, "%lX", (long)watch); + + sx_slock(&xs.suspend_mutex); +--- sys/xen/xenbus/xenbus.c.orig ++++ sys/xen/xenbus/xenbus.c +@@ -102,48 +102,6 @@ + return ((state < (XenbusStateClosed + 1)) ? name[state] : "INVALID"); + } + +-int +-xenbus_watch_path(device_t dev, char *path, struct xs_watch *watch, +- xs_watch_cb_t *callback, uintptr_t callback_data) +-{ +- int error; +- +- watch->node = path; +- watch->callback = callback; +- watch->callback_data = callback_data; +- +- error = xs_register_watch(watch); +- +- if (error) { +- watch->node = NULL; +- watch->callback = NULL; +- xenbus_dev_fatal(dev, error, "adding watch on %s", path); +- } +- +- return (error); +-} +- +-int +-xenbus_watch_path2(device_t dev, const char *path, +- const char *path2, struct xs_watch *watch, +- xs_watch_cb_t *callback, uintptr_t callback_data) +-{ +- int error; +- char *state = malloc(strlen(path) + 1 + strlen(path2) + 1, +- M_XENBUS, M_WAITOK); +- +- strcpy(state, path); +- strcat(state, "/"); +- strcat(state, path2); +- +- error = xenbus_watch_path(dev, state, watch, callback, callback_data); +- if (error) { +- free(state,M_XENBUS); +- } +- +- return (error); +-} +- + void + xenbus_dev_verror(device_t dev, int err, const char *fmt, va_list ap) + { +--- sys/xen/xenbus/xenbusb.c.orig ++++ sys/xen/xenbus/xenbusb.c +@@ -702,10 +702,21 @@ + ivars->xd_otherend_watch.node = statepath; + ivars->xd_otherend_watch.callback = xenbusb_otherend_watch_cb; + ivars->xd_otherend_watch.callback_data = (uintptr_t)ivars; ++ /* ++ * Other end state node watch, limit to one pending event ++ * to prevent frontends from queuing too many events that ++ * could cause resource starvation. ++ */ ++ ivars->xd_otherend_watch.max_pending = 1; + + ivars->xd_local_watch.node = ivars->xd_node; + ivars->xd_local_watch.callback = xenbusb_local_watch_cb; + ivars->xd_local_watch.callback_data = (uintptr_t)ivars; ++ /* ++ * Watch our local path, only writable by us or a privileged ++ * domain, no need to limit. ++ */ ++ ivars->xd_local_watch.max_pending = 0; + + mtx_lock(&xbs->xbs_lock); + xbs->xbs_connecting_children++; +@@ -764,6 +775,12 @@ + xbs->xbs_device_watch.node = bus_node; + xbs->xbs_device_watch.callback = xenbusb_devices_changed; + xbs->xbs_device_watch.callback_data = (uintptr_t)xbs; ++ /* ++ * Allow for unlimited pending watches, as those are local paths ++ * either controlled by the guest or only writable by privileged ++ * domains. ++ */ ++ xbs->xbs_device_watch.max_pending = 0; + + TASK_INIT(&xbs->xbs_probe_children, 0, xenbusb_probe_children_cb, dev); + +--- sys/xen/xenbus/xenbusvar.h.orig ++++ sys/xen/xenbus/xenbusvar.h +@@ -123,62 +123,6 @@ + return (xenbus_read_driver_state(xenbus_get_otherend_path(dev))); + } + +-/** +- * Initialize and register a watch on the given path (client suplied storage). +- * +- * \param dev The XenBus device requesting the watch service. +- * \param path The XenStore path of the object to be watched. The +- * storage for this string must be stable for the lifetime +- * of the watch. +- * \param watch The watch object to use for this request. This object +- * must be stable for the lifetime of the watch. +- * \param callback The function to call when XenStore objects at or below +- * path are modified. +- * \param cb_data Client data that can be retrieved from the watch object +- * during the callback. +- * +- * \return On success, 0. Otherwise an errno value indicating the +- * type of failure. +- * +- * \note On error, the device 'dev' will be switched to the XenbusStateClosing +- * state and the returned error is saved in the per-device error node +- * for dev in the XenStore. +- */ +-int xenbus_watch_path(device_t dev, char *path, +- struct xs_watch *watch, +- xs_watch_cb_t *callback, +- uintptr_t cb_data); +- +-/** +- * Initialize and register a watch at path/path2 in the XenStore. +- * +- * \param dev The XenBus device requesting the watch service. +- * \param path The base XenStore path of the object to be watched. +- * \param path2 The tail XenStore path of the object to be watched. +- * \param watch The watch object to use for this request. This object +- * must be stable for the lifetime of the watch. +- * \param callback The function to call when XenStore objects at or below +- * path are modified. +- * \param cb_data Client data that can be retrieved from the watch object +- * during the callback. +- * +- * \return On success, 0. Otherwise an errno value indicating the +- * type of failure. +- * +- * \note On error, \a dev will be switched to the XenbusStateClosing +- * state and the returned error is saved in the per-device error node +- * for \a dev in the XenStore. +- * +- * Similar to xenbus_watch_path, however the storage for the path to the +- * watched object is allocated from the heap and filled with "path '/' path2". +- * Should a call to this function succeed, it is the callers responsibility +- * to free watch->node using the M_XENBUS malloc type. +- */ +-int xenbus_watch_path2(device_t dev, const char *path, +- const char *path2, struct xs_watch *watch, +- xs_watch_cb_t *callback, +- uintptr_t cb_data); +- + /** + * Grant access to the given ring_mfn to the peer of the given device. + * +--- sys/xen/xenstore/xenstorevar.h.orig ++++ sys/xen/xenstore/xenstorevar.h +@@ -72,6 +72,15 @@ + + /* Callback client data untouched by the XenStore watch mechanism. */ + uintptr_t callback_data; ++ ++ /* Maximum number of pending watch events to be delivered. */ ++ unsigned int max_pending; ++ ++ /* ++ * Private counter used by xenstore to keep track of the pending ++ * watches. Protected by xs.watch_events_lock. ++ */ ++ unsigned int pending; + }; + LIST_HEAD(xs_watch_list, xs_watch); + diff --git a/website/static/security/patches/SA-21:02/xenoom.11.patch.asc b/website/static/security/patches/SA-21:02/xenoom.11.patch.asc new file mode 100644 index 0000000000..3b7f0b10ef --- /dev/null +++ b/website/static/security/patches/SA-21:02/xenoom.11.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbjRfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cKfghAAkrse02lN4PZizc0OEsABoBTpTLLNFTTQ+3alY9MeYmLzgoP6crG6nETa +VwRh44ztjXeMB0/HUKu4rCcSbasYPLYAGZ+z8WCGmgVs30og7m6fC1eLb3zvlHxq +O4J9E3JhvQIPbhFpZMDMyjj+aS4SncgB7Hswcr3FGuUQkl9ySm7frV6umDHkwaiN +0wNEQVHQIQSVxawSG2+hMwVCDH/rxm2gLPpoTlQ4rwD3dsr6Ul8hCqPTTUV7vpRE +88AAv+xPgglWjNFo2LAYvtXjTiO3/v+TfiNnf47uwbMpmEaUKRDDirMqrAd8k6x4 +UgbYC+Dils9Fbo+hc2P8kxwaDDb3xPk6RwPErCbQfyoF2w09YQeaIB5na9aRV43u +qCOj/3OFcuZxEqY1pWLWutD6HM2qi72Btm2U4dp/zFa6V7x4hRKrxmimM07uJGRy +/Pk3mBpLQLm0wbjSTR+8+RFM4fYRUQbJYZFINn99WDsL4zqD/KzL/ZW5e2pFjRcC +n2DuuMULHQ1ivBZmdMBOIvx5JUllHn5vazDVErIdILJhAb4ypFpuyFdkBUNO72Hn +dfrNrwABGi57nqxdAP8nIYTEUyUxm6q3vC4VXsoarYZvGECmWLrNWSADR7YtsMSi +7C9lanrEy3CH4eFwXkPTYAvmLgubQTm5pMxCZfM/qHSkUhVocBQ= +=6nop +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/SA-21:02/xenoom.12.patch b/website/static/security/patches/SA-21:02/xenoom.12.patch new file mode 100644 index 0000000000..f8797b1123 --- /dev/null +++ b/website/static/security/patches/SA-21:02/xenoom.12.patch @@ -0,0 +1,300 @@ +--- sys/dev/xen/balloon/balloon.c.orig ++++ sys/dev/xen/balloon/balloon.c +@@ -310,7 +310,8 @@ + + static struct xs_watch target_watch = + { +- .node = "memory/target" ++ .node = "memory/target", ++ .max_pending = 1, + }; + + /* React to a change in the target key */ +--- sys/dev/xen/blkback/blkback.c.orig ++++ sys/dev/xen/blkback/blkback.c +@@ -3768,6 +3768,12 @@ + xbb->hotplug_watch.callback = xbb_attach_disk; + KASSERT(xbb->hotplug_watch.node == NULL, ("watch node already setup")); + xbb->hotplug_watch.node = strdup(sbuf_data(watch_path), M_XENBLOCKBACK); ++ /* ++ * We don't care about the path updated, just about the value changes ++ * on that single node, hence there's no need to queue more that one ++ * event. ++ */ ++ xbb->hotplug_watch.max_pending = 1; + sbuf_delete(watch_path); + error = xs_register_watch(&xbb->hotplug_watch); + if (error != 0) { +--- sys/dev/xen/control/control.c.orig ++++ sys/dev/xen/control/control.c +@@ -432,6 +432,12 @@ + xctrl->xctrl_watch.node = "control/shutdown"; + xctrl->xctrl_watch.callback = xctrl_on_watch_event; + xctrl->xctrl_watch.callback_data = (uintptr_t)xctrl; ++ /* ++ * We don't care about the path updated, just about the value changes ++ * on that single node, hence there's no need to queue more that one ++ * event. ++ */ ++ xctrl->xctrl_watch.max_pending = 1; + xs_register_watch(&xctrl->xctrl_watch); + + if (xen_pv_domain()) +--- sys/dev/xen/xenstore/xenstore.c.orig ++++ sys/dev/xen/xenstore/xenstore.c +@@ -656,12 +656,17 @@ + mtx_lock(&xs.registered_watches_lock); + msg->u.watch.handle = find_watch( + msg->u.watch.vec[XS_WATCH_TOKEN]); +- if (msg->u.watch.handle != NULL) { +- mtx_lock(&xs.watch_events_lock); ++ mtx_lock(&xs.watch_events_lock); ++ if (msg->u.watch.handle != NULL && ++ (!msg->u.watch.handle->max_pending || ++ msg->u.watch.handle->pending < ++ msg->u.watch.handle->max_pending)) { ++ msg->u.watch.handle->pending++; + TAILQ_INSERT_TAIL(&xs.watch_events, msg, list); + wakeup(&xs.watch_events); + mtx_unlock(&xs.watch_events_lock); + } else { ++ mtx_unlock(&xs.watch_events_lock); + free(msg->u.watch.vec, M_XENSTORE); + free(msg, M_XENSTORE); + } +@@ -983,8 +988,10 @@ + + mtx_lock(&xs.watch_events_lock); + msg = TAILQ_FIRST(&xs.watch_events); +- if (msg) ++ if (msg) { + TAILQ_REMOVE(&xs.watch_events, msg, list); ++ msg->u.watch.handle->pending--; ++ } + mtx_unlock(&xs.watch_events_lock); + + if (msg != NULL) { +@@ -1578,6 +1585,7 @@ + char token[sizeof(watch) * 2 + 1]; + int error; + ++ watch->pending = 0; + sprintf(token, "%lX", (long)watch); + + mtx_lock(&xs.registered_watches_lock); +--- sys/dev/xen/xenstore/xenstore_dev.c.orig ++++ sys/dev/xen/xenstore/xenstore_dev.c +@@ -45,6 +45,7 @@ + #include <sys/conf.h> + #include <sys/module.h> + #include <sys/selinfo.h> ++#include <sys/sysctl.h> + #include <sys/poll.h> + + #include <xen/xen-os.h> +@@ -53,6 +54,8 @@ + #include <xen/xenstore/xenstorevar.h> + #include <xen/xenstore/xenstore_internal.h> + ++static unsigned int max_pending_watches = 1000; ++ + struct xs_dev_transaction { + LIST_ENTRY(xs_dev_transaction) list; + struct xs_transaction handle; +@@ -335,6 +338,7 @@ + watch->watch.node = strdup(wpath, M_XENSTORE); + watch->watch.callback = xs_dev_watch_cb; + watch->watch.callback_data = (uintptr_t)watch; ++ watch->watch.max_pending = max_pending_watches; + watch->token = strdup(wtoken, M_XENSTORE); + watch->user = u; + +@@ -511,6 +515,17 @@ + xs_dev_attach(device_t dev) + { + struct cdev *xs_cdev; ++ struct sysctl_ctx_list *sysctl_ctx; ++ struct sysctl_oid *sysctl_tree; ++ ++ sysctl_ctx = device_get_sysctl_ctx(dev); ++ sysctl_tree = device_get_sysctl_tree(dev); ++ if (sysctl_ctx == NULL || sysctl_tree == NULL) ++ return (EINVAL); ++ ++ SYSCTL_ADD_UINT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, ++ "max_pending_watch_events", CTLFLAG_RW, &max_pending_watches, 0, ++ "maximum amount of pending watch events to be delivered"); + + xs_cdev = make_dev_credf(MAKEDEV_ETERNAL, &xs_dev_cdevsw, 0, NULL, + UID_ROOT, GID_WHEEL, 0400, "xen/xenstore"); +--- sys/xen/xenbus/xenbus.c.orig ++++ sys/xen/xenbus/xenbus.c +@@ -102,48 +102,6 @@ + return ((state < (XenbusStateClosed + 1)) ? name[state] : "INVALID"); + } + +-int +-xenbus_watch_path(device_t dev, char *path, struct xs_watch *watch, +- xs_watch_cb_t *callback, uintptr_t callback_data) +-{ +- int error; +- +- watch->node = path; +- watch->callback = callback; +- watch->callback_data = callback_data; +- +- error = xs_register_watch(watch); +- +- if (error) { +- watch->node = NULL; +- watch->callback = NULL; +- xenbus_dev_fatal(dev, error, "adding watch on %s", path); +- } +- +- return (error); +-} +- +-int +-xenbus_watch_path2(device_t dev, const char *path, +- const char *path2, struct xs_watch *watch, +- xs_watch_cb_t *callback, uintptr_t callback_data) +-{ +- int error; +- char *state = malloc(strlen(path) + 1 + strlen(path2) + 1, +- M_XENBUS, M_WAITOK); +- +- strcpy(state, path); +- strcat(state, "/"); +- strcat(state, path2); +- +- error = xenbus_watch_path(dev, state, watch, callback, callback_data); +- if (error) { +- free(state,M_XENBUS); +- } +- +- return (error); +-} +- + void + xenbus_dev_verror(device_t dev, int err, const char *fmt, va_list ap) + { +--- sys/xen/xenbus/xenbusb.c.orig ++++ sys/xen/xenbus/xenbusb.c +@@ -702,10 +702,21 @@ + ivars->xd_otherend_watch.node = statepath; + ivars->xd_otherend_watch.callback = xenbusb_otherend_watch_cb; + ivars->xd_otherend_watch.callback_data = (uintptr_t)ivars; ++ /* ++ * Other end state node watch, limit to one pending event ++ * to prevent frontends from queuing too many events that ++ * could cause resource starvation. ++ */ ++ ivars->xd_otherend_watch.max_pending = 1; + + ivars->xd_local_watch.node = ivars->xd_node; + ivars->xd_local_watch.callback = xenbusb_local_watch_cb; + ivars->xd_local_watch.callback_data = (uintptr_t)ivars; ++ /* ++ * Watch our local path, only writable by us or a privileged ++ * domain, no need to limit. ++ */ ++ ivars->xd_local_watch.max_pending = 0; + + mtx_lock(&xbs->xbs_lock); + xbs->xbs_connecting_children++; +@@ -764,6 +775,12 @@ + xbs->xbs_device_watch.node = bus_node; + xbs->xbs_device_watch.callback = xenbusb_devices_changed; + xbs->xbs_device_watch.callback_data = (uintptr_t)xbs; ++ /* ++ * Allow for unlimited pending watches, as those are local paths ++ * either controlled by the guest or only writable by privileged ++ * domains. ++ */ ++ xbs->xbs_device_watch.max_pending = 0; + + TASK_INIT(&xbs->xbs_probe_children, 0, xenbusb_probe_children_cb, dev); + +--- sys/xen/xenbus/xenbusvar.h.orig ++++ sys/xen/xenbus/xenbusvar.h +@@ -123,62 +123,6 @@ + return (xenbus_read_driver_state(xenbus_get_otherend_path(dev))); + } + +-/** +- * Initialize and register a watch on the given path (client suplied storage). +- * +- * \param dev The XenBus device requesting the watch service. +- * \param path The XenStore path of the object to be watched. The +- * storage for this string must be stable for the lifetime +- * of the watch. +- * \param watch The watch object to use for this request. This object +- * must be stable for the lifetime of the watch. +- * \param callback The function to call when XenStore objects at or below +- * path are modified. +- * \param cb_data Client data that can be retrieved from the watch object +- * during the callback. +- * +- * \return On success, 0. Otherwise an errno value indicating the +- * type of failure. +- * +- * \note On error, the device 'dev' will be switched to the XenbusStateClosing +- * state and the returned error is saved in the per-device error node +- * for dev in the XenStore. +- */ +-int xenbus_watch_path(device_t dev, char *path, +- struct xs_watch *watch, +- xs_watch_cb_t *callback, +- uintptr_t cb_data); +- +-/** +- * Initialize and register a watch at path/path2 in the XenStore. +- * +- * \param dev The XenBus device requesting the watch service. +- * \param path The base XenStore path of the object to be watched. +- * \param path2 The tail XenStore path of the object to be watched. +- * \param watch The watch object to use for this request. This object +- * must be stable for the lifetime of the watch. +- * \param callback The function to call when XenStore objects at or below +- * path are modified. +- * \param cb_data Client data that can be retrieved from the watch object +- * during the callback. +- * +- * \return On success, 0. Otherwise an errno value indicating the +- * type of failure. +- * +- * \note On error, \a dev will be switched to the XenbusStateClosing +- * state and the returned error is saved in the per-device error node +- * for \a dev in the XenStore. +- * +- * Similar to xenbus_watch_path, however the storage for the path to the +- * watched object is allocated from the heap and filled with "path '/' path2". +- * Should a call to this function succeed, it is the callers responsibility +- * to free watch->node using the M_XENBUS malloc type. +- */ +-int xenbus_watch_path2(device_t dev, const char *path, +- const char *path2, struct xs_watch *watch, +- xs_watch_cb_t *callback, +- uintptr_t cb_data); +- + /** + * Grant access to the given ring_mfn to the peer of the given device. + * +--- sys/xen/xenstore/xenstorevar.h.orig ++++ sys/xen/xenstore/xenstorevar.h +@@ -70,6 +70,15 @@ + + /* Callback client data untouched by the XenStore watch mechanism. */ + uintptr_t callback_data; ++ ++ /* Maximum number of pending watch events to be delivered. */ ++ unsigned int max_pending; ++ ++ /* ++ * Private counter used by xenstore to keep track of the pending ++ * watches. Protected by xs.watch_events_lock. ++ */ ++ unsigned int pending; + }; + LIST_HEAD(xs_watch_list, xs_watch); + diff --git a/website/static/security/patches/SA-21:02/xenoom.12.patch.asc b/website/static/security/patches/SA-21:02/xenoom.12.patch.asc new file mode 100644 index 0000000000..ba479a4258 --- /dev/null +++ b/website/static/security/patches/SA-21:02/xenoom.12.patch.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmATbjRfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJXhg/8CoCazqYQC72fjKzdu5rTqi88S+LCO2/oQ8sB81Xd9994aTcCiCT16MgW +oExB9ukEru7mz98ziwZiszkFGhnj8SvFqp8GaUdORILeLxN81Z8aUkXOAzZpk0yy +Yd9yMxSL5YRcgcrxJKetArt97Pdkx0e5paNMniKWYxuGMGE0IJXc/OJmb1Gj+ZTe +BSHInbD57GG6DYBDgLGm4Lu6FMrG+ukt2SUFxRQl0usgNE1zseXIjSxMPymh0I4j +guCo0gNxHow44xgEXOUD1X2K1hsr8TNxwvl5i9Pwv8MFubPU4qPcBOcMvM/i5YR2 +3uvnK5oRqNjwS/EHUBZ2jonSmNN89mqdPjctaMNypcUPDsIqINw/Qd6TNnv3DjS1 +34cNBWzBYt9ccf5JC/KWfDyZxWpOku18DdFOcsi9MSubmQaxj5SRMfh0QamZPZ3p +06JcJbcVZyRoMnD/NcFJTd6pfnrPKrJ9IVOvBesm3MpMsWywRQgVM79xly3HuhLV +M8JTm9TKNVJPNGEeXW8MzjYJO2hDgTMwt6SWkxhNMQnajr3weqV5u+5X1wjZsAzr +pWVXYZTkxNcyAcLvMahjuB6av4lc763MdqorgRHdpLdwr4w45pCLqxRR9O1OVY2g +k0uKTKB1WQAIeK2VTpM/ZjPuNc+k0sVyYR9Sy70P0k76drICqUk= +=5Wei +-----END PGP SIGNATURE-----