Merge pull request #4094 from guidovranken/DecodePolicyOID-XSNPRINTF

Improve checking of XSNPRINTF return value in DecodePolicyOID
This commit is contained in:
JacobBarthelmeh
2021-06-14 19:58:09 +07:00
committed by GitHub

View File

@@ -9153,8 +9153,10 @@ int DecodePolicyOID(char *out, word32 outSz, const byte *in, word32 inSz)
val = in[inIdx++];
w = XSNPRINTF(out, outSz, "%u.%u", val / 40, val % 40);
if (w < 0)
if (w < 0) {
w = BUFFER_E;
goto exit;
}
outIdx += w;
val = 0;
@@ -9169,8 +9171,10 @@ int DecodePolicyOID(char *out, word32 outSz, const byte *in, word32 inSz)
/* write val as text into out */
val += in[inIdx];
w = XSNPRINTF(out + outIdx, outSz - outIdx, ".%u", val);
if (w < 0)
if (w < 0 || (word32)w > outSz - outIdx) {
w = BUFFER_E;
goto exit;
}
outIdx += w;
val = 0;
}
@@ -16023,7 +16027,7 @@ int EncodePolicyOID(byte *out, word32 *outSz, const char *in, void* heap)
oid[i++] = (byte) (((tb++) ? 0x80 : 0) | x);
}
if ((idx+(word32)i) > *outSz) {
if ((idx+(word32)i) >= *outSz) {
XFREE(str, heap, DYNAMIC_TYPE_TMP_BUFFER);
return BUFFER_E;
}