Return BUFFER_E from DecodePolicyOID if XSNPRINTF indicates insufficient buffer space

This commit is contained in:
Guido Vranken
2021-06-14 03:55:13 +02:00
parent 8cb576009d
commit f163a4e18f

View File

@ -8871,8 +8871,10 @@ int DecodePolicyOID(char *out, word32 outSz, const byte *in, word32 inSz)
val = in[inIdx++]; val = in[inIdx++];
w = XSNPRINTF(out, outSz, "%u.%u", val / 40, val % 40); w = XSNPRINTF(out, outSz, "%u.%u", val / 40, val % 40);
if (w < 0) if (w < 0) {
w = BUFFER_E;
goto exit; goto exit;
}
outIdx += w; outIdx += w;
val = 0; val = 0;
@ -8887,8 +8889,10 @@ int DecodePolicyOID(char *out, word32 outSz, const byte *in, word32 inSz)
/* write val as text into out */ /* write val as text into out */
val += in[inIdx]; val += in[inIdx];
w = XSNPRINTF(out + outIdx, outSz - outIdx, ".%u", val); w = XSNPRINTF(out + outIdx, outSz - outIdx, ".%u", val);
if (w < 0 || (word32)w > outSz - outIdx) if (w < 0 || (word32)w > outSz - outIdx) {
w = BUFFER_E;
goto exit; goto exit;
}
outIdx += w; outIdx += w;
val = 0; val = 0;
} }