diff --git a/apps/codecs/libasf/asf.c b/apps/codecs/libasf/asf.c index ce416689da..a7e4bca307 100644 --- a/apps/codecs/libasf/asf.c +++ b/apps/codecs/libasf/asf.c @@ -191,7 +191,8 @@ int asf_read_packet(uint8_t** audiobuf, int* audiobufsize, int* packetlength, buf = ci->request_buffer(&bufsize, length); datap = buf; - if (bufsize > length) { +#define ASF_MAX_REQUEST (1L<<15) /* 32KB */ + if (bufsize != length && length >= ASF_MAX_REQUEST) { /* This should only happen with packets larger than 32KB (the guard buffer size). All the streams I've seen have relatively small packets less than about 8KB), but I don't