[FFmpeg-cvslog] hevc: Search start code in decode_nal_units().
Yusuke Nakamura
git at videolan.org
Sun Oct 27 11:45:43 CET 2013
ffmpeg | branch: master | Yusuke Nakamura <muken.the.vfrmaniac at gmail.com> | Mon Oct 21 02:36:51 2013 +0900| [f7f88018393b96ae410041e9a0fc51f4c082002e] | committer: Mickaël Raulet
hevc: Search start code in decode_nal_units().
User may cut off a weird position and send a packet from there.
This avoids returning as invalid data immediately.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f7f88018393b96ae410041e9a0fc51f4c082002e
---
libavcodec/hevc.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
index a395bc9..9a88867 100644
--- a/libavcodec/hevc.c
+++ b/libavcodec/hevc.c
@@ -2325,14 +2325,15 @@ static int decode_nal_units(HEVCContext *s, const uint8_t *buf, int length)
goto fail;
}
} else {
- if (buf[2] == 0) {
- length--;
- buf++;
- continue;
- }
- if (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) {
- ret = AVERROR_INVALIDDATA;
- goto fail;
+ /* search start code */
+ while (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) {
+ ++buf;
+ --length;
+ if (length < 4) {
+ av_log(s->avctx, AV_LOG_ERROR, "No start code is found.\n");
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
}
buf += 3;
More information about the ffmpeg-cvslog
mailing list