Skip to content

Commit c63f18d

Browse files
authored
Unify ext/random unserialize errors with ext/date (php#9185)
* Unify ext/random unserialize errors with ext/date - Use `Error` instead of `Exception`. - Adjust wording. * Make `zend_read_property` silent in `Randomizer::__unserialize()` Having: > Error: Typed property Random\Randomizer::$engine must not be accessed before > initialization is not a value-add in this case. * Insert the actual class name in the unserialization error of Engines * Revert unserialization failure back to Exception from Error see https://news-web.php.net/php.internals/118311
1 parent 5d5d979 commit c63f18d

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

ext/random/engine_mt19937.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,19 +357,19 @@ PHP_METHOD(Random_Engine_Mt19937, __unserialize)
357357
/* members */
358358
t = zend_hash_index_find(d, 0);
359359
if (!t || Z_TYPE_P(t) != IS_ARRAY) {
360-
zend_throw_exception(NULL, "Incomplete or ill-formed serialization data", 0);
360+
zend_throw_exception_ex(NULL, 0, "Invalid serialization data for %s object", ZSTR_VAL(engine->std.ce->name));
361361
RETURN_THROWS();
362362
}
363363
object_properties_load(&engine->std, Z_ARRVAL_P(t));
364364

365365
/* state */
366366
t = zend_hash_index_find(d, 1);
367367
if (!t || Z_TYPE_P(t) != IS_ARRAY) {
368-
zend_throw_exception(NULL, "Incomplete or ill-formed serialization data", 0);
368+
zend_throw_exception_ex(NULL, 0, "Invalid serialization data for %s object", ZSTR_VAL(engine->std.ce->name));
369369
RETURN_THROWS();
370370
}
371371
if (!engine->algo->unserialize(engine->status, Z_ARRVAL_P(t))) {
372-
zend_throw_exception(NULL, "Engine unserialize failed", 0);
372+
zend_throw_exception_ex(NULL, 0, "Invalid serialization data for %s object", ZSTR_VAL(engine->std.ce->name));
373373
RETURN_THROWS();
374374
}
375375
}

ext/random/randomizer.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,14 +282,14 @@ PHP_METHOD(Random_Randomizer, __unserialize)
282282

283283
members_zv = zend_hash_index_find(d, 0);
284284
if (!members_zv || Z_TYPE_P(members_zv) != IS_ARRAY) {
285-
zend_throw_exception(NULL, "Incomplete or ill-formed serialization data", 0);
285+
zend_throw_exception(NULL, "Invalid serialization data for Random\\Randomizer object", 0);
286286
RETURN_THROWS();
287287
}
288288
object_properties_load(&randomizer->std, Z_ARRVAL_P(members_zv));
289289

290-
zengine = zend_read_property(randomizer->std.ce, &randomizer->std, "engine", strlen("engine"), 0, NULL);
290+
zengine = zend_read_property(randomizer->std.ce, &randomizer->std, "engine", strlen("engine"), 1, NULL);
291291
if (Z_TYPE_P(zengine) != IS_OBJECT || !instanceof_function(Z_OBJCE_P(zengine), random_ce_Random_Engine)) {
292-
zend_throw_exception(NULL, "Incomplete or ill-formed serialization data", 0);
292+
zend_throw_exception(NULL, "Invalid serialization data for Random\\Randomizer object", 0);
293293
RETURN_THROWS();
294294
}
295295

ext/random/tests/02_engine/all_serialize_error.phpt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ try {
6565
?>
6666
--EXPECT--
6767
Random\Engine\Mt19937
68-
Engine unserialize failed
69-
Engine unserialize failed
70-
Engine unserialize failed
71-
Engine unserialize failed
68+
Invalid serialization data for Random\Engine\Mt19937 object
69+
Invalid serialization data for Random\Engine\Mt19937 object
70+
Invalid serialization data for Random\Engine\Mt19937 object
71+
Invalid serialization data for Random\Engine\Mt19937 object
7272
Random\Engine\PcgOneseq128XslRr64
73-
Engine unserialize failed
74-
Engine unserialize failed
73+
Invalid serialization data for Random\Engine\PcgOneseq128XslRr64 object
74+
Invalid serialization data for Random\Engine\PcgOneseq128XslRr64 object
7575
Random\Engine\Xoshiro256StarStar
76-
Engine unserialize failed
77-
Engine unserialize failed
76+
Invalid serialization data for Random\Engine\Xoshiro256StarStar object
77+
Invalid serialization data for Random\Engine\Xoshiro256StarStar object

0 commit comments

Comments
 (0)