Skip to content

Commit 7edf7f3

Browse files
committed
JNI: add NULL checks before ed25519 key dereference in export functions
1 parent ae76530 commit 7edf7f3

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

jni/jni_ed25519.c

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,11 @@ Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1export_1private(
303303
return NULL;
304304
}
305305

306+
if (ed25519 == NULL) {
307+
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
308+
return NULL;
309+
}
310+
306311
outputSz = 2 * wc_ed25519_priv_size(ed25519); /* Export private + public */
307312

308313
output = XMALLOC(outputSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
@@ -312,9 +317,7 @@ Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1export_1private(
312317
}
313318
XMEMSET(output, 0, outputSz);
314319

315-
ret = (!ed25519)
316-
? BAD_FUNC_ARG
317-
: wc_ed25519_export_private(ed25519, output, &outputSz);
320+
ret = wc_ed25519_export_private(ed25519, output, &outputSz);
318321

319322
if (ret == 0) {
320323
result = (*env)->NewByteArray(env, outputSz);
@@ -359,6 +362,11 @@ Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1export_1private_1only(
359362
return NULL;
360363
}
361364

365+
if (ed25519 == NULL) {
366+
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
367+
return NULL;
368+
}
369+
362370
outputSz = wc_ed25519_size(ed25519);
363371

364372
output = XMALLOC(outputSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
@@ -368,9 +376,7 @@ Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1export_1private_1only(
368376
}
369377
XMEMSET(output, 0, outputSz);
370378

371-
ret = (!ed25519)
372-
? BAD_FUNC_ARG
373-
: wc_ed25519_export_private_only(ed25519, output, &outputSz);
379+
ret = wc_ed25519_export_private_only(ed25519, output, &outputSz);
374380

375381
if (ret == 0) {
376382
result = (*env)->NewByteArray(env, outputSz);
@@ -415,6 +421,11 @@ Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1export_1public(
415421
return NULL;
416422
}
417423

424+
if (ed25519 == NULL) {
425+
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
426+
return NULL;
427+
}
428+
418429
outputSz = wc_ed25519_size(ed25519);
419430

420431
output = XMALLOC(outputSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
@@ -424,9 +435,7 @@ Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1export_1public(
424435
}
425436
XMEMSET(output, 0, outputSz);
426437

427-
ret = (!ed25519)
428-
? BAD_FUNC_ARG
429-
: wc_ed25519_export_public(ed25519, output, &outputSz);
438+
ret = wc_ed25519_export_public(ed25519, output, &outputSz);
430439

431440
if (ret == 0) {
432441
result = (*env)->NewByteArray(env, outputSz);

0 commit comments

Comments
 (0)