@@ -11433,6 +11433,9 @@ int wc_DhKeyDecode(const byte* input, word32* inOutIdx, DhKey* key, word32 inSz)
1143311433 if (inOutIdx == NULL)
1143411434 return BAD_FUNC_ARG;
1143511435
11436+ if (key == NULL)
11437+ return BAD_FUNC_ARG;
11438+
1143611439 if (GetSequence(input, inOutIdx, &length, inSz) < 0)
1143711440 return ASN_PARSE_E;
1143811441
@@ -11579,7 +11582,7 @@ int wc_DhKeyDecode(const byte* input, word32* inOutIdx, DhKey* key, word32 inSz)
1157911582#endif
1158011583 }
1158111584
11582- FREE_ASNGETDATA(dataASN, key->heap);
11585+ FREE_ASNGETDATA(dataASN, key != NULL ? key ->heap : NULL );
1158311586 return ret;
1158411587#endif /* WOLFSSL_ASN_TEMPLATE */
1158511588}
@@ -12331,7 +12334,7 @@ int wc_DsaPrivateKeyDecode(const byte* input, word32* inOutIdx, DsaKey* key,
1233112334 key->type = DSA_PRIVATE;
1233212335 }
1233312336
12334- FREE_ASNGETDATA(dataASN, key->heap);
12337+ FREE_ASNGETDATA(dataASN, key != NULL ? key ->heap : NULL );
1233512338 return ret;
1233612339#endif
1233712340}
@@ -12572,7 +12575,7 @@ int wc_SetDsaPublicKey(byte* output, DsaKey* key, int outLen, int with_header)
1257212575 ret = SetASN_Items(data, dataASN, count, output);
1257312576 }
1257412577
12575- FREE_ASNSETDATA(dataASN, key->heap);
12578+ FREE_ASNSETDATA(dataASN, key != NULL ? key ->heap : NULL );
1257612579 return ret;
1257712580#endif /* WOLFSSL_ASN_TEMPLATE */
1257812581}
@@ -28474,7 +28477,7 @@ static int SetRsaPublicKey(byte* output, RsaKey* key, int outLen,
2847428477 ret = sz;
2847528478 }
2847628479
28477- FREE_ASNSETDATA(dataASN, key->heap);
28480+ FREE_ASNSETDATA(dataASN, key != NULL ? key ->heap : NULL );
2847828481 return ret;
2847928482#endif /* WOLFSSL_ASN_TEMPLATE */
2848028483}
@@ -28689,7 +28692,7 @@ int wc_RsaKeyToDer(RsaKey* key, byte* output, word32 inLen)
2868928692 ret = sz;
2869028693 }
2869128694
28692- FREE_ASNSETDATA(dataASN, key->heap);
28695+ FREE_ASNSETDATA(dataASN, key != NULL ? key ->heap : NULL );
2869328696 return ret;
2869428697#endif
2869528698}
0 commit comments