Re: com php-src: Fixed bug #72888 (Segfault on clone on splFileObject): NEWS ext/spl/spl_directory.c ext/spl/tests/bug72888.phpt
| From: | Nikita Popov | Date: | Fri, 19 Aug 2016 10:34:22 +0000 |
| Subject: | Re: com php-src: Fixed bug #72888 (Segfault on clone on splFileObject): NEWS ext/spl/spl_directory.c ext/spl/tests/bug72888.phpt | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-93988@lists.php.net to get a copy of this message | ||
On Fri, Aug 19, 2016 at 5:28 AM, Xinchen Hui <laruence@php.net> wrote:
> Commit: 566d65d222c00210aa67d6b937021c8100f54678
> Author: Xinchen Hui <laruence@gmail.com> Fri, 19 Aug 2016
> 11:28:36 +0800
> Parents: 0b1c8178ab7c528909861c1a263ecd03345195a3
> Branches: PHP-7.1 master
>
> Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=
> 566d65d222c00210aa67d6b937021c8100f54678
>
> Log:
> Fixed bug #72888 (Segfault on clone on splFileObject)
>
> Bugs:
> https://bugs.php.net/72888
>
> Changed paths:
> M NEWS
> M ext/spl/spl_directory.c
> A ext/spl/tests/bug72888.phpt
>
>
> Diff:
> diff --git a/NEWS b/NEWS
> index 5e765fe..79e9398 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -62,6 +62,9 @@ PHP
> NEWS
> . Implemented RFC: Session ID without hashing. (Yasuo)
> https://wiki.php.net/rfc/session-id-without-hashing
>
> +- SPL:
> + . Fixed bug #72888 (Segfault on clone on splFileObject). (Laruence)
> +
> - SQLite3:
> . Updated to SQLite3 3.14.0. (cmb)
>
> diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
> index 6c91c2e..67bfda8 100644
> --- a/ext/spl/spl_directory.c
> +++ b/ext/spl/spl_directory.c
> @@ -356,7 +356,7 @@ static zend_object *spl_filesystem_object_clone(zval
> *zobject)
> break;
> case SPL_FS_FILE:
> zend_throw_error(NULL, "An object of class %s
> cannot be cloned", ZSTR_VAL(old_object->ce->name));
> - return NULL;
> + return new_object;
> }
>
> intern->file_class = source->file_class;
> diff --git a/ext/spl/tests/bug72888.phpt b/ext/spl/tests/bug72888.phpt
> new file mode 100644
> index 0000000..7d2fc6d
> --- /dev/null
> +++ b/ext/spl/tests/bug72888.phpt
> @@ -0,0 +1,18 @@
> +--TEST--
> +Bug #72888 (Segfault on clone on splFileObject)
> +--FILE--
> +<?php
> +$x = new SplFileObject(__FILE__);
> +
> +try {
> + $y=clone $x;
> +} catch (Error $e) {
> + var_dump($e->getMessage());
> +}
> +var_dump($y);
> +?>
> +--EXPECTF--
> +string(49) "An object of class SplFileObject cannot be cloned"
> +
> +Notice: Undefined variable: y in %sbug72888.php on line %d
> +NULL
>
It would be good to support a NULL return value in ZEND_CLONE as well. Imho
this should be valid, creating an object on failure does not make sense.
Nikita