X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=util%2Fperl%2FTLSProxy%2FRecord.pm;fp=util%2Fperl%2FTLSProxy%2FRecord.pm;h=8ff948b82f17cdc1aca86d9b56fa4c120f099a40;hp=49a0084d36a83774bca3eceb4168b59f5e347abe;hb=3f1f62b97b795d973d40c32735eedee70140731c;hpb=17cde9c2e404a0ada05601fb726dbaed6c532112 diff --git a/util/perl/TLSProxy/Record.pm b/util/perl/TLSProxy/Record.pm index 49a0084d36..8ff948b82f 100644 --- a/util/perl/TLSProxy/Record.pm +++ b/util/perl/TLSProxy/Record.pm @@ -67,17 +67,13 @@ sub get_records my $recnum = 1; while (length ($packet) > 0) { - print " Record $recnum"; - if ($server) { - print " (server -> client)\n"; - } else { - print " (client -> server)\n"; - } + print " Record $recnum ", $server ? "(server -> client)\n" + : "(client -> server)\n"; #Get the record header (unpack can't fail if $packet is too short) my ($content_type, $version, $len) = unpack('Cnn', $packet); - if (length($packet) < TLS_RECORD_HEADER_LENGTH + $len) { + if (length($packet) < TLS_RECORD_HEADER_LENGTH + ($len // 0)) { print "Partial data : ".length($packet)." bytes\n"; $partial = $packet; last; @@ -389,4 +385,16 @@ sub outer_content_type } return $self->{outer_content_type}; } +sub is_fatal_alert +{ + my $self = shift; + my $server = shift; + + if (($self->{flight} & 1) == $server + && $self->{content_type} == TLSProxy::Record::RT_ALERT) { + my ($level, $alert) = unpack('CC', $self->decrypt_data); + return $alert if ($level == 2); + } + return 0; +} 1;