[FFmpeg-cvslog] swscale/utils: reindent

2020-06-14 Thread Limin Wang
ffmpeg | branch: master | Limin Wang  | Sat Jun 13 
07:29:43 2020 +0800| [8efecc9063fd89184a51381074e5a6e6564e0608] | committer: 
Limin Wang

swscale/utils: reindent

Reviewed-by: Michael Niedermayer 
Signed-off-by: Limin Wang 

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

 libswscale/utils.c | 71 +++---
 1 file changed, 36 insertions(+), 35 deletions(-)

diff --git a/libswscale/utils.c b/libswscale/utils.c
index ff99e79e0a..6e218ba067 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -1575,41 +1575,42 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 if (CONFIG_SWSCALE_ALPHA && isALPHA(srcFormat) && !isALPHA(dstFormat)) {
 enum AVPixelFormat tmpFormat = alphaless_fmt(srcFormat);
 
-if (tmpFormat != AV_PIX_FMT_NONE && c->alphablend != 
SWS_ALPHA_BLEND_NONE)
-if (!unscaled ||
-dstFormat != tmpFormat ||
-usesHFilter || usesVFilter ||
-c->srcRange != c->dstRange
-) {
-c->cascaded_mainindex = 1;
-ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride,
-srcW, srcH, tmpFormat, 64);
-if (ret < 0)
-return ret;
-
-c->cascaded_context[0] = sws_alloc_set_opts(srcW, srcH, srcFormat,
-srcW, srcH, tmpFormat,
-flags, c->param);
-if (!c->cascaded_context[0])
-return -1;
-c->cascaded_context[0]->alphablend = c->alphablend;
-ret = sws_init_context(c->cascaded_context[0], NULL , NULL);
-if (ret < 0)
-return ret;
-
-c->cascaded_context[1] = sws_alloc_set_opts(srcW, srcH, tmpFormat,
-dstW, dstH, dstFormat,
-flags, c->param);
-if (!c->cascaded_context[1])
-return -1;
-
-c->cascaded_context[1]->srcRange = c->srcRange;
-c->cascaded_context[1]->dstRange = c->dstRange;
-ret = sws_init_context(c->cascaded_context[1], srcFilter , 
dstFilter);
-if (ret < 0)
-return ret;
-
-return 0;
+if (tmpFormat != AV_PIX_FMT_NONE && c->alphablend != 
SWS_ALPHA_BLEND_NONE) {
+if (!unscaled ||
+dstFormat != tmpFormat ||
+usesHFilter || usesVFilter ||
+c->srcRange != c->dstRange
+) {
+c->cascaded_mainindex = 1;
+ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride,
+ srcW, srcH, tmpFormat, 64);
+if (ret < 0)
+return ret;
+
+c->cascaded_context[0] = sws_alloc_set_opts(srcW, srcH, 
srcFormat,
+srcW, srcH, 
tmpFormat,
+flags, c->param);
+if (!c->cascaded_context[0])
+return -1;
+c->cascaded_context[0]->alphablend = c->alphablend;
+ret = sws_init_context(c->cascaded_context[0], NULL , NULL);
+if (ret < 0)
+return ret;
+
+c->cascaded_context[1] = sws_alloc_set_opts(srcW, srcH, 
tmpFormat,
+dstW, dstH, 
dstFormat,
+flags, c->param);
+if (!c->cascaded_context[1])
+return -1;
+
+c->cascaded_context[1]->srcRange = c->srcRange;
+c->cascaded_context[1]->dstRange = c->dstRange;
+ret = sws_init_context(c->cascaded_context[1], srcFilter , 
dstFilter);
+if (ret < 0)
+return ret;
+
+return 0;
+}
 }
 }
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] swscale/utils: return better error code from initFilter()

2020-06-14 Thread Limin Wang
ffmpeg | branch: master | Limin Wang  | Sat Jun 13 
13:52:20 2020 +0800| [67a07dc778107b7001cc1edd1693d72701c0d593] | committer: 
Limin Wang

swscale/utils: return better error code from initFilter()

Reviewed-by: Michael Niedermayer 
Signed-off-by: Limin Wang 

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

 libswscale/utils.c | 27 ++-
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/libswscale/utils.c b/libswscale/utils.c
index 6e218ba067..dcd1dbaa76 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -612,7 +612,7 @@ static av_cold int initFilter(int16_t **outFilter, int32_t 
**filterPos,
 av_assert0(filterSize > 0);
 filter = av_malloc_array(dstW, filterSize * sizeof(*filter));
 if (!filter)
-goto fail;
+goto nomem;
 if (filterSize >= MAX_FILTER_SIZE * 16 /
   ((flags & SWS_ACCURATE_RND) ? APCK_SIZE : 16)) {
 ret = RETCODE_USE_CASCADE;
@@ -1491,7 +1491,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 srcW, srcH, tmpFmt,
 flags, NULL, NULL, c->param);
 if (!c->cascaded_context[0]) {
-return -1;
+return AVERROR(ENOMEM);
 }
 
 c->cascaded_context[1] = sws_getContext(srcW, srcH, tmpFmt,
@@ -1499,7 +1499,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 flags, srcFilter, dstFilter, 
c->param);
 
 if (!c->cascaded_context[1])
-return -1;
+return AVERROR(ENOMEM);
 
 c2 = c->cascaded_context[1];
 c2->is_internal_gamma = 1;
@@ -1512,10 +1512,10 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 // to properly create the gamma convert FilterDescriptor
 // we have to re-initialize it
 ff_free_filters(c2);
-if (ff_init_filters(c2) < 0) {
+if ((ret = ff_init_filters(c2)) < 0) {
 sws_freeContext(c2);
 c->cascaded_context[1] = NULL;
-return -1;
+return ret;
 }
 
 c->cascaded_context[2] = NULL;
@@ -1529,7 +1529,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 dstW, dstH, dstFormat,
 flags, NULL, NULL, c->param);
 if (!c->cascaded_context[2])
-return -1;
+return AVERROR(ENOMEM);
 }
 return 0;
 }
@@ -1548,13 +1548,13 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 srcW, srcH, tmpFormat,
 flags, srcFilter, NULL, 
c->param);
 if (!c->cascaded_context[0])
-return -1;
+return AVERROR(ENOMEM);
 
 c->cascaded_context[1] = sws_getContext(srcW, srcH, tmpFormat,
 dstW, dstH, dstFormat,
 flags, NULL, dstFilter, 
c->param);
 if (!c->cascaded_context[1])
-return -1;
+return AVERROR(ENOMEM);
 return 0;
 }
 }
@@ -1591,7 +1591,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 srcW, srcH, 
tmpFormat,
 flags, c->param);
 if (!c->cascaded_context[0])
-return -1;
+return AVERROR(EINVAL);
 c->cascaded_context[0]->alphablend = c->alphablend;
 ret = sws_init_context(c->cascaded_context[0], NULL , NULL);
 if (ret < 0)
@@ -1601,7 +1601,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 dstW, dstH, 
dstFormat,
 flags, c->param);
 if (!c->cascaded_context[1])
-return -1;
+return AVERROR(EINVAL);
 
 c->cascaded_context[1]->srcRange = c->srcRange;
 c->cascaded_context[1]->dstRange = c->dstRange;
