Invalid path SNI_server_certs causes segfault
| Bug #73072 | Invalid path SNI_server_certs causes segfault | ||||
|---|---|---|---|---|---|
| Submitted: | 2016-09-13 16:16 UTC | Modified: | 2016-09-13 16:17 UTC | ||
| From: | bukka@php.net | Assigned: | bukka (profile) | ||
| Status: | Closed | Package: | OpenSSL related | ||
| PHP Version: | 5.6.25 | OS: | All | ||
| Private report: | No | CVE-ID: | None | ||
[2016-09-13 16:16 UTC] 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
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2016-09-13 16:17 UTC] bukka@php.net
-Status: Open +Status: Assigned -Assigned To: +Assigned To: bukka
[2016-09-13 16:17 UTC] bukka@php.net
[2016-09-13 17:15 UTC] bukka@php.net
-Status: Assigned +Status: Closed
[2016-09-29 15:25 UTC] spam2 at rhsoft dot net
[2016-09-29 15:25 UTC] spam2 at rhsoft dot net