@@ -504,16 +504,16 @@ void php_filter_validate_regexp(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
504
504
}
505
505
}
506
506
507
- static int _php_filter_validate_domain (const char * domain , size_t len , zend_long flags ) /* {{{ */
507
+ static int php_filter_validate_domain_ex (const zend_string * domain , zend_long flags ) /* {{{ */
508
508
{
509
509
const char * e , * s , * t ;
510
510
size_t l ;
511
511
int hostname = flags & FILTER_FLAG_HOSTNAME ;
512
512
unsigned char i = 1 ;
513
513
514
- s = domain ;
515
- l = len ;
516
- e = domain + l ;
514
+ s = ZSTR_VAL ( domain ) ;
515
+ l = ZSTR_LEN ( domain ) ;
516
+ e = s + l ;
517
517
t = e - 1 ;
518
518
519
519
/* Ignore trailing dot */
@@ -558,7 +558,7 @@ static int _php_filter_validate_domain(const char *domain, size_t len, zend_long
558
558
559
559
void php_filter_validate_domain (PHP_INPUT_FILTER_PARAM_DECL ) /* {{{ */
560
560
{
561
- if (!_php_filter_validate_domain ( Z_STRVAL_P ( value ), Z_STRLEN_P (value ), flags )) {
561
+ if (!php_filter_validate_domain_ex ( Z_STR_P (value ), flags )) {
562
562
RETURN_VALIDATION_FAILED
563
563
}
564
564
}
@@ -580,12 +580,12 @@ static int is_userinfo_valid(const zend_string *str)
580
580
return 1 ;
581
581
}
582
582
583
- static bool php_filter_is_valid_ipv6_hostname (const char * s , size_t l )
583
+ static bool php_filter_is_valid_ipv6_hostname (const zend_string * s )
584
584
{
585
- const char * e = s + l ;
585
+ const char * e = ZSTR_VAL ( s ) + ZSTR_LEN ( s ) ;
586
586
const char * t = e - 1 ;
587
587
588
- return * s == '[' && * t == ']' && _php_filter_validate_ipv6 (s + 1 , l - 2 , NULL );
588
+ return * ZSTR_VAL ( s ) == '[' && * t == ']' && _php_filter_validate_ipv6 (ZSTR_VAL ( s ) + 1 , ZSTR_LEN ( s ) - 2 , NULL );
589
589
}
590
590
591
591
void php_filter_validate_url (PHP_INPUT_FILTER_PARAM_DECL ) /* {{{ */
@@ -608,22 +608,17 @@ void php_filter_validate_url(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
608
608
609
609
if (url -> scheme != NULL &&
610
610
(zend_string_equals_literal_ci (url -> scheme , "http" ) || zend_string_equals_literal_ci (url -> scheme , "https" ))) {
611
- const char * s ;
612
- size_t l ;
613
611
614
612
if (url -> host == NULL ) {
615
613
goto bad_url ;
616
614
}
617
615
618
- s = ZSTR_VAL (url -> host );
619
- l = ZSTR_LEN (url -> host );
620
-
621
616
if (
622
617
/* An IPv6 enclosed by square brackets is a valid hostname.*/
623
- !php_filter_is_valid_ipv6_hostname (s , l ) &&
618
+ !php_filter_is_valid_ipv6_hostname (url -> host ) &&
624
619
/* Validate domain.
625
620
* This includes a loose check for an IPv4 address. */
626
- !_php_filter_validate_domain ( ZSTR_VAL ( url -> host ), l , FILTER_FLAG_HOSTNAME )
621
+ !php_filter_validate_domain_ex ( url -> host , FILTER_FLAG_HOSTNAME )
627
622
) {
628
623
php_url_free (url );
629
624
RETURN_VALIDATION_FAILED
0 commit comments