[php-src] Issue #8471: Segmentation fault when converting immutable and mutable `DateTime` instances created using reflection

From: Date: Sun, 01 May 2022 11:28:36 +0000
Subject: [php-src] Issue #8471: Segmentation fault when converting immutable and mutable `DateTime` instances created using reflection
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-241355@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/8471 Author: hype09 ### Description ## Reproduction ```php <?php $reflection = new ReflectionClass('\DateTime'); $mutable = $reflection->newInstanceWithoutConstructor(); $immutable = \DateTimeImmutable::createFromMutable($mutable); ``` Resulted in this output: ``` Process exited with code 139. ``` https://3v4l.org/gg0dq The segfault happens when converting an "incomplete" \DateTime to a \DateTimeImmutable instance and vice versa. ## Background I stumbled upon this during some unit test writing where my testing framework was unexpectedly mocking \DateTime objects for me. After debugging for a while I could narrow the cause down to the snippet above. ## Solution I'd love to attempt to provide a fix for this, but I am unsure as to the proper solution, implementation-wise: Should an error be thrown during the conversion, or during constructor-less creation of the reflection instance? Or maybe no errors at all and some "sane default" type of handling for creating DateTime instances via Reflection? Are there any precedents in the implementation for other internal classes in regards to this? Thanks in advance! ### PHP Version PHP 7.4 - PHP 8.1 ### Operating System _No response_

« previous php.bugs (#241355) next »