[FFmpeg-cvslog] nutdec: stop skipping bytes at EOF

2015-07-20 Thread Andreas Cadhalpun
ffmpeg | branch: release/2.6 | Andreas Cadhalpun 
andreas.cadhal...@googlemail.com | Wed May 20 00:31:24 2015 +0200| 
[9c3d306ba43747e17d93504b08127b94fcb31f73] | committer: Michael Niedermayer

nutdec: stop skipping bytes at EOF

This can unnecessarily waste a lot of time.

Reviewed-by: Michael Niedermayer michae...@gmx.at
Signed-off-by: Andreas Cadhalpun andreas.cadhal...@googlemail.com
(cherry picked from commit fa7dec8cb00d2d0dd96ff9863ccda38428610a21)

Signed-off-by: Michael Niedermayer michae...@gmx.at

 http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9c3d306ba43747e17d93504b08127b94fcb31f73
---

 libavformat/nutdec.c |   21 ++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
index eb86c2d..cb0764a 100644
--- a/libavformat/nutdec.c
+++ b/libavformat/nutdec.c
@@ -47,6 +47,8 @@ static int get_str(AVIOContext *bc, char *string, unsigned 
int maxlen)
 while (len  maxlen) {
 avio_r8(bc);
 len--;
+if (bc-eof_reached)
+len = maxlen;
 }
 
 if (maxlen)
@@ -213,8 +215,11 @@ static int skip_reserved(AVIOContext *bc, int64_t pos)
 avio_seek(bc, pos, SEEK_CUR);
 return AVERROR_INVALIDDATA;
 } else {
-while (pos--)
+while (pos--) {
+if (bc-eof_reached)
+return AVERROR_INVALIDDATA;
 avio_r8(bc);
+}
 return 0;
 }
 }
@@ -293,8 +298,13 @@ static int decode_main_header(NUTContext *nut)
 if (tmp_fields  7)
 tmp_head_idx = ffio_read_varlen(bc);
 
-while (tmp_fields--  8)
+while (tmp_fields--  8) {
+if (bc-eof_reached) {
+av_log(s, AV_LOG_ERROR, reached EOF while decoding main 
header\n);
+return AVERROR_INVALIDDATA;
+}
 ffio_read_varlen(bc);
+}
 
 if (count = 0 || count  256 - (i = 'N') - i) {
 av_log(s, AV_LOG_ERROR, illegal count %d at %d\n, count, i);
@@ -985,8 +995,13 @@ static int decode_frame_header(NUTContext *nut, int64_t 
*pts, int *stream_id,
 *header_idx = ffio_read_varlen(bc);
 if (flags  FLAG_RESERVED)
 reserved_count = ffio_read_varlen(bc);
-for (i = 0; i  reserved_count; i++)
+for (i = 0; i  reserved_count; i++) {
+if (bc-eof_reached) {
+av_log(s, AV_LOG_ERROR, reached EOF while decoding frame 
header\n);
+return AVERROR_INVALIDDATA;
+}
 ffio_read_varlen(bc);
+}
 
 if (*header_idx = (unsigned)nut-header_count) {
 av_log(s, AV_LOG_ERROR, header_idx invalid\n);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] nutdec: stop skipping bytes at EOF

2015-06-01 Thread Andreas Cadhalpun
ffmpeg | branch: release/2.4 | Andreas Cadhalpun 
andreas.cadhal...@googlemail.com | Wed May 20 00:31:24 2015 +0200| 
[b947ff898596558c64e4b72657860ed2b57f58fd] | committer: Michael Niedermayer

nutdec: stop skipping bytes at EOF

This can unnecessarily waste a lot of time.

Reviewed-by: Michael Niedermayer michae...@gmx.at
Signed-off-by: Andreas Cadhalpun andreas.cadhal...@googlemail.com
(cherry picked from commit fa7dec8cb00d2d0dd96ff9863ccda38428610a21)

Signed-off-by: Michael Niedermayer michae...@gmx.at

 http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b947ff898596558c64e4b72657860ed2b57f58fd
---

 libavformat/nutdec.c |   21 ++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
index 3fdbd72..59d88db 100644
--- a/libavformat/nutdec.c
+++ b/libavformat/nutdec.c
@@ -47,6 +47,8 @@ static int get_str(AVIOContext *bc, char *string, unsigned 
int maxlen)
 while (len  maxlen) {
 avio_r8(bc);
 len--;
+if (bc-eof_reached)
+len = maxlen;
 }
 
 if (maxlen)
@@ -213,8 +215,11 @@ static int skip_reserved(AVIOContext *bc, int64_t pos)
 avio_seek(bc, pos, SEEK_CUR);
 return AVERROR_INVALIDDATA;
 } else {
-while (pos--)
+while (pos--) {
+if (bc-eof_reached)
+return AVERROR_INVALIDDATA;
 avio_r8(bc);
+}
 return 0;
 }
 }
