diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index ed698f32d..c9ad3fec6 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -7792,7 +7792,7 @@ int DecodePolicyOID(char *out, word32 outSz, const byte *in, word32 inSz) outIdx += w; val = 0; - do { + while (inIdx < inSz && outIdx < outSz) { /* extract the next OID digit from in to val */ /* first bit is used to set if value is coded on 1 or multiple bytes */ if (in[inIdx] & 0x80) { @@ -7809,7 +7809,9 @@ int DecodePolicyOID(char *out, word32 outSz, const byte *in, word32 inSz) val = 0; } inIdx++; - } while (inIdx < inSz); + } + if (outIdx == outSz) + outIdx--; out[outIdx] = 0; w = (int)outIdx;