Skip to content

Commit 9011e3e

Browse files
committed
Do not set mLocalMRPConfig in PairingSession constructor
1 parent 6c53a6a commit 9011e3e

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

src/protocols/secure_channel/CASESession.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,8 @@ CHIP_ERROR CASESession::SendSigma1()
708708
ReturnErrorOnFailure(
709709
tlvWriter.PutBytes(TLV::ContextTag(4), mEphemeralKey->Pubkey(), static_cast<uint32_t>(mEphemeralKey->Pubkey().Length())));
710710

711-
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig, tlvWriter));
711+
VerifyOrReturnError(mLocalMRPConfig.HasValue(), CHIP_ERROR_INCORRECT_STATE);
712+
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig.Value(), tlvWriter));
712713

713714
// Try to find persistent session, and resume it.
714715
bool resuming = false;
@@ -955,7 +956,8 @@ CHIP_ERROR CASESession::SendSigma2Resume()
955956

956957
ReturnErrorOnFailure(tlvWriter.Put(TLV::ContextTag(3), GetLocalSessionId().Value()));
957958

958-
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(4), mLocalMRPConfig, tlvWriter));
959+
VerifyOrReturnError(mLocalMRPConfig.HasValue(), CHIP_ERROR_INCORRECT_STATE);
960+
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(4), mLocalMRPConfig.Value(), tlvWriter));
959961

960962
ReturnErrorOnFailure(tlvWriter.EndContainer(outerContainerType));
961963
ReturnErrorOnFailure(tlvWriter.Finalize(&msg_R2_resume));
@@ -1091,7 +1093,8 @@ CHIP_ERROR CASESession::SendSigma2()
10911093
ReturnErrorOnFailure(tlvWriterMsg2.PutBytes(TLV::ContextTag(4), msg_R2_Encrypted.Get(),
10921094
static_cast<uint32_t>(msg_r2_signed_enc_len + CHIP_CRYPTO_AEAD_MIC_LENGTH_BYTES)));
10931095

1094-
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig, tlvWriterMsg2));
1096+
VerifyOrReturnError(mLocalMRPConfig.HasValue(), CHIP_ERROR_INCORRECT_STATE);
1097+
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig.Value(), tlvWriterMsg2));
10951098

10961099
ReturnErrorOnFailure(tlvWriterMsg2.EndContainer(outerContainerType));
10971100
ReturnErrorOnFailure(tlvWriterMsg2.Finalize(&msg_R2));

src/protocols/secure_channel/PASESession.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,8 @@ CHIP_ERROR PASESession::SendPBKDFParamRequest()
300300
ReturnErrorOnFailure(tlvWriter.Put(TLV::ContextTag(3), kDefaultCommissioningPasscodeId));
301301
ReturnErrorOnFailure(tlvWriter.PutBoolean(TLV::ContextTag(4), mHavePBKDFParameters));
302302

303-
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig, tlvWriter));
303+
VerifyOrReturnError(mLocalMRPConfig.HasValue(), CHIP_ERROR_INCORRECT_STATE);
304+
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig.Value(), tlvWriter));
304305

305306
ReturnErrorOnFailure(tlvWriter.EndContainer(outerContainerType));
306307
ReturnErrorOnFailure(tlvWriter.Finalize(&req));
@@ -420,7 +421,8 @@ CHIP_ERROR PASESession::SendPBKDFParamResponse(ByteSpan initiatorRandom, bool in
420421
ReturnErrorOnFailure(tlvWriter.EndContainer(pbkdfParamContainer));
421422
}
422423

423-
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig, tlvWriter));
424+
VerifyOrReturnError(mLocalMRPConfig.HasValue(), CHIP_ERROR_INCORRECT_STATE);
425+
ReturnErrorOnFailure(EncodeSessionParameters(TLV::ContextTag(5), mLocalMRPConfig.Value(), tlvWriter));
424426

425427
ReturnErrorOnFailure(tlvWriter.EndContainer(outerContainerType));
426428
ReturnErrorOnFailure(tlvWriter.Finalize(&resp));

src/protocols/secure_channel/PairingSession.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ class DLL_EXPORT PairingSession : public SessionDelegate
244244

245245
// mLocalMRPConfig is our config which is sent to the other end and used by the peer session.
246246
// mRemoteSessionParams is received from other end and set to our session.
247-
ReliableMessageProtocolConfig mLocalMRPConfig = GetLocalMRPConfig().ValueOr(GetDefaultMRPConfig());
247+
// It is set the first time that session establishment is initiated.
248+
Optional<ReliableMessageProtocolConfig> mLocalMRPConfig;
248249
SessionParameters mRemoteSessionParams;
249250

250251
private:

0 commit comments

Comments
 (0)