@@ -1678,6 +1678,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
 if (   mprotect(c->lumMmxextFilterCode, 
c->lumMmxextFilterCodeSize, PROT_EXEC | PROT_READ) == -1
 || mprotect(c->chrMmxextFilterCode, 
c->chrMmxextFilterCodeSize, PROT_EXEC | PROT_READ) == -1) {
 av_log(c, AV_LOG_ERROR, "mprotect failed, cannot use fast 
bilinear scaler\n");
+ret = AVERROR(EINVAL);
 goto fail;
 }
 #en

[FFmpeg-cvslog] avcodec/smvjpegdec: remove uninitialized ret

2020-06-14 Thread Limin Wang
ffmpeg | branch: master | Limin Wang  | Sat Jun 13 
07:50:22 2020 +0800| [01be03a4a0a81464aac1741bd393c09aaa8cc0e5] | committer: 
Limin Wang

avcodec/smvjpegdec: remove uninitialized ret

Signed-off-by: Limin Wang 

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

 libavcodec/smvjpegdec.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavcodec/smvjpegdec.c b/libavcodec/smvjpegdec.c
index 209f3ff334..973a9117f2 100644
--- a/libavcodec/smvjpegdec.c
+++ b/libavcodec/smvjpegdec.c
@@ -79,13 +79,12 @@ static av_cold int smvjpeg_decode_end(AVCodecContext *avctx)
 {
 SMVJpegDecodeContext *s = avctx->priv_data;
 MJpegDecodeContext *jpg = &s->jpg;
-int ret;
 
 jpg->picture_ptr = NULL;
 av_frame_free(&s->picture[0]);
 av_frame_free(&s->picture[1]);
 avcodec_free_context(&s->avctx);
-return ret;
+return 0;
 }
 
 static av_cold int smvjpeg_decode_init(AVCodecContext *avctx)

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mpegvideo: remove extra space

2020-06-14 Thread Limin Wang
ffmpeg | branch: master | Limin Wang  | Sat Jun 13 
07:47:13 2020 +0800| [9bb46cf100be0229eca869a424c6af74306f337f] | committer: 
Limin Wang

avcodec/mpegvideo: remove extra space

Reviewed-by: Michael Niedermayer 
Signed-off-by: Limin Wang 

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

 libavcodec/mpegvideo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 52a0ec371b..c28d1adef7 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -1112,7 +1112,7 @@ void ff_mpv_common_end(MpegEncContext *s)
 int i;
 
 if (!s)
-return ;
+return;
 
 if (s->slice_context_count > 1) {
 for (i = 0; i < s->slice_context_count; i++) {

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] swscale: make yuv2interleavedX more asm-friendly

2020-06-14 Thread Nelson Gomez
ffmpeg | branch: master | Nelson Gomez  | Sat Apr 
25 19:37:01 2020 -0700| [7c39c3c1a6f35a6b47970417b1e273141eadb856] | committer: 
Josh de Kock

swscale: make yuv2interleavedX more asm-friendly

Extracting information from SwsContext in assembly is difficult, and
rearranging SwsContext just for asm access didn't look good. These
functions only need a couple of fields from it anyway, so just make
them parameters in their own right.

Signed-off-by: Nelson Gomez 

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

 libswscale/output.c   | 12 +---
 libswscale/swscale_internal.h |  5 +++--
 libswscale/vscale.c   |  2 +-
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/libswscale/output.c b/libswscale/output.c
index 257b07abbc..8903cf79b2 100644
--- a/libswscale/output.c
+++ b/libswscale/output.c
@@ -180,7 +180,7 @@ yuv2planeX_16_c_template(const int16_t *filter, int 
filterSize,
 }
 }
 
-static void yuv2p016cX_c(SwsContext *c, const int16_t *chrFilter, int 
chrFilterSize,
+static void yuv2p016cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither, const int16_t *chrFilter, int chrFilterSize,
  const int16_t **chrUSrc, const int16_t **chrVSrc,
  uint8_t *dest8, int chrDstW)
 {
@@ -188,7 +188,7 @@ static void yuv2p016cX_c(SwsContext *c, const int16_t 
*chrFilter, int chrFilterS
 const int32_t **uSrc = (const int32_t **)chrUSrc;
 const int32_t **vSrc = (const int32_t **)chrVSrc;
 int shift = 15;
-int big_endian = c->dstFormat == AV_PIX_FMT_P016BE;
+int big_endian = dstFormat == AV_PIX_FMT_P016BE;
 int i, j;
 
 for (i = 0; i < chrDstW; i++) {
@@ -402,12 +402,10 @@ static void yuv2plane1_8_c(const int16_t *src, uint8_t 
*dest, int dstW,
 }
 }
 
-static void yuv2nv12cX_c(SwsContext *c, const int16_t *chrFilter, int 
chrFilterSize,
+static void yuv2nv12cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither, const int16_t *chrFilter, int chrFilterSize,
 const int16_t **chrUSrc, const int16_t **chrVSrc,
 uint8_t *dest, int chrDstW)
 {
-enum AVPixelFormat dstFormat = c->dstFormat;
-const uint8_t *chrDither = c->chrDither8;
 int i;
 
 if (dstFormat == AV_PIX_FMT_NV12 ||
@@ -477,13 +475,13 @@ static void yuv2p010lX_c(const int16_t *filter, int 
filterSize,
 }
 }
 
-static void yuv2p010cX_c(SwsContext *c, const int16_t *chrFilter, int 
chrFilterSize,
+static void yuv2p010cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither, const int16_t *chrFilter, int chrFilterSize,
  const int16_t **chrUSrc, const int16_t **chrVSrc,
  uint8_t *dest8, int chrDstW)
 {
 uint16_t *dest = (uint16_t*)dest8;
 int shift = 17;
-int big_endian = c->dstFormat == AV_PIX_FMT_P010BE;
+int big_endian = dstFormat == AV_PIX_FMT_P010BE;
 int i, j;
 
 for (i = 0; i < chrDstW; i++) {
diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h
index ee46092ff6..b37d650967 100644
--- a/libswscale/swscale_internal.h
+++ b/libswscale/swscale_internal.h
@@ -119,7 +119,8 @@ typedef void (*yuv2planarX_fn)(const int16_t *filter, int 
filterSize,
  * Write one line of horizontally scaled chroma to interleaved output
  * with multi-point vertical scaling between input pixels.
  *
- * @param c SWS scaling context
+ * @param dstFormat destination pixel format
+ * @param chrDither ordered dither array of type uint8_t and size 8
  * @param chrFilter vertical chroma scaling coefficients, 12 bits [0,4096]
  * @param chrUSrc   scaled chroma (U) source data, 15 bits for 8-10-bit
  *  output, 19 bits for 16-bit output (in int32_t)
@@ -130,7 +131,7 @@ typedef void (*yuv2planarX_fn)(const int16_t *filter, int 
filterSize,
  *  output, this is in uint16_t
  * @param dstW  width of chroma planes
  */
-typedef void (*yuv2interleavedX_fn)(struct SwsContext *c,
+typedef void (*yuv2interleavedX_fn)(enum AVPixelFormat dstFormat, const 
uint8_t *chrDither,
 const int16_t *chrFilter,
 int chrFilterSize,
 const int16_t **chrUSrc,
diff --git a/libswscale/vscale.c b/libswscale/vscale.c
index 9ed227e908..500217239c 100644
--- a/libswscale/vscale.c
+++ b/libswscale/vscale.c
@@ -92,7 +92,7 @@ static int chr_planar_vscale(SwsContext *c, 
SwsFilterDescriptor *desc, int slice
 uint16_t *filter = inst->filter[0] + (inst->isMMX ? 0 : chrSliceY * 
inst->filter_size);
 
 if (c->yuv2nv12cX) {
-inst->pfn.yuv2interleavedX(c, filter, inst->filter_size, (const 
int16_t**)src1, (const int16_t**)src2, dst1[0], dstW);
+inst->pfn.yuv2interleavedX(c->dstFormat, c->chrDither8, filter, 
inst->filter_size, (const int16_t**)src1, (const int16_t*

[FFmpeg-cvslog] swscale/x86/output: add AVX2 version of yuv2nv12cX

2020-06-14 Thread Nelson Gomez
ffmpeg | branch: master | Nelson Gomez  | Sat Apr 
25 19:37:02 2020 -0700| [bc01337db4d196b2c3597bfd1c4431edb8779159] | committer: 
Josh de Kock

swscale/x86/output: add AVX2 version of yuv2nv12cX

256 bits is just wide enough to fit all the operands needed to vectorize
the software implementation, but AVX2 is needed to for a couple of
instructions like cross-lane permutation.

Output is bit-for-bit identical to C.

Signed-off-by: Nelson Gomez 

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

 libswscale/x86/output.asm | 126 +-
 libswscale/x86/swscale.c  |  28 +++
 2 files changed, 153 insertions(+), 1 deletion(-)

diff --git a/libswscale/x86/output.asm b/libswscale/x86/output.asm
index db3e9934f8..7f82665e1b 100644
--- a/libswscale/x86/output.asm
+++ b/libswscale/x86/output.asm
@@ -2,6 +2,7 @@
 ;* x86-optimized vertical line scaling functions
 ;* Copyright (c) 2011 Ronald S. Bultje 
 ;*Kieran Kunhya 
+;*   (c) 2020 Nelson Gomez 
 ;*
 ;* This file is part of FFmpeg.
 ;*
@@ -22,7 +23,7 @@
 
 %include "libavutil/x86/x86util.asm"
 
-SECTION_RODATA
+SECTION_RODATA 32
 
 minshort:  times 8 dw 0x8000
 yuv2yuvX_16_start:  times 4 dd 0x4000 - 0x4000
@@ -34,9 +35,20 @@ pd_4:  times 4 dd 4
 pd_4min0x4:times 4 dd 4 - (0x4)
 pw_16: times 8 dw 16
 pw_32: times 8 dw 32
+pd_255:times 8 dd 255
 pw_512:times 8 dw 512
 pw_1024:   times 8 dw 1024
 
+yuv2nv12_shuffle_mask: times 2 db 0,  4,  8, 12, \
+ -1, -1, -1, -1, \
+ -1, -1, -1, -1, \
+ -1, -1, -1, -1
+yuv2nv21_shuffle_mask: times 2 db 4,  0, 12,  8, \
+ -1, -1, -1, -1, \
+ -1, -1, -1, -1, \
+ -1, -1, -1, -1
+yuv2nv12_permute_mask: dd 0, 4, 1, 2, 3, 5, 6, 7
+
 SECTION .text
 
 ;-
@@ -423,3 +435,115 @@ yuv2plane1_fn  9, 5, 3
 yuv2plane1_fn 10, 5, 3
 yuv2plane1_fn 16, 5, 3
 %endif
+
+%undef movsx
+
+;-
+; AVX2 yuv2nv12cX implementation
+;
+; void ff_yuv2nv12cX_avx2(enum AVPixelFormat format, const uint8_t *dither,
+; const int16_t *filter, int filterSize,
+; const int16_t **u, const int16_t **v,
+; uint8_t *dst, int dstWidth)
+;
+; void ff_yuv2nv21cX_avx2(enum AVPixelFormat format, const uint8_t *dither,
+; const int16_t *filter, int filterSize,
+; const int16_t **u, const int16_t **v,
+; uint8_t *dst, int dstWidth)
+;-
+
+%if ARCH_X86_64
+%macro yuv2nv12cX_fn 1
+cglobal %1cX, 8, 11, 13, tmp1, dither, filter, filterSize, u, v, dst, dstWidth
+
+mov tmp1q, qword [ditherq]
+movq xm0, tmp1q
+ror tmp1q, 24
+movq xm1, tmp1q
+
+pmovzxbd m0, xm0
+pslld m0, m0, 12; ditherLo
+pmovzxbd m1, xm1
+pslld m1, m1, 12; ditherHi
+
+pxor m9, m9 ; uint8_min dwords
+mova m10, [pd_255]  ; uint8_max dwords
+mova m11, [%1_shuffle_mask] ; shuffle_mask
+mova m12, [yuv2nv12_permute_mask]   ; permute mask
+
+DEFINE_ARGS tmp1, tmp2, filter, filterSize, u, v, dst, dstWidth
+
+xor r8q, r8q
+
+nv12_outer_%1:
+mova m2, m0 ; resultLo
+mova m3, m1 ; resultHi
+xor r9q, r9q
+
+nv12_inner_%1:
+movsx r10d, word [filterq + (2 * r9q)]
+movd xm4, r10d
+vpbroadcastd m4, xm4; filter
+
+mov tmp1q, [uq + (gprsize * r9q)]
+mova xm7, oword [tmp1q + 2 * r8q]
+
+mov tmp2q, [vq + (gprsize * r9q)]
+mova xm8, oword [tmp2q + 2 * r8q]
+
+punpcklwd xm5, xm7, xm8
+pmovsxwd m5, xm5; multiplicandsLo
+punpckhwd xm6, xm7, xm8
+pmovsxwd m6, xm6; multiplicandsHi
+
+pmulld m7, m5, m4   ; mulResultLo
+pmulld m8, m6, m4   ; mulResultHi
+paddd m2, m2, m7; resultLo += mulResultLo
+paddd m3, m3, m8; resultHi += mulResultHi
+
+inc r9d
+cmp r9d, filterSized
+jl nv12_inner_%1
+; end of inner loop
+
+psrad m2, m2, 19
+psrad m3, m3, 19
+
+; Vectorized av_clip_uint8
+pmaxsd m2, m2, m9
+pmaxsd m3, m3, m9
+pminsd m2, m2, m10
+pminsd m3, m3, m10
+
+; At this point we have clamped uint8s arranged in this order:
+; m2: u1  0  0  0  v1  0  0  0  [...]
+; m3: u5  0  0  0  v5  0  0  0  [...]
+;
+  

[FFmpeg-cvslog] swscale: cosmetic fixes

2020-06-14 Thread Nelson Gomez
ffmpeg | branch: master | Nelson Gomez  | Sat Apr 
25 19:37:03 2020 -0700| [360be03b8ad878aba5f8ffa69e106c201d8cae8a] | committer: 
Josh de Kock

swscale: cosmetic fixes

Signed-off-by: Nelson Gomez 

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

 libswscale/output.c   | 13 -
 libswscale/swscale_internal.h |  3 ++-
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/libswscale/output.c b/libswscale/output.c
index 8903cf79b2..4ef436e7e4 100644
--- a/libswscale/output.c
+++ b/libswscale/output.c
@@ -180,7 +180,8 @@ yuv2planeX_16_c_template(const int16_t *filter, int 
filterSize,
 }
 }
 
-static void yuv2p016cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither, const int16_t *chrFilter, int chrFilterSize,
+static void yuv2p016cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither,
+ const int16_t *chrFilter, int chrFilterSize,
  const int16_t **chrUSrc, const int16_t **chrVSrc,
  uint8_t *dest8, int chrDstW)
 {
@@ -402,9 +403,10 @@ static void yuv2plane1_8_c(const int16_t *src, uint8_t 
*dest, int dstW,
 }
 }
 
-static void yuv2nv12cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither, const int16_t *chrFilter, int chrFilterSize,
-const int16_t **chrUSrc, const int16_t **chrVSrc,
-uint8_t *dest, int chrDstW)
+static void yuv2nv12cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither,
+ const int16_t *chrFilter, int chrFilterSize,
+ const int16_t **chrUSrc, const int16_t **chrVSrc,
+ uint8_t *dest, int chrDstW)
 {
 int i;
 
@@ -475,7 +477,8 @@ static void yuv2p010lX_c(const int16_t *filter, int 
filterSize,
 }
 }
 
-static void yuv2p010cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither, const int16_t *chrFilter, int chrFilterSize,
+static void yuv2p010cX_c(enum AVPixelFormat dstFormat, const uint8_t 
*chrDither,
+ const int16_t *chrFilter, int chrFilterSize,
  const int16_t **chrUSrc, const int16_t **chrVSrc,
  uint8_t *dest8, int chrDstW)
 {
diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h
index b37d650967..1a1b6f0dee 100644
--- a/libswscale/swscale_internal.h
+++ b/libswscale/swscale_internal.h
@@ -131,7 +131,8 @@ typedef void (*yuv2planarX_fn)(const int16_t *filter, int 
filterSize,
  *  output, this is in uint16_t
  * @param dstW  width of chroma planes
  */
-typedef void (*yuv2interleavedX_fn)(enum AVPixelFormat dstFormat, const 
uint8_t *chrDither,
+typedef void (*yuv2interleavedX_fn)(enum AVPixelFormat dstFormat,
+const uint8_t *chrDither,
 const int16_t *chrFilter,
 int chrFilterSize,
 const int16_t **chrUSrc,

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mpeg4videodec: avoid invalid values and reinitialize in format changes for studio profile

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sat 
Jun 13 11:56:01 2020 +0200| [e53235f06c229a23d3241b47e32647019161fb7c] | 
committer: Michael Niedermayer

avcodec/mpeg4videodec: avoid invalid values and reinitialize in format changes 
for studio profile

Fixes: out of array access
Fixes: 
23327/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MPEG4_fuzzer-5134822992510976

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/mpeg4videodec.c | 19 ++-
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
index 45934779a9..58ee62641c 100644
--- a/libavcodec/mpeg4videodec.c
+++ b/libavcodec/mpeg4videodec.c
@@ -3134,6 +3134,7 @@ static int decode_studio_vol_header(Mpeg4DecContext *ctx, 
GetBitContext *gb)
 MpegEncContext *s = &ctx->m;
 int width, height;
 int bits_per_raw_sample;
+int rgb, chroma_format;
 
 // random_accessible_vol and video_object_type_indication have 
already
 // been read by the caller decode_vol_header()
@@ -3141,28 +3142,36 @@ static int decode_studio_vol_header(Mpeg4DecContext 
*ctx, GetBitContext *gb)
 ctx->shape = get_bits(gb, 2); /* video_object_layer_shape */
 skip_bits(gb, 4); /* video_object_layer_shape_extension */
 skip_bits1(gb); /* progressive_sequence */
+if (ctx->shape != RECT_SHAPE) {
+avpriv_request_sample(s->avctx, "MPEG-4 Studio profile non 
rectangular shape");
+return AVERROR_PATCHWELCOME;
+}
 if (ctx->shape != BIN_ONLY_SHAPE) {
-ctx->rgb = get_bits1(gb); /* rgb_components */
-s->chroma_format = get_bits(gb, 2); /* chroma_format */
-if (!s->chroma_format) {
+rgb = get_bits1(gb); /* rgb_components */
+chroma_format = get_bits(gb, 2); /* chroma_format */
+if (!chroma_format || chroma_format == CHROMA_420 || (rgb && 
chroma_format == CHROMA_422)) {
 av_log(s->avctx, AV_LOG_ERROR, "illegal chroma format\n");
 return AVERROR_INVALIDDATA;
 }
 
 bits_per_raw_sample = get_bits(gb, 4); /* bit_depth */
 if (bits_per_raw_sample == 10) {
-if (ctx->rgb) {
+if (rgb) {
 s->avctx->pix_fmt = AV_PIX_FMT_GBRP10;
 }
 else {
-s->avctx->pix_fmt = s->chroma_format == CHROMA_422 ? 
AV_PIX_FMT_YUV422P10 : AV_PIX_FMT_YUV444P10;
+s->avctx->pix_fmt = chroma_format == CHROMA_422 ? 
AV_PIX_FMT_YUV422P10 : AV_PIX_FMT_YUV444P10;
 }
 }
 else {
 avpriv_request_sample(s->avctx, "MPEG-4 Studio profile 
bit-depth %u", bits_per_raw_sample);
 return AVERROR_PATCHWELCOME;
 }
+if (rgb != ctx->rgb || s->chroma_format != chroma_format)
+s->context_reinit = 1;
 s->avctx->bits_per_raw_sample = bits_per_raw_sample;
+ctx->rgb = rgb;
+s->chroma_format = chroma_format;
 }
 if (ctx->shape == RECT_SHAPE) {
 check_marker(s->avctx, gb, "before video_object_layer_width");

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/iff: Fix off by x error

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sat 
Jun 13 10:48:14 2020 +0200| [51225dee0a6266780d26d43bd6802bbcf736327e] | 
committer: Michael Niedermayer

avcodec/iff: Fix off by x error

Fixes: out of array access
Fixes: 
23245/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_IFF_ILBM_fuzzer-5723121327013888.fuzz

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/iff.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/iff.c b/libavcodec/iff.c
index 66879cbf5d..79f6215c77 100644
--- a/libavcodec/iff.c
+++ b/libavcodec/iff.c
@@ -723,7 +723,7 @@ static void decode_deep_rle32(uint8_t *dst, const uint8_t 
*src, int src_size, in
 if (opcode >= 0) {
 int size = opcode + 1;
 for (i = 0; i < size; i++) {
-int length = FFMIN(size - i, width);
+int length = FFMIN(size - i, width - x);
 if (src_end - src < length * 4)
 return;
 memcpy(dst + y*linesize + x * 4, src, length * 4);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/ape: Cleanup after ape_read_header() failure

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sat 
Jun 13 11:13:21 2020 +0200| [9b5fc789fb52af8769ec66e634ea362a67cb5d06] | 
committer: Michael Niedermayer

avformat/ape: Cleanup after ape_read_header() failure

Fixes: memleaks
Fixes: 
23306/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5635436931448832

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavformat/ape.c | 26 +++---
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/libavformat/ape.c b/libavformat/ape.c
index ed6752a415..39a584aa98 100644
--- a/libavformat/ape.c
+++ b/libavformat/ape.c
@@ -83,6 +83,8 @@ typedef struct APEContext {
 uint8_t  *bittable;
 } APEContext;
 
+static int ape_read_close(AVFormatContext * s);
+
 static int ape_probe(const AVProbeData * p)
 {
 int version = AV_RL16(p->buf+4);
@@ -281,14 +283,18 @@ static int ape_read_header(AVFormatContext * s)
 
 if (ape->seektablelength > 0) {
 ape->seektable = av_mallocz(ape->seektablelength);
-if (!ape->seektable)
-return AVERROR(ENOMEM);
+if (!ape->seektable) {
+ret = AVERROR(ENOMEM);
+goto fail;
+}
 for (i = 0; i < ape->seektablelength / sizeof(uint32_t) && 
!pb->eof_reached; i++)
 ape->seektable[i] = avio_rl32(pb);
 if (ape->fileversion < 3810) {
 ape->bittable = av_mallocz(ape->totalframes);
-if (!ape->bittable)
-return AVERROR(ENOMEM);
+if (!ape->bittable) {
+ret = AVERROR(ENOMEM);
+goto fail;
+}
 for (i = 0; i < ape->totalframes && !pb->eof_reached; i++)
 ape->bittable[i] = avio_r8(pb);
 }
@@ -341,8 +347,10 @@ static int ape_read_header(AVFormatContext * s)
 
 /* now we are ready: build format streams */
 st = avformat_new_stream(s, NULL);
-if (!st)
-return AVERROR(ENOMEM);
+if (!st) {
+ret = AVERROR(ENOMEM);
+goto fail;
+}
 
 total_blocks = (ape->totalframes == 0) ? 0 : ((ape->totalframes - 1) * 
ape->blocksperframe) + ape->finalframeblocks;
 
@@ -359,7 +367,7 @@ static int ape_read_header(AVFormatContext * s)
 avpriv_set_pts_info(st, 64, 1, ape->samplerate);
 
 if ((ret = ff_alloc_extradata(st->codecpar, APE_EXTRADATA_SIZE)) < 0)
-return ret;
+goto fail;
 AV_WL16(st->codecpar->extradata + 0, ape->fileversion);
 AV_WL16(st->codecpar->extradata + 2, ape->compressiontype);
 AV_WL16(st->codecpar->extradata + 4, ape->formatflags);
@@ -378,6 +386,10 @@ static int ape_read_header(AVFormatContext * s)
 }
 
 return 0;
+fail:
+ape_read_close(s);
+
+return ret;
 }
 
 static int ape_read_packet(AVFormatContext * s, AVPacket * pkt)

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/pixlet: Fix log(0) check

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sat 
Jun 13 11:21:52 2020 +0200| [bd0f81526d3f4c23ecd0a399829103be2445c011] | 
committer: Michael Niedermayer

avcodec/pixlet: Fix log(0) check

Fixes: passing zero to clz(), which is not a valid argument
Fixes: 
23337/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PIXLET_fuzzer-5179131989065728

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/pixlet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/pixlet.c b/libavcodec/pixlet.c
index 7b068b1ce5..78f571cd5f 100644
--- a/libavcodec/pixlet.c
+++ b/libavcodec/pixlet.c
@@ -221,7 +221,7 @@ static int read_high_coeffs(AVCodecContext *avctx, uint8_t 
*src, int16_t *dst,
 length = 25 - nbits;
 
 while (i < size) {
-if (state >> 8 != -3)
+if (((state >> 8) + 3) & 0xFFF)
 value = ff_clz((state >> 8) + 3) ^ 0x1F;
 else
 value = -1;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/oggdec: Disable mid stream codec changes

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sat 
Jun 13 12:36:49 2020 +0200| [70277f12328fb052c2c758fa7f4eb36b9ea89638] | 
committer: Michael Niedermayer

avformat/oggdec: Disable mid stream codec changes

Fixes: 
22082/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5688619118624768
Fixes: crash from V-codecs/Theora/theora_testsuite_broken/multi2.ogg

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Suggested-by: Lynne on IRC
Signed-off-by: Michael Niedermayer 

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

 libavformat/oggdec.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 9eb45499c6..a456c3df60 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -226,9 +226,10 @@ static int ogg_replace_stream(AVFormatContext *s, uint32_t 
serial, char *magic,
 return AVERROR_INVALIDDATA;
 }
 
-/* We only have a single stream anyway, so if there's a new stream with
- * a different codec just replace it */
 os = &ogg->streams[0];
+if (os->codec != codec)
+return AVERROR(EINVAL);
+
 os->serial  = serial;
 os->codec   = codec;
 os->serial  = serial;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/sonic: Fix several integer state overflows

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sun 
May 10 21:09:45 2020 +0200| [61d9bf514de0acf256aa554e0c431e7c91e42a5c] | 
committer: Michael Niedermayer

avcodec/sonic: Fix several integer state overflows

Fixes: signed integer overflow: -234 * -14797801 cannot be represented in type 
'int'
Fixes: 
20492/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SONIC_fuzzer-5695924975435776
Fixes: 
22275/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SONIC_fuzzer-5695924975435776

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/sonic.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/sonic.c b/libavcodec/sonic.c
index b82c44344c..ea6ef10c9e 100644
--- a/libavcodec/sonic.c
+++ b/libavcodec/sonic.c
@@ -458,8 +458,8 @@ static void predictor_init_state(int *k, int *state, int 
order)
 
 for (j = 0, p = i+1; p < order; j++,p++)
 {
-int tmp = x + shift_down(k[j] * state[p], LATTICE_SHIFT);
-state[p] += shift_down(k[j]*x, LATTICE_SHIFT);
+int tmp = x + shift_down(k[j] * (unsigned)state[p], LATTICE_SHIFT);
+state[p] += shift_down(k[j]* (unsigned)x, LATTICE_SHIFT);
 x = tmp;
 }
 }
@@ -467,7 +467,7 @@ static void predictor_init_state(int *k, int *state, int 
order)
 
 static int predictor_calc_error(int *k, int *state, int order, int error)
 {
-int i, x = error - shift_down(k[order-1] * state[order-1], LATTICE_SHIFT);
+int i, x = error - shift_down(k[order-1] *  (unsigned)state[order-1], 
LATTICE_SHIFT);
 
 #if 1
 int *k_ptr = &(k[order-2]),

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/jpeg2000dec: Fix/check for multiple integer overflows

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Thu 
Jun 11 22:45:27 2020 +0200| [c579ceffbe30d048c7448c5e9238fc52094de630] | 
committer: Michael Niedermayer

avcodec/jpeg2000dec: Fix/check for multiple integer overflows

Fixes: shift exponent 35 is too large for 32-bit type 'int'
Fixes: 
22857/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_JPEG2000_fuzzer-5202709358837760

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/jpeg2000dec.c | 19 +--
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
index b7766459c4..ab36009a2d 100644
--- a/libavcodec/jpeg2000dec.c
+++ b/libavcodec/jpeg2000dec.c
@@ -612,12 +612,19 @@ static int get_rgn(Jpeg2000DecoderContext *s, int n)
 // Currently compno cannot be greater than 4.
 // However, future implementation should support compno up to 65536
 if (compno < s->ncomponents) {
-if (s->curtileno == -1)
-s->roi_shift[compno] = bytestream2_get_byte(&s->g);
-else {
+int v;
+if (s->curtileno == -1) {
+v =  bytestream2_get_byte(&s->g);
+if (v > 30)
+return AVERROR_PATCHWELCOME;
+s->roi_shift[compno] = v;
+} else {
 if (s->tile[s->curtileno].tp_idx != 0)
 return AVERROR_INVALIDDATA; // marker occurs only in first 
tile part of tile
-s->tile[s->curtileno].comp[compno].roi_shift = 
bytestream2_get_byte(&s->g);
+v = bytestream2_get_byte(&s->g);
+if (v > 30)
+return AVERROR_PATCHWELCOME;
+s->tile[s->curtileno].comp[compno].roi_shift = v;
 }
 return 0;
 }
@@ -1669,8 +1676,8 @@ static int decode_cblk(Jpeg2000DecoderContext *s, 
Jpeg2000CodingStyle *codsty,
 ff_mqc_initdec(&t1->mqc, cblk->data, 0, 1);
 
 while (passno--) {
-if (bpno < 0) {
-av_log(s->avctx, AV_LOG_ERROR, "bpno became negative\n");
+if (bpno < 0 || bpno > 29) {
+av_log(s->avctx, AV_LOG_ERROR, "bpno became invalid\n");
 return AVERROR_INVALIDDATA;
 }
 switch(pass_t) {

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mpeg4videodec: Fix 2 integer overflows in get_amv()

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Thu 
Jun 11 22:22:57 2020 +0200| [e361785ee05cc75d3caacf2f254160b0336f5358] | 
committer: Michael Niedermayer

avcodec/mpeg4videodec: Fix 2 integer overflows in get_amv()

Fixes: signed integer overflow: -144876608 * 16 cannot be represented in type 
'int'
Fixes: 
22782/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MPEG4_fuzzer-6039584977977344

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/mpeg4videodec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
index 58ee62641c..14fb79261d 100644
--- a/libavcodec/mpeg4videodec.c
+++ b/libavcodec/mpeg4videodec.c
@@ -610,7 +610,7 @@ static inline int get_amv(Mpeg4DecContext *ctx, int n)
 dy -= 1 << (shift + a + 1);
 else
 dx -= 1 << (shift + a + 1);
-mb_v = s->sprite_offset[0][n] + dx * s->mb_x * 16 + dy * s->mb_y * 16;
+mb_v = s->sprite_offset[0][n] + dx * s->mb_x * 16U + dy * s->mb_y * 
16U;
 
 sum = 0;
 for (y = 0; y < 16; y++) {

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/sonic: Fix several integer overflows

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Thu 
Feb 20 19:56:39 2020 +0100| [75d520e33704447f1b29ac47fd9e40994a6bc659] | 
committer: Michael Niedermayer

avcodec/sonic: Fix several integer overflows

Fixes: signed integer overflow: 2129689466 + 2129689466 cannot be represented 
in type 'int'
Fixes: 
20715/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SONIC_fuzzer-5155263109922816

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/sonic.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavcodec/sonic.c b/libavcodec/sonic.c
index c975774b04..b82c44344c 100644
--- a/libavcodec/sonic.c
+++ b/libavcodec/sonic.c
@@ -140,7 +140,8 @@ static inline av_flatten int get_symbol(RangeCoder *c, 
uint8_t *state, int is_si
 if(get_rac(c, state+0))
 return 0;
 else{
-int i, e, a;
+int i, e;
+unsigned a;
 e= 0;
 while(get_rac(c, state+1 + FFMIN(e,9))){ //1..10
 e++;
@@ -474,7 +475,7 @@ static int predictor_calc_error(int *k, int *state, int 
order, int error)
 for (i = order-2; i >= 0; i--, k_ptr--, state_ptr--)
 {
 int k_value = *k_ptr, state_value = *state_ptr;
-x -= shift_down(k_value * state_value, LATTICE_SHIFT);
+x -= shift_down(k_value * (unsigned)state_value, LATTICE_SHIFT);
 state_ptr[1] = state_value + shift_down(k_value * (unsigned)x, 
LATTICE_SHIFT);
 }
 #else
@@ -1044,7 +1045,7 @@ static int sonic_decode_frame(AVCodecContext *avctx,
 x += s->channels;
 }
 
-s->int_samples[x] = predictor_calc_error(s->predictor_k, 
s->predictor_state[ch], s->num_taps, s->coded_samples[ch][i] * quant);
+s->int_samples[x] = predictor_calc_error(s->predictor_k, 
s->predictor_state[ch], s->num_taps, s->coded_samples[ch][i] * (unsigned)quant);
 x += s->channels;
 }
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/lossless_audiodsp: Fix undefined overflows in scalarproduct_and_madd_int16_c()

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sun 
Jun  7 19:24:10 2020 +0200| [c0dfe134beefde4070d43910518b1f4a58f01794] | 
committer: Michael Niedermayer

avcodec/lossless_audiodsp: Fix undefined overflows in 
scalarproduct_and_madd_int16_c()

Fixes: signed integer overflow: 2142077091 + 6881070 cannot be represented in 
type 'int'
Fixes: 
22737/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMALOSSLESS_fuzzer-595839681920

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/lossless_audiodsp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/lossless_audiodsp.c b/libavcodec/lossless_audiodsp.c
index 3a9f9b20bb..378165924d 100644
--- a/libavcodec/lossless_audiodsp.c
+++ b/libavcodec/lossless_audiodsp.c
@@ -27,7 +27,7 @@ static int32_t scalarproduct_and_madd_int16_c(int16_t *v1, 
const int16_t *v2,
   const int16_t *v3,
   int order, int mul)
 {
-int res = 0;
+unsigned res = 0;
 
 do {
 res   += *v1 * *v2++;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/utils: Print analyze duration and probesize when printing a suggestion to increase them

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Mon 
Jun  8 11:07:27 2020 +0200| [04ddace9e880172a5206e931fd12ce98662e1f6d] | 
committer: Michael Niedermayer

avformat/utils: Print analyze duration and probesize when printing a suggestion 
to increase them

Signed-off-by: Michael Niedermayer 

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

 libavformat/utils.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 667249362c..45a4179552 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -4132,8 +4132,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
 avcodec_string(buf, sizeof(buf), st->internal->avctx, 0);
 av_log(ic, AV_LOG_WARNING,
"Could not find codec parameters for stream %d (%s): %s\n"
-   "Consider increasing the value for the 'analyzeduration' 
and 'probesize' options\n",
-   i, buf, errmsg);
+   "Consider increasing the value for the 'analyzeduration' 
(%"PRId64") and 'probesize' (%"PRId64") options\n",
+   i, buf, errmsg, ic->max_analyze_duration, ic->probesize);
 } else {
 ret = 0;
 }

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/ffwavesynth: Avoid undefined operation on ts overflow

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sat 
Jun 13 21:47:03 2020 +0200| [584d334afd59714ed04637a9227a4f1368c26166] | 
committer: Michael Niedermayer

avcodec/ffwavesynth: Avoid undefined operation on ts overflow

Alternatively these conditions could be treated as errors
Fixes: 
23147/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FFWAVESYNTH_fuzzer-5639254549200896
Fixes: signed integer overflow: 9223372036854775807 + 1 cannot be represented 
in type 'int64_t' (aka 'long')

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/ffwavesynth.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/ffwavesynth.c b/libavcodec/ffwavesynth.c
index a446aa2fdf..8d3ac81aef 100644
--- a/libavcodec/ffwavesynth.c
+++ b/libavcodec/ffwavesynth.c
@@ -444,7 +444,7 @@ static int wavesynth_decode(AVCodecContext *avc, void 
*rframe, int *rgot_frame,
 if (r < 0)
 return r;
 pcm = (int16_t *)frame->data[0];
-for (s = 0; s < duration; s++, ts++) {
+for (s = 0; s < duration; s++, ts+=(uint64_t)1) {
 memset(channels, 0, avc->channels * sizeof(*channels));
 if (ts >= ws->next_ts)
 wavesynth_enter_intervals(ws, ts);
@@ -452,7 +452,7 @@ static int wavesynth_decode(AVCodecContext *avc, void 
*rframe, int *rgot_frame,
 for (c = 0; c < avc->channels; c++)
 *(pcm++) = channels[c] >> 16;
 }
-ws->cur_ts += duration;
+ws->cur_ts += (uint64_t)duration;
 *rgot_frame = 1;
 return packet->size;
 }

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mv30: check mode_size vs. input space

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sat 
Jun 13 16:03:14 2020 +0200| [75e2ac4f0752649a0b9486e6825ef68341ee974d] | 
committer: Michael Niedermayer

avcodec/mv30: check mode_size vs. input space

Fixes: Timeout (longer than my patience vs 1sec)
Fixes: 
22984/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MV30_fuzzer-5630021988515840

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavcodec/mv30.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/mv30.c b/libavcodec/mv30.c
index 013a5753fe..76b9170eaf 100644
--- a/libavcodec/mv30.c
+++ b/libavcodec/mv30.c
@@ -410,6 +410,9 @@ static int decode_intra(AVCodecContext *avctx, 
GetBitContext *gb, AVFrame *frame
 int ret;
 
 mgb = *gb;
+if (get_bits_left(gb) < s->mode_size * 8)
+return AVERROR_INVALIDDATA;
+
 skip_bits_long(gb, s->mode_size * 8);
 
 linesize[0] = frame->linesize[0];

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/libzvbi-teletextdec: fix txt_default_region limits

2020-06-14 Thread Marton Balint
ffmpeg | branch: master | Marton Balint  | Tue Jun  9 01:31:00 
2020 +0200| [16d29c1be80eda9ab5e2fb92b9cd300a88e5d449] | committer: Marton 
Balint

avcodec/libzvbi-teletextdec: fix txt_default_region limits

Max region ID is 87. Also the region affects not only the G0 charset but G2 and
the national subset as well.

Signed-off-by: Marton Balint 

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

 doc/decoders.texi| 2 +-
 libavcodec/libzvbi-teletextdec.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/decoders.texi b/doc/decoders.texi
index 0c5a39bc9c..9005714e3c 100644
--- a/doc/decoders.texi
+++ b/doc/decoders.texi
@@ -317,7 +317,7 @@ list are dropped. You may use the special @code{*} string 
to match all pages,
 or @code{subtitle} to match all subtitle pages.
 Default value is *.
 @item txt_default_region
-Set default G0 character set used for decoding, a value between 0 and 80 (see
+Set default character set used for decoding, a value between 0 and 87 (see
 ETS 300 706, Section 15, Table 32). Default value is -1, which does not
 override the libzvbi default. This option is needed for some legacy level 1.0
 transmissions which cannot signal the proper charset.
diff --git a/libavcodec/libzvbi-teletextdec.c b/libavcodec/libzvbi-teletextdec.c
index 8031b02286..0cc389a28e 100644
--- a/libavcodec/libzvbi-teletextdec.c
+++ b/libavcodec/libzvbi-teletextdec.c
@@ -797,7 +797,7 @@ static void teletext_flush(AVCodecContext *avctx)
 #define SD AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_DECODING_PARAM
 static const AVOption options[] = {
 {"txt_page","page numbers to decode, subtitle for subtitles, * for 
all", OFFSET(pgno),   AV_OPT_TYPE_STRING, {.str = "*"},  0, 0,SD},
-{"txt_default_region", "default G0 character set used for decoding", 
OFFSET(default_region), AV_OPT_TYPE_INT,{.i64 = -1},  -1, 80,   SD},
+{"txt_default_region", "default G0 character set used for decoding", 
OFFSET(default_region), AV_OPT_TYPE_INT,{.i64 = -1},  -1, 87,   SD},
 {"txt_chop_top","discards the top teletext line",
OFFSET(chop_top),   AV_OPT_TYPE_INT,{.i64 = 1},0, 1,SD},
 {"txt_format",  "format of the subtitles (bitmap or text or ass)",   
OFFSET(format_id),  AV_OPT_TYPE_INT,{.i64 = 0},0, 2,SD, 
 "txt_format"},
 {"bitmap",  NULL,
0,  AV_OPT_TYPE_CONST,  {.i64 = 0},0, 0,SD, 
 "txt_format"},

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/mxfdec: free duplicated utf16 strings

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sun 
Jun 14 19:45:05 2020 +0200| [0aa2768cb275bda9e9e1331ed95adc7cd686eafe] | 
committer: Michael Niedermayer

avformat/mxfdec: free duplicated utf16 strings

Fixes: memleak
Fixes: 
23415/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5124814510751744

Suggested-by: Marton Balint 
Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavformat/mxfdec.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index a60bdfeade..90546d42b3 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -867,6 +867,7 @@ static inline int mxf_read_utf16_string(AVIOContext *pb, 
int size, char** str, i
 return AVERROR(EINVAL);
 
 buf_size = size + size / 2 + 1;
+av_free(*str);
 *str = av_malloc(buf_size);
 if (!*str)
 return AVERROR(ENOMEM);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/4xm: Check that a video stream was created before returning packets for it

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Sun 
Jun 14 19:51:23 2020 +0200| [c517c3f4741b6897ea952d1fba199c93c5217cfe] | 
committer: Michael Niedermayer

avformat/4xm: Check that a video stream was created before returning packets 
for it

Fixes: assertion failure
Fixes: 
23434/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5227750851084288.fuzz

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 

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

 libavformat/4xm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavformat/4xm.c b/libavformat/4xm.c
index 5f0504b13e..6a227a0b0d 100644
--- a/libavformat/4xm.c
+++ b/libavformat/4xm.c
@@ -218,6 +218,7 @@ static int fourxm_read_header(AVFormatContext *s)
 fourxm->track_count = 0;
 fourxm->tracks  = NULL;
 fourxm->fps = (AVRational){1,1};
+fourxm->video_stream_index = -1;
 
 /* skip the first 3 32-bit numbers */
 avio_skip(pb, 12);
@@ -326,6 +327,8 @@ static int fourxm_read_packet(AVFormatContext *s,
  * and size */
 if (size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE - 8)
 return AVERROR_INVALIDDATA;
+if (fourxm->video_stream_index < 0)
+return AVERROR_INVALIDDATA;
 if ((ret = av_new_packet(pkt, size + 8)) < 0)
 return ret;
 pkt->stream_index = fourxm->video_stream_index;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/url: check return value of strchr

2020-06-14 Thread Steven Liu
ffmpeg | branch: release/4.3 | Steven Liu  | Thu May 28 
10:41:25 2020 +0800| [cfec756a6d63163ef7982c53b11e9f9bdb0555b0] | committer: 
Marton Balint

avformat/url: check return value of strchr

fix ticket: 8687
workflow should return if there have no value of strchr

Signed-off-by: Steven Liu 
(cherry picked from commit 029ff31af6801dd2bca1b543575e17eaaa6b0772)

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

 libavformat/url.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/libavformat/url.c b/libavformat/url.c
index 6956f6dc10..20463a6674 100644
--- a/libavformat/url.c
+++ b/libavformat/url.c
@@ -90,6 +90,8 @@ static void trim_double_dot_url(char *buf, const char *rel, 
int size)
 if (p && (sep = strstr(p, "://"))) {
 sep += 3;
 root = strchr(sep, '/');
+if (!root)
+return;
 }
 
 /* set new current position if the root node is changed */
@@ -150,6 +152,7 @@ void ff_make_absolute_url(char *buf, int size, const char 
*base,
 }
 /* If rel actually is an absolute url, just copy it */
 if (!base || strstr(rel, "://") || rel[0] == '/') {
+memset(buf, 0, size);
 trim_double_dot_url(buf, rel, size);
 return;
 }
@@ -177,6 +180,8 @@ void ff_make_absolute_url(char *buf, int size, const char 
*base,
 if (sep) {
 sep += 3;
 root = strchr(sep, '/');
+if (!root)
+return;
 }
 }
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/libzvbi-teletextdec: fix txt_default_region limits

2020-06-14 Thread Marton Balint
ffmpeg | branch: release/4.3 | Marton Balint  | Tue Jun  9 
01:31:00 2020 +0200| [cdf88b5a0cb072b8a0319c466046fe410fe8341a] | committer: 
Marton Balint

avcodec/libzvbi-teletextdec: fix txt_default_region limits

Max region ID is 87. Also the region affects not only the G0 charset but G2 and
the national subset as well.

Signed-off-by: Marton Balint 
(cherry picked from commit 16d29c1be80eda9ab5e2fb92b9cd300a88e5d449)

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

 doc/decoders.texi| 2 +-
 libavcodec/libzvbi-teletextdec.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/decoders.texi b/doc/decoders.texi
index 0c5a39bc9c..9005714e3c 100644
--- a/doc/decoders.texi
+++ b/doc/decoders.texi
@@ -317,7 +317,7 @@ list are dropped. You may use the special @code{*} string 
to match all pages,
 or @code{subtitle} to match all subtitle pages.
 Default value is *.
 @item txt_default_region
-Set default G0 character set used for decoding, a value between 0 and 80 (see
+Set default character set used for decoding, a value between 0 and 87 (see
 ETS 300 706, Section 15, Table 32). Default value is -1, which does not
 override the libzvbi default. This option is needed for some legacy level 1.0
 transmissions which cannot signal the proper charset.
diff --git a/libavcodec/libzvbi-teletextdec.c b/libavcodec/libzvbi-teletextdec.c
index 8031b02286..0cc389a28e 100644
--- a/libavcodec/libzvbi-teletextdec.c
+++ b/libavcodec/libzvbi-teletextdec.c
@@ -797,7 +797,7 @@ static void teletext_flush(AVCodecContext *avctx)
 #define SD AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_DECODING_PARAM
 static const AVOption options[] = {
 {"txt_page","page numbers to decode, subtitle for subtitles, * for 
all", OFFSET(pgno),   AV_OPT_TYPE_STRING, {.str = "*"},  0, 0,SD},
-{"txt_default_region", "default G0 character set used for decoding", 
OFFSET(default_region), AV_OPT_TYPE_INT,{.i64 = -1},  -1, 80,   SD},
+{"txt_default_region", "default G0 character set used for decoding", 
OFFSET(default_region), AV_OPT_TYPE_INT,{.i64 = -1},  -1, 87,   SD},
 {"txt_chop_top","discards the top teletext line",
OFFSET(chop_top),   AV_OPT_TYPE_INT,{.i64 = 1},0, 1,SD},
 {"txt_format",  "format of the subtitles (bitmap or text or ass)",   
OFFSET(format_id),  AV_OPT_TYPE_INT,{.i64 = 0},0, 2,SD, 
 "txt_format"},
 {"bitmap",  NULL,
0,  AV_OPT_TYPE_CONST,  {.i64 = 0},0, 0,SD, 
 "txt_format"},

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/hls: check output string is usable of ff_make_absolute_url

2020-06-14 Thread Steven Liu
ffmpeg | branch: release/4.3 | Steven Liu  | Thu May 28 
10:41:26 2020 +0800| [0c37321362a1d359f555cbc65ebcc9770628311e] | committer: 
Marton Balint

avformat/hls: check output string is usable of ff_make_absolute_url

fix ticket: 8688
should goto failed workflow if cannot get usable string by ff_make_absolute_url

Signed-off-by: Steven Liu 
(cherry picked from commit ea1940c6e2ead234f6e563c095bb67d352e3328f)

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

 libavformat/hls.c | 23 +++
 1 file changed, 23 insertions(+)

diff --git a/libavformat/hls.c b/libavformat/hls.c
index 3e35d157ad..3ca6b90b19 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -311,6 +311,8 @@ static struct playlist *new_playlist(HLSContext *c, const 
char *url,
 return NULL;
 reset_packet(&pls->pkt);
 ff_make_absolute_url(pls->url, sizeof(pls->url), base, url);
+if (!pls->url[0])
+return NULL;
 pls->seek_timestamp = AV_NOPTS_VALUE;
 
 pls->is_id3_timestamped = -1;
@@ -416,6 +418,10 @@ static struct segment *new_init_section(struct playlist 
*pls,
 ptr = info->uri;
 } else {
 ff_make_absolute_url(tmp_str, sizeof(tmp_str), url_base, info->uri);
+if (!tmp_str[0]) {
+av_free(sec);
+return NULL;
+}
 }
 sec->url = av_strdup(ptr);
 if (!sec->url) {
@@ -841,6 +847,11 @@ static int parse_playlist(HLSContext *c, const char *url,
 
 if (key_type != KEY_NONE) {
 ff_make_absolute_url(tmp_str, sizeof(tmp_str), url, key);
+if (!tmp_str[0]) {
+av_free(cur_init_section);
+ret = AVERROR_INVALIDDATA;
+goto fail;
+}
 cur_init_section->key = av_strdup(tmp_str);
 if (!cur_init_section->key) {
 av_free(cur_init_section);
@@ -895,6 +906,11 @@ static int parse_playlist(HLSContext *c, const char *url,
 
 if (key_type != KEY_NONE) {
 ff_make_absolute_url(tmp_str, sizeof(tmp_str), url, key);
+if (!tmp_str[0]) {
+ret = AVERROR_INVALIDDATA;
+av_free(seg);
+goto fail;
+}
 seg->key = av_strdup(tmp_str);
 if (!seg->key) {
 av_free(seg);
@@ -906,6 +922,13 @@ static int parse_playlist(HLSContext *c, const char *url,
 }
 
 ff_make_absolute_url(tmp_str, sizeof(tmp_str), url, line);
+if (!tmp_str[0]) {
+ret = AVERROR_INVALIDDATA;
+if (seg->key)
+av_free(seg->key);
+av_free(seg);
+goto fail;
+}
 seg->url = av_strdup(tmp_str);
 if (!seg->url) {
 av_free(seg->key);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] lavf/prompeg: prompeg_write() must report data all was written

2020-06-14 Thread David Holroyd
ffmpeg | branch: release/4.3 | David Holroyd  | Tue 
Jun  9 21:37:10 2020 +0800| [3a390eadd279564b5b2d5d05c8d061d48c312da0] | 
committer: Marton Balint

lavf/prompeg: prompeg_write() must report data all was written

Previously, prompeg_write() would only report to caller that bytes we
written when a FEC packet was actually created.  Not all RTP packets are
expected to generate a FEC packet however, so this behavior was causing
avio to retry writing the RTP packet, eventually forcing the FEC state
machine to send a FEC packet erroneously (and so breaking out of the
retry loop).

This was resulting in incorrect FEC data being generated, and far too
many FEC packets to be sent (~100% FEC overhead).

fix #7863

Signed-off-by: David Holroyd 
(cherry picked from commit ffc1208266c2890a1b0e2391e0a536fe9698e69c)

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

 libavformat/prompeg.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/libavformat/prompeg.c b/libavformat/prompeg.c
index 7b2e5e8344..59faa824bb 100644
--- a/libavformat/prompeg.c
+++ b/libavformat/prompeg.c
@@ -387,7 +387,7 @@ static int prompeg_write(URLContext *h, const uint8_t *buf, 
int size) {
 PrompegFec *fec_tmp;
 uint8_t *bitstring = NULL;
 int col_idx, col_out_idx, row_idx;
-int ret, written = 0;
+int ret = 0;
 
 if (s->init && ((ret = prompeg_init(h, buf, size)) < 0))
 goto end;
@@ -403,7 +403,6 @@ static int prompeg_write(URLContext *h, const uint8_t *buf, 
int size) {
 if (!s->first || s->packet_idx > 0) {
 if ((ret = prompeg_write_fec(h, s->fec_row, PROMPEG_FEC_ROW)) < 0)
 goto end;
-written += ret;
 }
 memcpy(s->fec_row->bitstring, bitstring, s->bitstring_size);
 s->fec_row->sn = AV_RB16(buf + 2);
@@ -434,7 +433,6 @@ static int prompeg_write(URLContext *h, const uint8_t *buf, 
int size) {
 col_out_idx = s->packet_idx / s->d;
 if ((ret = prompeg_write_fec(h, s->fec_col[col_out_idx], 
PROMPEG_FEC_COL)) < 0)
 goto end;
-written += ret;
 }
 
 if (++s->packet_idx >= s->packet_idx_max) {
@@ -443,7 +441,7 @@ static int prompeg_write(URLContext *h, const uint8_t *buf, 
int size) {
 s->first = 0;
 }
 
-ret = written;
+ret = size;
 
 end:
 av_free(bitstring);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/hls: check segment duration value of EXTINF

2020-06-14 Thread Steven Liu
ffmpeg | branch: release/4.3 | Steven Liu  | Fri May 29 
11:39:05 2020 +0800| [e929799065413381b049f0707386796beeafb4a4] | committer: 
Marton Balint

avformat/hls: check segment duration value of EXTINF

fix ticket: 8673
set the default EXTINF duration to 1ms if duration is smaller than 1ms

Signed-off-by: Steven Liu 
(cherry picked from commit 9dfb19baeb86a8bb02c53a441682c6e9a6e104cc)

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

 libavformat/hls.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/libavformat/hls.c b/libavformat/hls.c
index 3ca6b90b19..17b3dd545d 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -894,8 +894,6 @@ static int parse_playlist(HLSContext *c, const char *url,
 ret = AVERROR(ENOMEM);
 goto fail;
 }
-seg->duration = duration;
-seg->key_type = key_type;
 if (has_iv) {
 memcpy(seg->iv, iv, sizeof(iv));
 } else {
@@ -937,6 +935,13 @@ static int parse_playlist(HLSContext *c, const char *url,
 goto fail;
 }
 
+if (duration < 0.001 * AV_TIME_BASE) {
+av_log(c->ctx, AV_LOG_WARNING, "Cannot get correct #EXTINF 
value of segment %s,"
+" set to default value to 1ms.\n", 
seg->url);
+duration = 0.001 * AV_TIME_BASE;
+}
+seg->duration = duration;
+seg->key_type = key_type;
 dynarray_add(&pls->segments, &pls->n_segments, seg);
 is_segment = 0;
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/cbs_h2645: abort when written inferred values don't match

2020-06-14 Thread James Almer
ffmpeg | branch: master | James Almer  | Thu Jun 11 13:06:10 
2020 -0300| [ef13fafe229a86480305fbb05e83208102ea962f] | committer: James Almer

avcodec/cbs_h2645: abort when written inferred values don't match

If this happens, it's a sign of parsing issues earlier in the process, or
misuse by the calling module.

Prevents writing invalid bitstreams.

Reviewed-by: Michael Niedermayer 
Signed-off-by: James Almer 

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

 libavcodec/cbs_h2645.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
index b432921ecc..64fe2c1b9b 100644
--- a/libavcodec/cbs_h2645.c
+++ b/libavcodec/cbs_h2645.c
@@ -408,10 +408,11 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext 
*gbc)
 
 #define infer(name, value) do { \
 if (current->name != (value)) { \
-av_log(ctx->log_ctx, AV_LOG_WARNING, "Warning: " \
+av_log(ctx->log_ctx, AV_LOG_ERROR, \
"%s does not match inferred value: " \
"%"PRId64", but should be %"PRId64".\n", \
#name, (int64_t)current->name, (int64_t)(value)); \
+return AVERROR_INVALIDDATA; \
 } \
 } while (0)
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/cbs_av1: abort when written inferred values don't match

2020-06-14 Thread James Almer
ffmpeg | branch: master | James Almer  | Thu Jun 11 13:06:17 
2020 -0300| [318a1a383dc0312ad5b4afec0ddf0d8d231f5c79] | committer: James Almer

avcodec/cbs_av1: abort when written inferred values don't match

If this happens, it's a sign of parsing issues earlier in the process, or
misuse by the calling module.

Prevents writing invalid bitstreams.

Reviewed-by: Michael Niedermayer 
Signed-off-by: James Almer 

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

 libavcodec/cbs_av1.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c
index fc228086c2..29b316e011 100644
--- a/libavcodec/cbs_av1.c
+++ b/libavcodec/cbs_av1.c
@@ -711,10 +711,11 @@ static size_t 
cbs_av1_get_payload_bytes_left(GetBitContext *gbc)
 
 #define infer(name, value) do { \
 if (current->name != (value)) { \
-av_log(ctx->log_ctx, AV_LOG_WARNING, "Warning: " \
+av_log(ctx->log_ctx, AV_LOG_ERROR, \
"%s does not match inferred value: " \
"%"PRId64", but should be %"PRId64".\n", \
#name, (int64_t)current->name, (int64_t)(value)); \
+return AVERROR_INVALIDDATA; \
 } \
 } while (0)
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/cbs_av1: abort when written inferred values don't match

2020-06-14 Thread James Almer
ffmpeg | branch: release/4.3 | James Almer  | Thu Jun 11 
13:06:17 2020 -0300| [dba8e32e444e72c273bdc04a57dfb4c5a67388e7] | committer: 
James Almer

avcodec/cbs_av1: abort when written inferred values don't match

If this happens, it's a sign of parsing issues earlier in the process, or
misuse by the calling module.

Prevents writing invalid bitstreams.

Reviewed-by: Michael Niedermayer 
Signed-off-by: James Almer 
(cherry picked from commit 318a1a383dc0312ad5b4afec0ddf0d8d231f5c79)

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

 libavcodec/cbs_av1.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c
index fc228086c2..29b316e011 100644
--- a/libavcodec/cbs_av1.c
+++ b/libavcodec/cbs_av1.c
@@ -711,10 +711,11 @@ static size_t 
cbs_av1_get_payload_bytes_left(GetBitContext *gbc)
 
 #define infer(name, value) do { \
 if (current->name != (value)) { \
-av_log(ctx->log_ctx, AV_LOG_WARNING, "Warning: " \
+av_log(ctx->log_ctx, AV_LOG_ERROR, \
"%s does not match inferred value: " \
"%"PRId64", but should be %"PRId64".\n", \
#name, (int64_t)current->name, (int64_t)(value)); \
+return AVERROR_INVALIDDATA; \
 } \
 } while (0)
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/cbs_h2645: abort when written inferred values don't match

2020-06-14 Thread James Almer
ffmpeg | branch: release/4.3 | James Almer  | Thu Jun 11 
13:06:10 2020 -0300| [e6ab99f324b4b2bbb76afc9cd5463ce653ace72e] | committer: 
James Almer

avcodec/cbs_h2645: abort when written inferred values don't match

If this happens, it's a sign of parsing issues earlier in the process, or
misuse by the calling module.

Prevents writing invalid bitstreams.

Reviewed-by: Michael Niedermayer 
Signed-off-by: James Almer 
(cherry picked from commit ef13fafe229a86480305fbb05e83208102ea962f)

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

 libavcodec/cbs_h2645.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
index b432921ecc..64fe2c1b9b 100644
--- a/libavcodec/cbs_h2645.c
+++ b/libavcodec/cbs_h2645.c
@@ -408,10 +408,11 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext 
*gbc)
 
 #define infer(name, value) do { \
 if (current->name != (value)) { \
-av_log(ctx->log_ctx, AV_LOG_WARNING, "Warning: " \
+av_log(ctx->log_ctx, AV_LOG_ERROR, \
"%s does not match inferred value: " \
"%"PRId64", but should be %"PRId64".\n", \
#name, (int64_t)current->name, (int64_t)(value)); \
+return AVERROR_INVALIDDATA; \
 } \
 } while (0)
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/pixlet: Fix log(0) check

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun 13 11:21:52 2020 +0200| [335ddf2fe9bd4f67358c7ccf13c415cd7df7d955] | 
committer: Michael Niedermayer

avcodec/pixlet: Fix log(0) check

Fixes: passing zero to clz(), which is not a valid argument
Fixes: 
23337/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PIXLET_fuzzer-5179131989065728

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit bd0f81526d3f4c23ecd0a399829103be2445c011)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/pixlet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/pixlet.c b/libavcodec/pixlet.c
index 7b068b1ce5..78f571cd5f 100644
--- a/libavcodec/pixlet.c
+++ b/libavcodec/pixlet.c
@@ -221,7 +221,7 @@ static int read_high_coeffs(AVCodecContext *avctx, uint8_t 
*src, int16_t *dst,
 length = 25 - nbits;
 
 while (i < size) {
-if (state >> 8 != -3)
+if (((state >> 8) + 3) & 0xFFF)
 value = ff_clz((state >> 8) + 3) ^ 0x1F;
 else
 value = -1;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/mov: Check if DTS is AV_NOPTS_VALUE in mov_find_next_sample().

2020-06-14 Thread Dale Curtis
ffmpeg | branch: release/4.3 | Dale Curtis  | Thu May 
14 14:38:07 2020 -0700| [8dee726b1a5c82c5e6578a606b299c6fdc74c142] | committer: 
Michael Niedermayer

avformat/mov: Check if DTS is AV_NOPTS_VALUE in mov_find_next_sample().

Signed-off-by: Dale Curtis 
Signed-off-by: Michael Niedermayer 
(cherry picked from commit bf446711bc8b7f316771870b8d4dc4dd65f5d94b)
Signed-off-by: Michael Niedermayer 

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

 libavformat/mov.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index e11c9f4457..2fc27d2aec 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -7776,7 +7776,7 @@ static AVIndexEntry *mov_find_next_sample(AVFormatContext 
*s, AVStream **st)
 av_log(s, AV_LOG_TRACE, "stream %d, sample %d, dts %"PRId64"\n", 
i, msc->current_sample, dts);
 if (!sample || (!(s->pb->seekable & AVIO_SEEKABLE_NORMAL) && 
current_sample->pos < sample->pos) ||
 ((s->pb->seekable & AVIO_SEEKABLE_NORMAL) &&
- ((msc->pb != s->pb && dts < best_dts) || (msc->pb == s->pb &&
+ ((msc->pb != s->pb && dts < best_dts) || (msc->pb == s->pb && 
dts != AV_NOPTS_VALUE &&
  ((FFABS(best_dts - dts) <= AV_TIME_BASE && 
current_sample->pos < sample->pos) ||
   (FFABS(best_dts - dts) > AV_TIME_BASE && dts < 
best_dts)) {
 sample = current_sample;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/thp: Check fps

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Mon Jun  8 09:28:55 2020 +0200| [838e17ffec4b1cc930cd89228e88ee8db1b52dcb] | 
committer: Michael Niedermayer

avformat/thp: Check fps

Fixes: division by zero
Fixes: 
23162/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-4856420817436672

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 0e15b01b4e463d12128db2c15de7741637548347)
Signed-off-by: Michael Niedermayer 

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

 libavformat/thp.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavformat/thp.c b/libavformat/thp.c
index 4abff1313a..bcc3febaa1 100644
--- a/libavformat/thp.c
+++ b/libavformat/thp.c
@@ -75,6 +75,8 @@ static int thp_read_header(AVFormatContext *s)
avio_rb32(pb); /* Max samples.  */
 
 thp->fps = av_d2q(av_int2float(avio_rb32(pb)), INT_MAX);
+if (thp->fps.den <= 0 || thp->fps.num < 0)
+return AVERROR_INVALIDDATA;
 thp->framecnt= avio_rb32(pb);
 thp->first_framesz   = avio_rb32(pb);
 pb->maxsize  = avio_rb32(pb);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/oggdec: Disable mid stream codec changes

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun 13 12:36:49 2020 +0200| [6011484167bf4a0548dedd0da573c4933cd335be] | 
committer: Michael Niedermayer

avformat/oggdec: Disable mid stream codec changes

Fixes: 
22082/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5688619118624768
Fixes: crash from V-codecs/Theora/theora_testsuite_broken/multi2.ogg

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Suggested-by: Lynne on IRC
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 70277f12328fb052c2c758fa7f4eb36b9ea89638)
Signed-off-by: Michael Niedermayer 

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

 libavformat/oggdec.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 9eb45499c6..a456c3df60 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -226,9 +226,10 @@ static int ogg_replace_stream(AVFormatContext *s, uint32_t 
serial, char *magic,
 return AVERROR_INVALIDDATA;
 }
 
-/* We only have a single stream anyway, so if there's a new stream with
- * a different codec just replace it */
 os = &ogg->streams[0];
+if (os->codec != codec)
+return AVERROR(EINVAL);
+
 os->serial  = serial;
 os->codec   = codec;
 os->serial  = serial;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mpeg4videodec: avoid invalid values and reinitialize in format changes for studio profile

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun 13 11:56:01 2020 +0200| [c37218944327857e62e831840e1e8d50b481f230] | 
committer: Michael Niedermayer

avcodec/mpeg4videodec: avoid invalid values and reinitialize in format changes 
for studio profile

Fixes: out of array access
Fixes: 
23327/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MPEG4_fuzzer-5134822992510976

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit e53235f06c229a23d3241b47e32647019161fb7c)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/mpeg4videodec.c | 19 ++-
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
index 7e52bbef1b..f5021208c3 100644
--- a/libavcodec/mpeg4videodec.c
+++ b/libavcodec/mpeg4videodec.c
@@ -3134,6 +3134,7 @@ static int decode_studio_vol_header(Mpeg4DecContext *ctx, 
GetBitContext *gb)
 MpegEncContext *s = &ctx->m;
 int width, height;
 int bits_per_raw_sample;
+int rgb, chroma_format;
 
 // random_accessible_vol and video_object_type_indication have 
already
 // been read by the caller decode_vol_header()
@@ -3141,28 +3142,36 @@ static int decode_studio_vol_header(Mpeg4DecContext 
*ctx, GetBitContext *gb)
 ctx->shape = get_bits(gb, 2); /* video_object_layer_shape */
 skip_bits(gb, 4); /* video_object_layer_shape_extension */
 skip_bits1(gb); /* progressive_sequence */
+if (ctx->shape != RECT_SHAPE) {
+avpriv_request_sample(s->avctx, "MPEG-4 Studio profile non 
rectangular shape");
+return AVERROR_PATCHWELCOME;
+}
 if (ctx->shape != BIN_ONLY_SHAPE) {
-ctx->rgb = get_bits1(gb); /* rgb_components */
-s->chroma_format = get_bits(gb, 2); /* chroma_format */
-if (!s->chroma_format) {
+rgb = get_bits1(gb); /* rgb_components */
+chroma_format = get_bits(gb, 2); /* chroma_format */
+if (!chroma_format || chroma_format == CHROMA_420 || (rgb && 
chroma_format == CHROMA_422)) {
 av_log(s->avctx, AV_LOG_ERROR, "illegal chroma format\n");
 return AVERROR_INVALIDDATA;
 }
 
 bits_per_raw_sample = get_bits(gb, 4); /* bit_depth */
 if (bits_per_raw_sample == 10) {
-if (ctx->rgb) {
+if (rgb) {
 s->avctx->pix_fmt = AV_PIX_FMT_GBRP10;
 }
 else {
-s->avctx->pix_fmt = s->chroma_format == CHROMA_422 ? 
AV_PIX_FMT_YUV422P10 : AV_PIX_FMT_YUV444P10;
+s->avctx->pix_fmt = chroma_format == CHROMA_422 ? 
AV_PIX_FMT_YUV422P10 : AV_PIX_FMT_YUV444P10;
 }
 }
 else {
 avpriv_request_sample(s->avctx, "MPEG-4 Studio profile 
bit-depth %u", bits_per_raw_sample);
 return AVERROR_PATCHWELCOME;
 }
+if (rgb != ctx->rgb || s->chroma_format != chroma_format)
+s->context_reinit = 1;
 s->avctx->bits_per_raw_sample = bits_per_raw_sample;
+ctx->rgb = rgb;
+s->chroma_format = chroma_format;
 }
 if (ctx->shape == RECT_SHAPE) {
 check_marker(s->avctx, gb, "before video_object_layer_width");

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/wmalosslessdec: Check block_align maximum

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Tue Jun  9 22:11:23 2020 +0200| [28460ece95feffa4531f79f3a23d701ee4b5ec0e] | 
committer: Michael Niedermayer

avcodec/wmalosslessdec: Check block_align maximum

Fixes: Assertion failure
Fixes: 
22737/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMALOSSLESS_fuzzer-595839681920

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 314d10f7a60f1786c85da30a569be61e2b906fef)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/wmalosslessdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/wmalosslessdec.c b/libavcodec/wmalosslessdec.c
index cfdd9e9a85..62d5fadf5d 100644
--- a/libavcodec/wmalosslessdec.c
+++ b/libavcodec/wmalosslessdec.c
@@ -184,7 +184,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
 unsigned int channel_mask;
 int i, log2_max_num_subframes;
 
-if (avctx->block_align <= 0) {
+if (avctx->block_align <= 0 || avctx->block_align > (1<<21)) {
 av_log(avctx, AV_LOG_ERROR, "block_align is not set or invalid\n");
 return AVERROR(EINVAL);
 }

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mv30: check mode_size vs. input space

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun 13 16:03:14 2020 +0200| [95b9ac040ef7ada89f6885c8e6c1a77c9018954e] | 
committer: Michael Niedermayer

avcodec/mv30: check mode_size vs. input space

Fixes: Timeout (longer than my patience vs 1sec)
Fixes: 
22984/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MV30_fuzzer-5630021988515840

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 75e2ac4f0752649a0b9486e6825ef68341ee974d)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/mv30.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/mv30.c b/libavcodec/mv30.c
index 013a5753fe..76b9170eaf 100644
--- a/libavcodec/mv30.c
+++ b/libavcodec/mv30.c
@@ -410,6 +410,9 @@ static int decode_intra(AVCodecContext *avctx, 
GetBitContext *gb, AVFrame *frame
 int ret;
 
 mgb = *gb;
+if (get_bits_left(gb) < s->mode_size * 8)
+return AVERROR_INVALIDDATA;
+
 skip_bits_long(gb, s->mode_size * 8);
 
 linesize[0] = frame->linesize[0];

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/movtextdec: Fix shift overflows in mov_text_init()

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Fri Jun  5 18:22:51 2020 +0200| [611fc7244a1a93b4d0fd652d13a09c52f2dc19f3] | 
committer: Michael Niedermayer

avcodec/movtextdec: Fix shift overflows in mov_text_init()

Fixes: left shift of 243 by 24 places cannot be represented in type 'int'
Fixes: 
22716/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MOVTEXT_fuzzer-5704263425851392

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit d7a2311a2c5be1e861c3df618d295e7eced8e84b)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/movtextdec.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
index 4b4da5e0d9..4a21dbf36d 100644
--- a/libavcodec/movtextdec.c
+++ b/libavcodec/movtextdec.c
@@ -492,10 +492,10 @@ static int mov_text_init(AVCodecContext *avctx) {
 return ff_ass_subtitle_header_full(avctx,
 m->frame_width, m->frame_height,
 m->d.font, m->d.fontsize,
-(255 - m->d.alpha) << 24 | RGB_TO_BGR(m->d.color),
-(255 - m->d.alpha) << 24 | RGB_TO_BGR(m->d.color),
-(255 - m->d.back_alpha) << 24 | 
RGB_TO_BGR(m->d.back_color),
-(255 - m->d.back_alpha) << 24 | 
RGB_TO_BGR(m->d.back_color),
+(255U - m->d.alpha) << 24 | RGB_TO_BGR(m->d.color),
+(255U - m->d.alpha) << 24 | RGB_TO_BGR(m->d.color),
+(255U - m->d.back_alpha) << 24 | 
RGB_TO_BGR(m->d.back_color),
+(255U - m->d.back_alpha) << 24 | 
RGB_TO_BGR(m->d.back_color),
 m->d.bold, m->d.italic, m->d.underline,
 ASS_DEFAULT_BORDERSTYLE, m->d.alignment);
 } else

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/lossless_audiodsp: Fix undefined overflows in scalarproduct_and_madd_int16_c()

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sun Jun  7 19:24:10 2020 +0200| [e149b24c63859a4d45aafb56abb70f334655] | 
committer: Michael Niedermayer

avcodec/lossless_audiodsp: Fix undefined overflows in 
scalarproduct_and_madd_int16_c()

Fixes: signed integer overflow: 2142077091 + 6881070 cannot be represented in 
type 'int'
Fixes: 
22737/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMALOSSLESS_fuzzer-595839681920

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit c0dfe134beefde4070d43910518b1f4a58f01794)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/lossless_audiodsp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/lossless_audiodsp.c b/libavcodec/lossless_audiodsp.c
index 3a9f9b20bb..378165924d 100644
--- a/libavcodec/lossless_audiodsp.c
+++ b/libavcodec/lossless_audiodsp.c
@@ -27,7 +27,7 @@ static int32_t scalarproduct_and_madd_int16_c(int16_t *v1, 
const int16_t *v2,
   const int16_t *v3,
   int order, int mul)
 {
-int res = 0;
+unsigned res = 0;
 
 do {
 res   += *v1 * *v2++;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/jpeg2000dec: Fix/check for multiple integer overflows

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Thu Jun 11 22:45:27 2020 +0200| [fa0a71ac41b0627de11d0a5faa05743d91c820c3] | 
committer: Michael Niedermayer

avcodec/jpeg2000dec: Fix/check for multiple integer overflows

Fixes: shift exponent 35 is too large for 32-bit type 'int'
Fixes: 
22857/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_JPEG2000_fuzzer-5202709358837760

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit c579ceffbe30d048c7448c5e9238fc52094de630)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/jpeg2000dec.c | 19 +--
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
index b7766459c4..ab36009a2d 100644
--- a/libavcodec/jpeg2000dec.c
+++ b/libavcodec/jpeg2000dec.c
@@ -612,12 +612,19 @@ static int get_rgn(Jpeg2000DecoderContext *s, int n)
 // Currently compno cannot be greater than 4.
 // However, future implementation should support compno up to 65536
 if (compno < s->ncomponents) {
-if (s->curtileno == -1)
-s->roi_shift[compno] = bytestream2_get_byte(&s->g);
-else {
+int v;
+if (s->curtileno == -1) {
+v =  bytestream2_get_byte(&s->g);
+if (v > 30)
+return AVERROR_PATCHWELCOME;
+s->roi_shift[compno] = v;
+} else {
 if (s->tile[s->curtileno].tp_idx != 0)
 return AVERROR_INVALIDDATA; // marker occurs only in first 
tile part of tile
-s->tile[s->curtileno].comp[compno].roi_shift = 
bytestream2_get_byte(&s->g);
+v = bytestream2_get_byte(&s->g);
+if (v > 30)
+return AVERROR_PATCHWELCOME;
+s->tile[s->curtileno].comp[compno].roi_shift = v;
 }
 return 0;
 }
@@ -1669,8 +1676,8 @@ static int decode_cblk(Jpeg2000DecoderContext *s, 
Jpeg2000CodingStyle *codsty,
 ff_mqc_initdec(&t1->mqc, cblk->data, 0, 1);
 
 while (passno--) {
-if (bpno < 0) {
-av_log(s->avctx, AV_LOG_ERROR, "bpno became negative\n");
+if (bpno < 0 || bpno > 29) {
+av_log(s->avctx, AV_LOG_ERROR, "bpno became invalid\n");
 return AVERROR_INVALIDDATA;
 }
 switch(pass_t) {

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mpeg12dec: remove outdated comments

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun  6 19:42:07 2020 +0200| [e625d40b93373e0bb8d52ba265774b4caefc8323] | 
committer: Michael Niedermayer

avcodec/mpeg12dec: remove outdated comments

Found-by: Kieran
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 48de8f5816aa54dc584aeb2dbbf63a0e880279e2)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/mpeg12dec.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 54e122cd9d..99e56532a5 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -221,7 +221,6 @@ end:
 }
 
 /**
- * Note: this function can read out of range and crash for corrupt streams.
  * Changing this would eat up any speed benefits it has.
  * Do not use "fast" flag if you need the code to be robust.
  */
@@ -397,7 +396,6 @@ end:
 }
 
 /**
- * Note: this function can read out of range and crash for corrupt streams.
  * Changing this would eat up any speed benefits it has.
  * Do not use "fast" flag if you need the code to be robust.
  */
@@ -559,7 +557,6 @@ static inline int mpeg2_decode_block_intra(MpegEncContext 
*s,
 }
 
 /**
- * Note: this function can read out of range and crash for corrupt streams.
  * Changing this would eat up any speed benefits it has.
  * Do not use "fast" flag if you need the code to be robust.
  */

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/ape: Cleanup after ape_read_header() failure

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun 13 11:13:21 2020 +0200| [6514919306f2da851226c7cfa94f39424c55fdd9] | 
committer: Michael Niedermayer

avformat/ape: Cleanup after ape_read_header() failure

Fixes: memleaks
Fixes: 
23306/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5635436931448832

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 9b5fc789fb52af8769ec66e634ea362a67cb5d06)
Signed-off-by: Michael Niedermayer 

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

 libavformat/ape.c | 26 +++---
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/libavformat/ape.c b/libavformat/ape.c
index ed6752a415..39a584aa98 100644
--- a/libavformat/ape.c
+++ b/libavformat/ape.c
@@ -83,6 +83,8 @@ typedef struct APEContext {
 uint8_t  *bittable;
 } APEContext;
 
+static int ape_read_close(AVFormatContext * s);
+
 static int ape_probe(const AVProbeData * p)
 {
 int version = AV_RL16(p->buf+4);
@@ -281,14 +283,18 @@ static int ape_read_header(AVFormatContext * s)
 
 if (ape->seektablelength > 0) {
 ape->seektable = av_mallocz(ape->seektablelength);
-if (!ape->seektable)
-return AVERROR(ENOMEM);
+if (!ape->seektable) {
+ret = AVERROR(ENOMEM);
+goto fail;
+}
 for (i = 0; i < ape->seektablelength / sizeof(uint32_t) && 
!pb->eof_reached; i++)
 ape->seektable[i] = avio_rl32(pb);
 if (ape->fileversion < 3810) {
 ape->bittable = av_mallocz(ape->totalframes);
-if (!ape->bittable)
-return AVERROR(ENOMEM);
+if (!ape->bittable) {
+ret = AVERROR(ENOMEM);
+goto fail;
+}
 for (i = 0; i < ape->totalframes && !pb->eof_reached; i++)
 ape->bittable[i] = avio_r8(pb);
 }
@@ -341,8 +347,10 @@ static int ape_read_header(AVFormatContext * s)
 
 /* now we are ready: build format streams */
 st = avformat_new_stream(s, NULL);
-if (!st)
-return AVERROR(ENOMEM);
+if (!st) {
+ret = AVERROR(ENOMEM);
+goto fail;
+}
 
 total_blocks = (ape->totalframes == 0) ? 0 : ((ape->totalframes - 1) * 
ape->blocksperframe) + ape->finalframeblocks;
 
@@ -359,7 +367,7 @@ static int ape_read_header(AVFormatContext * s)
 avpriv_set_pts_info(st, 64, 1, ape->samplerate);
 
 if ((ret = ff_alloc_extradata(st->codecpar, APE_EXTRADATA_SIZE)) < 0)
-return ret;
+goto fail;
 AV_WL16(st->codecpar->extradata + 0, ape->fileversion);
 AV_WL16(st->codecpar->extradata + 2, ape->compressiontype);
 AV_WL16(st->codecpar->extradata + 4, ape->formatflags);
@@ -378,6 +386,10 @@ static int ape_read_header(AVFormatContext * s)
 }
 
 return 0;
+fail:
+ape_read_close(s);
+
+return ret;
 }
 
 static int ape_read_packet(AVFormatContext * s, AVPacket * pkt)

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/sonic: Fix several integer overflows

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Thu Feb 20 19:56:39 2020 +0100| [2ce670fc489b319afb0d80d47e9875bf9a829d3a] | 
committer: Michael Niedermayer

avcodec/sonic: Fix several integer overflows

Fixes: signed integer overflow: 2129689466 + 2129689466 cannot be represented 
in type 'int'
Fixes: 
20715/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SONIC_fuzzer-5155263109922816

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 75d520e33704447f1b29ac47fd9e40994a6bc659)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/sonic.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavcodec/sonic.c b/libavcodec/sonic.c
index c975774b04..b82c44344c 100644
--- a/libavcodec/sonic.c
+++ b/libavcodec/sonic.c
@@ -140,7 +140,8 @@ static inline av_flatten int get_symbol(RangeCoder *c, 
uint8_t *state, int is_si
 if(get_rac(c, state+0))
 return 0;
 else{
-int i, e, a;
+int i, e;
+unsigned a;
 e= 0;
 while(get_rac(c, state+1 + FFMIN(e,9))){ //1..10
 e++;
@@ -474,7 +475,7 @@ static int predictor_calc_error(int *k, int *state, int 
order, int error)
 for (i = order-2; i >= 0; i--, k_ptr--, state_ptr--)
 {
 int k_value = *k_ptr, state_value = *state_ptr;
-x -= shift_down(k_value * state_value, LATTICE_SHIFT);
+x -= shift_down(k_value * (unsigned)state_value, LATTICE_SHIFT);
 state_ptr[1] = state_value + shift_down(k_value * (unsigned)x, 
LATTICE_SHIFT);
 }
 #else
@@ -1044,7 +1045,7 @@ static int sonic_decode_frame(AVCodecContext *avctx,
 x += s->channels;
 }
 
-s->int_samples[x] = predictor_calc_error(s->predictor_k, 
s->predictor_state[ch], s->num_taps, s->coded_samples[ch][i] * quant);
+s->int_samples[x] = predictor_calc_error(s->predictor_k, 
s->predictor_state[ch], s->num_taps, s->coded_samples[ch][i] * (unsigned)quant);
 x += s->channels;
 }
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/cbs: Allocate more CodedBitstreamUnit at once in cbs_insert_unit()

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Fri Apr 10 22:05:07 2020 +0200| [e468d9248c3eec2f55cc452ae5d5931823f42cd2] | 
committer: Michael Niedermayer

avcodec/cbs: Allocate more CodedBitstreamUnit at once in cbs_insert_unit()

Fixes: Timeout (85sec -> 0.5sec)
Fixes: 
20791/clusterfuzz-testcase-minimized-ffmpeg_BSF_AV1_FRAME_SPLIT_fuzzer-5659537719951360
Fixes: 
21214/clusterfuzz-testcase-minimized-ffmpeg_BSF_MPEG2_METADATA_fuzzer-5165560875974656
Fixes: 
21247/clusterfuzz-testcase-minimized-ffmpeg_BSF_H264_METADATA_fuzzer-5715175257931776

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 49ba60fed04d7011c36bae378445ba93ccf983c2)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/cbs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
index 0bd5e1ac5d..42cb9711fa 100644
--- a/libavcodec/cbs.c
+++ b/libavcodec/cbs.c
@@ -693,11 +693,11 @@ static int cbs_insert_unit(CodedBitstreamContext *ctx,
 memmove(units + position + 1, units + position,
 (frag->nb_units - position) * sizeof(*units));
 } else {
-units = av_malloc_array(frag->nb_units + 1, sizeof(*units));
+units = av_malloc_array(frag->nb_units*2 + 1, sizeof(*units));
 if (!units)
 return AVERROR(ENOMEM);
 
-++frag->nb_units_allocated;
+frag->nb_units_allocated = 2*frag->nb_units_allocated + 1;
 
 if (position > 0)
 memcpy(units, frag->units, position * sizeof(*units));

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/mpl2dec: Fix integer overflow with duration

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Mon Jun  8 09:47:41 2020 +0200| [d078f39a51520185bbb1e4683d709141562d9929] | 
committer: Michael Niedermayer

avformat/mpl2dec: Fix integer overflow with duration

Fixes: signed integer overflow: 9223372036854775807 - -1 cannot be represented 
in type 'long'
Fixes: 
23167/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-6425051741290496

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 9a42a67c5ca198a3879b7f3663cc44ccbcaf0bd3)
Signed-off-by: Michael Niedermayer 

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

 libavformat/mpl2dec.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavformat/mpl2dec.c b/libavformat/mpl2dec.c
index 4ae18390f0..ddee638c31 100644
--- a/libavformat/mpl2dec.c
+++ b/libavformat/mpl2dec.c
@@ -55,7 +55,7 @@ static int mpl2_probe(const AVProbeData *p)
 return AVPROBE_SCORE_MAX;
 }
 
-static int read_ts(char **line, int64_t *pts_start, int *duration)
+static int read_ts(char **line, int64_t *pts_start, int64_t *duration)
 {
 char c;
 int len;
@@ -69,7 +69,10 @@ static int read_ts(char **line, int64_t *pts_start, int 
*duration)
 }
 if (sscanf(*line, "[%"SCNd64"][%"SCNd64"]%c%n",
pts_start, &end, &c, &len) >= 3) {
-*duration = end - *pts_start;
+if (end < *pts_start || end - (uint64_t)*pts_start > INT64_MAX) {
+*duration = -1;
+} else
+*duration = end - *pts_start;
 *line += len - 1;
 return 0;
 }
@@ -97,7 +100,7 @@ static int mpl2_read_header(AVFormatContext *s)
 const int64_t pos = avio_tell(s->pb);
 int len = ff_get_line(s->pb, line, sizeof(line));
 int64_t pts_start;
-int duration;
+int64_t duration;
 
 if (!len)
 break;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/iff: Fix off by x error

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun 13 10:48:14 2020 +0200| [0e51c7b64a35478250c21efae14d68c50aea666c] | 
committer: Michael Niedermayer

avcodec/iff: Fix off by x error

Fixes: out of array access
Fixes: 
23245/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_IFF_ILBM_fuzzer-5723121327013888.fuzz

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 51225dee0a6266780d26d43bd6802bbcf736327e)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/iff.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/iff.c b/libavcodec/iff.c
index 66879cbf5d..79f6215c77 100644
--- a/libavcodec/iff.c
+++ b/libavcodec/iff.c
@@ -723,7 +723,7 @@ static void decode_deep_rle32(uint8_t *dst, const uint8_t 
*src, int src_size, in
 if (opcode >= 0) {
 int size = opcode + 1;
 for (i = 0; i < size; i++) {
-int length = FFMIN(size - i, width);
+int length = FFMIN(size - i, width - x);
 if (src_end - src < length * 4)
 return;
 memcpy(dst + y*linesize + x * 4, src, length * 4);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/loco: Fix signed integer overflow in loco_get_rice()

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Tue Jun  9 22:14:59 2020 +0200| [63d14168a50169aac480cb983ef7819317c2fb5c] | 
committer: Michael Niedermayer

avcodec/loco: Fix signed integer overflow in loco_get_rice()

Fixes: signed integer overflow: 2147483647 + 1 cannot be represented in type 
'int'
Fixes: 
22975/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_LOCO_fuzzer-5658160970072064

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit aa88cdfd90f5da0683cd6556c75a5ba5740a1c27)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/loco.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/loco.c b/libavcodec/loco.c
index e891d83ece..d0cedf577d 100644
--- a/libavcodec/loco.c
+++ b/libavcodec/loco.c
@@ -82,7 +82,7 @@ static inline void loco_update_rice_param(RICEContext *r, int 
val)
 
 static inline int loco_get_rice(RICEContext *r)
 {
-int v;
+unsigned v;
 if (r->run > 0) { /* we have zero run */
 r->run--;
 loco_update_rice_param(r, 0);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/snowdec: Avoid integer overflow with huge qlog

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun  6 17:45:39 2020 +0200| [bb788dec83231ce2f35bcc6b11c04a39d18c0c7a] | 
committer: Michael Niedermayer

avcodec/snowdec: Avoid integer overflow with huge qlog

Fixes: integer overflow
Fixes: 
22285/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SNOW_fuzzer-5682428762128384

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 38fbf33c7255b503453052c32ab5ae4fb151b29e)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/snowdec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/snowdec.c b/libavcodec/snowdec.c
index 519e377a11..88664dc472 100644
--- a/libavcodec/snowdec.c
+++ b/libavcodec/snowdec.c
@@ -117,7 +117,7 @@ static av_always_inline void 
predict_slice_buffered(SnowContext *s, slice_buffer
 static inline void decode_subband_slice_buffered(SnowContext *s, SubBand *b, 
slice_buffer * sb, int start_y, int h, int save_state[1]){
 const int w= b->width;
 int y;
-const int qlog= av_clip(s->qlog + b->qlog, 0, QROOT*16);
+const int qlog= av_clip(s->qlog + (int64_t)b->qlog, 0, QROOT*16);
 int qmul= ff_qexp[qlog&(QROOT-1)]<<(qlog>>QSHIFT);
 int qadd= (s->qbias*qmul)>>QBIAS_SHIFT;
 int new_index = 0;
@@ -224,7 +224,7 @@ static int decode_q_branch(SnowContext *s, int level, int 
x, int y){
 
 static void dequantize_slice_buffered(SnowContext *s, slice_buffer * sb, 
SubBand *b, IDWTELEM *src, int stride, int start_y, int end_y){
 const int w= b->width;
-const int qlog= av_clip(s->qlog + b->qlog, 0, QROOT*16);
+const int qlog= av_clip(s->qlog + (int64_t)b->qlog, 0, QROOT*16);
 const int qmul= ff_qexp[qlog&(QROOT-1)]<<(qlog>>QSHIFT);
 const int qadd= (s->qbias*qmul)>>QBIAS_SHIFT;
 int x,y;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/mpeg4videodec: Fix 2 integer overflows in get_amv()

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Thu Jun 11 22:22:57 2020 +0200| [f8239323498c1695ec83174bc72239717e1d0c9d] | 
committer: Michael Niedermayer

avcodec/mpeg4videodec: Fix 2 integer overflows in get_amv()

Fixes: signed integer overflow: -144876608 * 16 cannot be represented in type 
'int'
Fixes: 
22782/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MPEG4_fuzzer-6039584977977344

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit e361785ee05cc75d3caacf2f254160b0336f5358)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/mpeg4videodec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
index f5021208c3..610e365c36 100644
--- a/libavcodec/mpeg4videodec.c
+++ b/libavcodec/mpeg4videodec.c
@@ -610,7 +610,7 @@ static inline int get_amv(Mpeg4DecContext *ctx, int n)
 dy -= 1 << (shift + a + 1);
 else
 dx -= 1 << (shift + a + 1);
-mb_v = s->sprite_offset[0][n] + dx * s->mb_x * 16 + dy * s->mb_y * 16;
+mb_v = s->sprite_offset[0][n] + dx * s->mb_x * 16U + dy * s->mb_y * 
16U;
 
 sum = 0;
 for (y = 0; y < 16; y++) {

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/ffwavesynth: Avoid undefined operation on ts overflow

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sat Jun 13 21:47:03 2020 +0200| [a3e0c9f8f086d37a646d7cc5a7aa8f23bd5b0024] | 
committer: Michael Niedermayer

avcodec/ffwavesynth: Avoid undefined operation on ts overflow

Alternatively these conditions could be treated as errors
Fixes: 
23147/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FFWAVESYNTH_fuzzer-5639254549200896
Fixes: signed integer overflow: 9223372036854775807 + 1 cannot be represented 
in type 'int64_t' (aka 'long')

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 584d334afd59714ed04637a9227a4f1368c26166)
Signed-off-by: Michael Niedermayer 

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

 libavcodec/ffwavesynth.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/ffwavesynth.c b/libavcodec/ffwavesynth.c
index a446aa2fdf..8d3ac81aef 100644
--- a/libavcodec/ffwavesynth.c
+++ b/libavcodec/ffwavesynth.c
@@ -444,7 +444,7 @@ static int wavesynth_decode(AVCodecContext *avc, void 
*rframe, int *rgot_frame,
 if (r < 0)
 return r;
 pcm = (int16_t *)frame->data[0];
-for (s = 0; s < duration; s++, ts++) {
+for (s = 0; s < duration; s++, ts+=(uint64_t)1) {
 memset(channels, 0, avc->channels * sizeof(*channels));
 if (ts >= ws->next_ts)
 wavesynth_enter_intervals(ws, ts);
@@ -452,7 +452,7 @@ static int wavesynth_decode(AVCodecContext *avc, void 
*rframe, int *rgot_frame,
 for (c = 0; c < avc->channels; c++)
 *(pcm++) = channels[c] >> 16;
 }
-ws->cur_ts += duration;
+ws->cur_ts += (uint64_t)duration;
 *rgot_frame = 1;
 return packet->size;
 }

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] RELEASE_NOTES: Based on the version from 4.1

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Fri Nov  2 01:36:21 2018 +0100| [cc948a1c8c86847cc4dac848b1aff2a68aef0843] | 
committer: Michael Niedermayer

RELEASE_NOTES: Based on the version from 4.1

Name suggested by Kieran O Leary and Reto Kromer

Signed-off-by: Michael Niedermayer 

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

 RELEASE_NOTES | 15 +++
 1 file changed, 15 insertions(+)

diff --git a/RELEASE_NOTES b/RELEASE_NOTES
new file mode 100644
index 00..2511706d5d
--- /dev/null
+++ b/RELEASE_NOTES
@@ -0,0 +1,15 @@
+
+  ┌┐
+  │ RELEASE NOTES for FFmpeg 4.3 "4:3" │
+  └┘
+
+   The FFmpeg Project proudly presents FFmpeg 4.3 "4:3", about 10
+   months after the release of FFmpeg 4.2.
+
+   A complete Changelog is available at the root of the project, and the
+   complete Git history on https://git.ffmpeg.org/gitweb/ffmpeg.git
+
+   We hope you will like this release as much as we enjoyed working on it, and
+   as usual, if you have any questions about it, or any FFmpeg related topic,
+   feel free to join us on the #ffmpeg IRC channel (on irc.freenode.net) or ask
+   on the mailing-lists.

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/mxfdec: free duplicated utf16 strings

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sun Jun 14 19:45:05 2020 +0200| [5c1e458b3454f947c32b6ba35015d715f111e1a5] | 
committer: Michael Niedermayer

avformat/mxfdec: free duplicated utf16 strings

Fixes: memleak
Fixes: 
23415/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5124814510751744

Suggested-by: Marton Balint 
Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit 0aa2768cb275bda9e9e1331ed95adc7cd686eafe)
Signed-off-by: Michael Niedermayer 

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

 libavformat/mxfdec.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index a60bdfeade..90546d42b3 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -867,6 +867,7 @@ static inline int mxf_read_utf16_string(AVIOContext *pb, 
int size, char** str, i
 return AVERROR(EINVAL);
 
 buf_size = size + size / 2 + 1;
+av_free(*str);
 *str = av_malloc(buf_size);
 if (!*str)
 return AVERROR(ENOMEM);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/4xm: Check that a video stream was created before returning packets for it

2020-06-14 Thread Michael Niedermayer
ffmpeg | branch: release/4.3 | Michael Niedermayer  | 
Sun Jun 14 19:51:23 2020 +0200| [8bdc64d45ff769e0a71c1c2f94e4160004090242] | 
committer: Michael Niedermayer

avformat/4xm: Check that a video stream was created before returning packets 
for it

Fixes: assertion failure
Fixes: 
23434/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5227750851084288.fuzz

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
(cherry picked from commit c517c3f4741b6897ea952d1fba199c93c5217cfe)
Signed-off-by: Michael Niedermayer 

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

 libavformat/4xm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavformat/4xm.c b/libavformat/4xm.c
index 5f0504b13e..6a227a0b0d 100644
--- a/libavformat/4xm.c
+++ b/libavformat/4xm.c
@@ -218,6 +218,7 @@ static int fourxm_read_header(AVFormatContext *s)
 fourxm->track_count = 0;
 fourxm->tracks  = NULL;
 fourxm->fps = (AVRational){1,1};
+fourxm->video_stream_index = -1;
 
 /* skip the first 3 32-bit numbers */
 avio_skip(pb, 12);
@@ -326,6 +327,8 @@ static int fourxm_read_packet(AVFormatContext *s,
  * and size */
 if (size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE - 8)
 return AVERROR_INVALIDDATA;
+if (fourxm->video_stream_index < 0)
+return AVERROR_INVALIDDATA;
 if ((ret = av_new_packet(pkt, size + 8)) < 0)
 return ret;
 pkt->stream_index = fourxm->video_stream_index;

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/h264: create user data unregistered SEI side data for H.264

2020-06-14 Thread Limin Wang
ffmpeg | branch: master | Limin Wang  | Thu Jun 11 
12:50:46 2020 +0800| [4b3b217e3074687f2b55a1dfb3e6942c9f261908] | committer: 
Limin Wang

avcodec/h264: create user data unregistered SEI side data for H.264

Signed-off-by: Limin Wang 

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

 libavcodec/h264_sei.c |  19 -
 libavcodec/h264_sei.h |   2 +
 libavcodec/h264_slice.c   |  14 
 tests/ref/fate/mov-zombie | 195 ++
 4 files changed, 162 insertions(+), 68 deletions(-)

diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
index 870dd90717..7b8e6bd7ba 100644
--- a/libavcodec/h264_sei.c
+++ b/libavcodec/h264_sei.c
@@ -52,6 +52,10 @@ void ff_h264_sei_uninit(H264SEIContext *h)
 h->afd.present =  0;
 
 av_buffer_unref(&h->a53_caption.buf_ref);
+for (int i = 0; i < h->unregistered.nb_buf_ref; i++)
+av_buffer_unref(&h->unregistered.buf_ref[i]);
+h->unregistered.nb_buf_ref = 0;
+av_freep(&h->unregistered.buf_ref);
 }
 
 int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps,
@@ -260,25 +264,34 @@ static int 
decode_unregistered_user_data(H264SEIUnregistered *h, GetBitContext *
 {
 uint8_t *user_data;
 int e, build, i;
+AVBufferRef *buf_ref, **tmp;
 
 if (size < 16 || size >= INT_MAX - 1)
 return AVERROR_INVALIDDATA;
 
-user_data = av_malloc(size + 1);
-if (!user_data)
+tmp = av_realloc_array(h->buf_ref, h->nb_buf_ref + 1, sizeof(*h->buf_ref));
+if (!tmp)
 return AVERROR(ENOMEM);
+h->buf_ref = tmp;
+
+buf_ref = av_buffer_alloc(size + 1);
+if (!buf_ref)
+return AVERROR(ENOMEM);
+user_data = buf_ref->data;
 
 for (i = 0; i < size; i++)
 user_data[i] = get_bits(gb, 8);
 
 user_data[i] = 0;
+buf_ref->size = size;
+h->buf_ref[h->nb_buf_ref++] = buf_ref;
+
 e = sscanf(user_data + 16, "x264 - core %d", &build);
 if (e == 1 && build > 0)
 h->x264_build = build;
 if (e == 1 && build == 1 && !strncmp(user_data+16, "x264 - core ", 16))
 h->x264_build = 67;
 
-av_free(user_data);
 return 0;
 }
 
diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h
index f07a5055c3..4fdcf4ed3f 100644
--- a/libavcodec/h264_sei.h
+++ b/libavcodec/h264_sei.h
@@ -126,6 +126,8 @@ typedef struct H264SEIA53Caption {
 
 typedef struct H264SEIUnregistered {
 int x264_build;
+AVBufferRef **buf_ref;
+int nb_buf_ref;
 } H264SEIUnregistered;
 
 typedef struct H264SEIRecoveryPoint {
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 713953778a..47f39173cb 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1289,6 +1289,20 @@ static int h264_export_frame_props(H264Context *h)
 h->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS;
 }
 
+for (int i = 0; i < h->sei.unregistered.nb_buf_ref; i++) {
+H264SEIUnregistered *unreg = &h->sei.unregistered;
+
+if (unreg->buf_ref[i]) {
+AVFrameSideData *sd = av_frame_new_side_data_from_buf(cur->f,
+AV_FRAME_DATA_SEI_UNREGISTERED,
+unreg->buf_ref[i]);
+if (!sd)
+av_buffer_unref(&unreg->buf_ref[i]);
+unreg->buf_ref[i] = NULL;
+}
+}
+h->sei.unregistered.nb_buf_ref = 0;
+
 if (h->sei.picture_timing.timecode_cnt > 0) {
 uint32_t tc = 0;
 uint32_t *tc_sd;
diff --git a/tests/ref/fate/mov-zombie b/tests/ref/fate/mov-zombie
index 445f921284..1a6625bc8f 100644
--- a/tests/ref/fate/mov-zombie
+++ b/tests/ref/fate/mov-zombie
@@ -1,133 +1,198 @@
 
packet|codec_type=video|stream_index=0|pts=0|pts_time=0.00|dts=-3004|dts_time=-0.033378|duration=3003|duration_time=0.033367|convergence_duration=N/A|convergence_duration_time=N/A|size=4133|pos=11309|flags=K_
 
packet|codec_type=video|stream_index=0|pts=5440|pts_time=0.060444|dts=-567|dts_time=-0.006300|duration=3003|duration_time=0.033367|convergence_duration=N/A|convergence_duration_time=N/A|size=1077|pos=15442|flags=__
-frame|media_type=video|stream_index=0|key_frame=1|pkt_pts=0|pkt_pts_time=0.00|pkt_dts=-567|pkt_dts_time=-0.006300|best_effort_timestamp=0|best_effort_timestamp_time=0.00|pkt_duration=3003|pkt_duration_time=0.033367|pkt_pos=11309|pkt_size=4133|width=160|height=240|pix_fmt=yuv420p|sample_aspect_ratio=2:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|color_range=tv|color_space=smpte170m|color_primaries=smpte170m|color_transfer=bt709|chroma_location=topleft
+frame|media_type=video|stream_index=0|key_frame=1|pkt_pts=0|pkt_pts_time=0.00|pkt_dts=-567|pkt_dts_time=-0.006300|best_effort_timestamp=0|best_effort_timestamp_time=0.00|pkt_duration=3003|pkt_duration_time=0.033367|pkt_pos=11309|pkt_size=4133|width=160|height=240|pix_fmt=yuv420p|sample_aspect_ratio=2:1|pi

[FFmpeg-cvslog] avcodec/hevc_sei: add support for user data unregistered SEI message

2020-06-14 Thread Limin Wang
ffmpeg | branch: master | Limin Wang  | Thu Jun 11 
10:25:47 2020 +0800| [ed6dbbfc16e0121de5562c097535285d3136a6c5] | committer: 
Limin Wang

avcodec/hevc_sei: add support for user data unregistered SEI message

Signed-off-by: Limin Wang 

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

 libavcodec/hevc_sei.c   | 33 +
 libavcodec/hevc_sei.h   |  6 ++
 libavcodec/hevcdec.c| 14 ++
 tests/ref/fate/hevc-monochrome-crop |  3 +++
 4 files changed, 56 insertions(+)

diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c
index 60570690cf..173689198c 100644
--- a/libavcodec/hevc_sei.c
+++ b/libavcodec/hevc_sei.c
@@ -213,6 +213,32 @@ static int 
decode_registered_user_data_closed_caption(HEVCSEIA53Caption *s, GetB
 return 0;
 }
 
+static int decode_nal_sei_user_data_unregistered(HEVCSEIUnregistered *s, 
GetBitContext *gb,
+  int size)
+{
+AVBufferRef *buf_ref, **tmp;
+
+if (size < 16 || size >= INT_MAX - 1)
+   return AVERROR_INVALIDDATA;
+
+tmp = av_realloc_array(s->buf_ref, s->nb_buf_ref + 1, sizeof(*s->buf_ref));
+if (!tmp)
+return AVERROR(ENOMEM);
+s->buf_ref = tmp;
+
+buf_ref = av_buffer_alloc(size + 1);
+if (!buf_ref)
+return AVERROR(ENOMEM);
+
+for (int i = 0; i < size; i++)
+buf_ref->data[i] = get_bits(gb, 8);
+buf_ref->data[size] = 0;
+buf_ref->size = size;
+s->buf_ref[s->nb_buf_ref++] = buf_ref;
+
+return 0;
+}
+
 static int decode_nal_sei_user_data_registered_itu_t_t35(HEVCSEI *s, 
GetBitContext *gb,
  int size)
 {
@@ -300,6 +326,8 @@ static int decode_nal_sei_prefix(GetBitContext *gb, void 
*logctx, HEVCSEI *s,
 return decode_nal_sei_active_parameter_sets(s, gb, logctx);
 case HEVC_SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35:
 return decode_nal_sei_user_data_registered_itu_t_t35(s, gb, size);
+case HEVC_SEI_TYPE_USER_DATA_UNREGISTERED:
+return decode_nal_sei_user_data_unregistered(&s->unregistered, gb, 
size);
 case HEVC_SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS:
 return decode_nal_sei_alternative_transfer(&s->alternative_transfer, 
gb);
 default:
@@ -371,4 +399,9 @@ int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, 
HEVCSEI *s,
 void ff_hevc_reset_sei(HEVCSEI *s)
 {
 av_buffer_unref(&s->a53_caption.buf_ref);
+
+for (int i = 0; i < s->unregistered.nb_buf_ref; i++)
+av_buffer_unref(&s->unregistered.buf_ref[i]);
+s->unregistered.nb_buf_ref = 0;
+av_freep(&s->unregistered.buf_ref);
 }
diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h
index a44ccca7f8..3618d162df 100644
--- a/libavcodec/hevc_sei.h
+++ b/libavcodec/hevc_sei.h
@@ -91,6 +91,11 @@ typedef struct HEVCSEIA53Caption {
 AVBufferRef *buf_ref;
 } HEVCSEIA53Caption;
 
+typedef struct HEVCSEIUnregistered {
+AVBufferRef **buf_ref;
+int nb_buf_ref;
+} HEVCSEIUnregistered;
+
 typedef struct HEVCSEIMasteringDisplay {
 int present;
 uint16_t display_primaries[3][2];
@@ -116,6 +121,7 @@ typedef struct HEVCSEI {
 HEVCSEIDisplayOrientation display_orientation;
 HEVCSEIPictureTiming picture_timing;
 HEVCSEIA53Caption a53_caption;
+HEVCSEIUnregistered unregistered;
 HEVCSEIMasteringDisplay mastering_display;
 HEVCSEIContentLight content_light;
 int active_seq_parameter_set_id;
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index 0772608a30..c9e28f5826 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -2794,6 +2794,20 @@ static int set_side_data(HEVCContext *s)
 s->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS;
 }
 
+for (int i = 0; i < s->sei.unregistered.nb_buf_ref; i++) {
+HEVCSEIUnregistered *unreg = &s->sei.unregistered;
+
+if (unreg->buf_ref[i]) {
+AVFrameSideData *sd = av_frame_new_side_data_from_buf(out,
+AV_FRAME_DATA_SEI_UNREGISTERED,
+unreg->buf_ref[i]);
+if (!sd)
+av_buffer_unref(&unreg->buf_ref[i]);
+unreg->buf_ref[i] = NULL;
+}
+}
+s->sei.unregistered.nb_buf_ref = 0;
+
 return 0;
 }
 
diff --git a/tests/ref/fate/hevc-monochrome-crop 
b/tests/ref/fate/hevc-monochrome-crop
index 4e45412acf..384404da66 100644
--- a/tests/ref/fate/hevc-monochrome-crop
+++ b/tests/ref/fate/hevc-monochrome-crop
@@ -1,6 +1,9 @@
 [FRAME]
 width=384
 height=240
+[SIDE_DATA]
+side_data_type=H.26[45] User Data Unregistered SEI message
+[/SIDE_DATA]
 [/FRAME]
 [STREAM]
 width=384

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avfilter/vf_showinfo: display H.26[45] user data unregistered sei message

2020-06-14 Thread Limin Wang
ffmpeg | branch: master | Limin Wang  | Fri Jun 12 
07:32:29 2020 +0800| [567d571b2015819abbb5de953ebb30bca69645a8] | committer: 
Limin Wang

avfilter/vf_showinfo: display H.26[45] user data unregistered sei message

Signed-off-by: Limin Wang 

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

 libavfilter/vf_showinfo.c | 30 ++
 1 file changed, 30 insertions(+)

diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c
index 5d4aee4169..5315f8fb7c 100644
--- a/libavfilter/vf_showinfo.c
+++ b/libavfilter/vf_showinfo.c
@@ -190,6 +190,33 @@ static void dump_video_enc_params(AVFilterContext *ctx, 
AVFrameSideData *sd)
 av_log(ctx, AV_LOG_INFO, "%u blocks; ", par->nb_blocks);
 }
 
+static void dump_sei_unregistered_metadata(AVFilterContext *ctx, 
AVFrameSideData *sd)
+{
+const int uuid_size = 16;
+uint8_t *user_data = sd->data;
+int i;
+
+if (sd->size < uuid_size) {
+av_log(ctx, AV_LOG_ERROR, "invalid data(%d < UUID(%d-bytes))", 
sd->size, uuid_size);
+return;
+}
+
+av_log(ctx, AV_LOG_INFO, "User Data Unregistered:\n");
+av_log(ctx, AV_LOG_INFO, "UUID=");
+for (i = 0; i < uuid_size; i++) {
+av_log(ctx, AV_LOG_INFO, "%02x", user_data[i]);
+if (i == 3 || i == 5 || i == 7 || i == 9)
+av_log(ctx, AV_LOG_INFO, "-");
+}
+av_log(ctx, AV_LOG_INFO, "\n");
+
+av_log(ctx, AV_LOG_INFO, "User Data=");
+for (; i < sd->size; i++) {
+av_log(ctx, AV_LOG_INFO, "%02x", user_data[i]);
+}
+av_log(ctx, AV_LOG_INFO, "\n");
+}
+
 static void dump_color_property(AVFilterContext *ctx, AVFrame *frame)
 {
 const char *color_range_str = av_color_range_name(frame->color_range);
@@ -375,6 +402,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame 
*frame)
 case AV_FRAME_DATA_VIDEO_ENC_PARAMS:
 dump_video_enc_params(ctx, sd);
 break;
+case AV_FRAME_DATA_SEI_UNREGISTERED:
+dump_sei_unregistered_metadata(ctx, sd);
+break;
 default:
 av_log(ctx, AV_LOG_WARNING, "unknown side data type %d (%d bytes)",
sd->type, sd->size);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/hevc_mp4toannexb_bsf: Check NAL size against available input

2020-06-14 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Wed May 27 19:09:14 2020 +0200| [ea1b71e82f5a1752d59d3bfb9704092a79eba6b5] | 
committer: Andreas Rheinhardt

avcodec/hevc_mp4toannexb_bsf: Check NAL size against available input

The hevc_mp4toannexb bsf does not explicitly check whether a NAL unit
is so big that it extends beyond the end of the input packet; it does so
only implicitly by using the checked version of the bytestream2 API.
But this has downsides compared to real checks: It can lead to huge
allocations (up to 2GiB) even when the input packet is just a few bytes.
And furthermore it leads to uninitialized data being output.
So add a check to error out early if it happens.

Also check directly whether there is enough data for the length field.

Reviewed-by: Michael Niedermayer 
Signed-off-by: Andreas Rheinhardt 

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

 libavcodec/hevc_mp4toannexb_bsf.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavcodec/hevc_mp4toannexb_bsf.c 
b/libavcodec/hevc_mp4toannexb_bsf.c
index a880d9ba9a..ba1deb2848 100644
--- a/libavcodec/hevc_mp4toannexb_bsf.c
+++ b/libavcodec/hevc_mp4toannexb_bsf.c
@@ -142,10 +142,14 @@ static int hevc_mp4toannexb_filter(AVBSFContext *ctx, 
AVPacket *out)
 int  nalu_type;
 int is_irap, add_extradata, extra_size, prev_size;
 
+if (bytestream2_get_bytes_left(&gb) < s->length_size) {
+ret = AVERROR_INVALIDDATA;
+goto fail;
+}
 for (i = 0; i < s->length_size; i++)
 nalu_size = (nalu_size << 8) | bytestream2_get_byte(&gb);
 
-if (nalu_size < 2) {
+if (nalu_size < 2 || nalu_size > bytestream2_get_bytes_left(&gb)) {
 ret = AVERROR_INVALIDDATA;
 goto fail;
 }

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/hevc_mp4toannexb_bsf: Check NAL size against available input

2020-06-14 Thread Andreas Rheinhardt
ffmpeg | branch: release/4.3 | Andreas Rheinhardt 
 | Wed May 27 19:09:14 2020 +0200| 
[82d70d8038aed96552a77fa583a82c08b0d12636] | committer: Andreas Rheinhardt

avcodec/hevc_mp4toannexb_bsf: Check NAL size against available input

The hevc_mp4toannexb bsf does not explicitly check whether a NAL unit
is so big that it extends beyond the end of the input packet; it does so
only implicitly by using the checked version of the bytestream2 API.
But this has downsides compared to real checks: It can lead to huge
allocations (up to 2GiB) even when the input packet is just a few bytes.
And furthermore it leads to uninitialized data being output.
So add a check to error out early if it happens.

Also check directly whether there is enough data for the length field.

Reviewed-by: Michael Niedermayer 
Signed-off-by: Andreas Rheinhardt 
(cherry picked from commit ea1b71e82f5a1752d59d3bfb9704092a79eba6b5)

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

 libavcodec/hevc_mp4toannexb_bsf.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavcodec/hevc_mp4toannexb_bsf.c 
b/libavcodec/hevc_mp4toannexb_bsf.c
index a880d9ba9a..ba1deb2848 100644
--- a/libavcodec/hevc_mp4toannexb_bsf.c
+++ b/libavcodec/hevc_mp4toannexb_bsf.c
@@ -142,10 +142,14 @@ static int hevc_mp4toannexb_filter(AVBSFContext *ctx, 
AVPacket *out)
 int  nalu_type;
 int is_irap, add_extradata, extra_size, prev_size;
 
+if (bytestream2_get_bytes_left(&gb) < s->length_size) {
+ret = AVERROR_INVALIDDATA;
+goto fail;
+}
 for (i = 0; i < s->length_size; i++)
 nalu_size = (nalu_size << 8) | bytestream2_get_byte(&gb);
 
-if (nalu_size < 2) {
+if (nalu_size < 2 || nalu_size > bytestream2_get_bytes_left(&gb)) {
 ret = AVERROR_INVALIDDATA;
 goto fail;
 }

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/iirfilter: Fix memleak

2020-06-14 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Mon Jun 15 03:33:13 2020 +0200| [3aa0be003e98006215f670e712851a443d3f3c5f] | 
committer: Andreas Rheinhardt

avcodec/iirfilter: Fix memleak

Commit 17e88bf0df21906633a7d36d9f2aeeeb5b6d3267 created a memleak by
removing a call to ff_iir_filter_free_coeffsp on error; this has been
found by Coverity (ID 1464159). This commit fixes the memleak by
readding the call to ff_iir_filter_free_coeffsp.

Notice that this is not a simple revert, because several macros that
were used before 17e88bf0df21906633a7d36d9f2aeeeb5b6d3267 were replaced
in commit 44863b2c2d5a31d82aafa71cdbd180d6bfbed5b4 and completely removed
in 2658680df4fc606522e5f65899afb9a98b47d287.

Reviewed-by: Limin Wang 
Signed-off-by: Andreas Rheinhardt 

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

 libavcodec/iirfilter.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/iirfilter.c b/libavcodec/iirfilter.c
index 9f76bce8b8..cd5bbc943a 100644
--- a/libavcodec/iirfilter.c
+++ b/libavcodec/iirfilter.c
@@ -174,7 +174,7 @@ av_cold struct FFIIRFilterCoeffs 
*ff_iir_filter_init_coeffs(void *avc,
 if (!(c = av_mallocz(sizeof(*c)))||
 !(c->cx = av_malloc (sizeof(c->cx[0]) * ((order >> 1) + 1))) ||
 !(c->cy = av_malloc (sizeof(c->cy[0]) * order)))
-return NULL;
+goto free;
 c->order = order;
 
 switch (filt_type) {
@@ -188,11 +188,13 @@ av_cold struct FFIIRFilterCoeffs 
*ff_iir_filter_init_coeffs(void *avc,
 break;
 default:
 av_log(avc, AV_LOG_ERROR, "filter type is not currently 
implemented\n");
-return NULL;
+goto free;
 }
 
 if (!ret)
 return c;
+free:
+ff_iir_filter_free_coeffsp(&c);
 return NULL;
 }
 

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avcodec/hevc_mp4toannexb_bsf: Check NAL size against available input

2020-06-14 Thread Andreas Rheinhardt
ffmpeg | branch: release/4.2 | Andreas Rheinhardt 
 | Wed May 27 19:09:14 2020 +0200| 
[07eb039e047b68227b08428314314ff7b1273efa] | committer: Andreas Rheinhardt

avcodec/hevc_mp4toannexb_bsf: Check NAL size against available input

The hevc_mp4toannexb bsf does not explicitly check whether a NAL unit
is so big that it extends beyond the end of the input packet; it does so
only implicitly by using the checked version of the bytestream2 API.
But this has downsides compared to real checks: It can lead to huge
allocations (up to 2GiB) even when the input packet is just a few bytes.
And furthermore it leads to uninitialized data being output.
So add a check to error out early if it happens.

Also check directly whether there is enough data for the length field.

Reviewed-by: Michael Niedermayer 
Signed-off-by: Andreas Rheinhardt 
(cherry picked from commit ea1b71e82f5a1752d59d3bfb9704092a79eba6b5)

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

 libavcodec/hevc_mp4toannexb_bsf.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavcodec/hevc_mp4toannexb_bsf.c 
b/libavcodec/hevc_mp4toannexb_bsf.c
index 30f733d775..477d86d9fd 100644
--- a/libavcodec/hevc_mp4toannexb_bsf.c
+++ b/libavcodec/hevc_mp4toannexb_bsf.c
@@ -141,10 +141,14 @@ static int hevc_mp4toannexb_filter(AVBSFContext *ctx, 
AVPacket *out)
 int  nalu_type;
 int is_irap, add_extradata, extra_size, prev_size;
 
+if (bytestream2_get_bytes_left(&gb) < s->length_size) {
+ret = AVERROR_INVALIDDATA;
+goto fail;
+}
 for (i = 0; i < s->length_size; i++)
 nalu_size = (nalu_size << 8) | bytestream2_get_byte(&gb);
 
-if (nalu_size < 2) {
+if (nalu_size < 2 || nalu_size > bytestream2_get_bytes_left(&gb)) {
 ret = AVERROR_INVALIDDATA;
 goto fail;
 }

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/hlsenc: Always treat numbers as decimal

2020-06-14 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Mon Jun 15 05:09:07 2020 +0200| [19a876fd6973724521dd5e7cc8f8e4683b19eda4] | 
committer: Andreas Rheinhardt

avformat/hlsenc: Always treat numbers as decimal

c801ab43c36e8c4f88121aa09af26c77bcbd671b caused a regression: The stream
number is now parsed with strtoll without a fixed basis; as a
consequence, the "010" in a variant stream mapping like "a:010" is now
treated as an octal number (i.e. as eight, not ten). This was not
intended and may break some scripts, so this commit restores the old
behaviour.

Signed-off-by: Andreas Rheinhardt 

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

 libavformat/hlsenc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 18256cbf91..71fa3db060 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -1993,7 +1993,7 @@ static int parse_variant_stream_mapstring(AVFormatContext 
*s)
 return AVERROR(EINVAL);
 }
 
-num = strtoll(val, &end, 0);
+num = strtoll(val, &end, 10);
 if (!av_isdigit(*val) || *end != '\0') {
 av_log(s, AV_LOG_ERROR, "Invalid stream number: '%s'\n", val);
 return AVERROR(EINVAL);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/hlsenc: Always treat numbers as decimal

2020-06-14 Thread Andreas Rheinhardt
ffmpeg | branch: release/4.3 | Andreas Rheinhardt 
 | Mon Jun 15 05:09:07 2020 +0200| 
[2c738c75218a1dcaec3ec6baa9b0d4b267820812] | committer: Andreas Rheinhardt

avformat/hlsenc: Always treat numbers as decimal

c801ab43c36e8c4f88121aa09af26c77bcbd671b caused a regression: The stream
number is now parsed with strtoll without a fixed basis; as a
consequence, the "010" in a variant stream mapping like "a:010" is now
treated as an octal number (i.e. as eight, not ten). This was not
intended and may break some scripts, so this commit restores the old
behaviour.

Signed-off-by: Andreas Rheinhardt 
(cherry picked from commit 19a876fd6973724521dd5e7cc8f8e4683b19eda4)

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

 libavformat/hlsenc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 18256cbf91..71fa3db060 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -1993,7 +1993,7 @@ static int parse_variant_stream_mapstring(AVFormatContext 
*s)
 return AVERROR(EINVAL);
 }
 
-num = strtoll(val, &end, 0);
+num = strtoll(val, &end, 10);
 if (!av_isdigit(*val) || *end != '\0') {
 av_log(s, AV_LOG_ERROR, "Invalid stream number: '%s'\n", val);
 return AVERROR(EINVAL);

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

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".