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

From: Date: Tue, 13 Sep 2016 16:17:11 +0000
Subject: Bug #73072 [Opn->Asn]: Invalid path SNI_server_certs causes segfault
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-204009@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:             Open
+Status:             Assigned
 Type:               Bug
 Package:            OpenSSL related
 Operating System:   All
 PHP Version:        5.6.25
-Assigned To:        
+Assigned To:        bukka
 Block user comment: N
 Private report:     N



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


Thread (5 messages)

« previous php.bugs (#204009) next »