Skip to content

Commit f6c54ac

Browse files
committed
tests: integration: cover TLS protocol errors
Signed-off-by: Eduardo Silva <eduardo@chronosphere.io>
1 parent cc94c75 commit f6c54ac

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

tests/integration/scenarios/in_forward/tests/test_in_forward_001.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,17 @@ def _reset_tls_connection(port, cafile):
726726
raw_sock.close()
727727

728728

729+
def _send_corrupted_tls_record(port, cafile):
730+
raw_sock, tls, outgoing = _create_tls_memory_bio_client(port, cafile)
731+
732+
tls.write(b"\x91")
733+
wire_payload = bytearray(outgoing.read())
734+
wire_payload[-1] ^= 1
735+
raw_sock.sendall(wire_payload)
736+
737+
return raw_sock
738+
739+
729740
def _create_partial_forward_client(service, payload, use_tls):
730741
if use_tls:
731742
sock, tls, outgoing = _create_tls_memory_bio_client(
@@ -1458,6 +1469,36 @@ def test_in_forward_tls_syscall_error_preserves_errno():
14581469
assert records[0]["message"] == "after-tls-reset"
14591470

14601471

1472+
def test_in_forward_tls_protocol_error_is_reported():
1473+
service = Service("in_forward_tls.yaml")
1474+
protocol_sock = None
1475+
service.start()
1476+
1477+
try:
1478+
protocol_sock = _send_corrupted_tls_record(
1479+
service.flb_listener_port,
1480+
service.tls_crt_file,
1481+
)
1482+
log_text = service.wait_for_log_contains("[tls] error:", timeout=10)
1483+
protocol_sock.close()
1484+
protocol_sock = None
1485+
1486+
payload = _message_mode_payload(
1487+
TEST_TAG,
1488+
{"message": "after-tls-protocol-error"},
1489+
)
1490+
_send_forward_payload(service, payload, True)
1491+
records = service.wait_for_record_count(1, timeout=10)
1492+
finally:
1493+
if protocol_sock is not None:
1494+
protocol_sock.close()
1495+
service.stop()
1496+
1497+
assert "bad record mac" in log_text.lower()
1498+
assert "unknown error" not in log_text
1499+
assert records[0]["message"] == "after-tls-protocol-error"
1500+
1501+
14611502
@pytest.mark.parametrize(
14621503
"config_file,use_tls",
14631504
[

0 commit comments

Comments
 (0)