8000 add unserialize handling for caches that use \unserialize internally · symfony/symfony@c662c60 · GitHub
[go: up one dir, main page]

Skip to content

Commit c662c60

Browse files
author
Aleksey Prilipko
committed
add unserialize handling for caches that use \unserialize internally
1 parent 852798b commit c662c60

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

src/Symfony/Component/Cache/Serializer/IgbinarySerializer.php

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ public function serialize($data)
2323

2424
public function unserialize($serialized)
2525
{
26-
$unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback');
26+
$unserializeCallbackHandler = ini_set(
27+
'unserialize_callback_func',
28+
PhpSerializer::class.'::handleUnserializeCallback'
29+
);
2730
try {
2831
$value = igbinary_unserialize($serialized);
2932
if (false === $value && igbinary_serialize(false) !== $serialized) {
@@ -37,12 +40,4 @@ public function unserialize($serialized)
3740
ini_set('unserialize_callback_func', $unserializeCallbackHandler);
3841
}
3942
}
40-
41-
/**
42-
* @internal
43-
*/
44-
public static function handleUnserializeCallback($class)
45-
{
46-
throw new \DomainException('Class not found: '.$class);
47-
}
4843
}

src/Symfony/Component/Cache/Traits/DoctrineTrait.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Symfony\Component\Cache\Traits;
1313

14+
use Symfony\Component\Cache\Serializer\PhpSerializer;
15+
1416
/**
1517
* @author Nicolas Grekas <p@tchwork.com>
1618
*
@@ -36,7 +38,7 @@ public function reset()
3638
*/
3739
protected function doFetch(array $ids)
3840
{
39-
$unserializeCallbackHandler = ini_set('unserialize_callback_func', parent::class.'::handleUnserializeCallback');
41+
$unserializeCallbackHandler = ini_set('unserialize_callback_func', PhpSerializer::class.'::handleUnserializeCallback');
4042
try {
4143
return $this->unserializeMultiple($this->provider->fetchMultiple($ids));
4244
} catch (\Error $e) {

src/Symfony/Component/Cache/Traits/MemcachedTrait.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Component\Cache\Exception\CacheException;
1515
use Symfony\Component\Cache\Exception\InvalidArgumentException;
16+
use Symfony\Component\Cache\Serializer\PhpSerializer;
1617

1718
/**
1819
* @author Rob Frawley 2nd <rmf@src.run>
@@ -208,7 +209,12 @@ protected function doSave(array $values, $lifetime)
208209
*/
209210
protected function doFetch(array $ids)
210211
{
211-
return $this->unserializeMultiple($this->checkResultCode($this->getClient()->getMulti($ids)));
212+
$unserializeCallbackHandler = ini_set('unserialize_callback_func', PhpSerializer::class.'::handleUnserializeCallback');
213+
try {
214+
return $this->unserializeMultiple($this->checkResultCode($this->getClient()->getMulti($ids)));
215+
} finally {
216+
ini_set('unserialize_callback_func', $unserializeCallbackHandler);
217+
}
212218
}
213219

214220
/**

0 commit comments

Comments
 (0)
0