Skip to content

Commit 986549a

Browse files
committed
Check wc_InitRng and key init in examples
1 parent 416c74b commit 986549a

2 files changed

Lines changed: 66 additions & 12 deletions

File tree

native/com_wolfssl_WolfCryptECC.c

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptECC_doSign
9393
jlongArray outSz, jobject keyDer, jlong keySz)
9494
{
9595
int ret;
96+
int rngInit = 0;
97+
int keyInit = 0;
9698
WC_RNG rng;
9799
ecc_key myKey;
98100
unsigned int tmpOut;
@@ -130,8 +132,20 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptECC_doSign
130132
(*jenv)->GetLongArrayRegion(jenv, outSz, 0, 1, &tmp);
131133
tmpOut = (unsigned int)tmp;
132134

133-
wc_InitRng(&rng);
134-
wc_ecc_init(&myKey);
135+
ret = wc_InitRng(&rng);
136+
if (ret != 0) {
137+
printf("wc_InitRng failed, ret = %d\n", ret);
138+
return ret;
139+
}
140+
rngInit = 1;
141+
142+
ret = wc_ecc_init(&myKey);
143+
if (ret != 0) {
144+
printf("wc_ecc_init failed, ret = %d\n", ret);
145+
wc_FreeRng(&rng);
146+
return ret;
147+
}
148+
keyInit = 1;
135149

136150
ret = wc_EccPrivateKeyDecode(keyBuf, &idx, &myKey, (long)keySz);
137151
if (ret == 0) {
@@ -144,8 +158,12 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptECC_doSign
144158
printf("wc_EccPrivateKeyDecode failed, ret = %d\n", ret);
145159
}
146160

147-
wc_ecc_free(&myKey);
148-
wc_FreeRng(&rng);
161+
if (keyInit) {
162+
wc_ecc_free(&myKey);
163+
}
164+
if (rngInit) {
165+
wc_FreeRng(&rng);
166+
}
149167

150168
if (ret == 0) {
151169
tmp = (jlong)tmpOut;

native/com_wolfssl_WolfCryptRSA.c

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptRSA_doSign
3636
jintArray outSz, jobject keyDer, jlong keySz)
3737
{
3838
int ret;
39+
int rngInit = 0;
40+
int keyInit = 0;
3941
WC_RNG rng;
4042
RsaKey myKey;
4143
unsigned int idx;
@@ -72,8 +74,20 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptRSA_doSign
7274
/* get output buffer size */
7375
(*jenv)->GetIntArrayRegion(jenv, outSz, 0, 1, (jint*)&tmpOut);
7476

75-
wc_InitRng(&rng);
76-
wc_InitRsaKey(&myKey, NULL);
77+
ret = wc_InitRng(&rng);
78+
if (ret != 0) {
79+
printf("wc_InitRng failed, ret = %d\n", ret);
80+
return ret;
81+
}
82+
rngInit = 1;
83+
84+
ret = wc_InitRsaKey(&myKey, NULL);
85+
if (ret != 0) {
86+
printf("wc_InitRsaKey failed, ret = %d\n", ret);
87+
wc_FreeRng(&rng);
88+
return ret;
89+
}
90+
keyInit = 1;
7791

7892
idx = 0;
7993

@@ -91,8 +105,12 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptRSA_doSign
91105
printf("wc_RsaPrivateKeyDecode failed, ret = %d\n", ret);
92106
}
93107

94-
wc_FreeRsaKey(&myKey);
95-
wc_FreeRng(&rng);
108+
if (keyInit) {
109+
wc_FreeRsaKey(&myKey);
110+
}
111+
if (rngInit) {
112+
wc_FreeRng(&rng);
113+
}
96114

97115
return ret;
98116
}
@@ -157,6 +175,8 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptRSA_doEnc
157175
jintArray outSz, jobject keyDer, jlong keySz)
158176
{
159177
int ret;
178+
int rngInit = 0;
179+
int keyInit = 0;
160180
RsaKey myKey;
161181
WC_RNG rng;
162182
unsigned int idx;
@@ -193,8 +213,20 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptRSA_doEnc
193213
/* get output buffer size */
194214
(*jenv)->GetIntArrayRegion(jenv, outSz, 0, 1, (jint*)&tmpOut);
195215

196-
wc_InitRng(&rng);
197-
wc_InitRsaKey(&myKey, NULL);
216+
ret = wc_InitRng(&rng);
217+
if (ret != 0) {
218+
printf("wc_InitRng failed, ret = %d\n", ret);
219+
return ret;
220+
}
221+
rngInit = 1;
222+
223+
ret = wc_InitRsaKey(&myKey, NULL);
224+
if (ret != 0) {
225+
printf("wc_InitRsaKey failed, ret = %d\n", ret);
226+
wc_FreeRng(&rng);
227+
return ret;
228+
}
229+
keyInit = 1;
198230

199231
idx = 0;
200232

@@ -211,8 +243,12 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfCryptRSA_doEnc
211243
printf("wc_RsaPublicKeyDecode failed, ret = %d\n", ret);
212244
}
213245

214-
wc_FreeRsaKey(&myKey);
215-
wc_FreeRng(&rng);
246+
if (keyInit) {
247+
wc_FreeRsaKey(&myKey);
248+
}
249+
if (rngInit) {
250+
wc_FreeRng(&rng);
251+
}
216252

217253
return ret;
218254
}

0 commit comments

Comments
 (0)