@@ -21417,6 +21417,7 @@ static int CheckCertSignature_ex(const byte* cert, word32 certSz, void* heap,
2141721417 /* Parse certificate request. */
2141821418 ret = GetASN_Items(certReqASN, dataASN, certReqASN_Length, 1, cert,
2141921419 &idx, certSz);
21420+
2142021421 if (ret == 0) {
2142121422 /* Store the data for verification in the certificate. */
2142221423 tbs = GetASNItem_Addr(dataASN[CERTREQASN_IDX_INFO_SEQ], cert);
@@ -21427,11 +21428,14 @@ static int CheckCertSignature_ex(const byte* cert, word32 certSz, void* heap,
2142721428 dataASN[CERTREQASN_IDX_INFO_SUBJ_SEQ], cert);
2142821429 sigOID = dataASN[CERTREQASN_IDX_INFO_SIGALGO_OID].data.oid.sum;
2142921430 #ifdef WC_RSA_PSS
21430- sigParams = GetASNItem_Addr(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21431- cert);
21432- sigParamsSz =
21433- GetASNItem_Length(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21434- cert);
21431+ if (GetASNItem_HaveData(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS])) {
21432+ sigParams =
21433+ GetASNItem_Addr(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21434+ cert);
21435+ sigParamsSz =
21436+ GetASNItem_Length(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21437+ cert);
21438+ }
2143521439 #endif
2143621440 GetASN_GetConstRef(&dataASN[CERTREQASN_IDX_INFO_SIGNATURE], &sig,
2143721441 &sigSz);
@@ -34360,7 +34364,7 @@ int ParseCRL(RevokedCert* rcert, DecodedCRL* dcrl, const byte* buff, word32 sz,
3436034364 GetASNItem_DataIdx(dataASN[CRLASN_IDX_TBS_REVOKEDCERTS], buff),
3436134365 GetASNItem_EndIdx(dataASN[CRLASN_IDX_TBS_REVOKEDCERTS], buff));
3436234366 }
34363- if (ret == 0) {
34367+ if (( ret == 0) && GetASNItem_HaveIdx(dataASN[CRLASN_IDX_TBS_EXT_SEQ]) ) {
3436434368 /* Parse the extensions - starting after SEQUENCE OF. */
3436534369 ret = ParseCRL_Extensions(dcrl, buff,
3436634370 GetASNItem_DataIdx(dataASN[CRLASN_IDX_TBS_EXT_SEQ], buff),
0 commit comments