@@ -293,8 +298,13 @@ static int decode_main_header(NUTContext *nut)
 if (tmp_fields  7)
 tmp_head_idx = ffio_read_varlen(bc);
 
-while (tmp_fields--  8)
+while (tmp_fields--  8) {
+if (bc-eof_reached) {
+av_log(s, AV_LOG_ERROR, reached EOF while decoding main 
header\n);
+return AVERROR_INVALIDDATA;
+}
 ffio_read_varlen(bc);
+}
 
 if (count == 0 || i + count  256) {
 av_log(s, AV_LOG_ERROR, illegal count %d at %d\n, count, i);
@@ -995,8 +1005,13 @@ static int decode_frame_header(NUTContext *nut, int64_t 
*pts, int *stream_id,
 *header_idx = ffio_read_varlen(bc);
 if (flags  FLAG_RESERVED)
 reserved_count = ffio_read_varlen(bc);
-for (i = 0; i  reserved_count; i++)
+for (i = 0; i  reserved_count; i++) {
+if (bc-eof_reached) {
+av_log(s, AV_LOG_ERROR, reached EOF while decoding frame 
header\n);
+return AVERROR_INVALIDDATA;
+}
 ffio_read_varlen(bc);
+}
 
 if (*header_idx = (unsigned)nut-header_count) {
 av_log(s, AV_LOG_ERROR, header_idx invalid\n);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] nutdec: stop skipping bytes at EOF

2015-05-20 Thread Andreas Cadhalpun
ffmpeg | branch: master | Andreas Cadhalpun andreas.cadhal...@googlemail.com 
| Wed May 20 00:31:24 2015 +0200| [fa7dec8cb00d2d0dd96ff9863ccda38428610a21] | 
committer: Andreas Cadhalpun

nutdec: stop skipping bytes at EOF

This can unnecessarily waste a lot of time.

Reviewed-by: Michael Niedermayer michae...@gmx.at
Signed-off-by: Andreas Cadhalpun andreas.cadhal...@googlemail.com

 http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fa7dec8cb00d2d0dd96ff9863ccda38428610a21
---

 libavformat/nutdec.c |   21 ++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
index 6742ee9..8994a91 100644
--- a/libavformat/nutdec.c
+++ b/libavformat/nutdec.c
@@ -47,6 +47,8 @@ static int get_str(AVIOContext *bc, char *string, unsigned 
int maxlen)
 while (len  maxlen) {
 avio_r8(bc);
 len--;
+if (bc-eof_reached)
+len = maxlen;
 }
 
 if (maxlen)
@@ -213,8 +215,11 @@ static int skip_reserved(AVIOContext *bc, int64_t pos)
 avio_seek(bc, pos, SEEK_CUR);
 return AVERROR_INVALIDDATA;
 } else {
-while (pos--)
+while (pos--) {
+if (bc-eof_reached)
+return AVERROR_INVALIDDATA;
 avio_r8(bc);
+}
 return 0;
 }
 }
@@ -293,8 +298,13 @@ static int decode_main_header(NUTContext *nut)
 if (tmp_fields  7)
 tmp_head_idx = ffio_read_varlen(bc);
 
-while (tmp_fields--  8)
+while (tmp_fields--  8) {
+if (bc-eof_reached) {
+av_log(s, AV_LOG_ERROR, reached EOF while decoding main 
header\n);
+return AVERROR_INVALIDDATA;
+}
 ffio_read_varlen(bc);
+}
 
 if (count = 0 || count  256 - (i = 'N') - i) {
 av_log(s, AV_LOG_ERROR, illegal count %d at %d\n, count, i);
@@ -992,8 +1002,13 @@ static int decode_frame_header(NUTContext *nut, int64_t 
*pts, int *stream_id,
 *header_idx = ffio_read_varlen(bc);
 if (flags  FLAG_RESERVED)
 reserved_count = ffio_read_varlen(bc);
-for (i = 0; i  reserved_count; i++)
+for (i = 0; i  reserved_count; i++) {
+if (bc-eof_reached) {
+av_log(s, AV_LOG_ERROR, reached EOF while decoding frame 
header\n);
+return AVERROR_INVALIDDATA;
+}
 ffio_read_varlen(bc);
+}
 
 if (*header_idx = (unsigned)nut-header_count) {
 av_log(s, AV_LOG_ERROR, header_idx invalid\n);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog