php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #80719 Iterating after failed ArrayObject::setIteratorClass() causes Segmentation fault
Submitted: 2021-02-07 04:10 UTC Modified: 2021-02-11 14:58 UTC
From: notmuqsit at gmail dot com Assigned: nikic (profile)
Status: Closed Package: SPL related
PHP Version: 7.4.15 OS: Ubuntu 20.04.1 LTS (Focal Fossa)
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: notmuqsit at gmail dot com
New email:
PHP Version: OS:

 

 [2021-02-07 04:10 UTC] notmuqsit at gmail dot com
Description:
------------
ArrayObject::setIteratorClass() accepts a class of type ArrayIterator as its only parameter. Supplying a non-ArrayIterator class, (such as FilterIterator) causes the following error:

Fatal error: ArrayObject::getIterator(): Internal compiler error, Class is not child of ArrayObject or ArrayIterator in /in/L5USF on line 5

However, foreach-ing the ArrayObject after a failed setIteratorClass() call as such causes a segmentation fault:

Process exited with code 139.



Test script:
---------------
(https://3v4l.org/L3c7f)
<?php

$array = new ArrayObject();
$array->setIteratorClass(FilterIterator::class);
foreach($array as $_){
}

Expected result:
----------------
Fatal error: ArrayObject::getIterator(): Internal compiler error, Class is not child of ArrayObject or ArrayIterator in /in/L3c7f on line 5

Actual result:
--------------
Fatal error: ArrayObject::getIterator(): Internal compiler error, Class is not child of ArrayObject or ArrayIterator in /in/L3c7f on line 5

Process exited with code 139.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-02-07 04:11 UTC] notmuqsit at gmail dot com
-Summary: Iterating afte failed ArrayObject::setIteratorClass() causes Segmentation fault +Summary: Iterating after failed ArrayObject::setIteratorClass() causes Segmentation fault
 [2021-02-07 04:11 UTC] notmuqsit at gmail dot com
Fixed typo in Summary (afte -> after)
 [2021-02-11 14:58 UTC] nikic@php.net
-Assigned To: +Assigned To: nikic
 [2021-02-11 15:14 UTC] nikic@php.net
Automatic comment on behalf of nikita.ppv@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=c34c5234678a5898c1796983e9ca8faa293f3fe3
Log: Fixed bug #80719
 [2021-02-11 15:14 UTC] nikic@php.net
-Status: Assigned +Status: Closed
 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Wed Dec 08 02:03:34 2021 UTC