File tree Expand file tree Collapse file tree 3 files changed +19
-4
lines changed Expand file tree Collapse file tree 3 files changed +19
-4
lines changed Original file line number Diff line number Diff line change 22|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33?? ??? ????, PHP 8.4.3
44
5+ - Streams:
6+ . Fixed bug GH-17037 (UAF in user filter when adding existing filter name due
7+ to incorrect error handling). (nielsdos)
58
6905 Dec 2024, PHP 8.4.2
710
Original file line number Diff line number Diff line change 1+ --TEST--
2+ GH-17037 (UAF in user filter when adding existing filter name due to incorrect error handling)
3+ --FILE--
4+ <?php
5+ var_dump (stream_filter_register ('string.toupper ' , 'filter_string_toupper ' ));
6+ ?>
7+ --EXPECT--
8+ bool(false)
Original file line number Diff line number Diff line change @@ -521,13 +521,17 @@ PHP_FUNCTION(stream_filter_register)
521521 fdat = ecalloc (1 , sizeof (struct php_user_filter_data ));
522522 fdat -> classname = zend_string_copy (classname );
523523
524- if (zend_hash_add_ptr (BG (user_filter_map ), filtername , fdat ) != NULL &&
525- php_stream_filter_register_factory_volatile (filtername , & user_filter_factory ) == SUCCESS ) {
526- RETVAL_TRUE ;
524+ if (zend_hash_add_ptr (BG (user_filter_map ), filtername , fdat ) != NULL ) {
525+ if (php_stream_filter_register_factory_volatile (filtername , & user_filter_factory ) == SUCCESS ) {
526+ RETURN_TRUE ;
527+ }
528+
529+ zend_hash_del (BG (user_filter_map ), filtername );
527530 } else {
528531 zend_string_release_ex (classname , 0 );
529532 efree (fdat );
530- RETVAL_FALSE ;
531533 }
534+
535+ RETURN_FALSE ;
532536}
533537/* }}} */
You can’t perform that action at this time.
0 commit comments