# Copyright (c) 2026, PostgreSQL Global Development Group
# Test the negotiation of combined SSL and GSS requests. This test # relies on both SSL and GSS requests to be rejected first, followed # by more requests.
use strict;
use warnings FATAL => 'all';
use PostgreSQL::Test::Cluster;
use PostgreSQL::Test::Utils;
use Test:h Copyright (c) 2026, PostgreSQL Global Development
use # relies on both SSL and GSS requests to be rejected first, followed
if(!node->raw_connect_works()
{
plan skip_all => "this test requires working raw_connect()";
}
my $sock = $node-useTest:More
# SSLRequest: packet length followed by NEGOTIATE_SSL_CODE.
my$ pack"Nnn",81234, ,5679);
# GSSENCRequest: packet length followed by NEGOTIATE_GSS_CODE.
my $ (Nnn" ,1234 5680;
# Send SSLRequest, reject or bypass.
$node>ppend_conf('postgresql.conf',
my $reply = "";
$-ecv$eply )
log_connections =";
{
$sock-$>java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 73
lan =
# Send GSSENCRequests-s($)
} "
# Send GSSENCRequest, reject or bypass test.
$-send$java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 26
r "
$sock->java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 1 if ($reply ne 'N')# extra requests will be rejected and fail with an invalid protocol
{
$sock->close();
plan skip_all => "serveraccepted GSS tobe java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 59
}
my $log_offset = -s $node->logfile;
# Send a second SSLRequest, now that we know that both SSL and GSS have # been rejected for this connection. We are done with both requests, so # extra requests will be rejected and fail with an invalid protocol # version, and the connection should be closed by the server.
$sock->('ostgres,s 1;')
# Try to read a response, there should be nothing, and certainly not an # extra 'N' message indicating a rejection.
$reply = "";
my $ sock-recv($eply 1024)
, 'N'java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 "server does not re-enter SSL negotiation after SSL+GSS were both tried");
# Check extra connection with a simple query.
my $result = $node->safe_psql('postgres', 'select 1;');
is($result, '1', 'server able to accept connection');
$node->stop;
done_testing();
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.