From: Matt Caswell Date: Mon, 7 Nov 2016 14:26:41 +0000 (+0000) Subject: Add a test for the wrong version number in a record X-Git-Tag: OpenSSL_1_1_1-pre1~3171 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8e47ee18c8f7e59575effdd8dfcfbfff1a365ede;p=oweals%2Fopenssl.git Add a test for the wrong version number in a record Prior to TLS1.3 we check that the received record version number is correct. In TLS1.3 we need to ignore the record version number. This adds a test to make sure we do it correctly. Reviewed-by: Rich Salz --- diff --git a/test/recipes/70-test_sslrecords.t b/test/recipes/70-test_sslrecords.t index b282dbd86f..cafa30ce3c 100644 --- a/test/recipes/70-test_sslrecords.t +++ b/test/recipes/70-test_sslrecords.t @@ -39,10 +39,13 @@ my $content_type = TLSProxy::Record::RT_APPLICATION_DATA; my $inject_recs_num = 1; $proxy->serverflags("-tls1_2"); $proxy->start() or plan skip_all => "Unable to start up Proxy for tests"; -my $num_tests = 10; +my $num_tests = 11; if (!disabled("tls1_1")) { $num_tests++; } +if (!disabled("tls1_3")) { + $num_tests++; +} plan tests => $num_tests; ok(TLSProxy::Message->fail(), "Out of context empty records test"); @@ -137,6 +140,21 @@ if (!disabled("tls1_1")) { ok(TLSProxy::Message->fail(), "Unrecognised record type in TLS1.1"); } +#Test 12: Sending a different record version in TLS1.2 should fail +$proxy->clear(); +$proxy->clientflags("-tls1_2"); +$proxy->filter(\&change_version); +$proxy->start(); +ok(TLSProxy::Message->fail(), "Changed record version in TLS1.2"); + +#Test 13: Sending a different record version in TLS1.3 should succeed +if (!disabled("tls1_3")) { + $proxy->clear(); + $proxy->filter(\&change_version); + $proxy->start(); + ok(TLSProxy::Message->success(), "Changed record version in TLS1.3"); +} + sub add_empty_recs_filter { my $proxy = shift; @@ -388,3 +406,15 @@ sub add_unknown_record_type unshift @{$proxy->record_list}, $record; } + +sub change_version +{ + my $proxy = shift; + + # We'll change a version after the initial version neg has taken place + if ($proxy->flight != 2) { + return; + } + + (${$proxy->record_list}[-1])->version(TLSProxy::Record::VERS_TLS_1_1); +} diff --git a/util/TLSProxy/Record.pm b/util/TLSProxy/Record.pm index 106fa7414a..a4e7adcf82 100644 --- a/util/TLSProxy/Record.pm +++ b/util/TLSProxy/Record.pm @@ -278,11 +278,6 @@ sub content_type my $self = shift; return $self->{content_type}; } -sub version -{ - my $self = shift; - return $self->{version}; -} sub sslv2 { my $self = shift; @@ -332,4 +327,12 @@ sub len } return $self->{len}; } +sub version +{ + my $self = shift; + if (@_) { + $self->{version} = shift; + } + return $self->{version}; +} 1;