@@ -477,6 +477,9 @@ SAPI_API SAPI_TREAT_DATA_FUNC(php_default_treat_data)
477477 var = php_strtok_r (res , separator , & strtok_buf );
478478
479479 while (var ) {
480+ size_t val_len ;
481+ size_t new_val_len ;
482+
480483 val = strchr (var , '=' );
481484
482485 if (arg == PARSE_COOKIE ) {
@@ -495,29 +498,25 @@ SAPI_API SAPI_TREAT_DATA_FUNC(php_default_treat_data)
495498 }
496499
497500 if (val ) { /* have a value */
498- size_t val_len ;
499- size_t new_val_len ;
500501
501502 * val ++ = '\0' ;
502- php_url_decode ( var , strlen ( var ));
503- val_len = php_url_decode ( val , strlen ( val ));
504- val = estrndup (val , val_len );
505- if ( sapi_module . input_filter ( arg , var , & val , val_len , & new_val_len )) {
506- php_register_variable_safe ( var , val , new_val_len , & array );
503+
504+ if ( arg == PARSE_COOKIE ) {
505+ val_len = php_raw_url_decode (val , strlen ( val ) );
506+ } else {
507+ val_len = php_url_decode ( val , strlen ( val ) );
507508 }
508- efree (val );
509509 } else {
510- size_t val_len ;
511- size_t new_val_len ;
512-
513- php_url_decode (var , strlen (var ));
514- val_len = 0 ;
515- val = estrndup ("" , val_len );
516- if (sapi_module .input_filter (arg , var , & val , val_len , & new_val_len )) {
517- php_register_variable_safe (var , val , new_val_len , & array );
518- }
519- efree (val );
510+ val = "" ;
511+ val_len = 0 ;
512+ }
513+
514+ val = estrndup (val , val_len );
515+ php_url_decode (var , strlen (var ));
516+ if (sapi_module .input_filter (arg , var , & val , val_len , & new_val_len )) {
517+ php_register_variable_safe (var , val , new_val_len , & array );
520518 }
519+ efree (val );
521520next_cookie :
522521 var = php_strtok_r (NULL , separator , & strtok_buf );
523522 }
0 commit comments