forked from wolfSSL/wolfssl
Merge pull request #4094 from guidovranken/DecodePolicyOID-XSNPRINTF
Improve checking of XSNPRINTF return value in DecodePolicyOID
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user