diff options
author | Julian Scheel <julian@jusst.de> | 2008-12-13 12:24:38 +0000 |
---|---|---|
committer | Julian Scheel <julian@jusst.de> | 2008-12-13 12:24:38 +0000 |
commit | b5c69144556a437103ef363ebb398864e86dd3a0 (patch) | |
tree | ce6aa6aba11e891fe9ed16e668d4051a1f168690 /src | |
parent | f568815dd336855ddb9f5a8d84cee981197304f9 (diff) | |
download | xine-lib-b5c69144556a437103ef363ebb398864e86dd3a0.tar.gz xine-lib-b5c69144556a437103ef363ebb398864e86dd3a0.tar.bz2 |
Fix possible segfault on buffer underrun.
Diffstat (limited to 'src')
-rw-r--r-- | src/libvdpau/h264_parser.c | 8 |
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; |