Bug #73072 [Asn]: Invalid path SNI_server_certs causes segfault

From: Date: Tue, 13 Sep 2016 16:17:56 +0000
Subject: Bug #73072 [Asn]: Invalid path SNI_server_certs causes segfault
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-204010@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73072&edit=1 ID: 73072 Updated by: bukka@php.net Reported by: bukka@php.net Summary: Invalid path SNI_server_certs causes segfault Status: Assigned Type: Bug Package: OpenSSL related Operating System: All PHP Version: 5.6.25 Assigned To: bukka Block user comment: N Private report: N New Comment: The script above causes segfault once a client connects into it... Previous Comments: ------------------------------------------------------------------------ [2016-09-13 16:16:49] bukka@php.net Description: ------------ If the SNI_server_certs stream ssl option contains an invalid path, it causes segfault after the client connects. It is because the initializing loop is jumped off when error happens and keeps the sni_certs unitialized which causes later segfault when they are freed. Test script: --------------- $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; $ctx = stream_context_create(['ssl' => [ 'local_cert' => __DIR__ . '/domain1.pem', 'SNI_server_certs' => [ "domain1.com" => __DIR__ . "/sni_server_domain1.pem", "domain2.com" => __DIR__ . "/unknown", ] ]]); $server = stream_socket_server('tls://127.0.0.1:64321', $errno, $errstr, $flags, $ctx); for ($i=0; $i < 3; $i++) { @stream_socket_accept($server, 3); } Expected result: ---------------- Warning: failed setting local cert chain file `%s'; file not found Actual result: -------------- segfault ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=73072&edit=1

« previous php.bugs (#204010) next »