summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libvdpau/h264_parser.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libvdpau/h264_parser.c b/src/libvdpau/h264_parser.c
index 65ca7c85b..f3ee412d7 100644
--- a/src/libvdpau/h264_parser.c
+++ b/src/libvdpau/h264_parser.c
@@ -1031,6 +1031,14 @@ int parse_frame(struct nal_parser *parser, uint8_t *inbuf, int inbuf_len,
}
if (parser->last_nal_res != 2) {
+ if (parser->buf_len + parser->prebuf_len > MAX_FRAME_SIZE) {
+ printf("buf underrun!!\n");
+ parser->buf_len = 0;
+ *ret_len = 0;
+ *ret_buf = NULL;
+ return parsed_len;
+ }
+
/* this is a SLICE, keep it in the buffer */
xine_fast_memcpy(parser->buf + parser->buf_len, prebuf, parser->prebuf_len);
parser->buf_len += parser->prebuf_len;