[php-src] PHP-8.4.24: Revert "Fix GH-21986: PharData::getContent() crash on infinite recursion with symlinks."

From: Date: Wed, 29 Jul 2026 05:23:27 +0000
Subject: [php-src] PHP-8.4.24: Revert "Fix GH-21986: PharData::getContent() crash on infinite recursion with symlinks."
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-140303@lists.php.net to get a copy of this message
Author: Ilija Tovilo (iluuu1994) Pusher: NattyNarwhal Date: 2026-07-28T11:09:58+02:00 Commit: https://github.com/php/php-src/commit/4ffb33e6796f0c16c9844a58c15105320abe611e Raw diff: https://github.com/php/php-src/commit/4ffb33e6796f0c16c9844a58c15105320abe611e.diff Revert "Fix GH-21986: PharData::getContent() crash on infinite recursion with symlinks." This reverts commit b2de3cf170f81b203dfc2622f2f2dd1572ef95be. Changed paths: M ext/phar/util.c Diff: diff --git a/ext/phar/util.c b/ext/phar/util.c index 2c896c6f6588..2d1db6a1b3e1 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -64,34 +64,24 @@ phar_entry_info *phar_get_link_source(phar_entry_info *entry) /* {{{ */ { phar_entry_info *link_entry; char *link; - uint32_t depth = 0, max_depth; if (!entry->link) { return entry; } - max_depth = zend_hash_num_elements(&(entry->phar->manifest)); - - while (entry->link) { - if (UNEXPECTED(++depth > max_depth)) { - return NULL; + link = phar_get_link_location(entry); + if (NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), entry->link, strlen(entry->link))) || + NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), link, strlen(link)))) { + if (link != entry->link) { + efree(link); } - link = phar_get_link_location(entry); - - if (NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), entry->link, strlen(entry->link))) || - NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), link, strlen(link)))) { - if (link != entry->link) { - efree(link); - } - entry = link_entry; - } else { - if (link != entry->link) { - efree(link); - } - return NULL; + return phar_get_link_source(link_entry); + } else { + if (link != entry->link) { + efree(link); } + return NULL; } - return entry; } /* }}} */

« previous php.cvs (#140303) next »