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