mirror of https://git.ffmpeg.org/ffmpeg.git
avio: Check for invalid buffer length.
This commit is contained in:
parent
5a9ee3152b
commit
ab2940691b
|
@ -769,12 +769,13 @@ int avio_get_str(AVIOContext *s, int maxlen, char *buf, int buflen)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (buflen <= 0)
|
||||||
|
return AVERROR(EINVAL);
|
||||||
// reserve 1 byte for terminating 0
|
// reserve 1 byte for terminating 0
|
||||||
buflen = FFMIN(buflen - 1, maxlen);
|
buflen = FFMIN(buflen - 1, maxlen);
|
||||||
for (i = 0; i < buflen; i++)
|
for (i = 0; i < buflen; i++)
|
||||||
if (!(buf[i] = avio_r8(s)))
|
if (!(buf[i] = avio_r8(s)))
|
||||||
return i + 1;
|
return i + 1;
|
||||||
if (buflen)
|
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
for (; i < maxlen; i++)
|
for (; i < maxlen; i++)
|
||||||
if (!avio_r8(s))
|
if (!avio_r8(s))
|
||||||
|
@ -787,6 +788,8 @@ int avio_get_str(AVIOContext *s, int maxlen, char *buf, int buflen)
|
||||||
{\
|
{\
|
||||||
char* q = buf;\
|
char* q = buf;\
|
||||||
int ret = 0;\
|
int ret = 0;\
|
||||||
|
if (buflen <= 0) \
|
||||||
|
return AVERROR(EINVAL); \
|
||||||
while (ret + 1 < maxlen) {\
|
while (ret + 1 < maxlen) {\
|
||||||
uint8_t tmp;\
|
uint8_t tmp;\
|
||||||
uint32_t ch;\
|
uint32_t ch;\
|
||||||
|
|
Loading…
Reference in New Issue