@@ -169,18 +169,25 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::CallbackGenerateNOCChain(const B
169
169
return err;
170
170
}
171
171
172
+ VerifyOrReturnError (CanCastTo<uint32_t >(csrElements.size ()), CHIP_ERROR_INVALID_ARGUMENT);
173
+ VerifyOrReturnError (CanCastTo<uint32_t >(csrNonce.size ()), CHIP_ERROR_INVALID_ARGUMENT);
174
+ VerifyOrReturnError (CanCastTo<uint32_t >(csrElementsSignature.size ()), CHIP_ERROR_INVALID_ARGUMENT);
175
+ VerifyOrReturnError (CanCastTo<uint32_t >(attestationChallenge.size ()), CHIP_ERROR_INVALID_ARGUMENT);
176
+ VerifyOrReturnError (CanCastTo<uint32_t >(DAC.size ()), CHIP_ERROR_INVALID_ARGUMENT);
177
+ VerifyOrReturnError (CanCastTo<uint32_t >(PAI.size ()), CHIP_ERROR_INVALID_ARGUMENT);
178
+
172
179
mOnNOCCompletionCallback = onCompletion;
173
180
174
181
env->ExceptionClear ();
175
182
176
183
jbyteArray javaCsrElements;
177
- JniReferences::GetInstance ().N2J_ByteArray (env, csrElements.data (), csrElements.size (), javaCsrElements);
184
+ JniReferences::GetInstance ().N2J_ByteArray (env, csrElements.data (), static_cast < uint32_t >( csrElements.size () ), javaCsrElements);
178
185
179
186
jbyteArray javaCsrNonce;
180
- JniReferences::GetInstance ().N2J_ByteArray (env, csrNonce.data (), csrNonce.size (), javaCsrNonce);
187
+ JniReferences::GetInstance ().N2J_ByteArray (env, csrNonce.data (), static_cast < uint32_t >( csrNonce.size () ), javaCsrNonce);
181
188
182
189
jbyteArray javaCsrElementsSignature;
183
- JniReferences::GetInstance ().N2J_ByteArray (env, csrElementsSignature.data (), csrElementsSignature.size (),
190
+ JniReferences::GetInstance ().N2J_ByteArray (env, csrElementsSignature.data (), static_cast < uint32_t >( csrElementsSignature.size () ),
184
191
javaCsrElementsSignature);
185
192
186
193
ChipLogProgress (Controller, " Parsing Certificate Signing Request" );
@@ -202,8 +209,10 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::CallbackGenerateNOCChain(const B
202
209
ByteSpan csr (reader.GetReadPoint (), reader.GetLength ());
203
210
reader.ExitContainer (containerType);
204
211
212
+ VerifyOrReturnError (CanCastTo<uint32_t >(csr.size ()), CHIP_ERROR_INVALID_ARGUMENT);
213
+
205
214
jbyteArray javaCsr;
206
- JniReferences::GetInstance ().N2J_ByteArray (env, csr.data (), csr.size (), javaCsr);
215
+ JniReferences::GetInstance ().N2J_ByteArray (env, csr.data (), static_cast < uint32_t >( csr.size () ), javaCsr);
207
216
208
217
P256PublicKey pubkey;
209
218
ReturnErrorOnFailure (VerifyCertificateSigningRequest (csr.data (), csr.size (), pubkey));
@@ -218,28 +227,36 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::CallbackGenerateNOCChain(const B
218
227
}
219
228
220
229
jbyteArray javaAttestationChallenge;
221
- JniReferences::GetInstance ().N2J_ByteArray (env, attestationChallenge.data (), attestationChallenge.size (),
230
+ JniReferences::GetInstance ().N2J_ByteArray (env, attestationChallenge.data (), static_cast < uint32_t >( attestationChallenge.size () ),
222
231
javaAttestationChallenge);
223
232
224
233
const ByteSpan & attestationElements = mAutoCommissioner ->GetAttestationElements ();
234
+ VerifyOrReturnError (CanCastTo<uint32_t >(attestationElements.size ()), CHIP_ERROR_INVALID_ARGUMENT);
235
+
225
236
jbyteArray javaAttestationElements;
226
- JniReferences::GetInstance ().N2J_ByteArray (env, attestationElements.data (), attestationElements.size (),
237
+ JniReferences::GetInstance ().N2J_ByteArray (env, attestationElements.data (), static_cast < uint32_t >( attestationElements.size () ),
227
238
javaAttestationElements);
228
239
229
240
const ByteSpan & attestationNonce = mAutoCommissioner ->GetAttestationNonce ();
241
+ VerifyOrReturnError (CanCastTo<uint32_t >(attestationNonce.size ()), CHIP_ERROR_INVALID_ARGUMENT);
242
+
230
243
jbyteArray javaAttestationNonce;
231
- JniReferences::GetInstance ().N2J_ByteArray (env, attestationNonce.data (), attestationNonce.size (), javaAttestationNonce);
244
+ JniReferences::GetInstance ().N2J_ByteArray (env, attestationNonce.data (), static_cast <uint32_t >(attestationNonce.size ()),
245
+ javaAttestationNonce);
232
246
233
247
const ByteSpan & attestationElementsSignature = mAutoCommissioner ->GetAttestationSignature ();
248
+ VerifyOrReturnError (CanCastTo<uint32_t >(attestationElementsSignature.size ()), CHIP_ERROR_INVALID_ARGUMENT);
249
+
234
250
jbyteArray javaAttestationElementsSignature;
235
- JniReferences::GetInstance ().N2J_ByteArray (env, attestationElementsSignature.data (), attestationElementsSignature.size (),
251
+ JniReferences::GetInstance ().N2J_ByteArray (env, attestationElementsSignature.data (),
252
+ static_cast <uint32_t >(attestationElementsSignature.size ()),
236
253
javaAttestationElementsSignature);
237
254
238
255
jbyteArray javaDAC;
239
- JniReferences::GetInstance ().N2J_ByteArray (env, DAC.data (), DAC.size (), javaDAC);
256
+ JniReferences::GetInstance ().N2J_ByteArray (env, DAC.data (), static_cast < uint32_t >( DAC.size () ), javaDAC);
240
257
241
258
jbyteArray javaPAI;
242
- JniReferences::GetInstance ().N2J_ByteArray (env, PAI.data (), PAI.size (), javaPAI);
259
+ JniReferences::GetInstance ().N2J_ByteArray (env, PAI.data (), static_cast < uint32_t >( PAI.size () ), javaPAI);
243
260
244
261
ByteSpan certificationDeclarationSpan;
245
262
ByteSpan attestationNonceSpan;
@@ -255,12 +272,16 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::CallbackGenerateNOCChain(const B
255
272
return err;
256
273
}
257
274
275
+ VerifyOrReturnError (CanCastTo<uint32_t >(certificationDeclarationSpan.size ()), CHIP_ERROR_INVALID_ARGUMENT);
276
+ VerifyOrReturnError (CanCastTo<uint32_t >(firmwareInfoSpan.size ()), CHIP_ERROR_INVALID_ARGUMENT);
277
+
258
278
jbyteArray javaCD;
259
- JniReferences::GetInstance ().N2J_ByteArray (env, certificationDeclarationSpan.data (), certificationDeclarationSpan. size (),
260
- javaCD);
279
+ JniReferences::GetInstance ().N2J_ByteArray (env, certificationDeclarationSpan.data (),
280
+ static_cast < uint32_t >(certificationDeclarationSpan. size ()), javaCD);
261
281
262
282
jbyteArray javaFirmwareInfo;
263
- JniReferences::GetInstance ().N2J_ByteArray (env, firmwareInfoSpan.data (), firmwareInfoSpan.size (), javaFirmwareInfo);
283
+ JniReferences::GetInstance ().N2J_ByteArray (env, firmwareInfoSpan.data (), static_cast <uint32_t >(firmwareInfoSpan.size ()),
284
+ javaFirmwareInfo);
264
285
265
286
jobject attestationInfo;
266
287
err = N2J_AttestationInfo (env, javaAttestationChallenge, javaAttestationNonce, javaAttestationElements,
@@ -305,6 +326,8 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::LocalGenerateNOCChain(const Byte
305
326
return err;
306
327
}
307
328
329
+ VerifyOrReturnError (CanCastTo<uint32_t >(csrElements.size ()), CHIP_ERROR_INVALID_ARGUMENT);
330
+
308
331
NodeId assignedId;
309
332
if (mNodeIdRequested )
310
333
{
@@ -374,7 +397,7 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::LocalGenerateNOCChain(const Byte
374
397
jbyteArray javaCsr;
375
398
JniReferences::GetInstance ().GetEnvForCurrentThread ()->ExceptionClear ();
376
399
JniReferences::GetInstance ().N2J_ByteArray (JniReferences::GetInstance ().GetEnvForCurrentThread (), csrElements.data (),
377
- csrElements.size (), javaCsr);
400
+ static_cast < uint32_t >( csrElements.size () ), javaCsr);
378
401
JniReferences::GetInstance ().GetEnvForCurrentThread ()->CallVoidMethod (mJavaObjectRef , method, javaCsr);
379
402
return CHIP_NO_ERROR;
380
403
}
0 commit comments