diff --git a/core/lib/Drupal/Core/Cache/DatabaseBackend.php b/core/lib/Drupal/Core/Cache/DatabaseBackend.php index d53c51c2fc..82ae03092f 100644 --- a/core/lib/Drupal/Core/Cache/DatabaseBackend.php +++ b/core/lib/Drupal/Core/Cache/DatabaseBackend.php @@ -135,7 +135,16 @@ protected function prepareItem($cache, $allow_invalid) { // Unserialize and return the cached data. if ($cache->serialized) { - $cache->data = unserialize($cache->data); + $unserialized = unserialize($cache->data); + // Make sure that corrupt items are properly identified and treated as + // cache misses. Otherwise, broken items will be treated as cache hits, + // and return a FALSE as the cached data. + if ($unserialized === FALSE) { + if ($cache->data != serialize(FALSE)) { + return FALSE; + } + } + $cache->data = $unserialized; } return $cache;