Skip to content

Commit 24964c6

Browse files
committed
Fix TLS fragment tests
1 parent 77caa3d commit 24964c6

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

src/platform/tls_schannel.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2445,8 +2445,8 @@ CxPlatTlsWriteDataToSchannel(
24452445
//
24462446
// Not all the input buffer was consumed. There is some 'extra' left over.
24472447
//
2448-
CXPLAT_DBG_ASSERT(InSecBuffers[1].cbBuffer <= *InBufferLength);
2449-
*InBufferLength -= InSecBuffers[1].cbBuffer;
2448+
CXPLAT_DBG_ASSERT(ExtraBuffer->cbBuffer <= *InBufferLength);
2449+
*InBufferLength -= ExtraBuffer->cbBuffer;
24502450
}
24512451

24522452
QuicTraceLogConnInfo(
@@ -2699,6 +2699,19 @@ CxPlatTlsWriteDataToSchannel(
26992699
TlsContext->PeerTransportParamsLength = 0;
27002700
}
27012701

2702+
//
2703+
// Some or all of the input data was processed. There may or may not be
2704+
// corresponding output data to send in response.
2705+
//
2706+
2707+
if (ExtraBuffer != NULL && ExtraBuffer->cbBuffer > 0) {
2708+
//
2709+
// Not all the input buffer was consumed. There is some 'extra' left over.
2710+
//
2711+
CXPLAT_DBG_ASSERT(ExtraBuffer->cbBuffer <= *InBufferLength);
2712+
*InBufferLength -= ExtraBuffer->cbBuffer;
2713+
}
2714+
27022715
break;
27032716

27042717
case SEC_E_INCOMPLETE_MESSAGE:

src/platform/unittest/TlsTest.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,9 @@ struct TlsTest : public ::testing::TestWithParam<bool>
488488
if (ConsumedBuffer > 0) {
489489
Buffer += ConsumedBuffer;
490490
BufferLength -= ConsumedBuffer;
491+
if (ConsumedBuffer > BufferLength) {
492+
ConsumedBuffer = BufferLength;
493+
}
491494
} else {
492495
ConsumedBuffer = FragmentSize * ++Count;
493496
ConsumedBuffer = CXPLAT_MIN(ConsumedBuffer, BufferLength);
@@ -1280,7 +1283,7 @@ TEST_F(TlsTest, HandshakeMultiAlpnBoth)
12801283
DoHandshake(ServerContext, ClientContext);
12811284
}
12821285

1283-
TEST_F(TlsTest, DISABLED_HandshakeFragmented) // Remove DISABLED_ after fixing #6035
1286+
TEST_F(TlsTest, HandshakeFragmented)
12841287
{
12851288
CxPlatClientSecConfig ClientConfig;
12861289
CxPlatServerSecConfig ServerConfig;
@@ -1290,7 +1293,7 @@ TEST_F(TlsTest, DISABLED_HandshakeFragmented) // Remove DISABLED_ after fixing #
12901293
DoHandshake(ServerContext, ClientContext, 200);
12911294
}
12921295

1293-
TEST_F(TlsTest, DISABLED_HandshakeVeryFragmented) // Remove DISABLED_ after fixing #6035
1296+
TEST_F(TlsTest, HandshakeVeryFragmented)
12941297
{
12951298
CxPlatClientSecConfig ClientConfig;
12961299
CxPlatServerSecConfig ServerConfig;

0 commit comments

Comments
 (0)