cve-2024-38477/httpd-2.4.59/test/modules/tls/test_09_timeout.py
2025-06-05 15:09:30 +02:00

44 lines
1.3 KiB
Python

import socket
from datetime import timedelta
import pytest
from .conf import TlsTestConf
class TestTimeout:
@pytest.fixture(autouse=True, scope='class')
def _class_scope(self, env):
conf = TlsTestConf(env=env, extras={
'base': "RequestReadTimeout handshake=1",
})
conf.add_tls_vhosts(domains=[env.domain_a, env.domain_b])
conf.install()
assert env.apache_restart() == 0
@pytest.fixture(autouse=True, scope='function')
def _function_scope(self, env):
pass
def test_tls_09_timeout_handshake(self, env):
# in domain_b root, the StdEnvVars is switch on
s = socket.create_connection(('localhost', env.https_port))
s.send(b'1234')
s.settimeout(0.0)
try:
s.recv(1024)
assert False, "able to recv() on a TLS connection before we sent a hello"
except BlockingIOError:
pass
s.settimeout(3.0)
try:
while True:
buf = s.recv(1024)
if not buf:
break
print("recv() -> {0}".format(buf))
except (socket.timeout, BlockingIOError):
assert False, "socket not closed as handshake timeout should trigger"
s.close()