@@ -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