1--TEST-- 2Bug #54992: Stream not closed and error not returned when SSL CN_match fails 3--SKIPIF-- 4<?php 5if (!extension_loaded("openssl")) die("skip"); 6if (!function_exists('pcntl_fork')) die("skip no fork"); 7--FILE-- 8<?php 9$context = stream_context_create(); 10 11stream_context_set_option($context, 'ssl', 'local_cert', __DIR__ . "/bug54992.pem"); 12stream_context_set_option($context, 'ssl', 'allow_self_signed', true); 13$server = stream_socket_server('ssl://127.0.0.1:64321', $errno, $errstr, 14 STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context); 15 16 17$pid = pcntl_fork(); 18if ($pid == -1) { 19 die('could not fork'); 20} else if ($pid) { 21 $contextC = stream_context_create( 22 array( 23 'ssl' => array( 24 'verify_peer' => true, 25 'cafile' => __DIR__ . '/bug54992-ca.pem', 26 'CN_match' => 'buga_buga', 27 ) 28 ) 29 ); 30 var_dump(stream_socket_client("ssl://127.0.0.1:64321", $errno, $errstr, 1, 31 STREAM_CLIENT_CONNECT, $contextC)); 32} else { 33 @pcntl_wait($status); 34 @stream_socket_accept($server, 1); 35} 36--EXPECTF-- 37Warning: stream_socket_client(): Peer certificate CN=`bug54992.local' did not match expected CN=`buga_buga' in %s on line %d 38 39Warning: stream_socket_client(): Failed to enable crypto in %s on line %d 40 41Warning: stream_socket_client(): unable to connect to ssl://127.0.0.1:64321 (Unknown error) in %s on line %d 42bool(false) 43 44 45