X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fupdate%2Fupdate.module;h=2b9d651a7490ca67f9a8ccf30ae08c33d3f92e44;hp=0545aef8b9aea17776dfe468b5296b631fceabdb;hb=refs%2Fheads%2Ft2;hpb=9917807b03b64faf00f6a1f29dcb6eafc454efa5 diff --git a/web/core/modules/update/update.module b/web/core/modules/update/update.module index 0545aef8b..2b9d651a7 100644 --- a/web/core/modules/update/update.module +++ b/web/core/modules/update/update.module @@ -404,9 +404,56 @@ function update_get_available($refresh = FALSE) { $available = \Drupal::keyValueExpirable('update_available_releases')->getAll(); } + // Check for security releases that are covered under the same security + // advisories as the site's current release, and override the update status + // data so that those releases are not flagged as needed security updates. + // Any security releases beyond those specific releases will still be shown + // as required security updates. + + // @todo This is a temporary fix to allow minor-version backports of security + // fixes to be shown as secure. It should not be included in the codebase of + // any release or branch other than such backports. Replace this with + // https://www.drupal.org/project/drupal/issues/2766491. + foreach (_update_equivalent_security_releases() as $equivalent_release) { + if (!empty($available['drupal']['releases'][$equivalent_release]['terms']['Release type'])) { + $security_release_key = array_search('Security update', $available['drupal']['releases'][$equivalent_release]['terms']['Release type']); + if ($security_release_key !== FALSE) { + unset($available['drupal']['releases'][$equivalent_release]['terms']['Release type'][$security_release_key]); + } + } + } return $available; } +/** + * Identifies equivalent security releases with a hardcoded list. + * + * Generally, only the latest minor version of Drupal 8 is supported. However, + * when security fixes are backported to an old branch, and the site owner + * updates to the release containing the backported fix, they should not + * see "Security update required!" again if the only other security releases + * are releases for the same advisories. + * + * @return string[] + * A list of security release numbers that are equivalent to this release + * (i.e. covered by the same advisory), for backported security fixes only. + * + * @todo This is a temporary fix to allow minor-version backports of security + * fixes to be shown as secure. It should not be included in the codebase of + * any release or branch other than such backports. Replace this with + * https://www.drupal.org/project/drupal/issues/2766491. + */ +function _update_equivalent_security_releases() { + switch (\Drupal::VERSION) { + case '8.4.5': + return ['8.5.0-rc1']; + case '8.4.6': + return ['8.5.1']; + } + + return []; +} + /** * Adds a task to the queue for fetching release history data for a project. *