@@ -4951,7 +4951,7 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) /* {{{ */
4951
4951
}
4952
4952
/* }}} */
4953
4953
4954
- static int matches_wildcard_name (const char * subjectname , const char * certname )
4954
+ static zend_bool matches_wildcard_name (const char * subjectname , const char * certname )
4955
4955
{
4956
4956
char * wildcard ;
4957
4957
int prefix_len , suffix_len , subject_len ;
@@ -4983,10 +4983,12 @@ static int matches_wildcard_name(const char *subjectname, const char *certname)
4983
4983
return 0 ;
4984
4984
}
4985
4985
4986
- static int matches_san_list (X509 * peer , const char * subject_name )
4986
+ static zend_bool matches_san_list (X509 * peer , const char * subject_name )
4987
4987
{
4988
- int is_match , i ;
4988
+ int i ;
4989
+ zend_bool is_match = 0 ;
4989
4990
unsigned char * cert_name ;
4991
+
4990
4992
GENERAL_NAMES * alt_names = X509_get_ext_d2i (peer , NID_subject_alt_name , 0 , 0 );
4991
4993
int alt_name_count = sk_GENERAL_NAME_num (alt_names );
4992
4994
@@ -5007,25 +5009,26 @@ static int matches_san_list(X509 *peer, const char *subject_name)
5007
5009
return is_match ;
5008
5010
}
5009
5011
5010
- static int matches_common_name (X509 * peer , const char * subject_name )
5012
+ static zend_bool matches_common_name (X509 * peer , const char * subject_name )
5011
5013
{
5012
5014
char buf [1024 ];
5013
5015
X509_NAME * cert_name ;
5016
+ zend_bool is_match = 0 ;
5017
+
5014
5018
cert_name = X509_get_subject_name (peer );
5015
5019
int cert_name_len = X509_NAME_get_text_by_NID (cert_name , NID_commonName , buf , sizeof (buf ));
5016
5020
5017
5021
if (cert_name_len == -1 ) {
5018
5022
php_error_docref (NULL TSRMLS_CC , E_WARNING , "Unable to locate peer certificate CN" );
5019
- return 0 ;
5020
5023
} else if (cert_name_len != strlen (buf )) {
5021
5024
php_error_docref (NULL TSRMLS_CC , E_WARNING , "Peer certificate CN=`%.*s' is malformed" , cert_name_len , buf );
5022
- return 0 ;
5023
5025
} else if (matches_wildcard_name (subject_name , buf )) {
5024
- return 1 ;
5026
+ is_match = 1 ;
5025
5027
} else {
5026
5028
php_error_docref (NULL TSRMLS_CC , E_WARNING , "Peer certificate CN=`%.*s' did not match expected CN=`%s'" , cert_name_len , buf , subject_name );
5027
- return 0 ;
5028
5029
}
5030
+
5031
+ return is_match ;
5029
5032
}
5030
5033
5031
5034
int php_openssl_apply_verification_policy (SSL * ssl , X509 * peer , php_stream * stream TSRMLS_DC ) /* {{{ */
0 commit comments