* [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size @ 2022-03-12 23:52 Michael Niedermayer 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() Michael Niedermayer ` (3 more replies) 0 siblings, 4 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-12 23:52 UTC (permalink / raw) To: FFmpeg development discussions and patches Fixes: Out of array read Fixes: 45137/clusterfuzz-testcase-minimized-ffmpeg_BSF_VP9_SUPERFRAME_SPLIT_fuzzer-4984270639202304 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavcodec/vp9_superframe_split_bsf.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c index ed0444561a..6af555c078 100644 --- a/libavcodec/vp9_superframe_split_bsf.c +++ b/libavcodec/vp9_superframe_split_bsf.c @@ -51,6 +51,11 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) return ret; in = s->buffer_pkt; + if (in->size == 0) { + ret = AVERROR_INVALIDDATA; + goto fail; + } + marker = in->data[in->size - 1]; if ((marker & 0xe0) == 0xc0) { int length_size = 1 + ((marker >> 3) & 0x3); -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() 2022-03-12 23:52 [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size Michael Niedermayer @ 2022-03-12 23:52 ` Michael Niedermayer 2022-03-14 19:19 ` Tomas Härdin 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure " Michael Niedermayer ` (2 subsequent siblings) 3 siblings, 1 reply; 23+ messages in thread From: Michael Niedermayer @ 2022-03-12 23:52 UTC (permalink / raw) To: FFmpeg development discussions and patches Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavformat/mxfdec.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index b85c10bf19..d7cdd22c8a 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -932,7 +932,13 @@ static int mxf_read_cryptographic_context(void *arg, AVIOContext *pb, int tag, i static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) { - *count = avio_rb32(pb); + unsigned c = avio_rb32(pb); + + //avio_read() used int + if (c > INT_MAX / sizeof(UID)) + return AVERROR_PATCHWELCOME; + *count = c; + av_free(*refs); *refs = av_calloc(*count, sizeof(UID)); if (!*refs) { -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() Michael Niedermayer @ 2022-03-14 19:19 ` Tomas Härdin 2022-03-19 22:50 ` Michael Niedermayer 0 siblings, 1 reply; 23+ messages in thread From: Tomas Härdin @ 2022-03-14 19:19 UTC (permalink / raw) To: FFmpeg development discussions and patches sön 2022-03-13 klockan 00:52 +0100 skrev Michael Niedermayer: > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavformat/mxfdec.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > index b85c10bf19..d7cdd22c8a 100644 > --- a/libavformat/mxfdec.c > +++ b/libavformat/mxfdec.c > @@ -932,7 +932,13 @@ static int mxf_read_cryptographic_context(void > *arg, AVIOContext *pb, int tag, i > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, > int *count) > { > - *count = avio_rb32(pb); > + unsigned c = avio_rb32(pb); not uint32_t? > + > + //avio_read() used int > + if (c > INT_MAX / sizeof(UID)) > + return AVERROR_PATCHWELCOME; > + *count = c; > + This should already be caught by av_calloc(), no? /Tomas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() 2022-03-14 19:19 ` Tomas Härdin @ 2022-03-19 22:50 ` Michael Niedermayer 2022-03-20 13:05 ` Tomas Härdin 0 siblings, 1 reply; 23+ messages in thread From: Michael Niedermayer @ 2022-03-19 22:50 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1461 bytes --] On Mon, Mar 14, 2022 at 08:19:51PM +0100, Tomas Härdin wrote: > sön 2022-03-13 klockan 00:52 +0100 skrev Michael Niedermayer: > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavformat/mxfdec.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > > index b85c10bf19..d7cdd22c8a 100644 > > --- a/libavformat/mxfdec.c > > +++ b/libavformat/mxfdec.c > > @@ -932,7 +932,13 @@ static int mxf_read_cryptographic_context(void > > *arg, AVIOContext *pb, int tag, i > > > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, > > int *count) > > { > > - *count = avio_rb32(pb); > > + unsigned c = avio_rb32(pb); > > not uint32_t? we dont need an exact length variable here > > > + > > + //avio_read() used int > > + if (c > INT_MAX / sizeof(UID)) > > + return AVERROR_PATCHWELCOME; > > + *count = c; > > + > > This should already be caught by av_calloc(), no? the API as in the documentation of av_calloc() does not gurantee this. Its bad practice if we write code that depends on some implementation of some code in a diferent module/lib thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Does the universe only have a finite lifespan? No, its going to go on forever, its just that you wont like living in it. -- Hiranya Peiri [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() 2022-03-19 22:50 ` Michael Niedermayer @ 2022-03-20 13:05 ` Tomas Härdin 2022-03-20 14:06 ` Michael Niedermayer 0 siblings, 1 reply; 23+ messages in thread From: Tomas Härdin @ 2022-03-20 13:05 UTC (permalink / raw) To: FFmpeg development discussions and patches lör 2022-03-19 klockan 23:50 +0100 skrev Michael Niedermayer: > On Mon, Mar 14, 2022 at 08:19:51PM +0100, Tomas Härdin wrote: > > sön 2022-03-13 klockan 00:52 +0100 skrev Michael Niedermayer: > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > > --- > > > libavformat/mxfdec.c | 8 +++++++- > > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > > > index b85c10bf19..d7cdd22c8a 100644 > > > --- a/libavformat/mxfdec.c > > > +++ b/libavformat/mxfdec.c > > > @@ -932,7 +932,13 @@ static int > > > mxf_read_cryptographic_context(void > > > *arg, AVIOContext *pb, int tag, i > > > > > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID > > > **refs, > > > int *count) > > > { > > > - *count = avio_rb32(pb); > > > + unsigned c = avio_rb32(pb); > > > > not uint32_t? > > we dont need an exact length variable here Right, we don't support 16-bit machines > > > > > > > + > > > + //avio_read() used int > > > + if (c > INT_MAX / sizeof(UID)) > > > + return AVERROR_PATCHWELCOME; > > > + *count = c; > > > + > > > > This should already be caught by av_calloc(), no? > > the API as in the documentation of av_calloc() does not gurantee > this. Yes it does: The allocated memory will have size `size * nmemb` bytes. [...] `NULL` if the block cannot be allocated > Its bad practice if we write code that depends on some implementation > of some code in a diferent module/lib If av_calloc() does not guarantee this then it is useless. It is used precisely for this all over the place. Are you going to change every use of av_calloc() in mxfdec in the same way? /Tomas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() 2022-03-20 13:05 ` Tomas Härdin @ 2022-03-20 14:06 ` Michael Niedermayer 2022-03-21 10:06 ` Tomas Härdin 0 siblings, 1 reply; 23+ messages in thread From: Michael Niedermayer @ 2022-03-20 14:06 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1565 bytes --] On Sun, Mar 20, 2022 at 02:05:41PM +0100, Tomas Härdin wrote: > lör 2022-03-19 klockan 23:50 +0100 skrev Michael Niedermayer: [...] > > > > > > > > > > > + > > > > + //avio_read() used int > > > > + if (c > INT_MAX / sizeof(UID)) > > > > + return AVERROR_PATCHWELCOME; > > > > + *count = c; > > > > + > > > > > > This should already be caught by av_calloc(), no? > > > > the API as in the documentation of av_calloc() does not gurantee > > this. > > Yes it does: > > The allocated memory will have size `size * nmemb` bytes. > [...] > `NULL` if the block cannot be allocated void *av_calloc(size_t nmemb, size_t size) size_t can be larger than int, so size * nmemb may be larger than INT_MAX > > > Its bad practice if we write code that depends on some implementation > > of some code in a diferent module/lib > > If av_calloc() does not guarantee this then it is useless. It is used > precisely for this all over the place. Are you going to change every > use of av_calloc() in mxfdec in the same way? well, when max_alloc_size is set above INT_MAX then int checks will become needed when these values ever get stored in ints. For example here avio_read() has a int argument that is set to the product of the 2. Or all such ints need to be changed to something bigger thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws. -- Plato [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() 2022-03-20 14:06 ` Michael Niedermayer @ 2022-03-21 10:06 ` Tomas Härdin 2022-03-21 21:20 ` Michael Niedermayer 0 siblings, 1 reply; 23+ messages in thread From: Tomas Härdin @ 2022-03-21 10:06 UTC (permalink / raw) To: FFmpeg development discussions and patches sön 2022-03-20 klockan 15:06 +0100 skrev Michael Niedermayer: > On Sun, Mar 20, 2022 at 02:05:41PM +0100, Tomas Härdin wrote: > > lör 2022-03-19 klockan 23:50 +0100 skrev Michael Niedermayer: > [...] > > > > > > > > > > > > > > > + > > > > > + //avio_read() used int > > > > > + if (c > INT_MAX / sizeof(UID)) > > > > > + return AVERROR_PATCHWELCOME; > > > > > + *count = c; > > > > > + > > > > > > > > This should already be caught by av_calloc(), no? > > > > > > the API as in the documentation of av_calloc() does not gurantee > > > this. > > > > Yes it does: > > > > The allocated memory will have size `size * nmemb` bytes. > > [...] > > `NULL` if the block cannot be allocated > > void *av_calloc(size_t nmemb, size_t size) > size_t can be larger than int, so size * nmemb may be larger than > INT_MAX Crap, you're right. This also brings to mind the question why packages_count etc are int rather than unsigned or uint32_t.. Patch is OK then /Tomas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() 2022-03-21 10:06 ` Tomas Härdin @ 2022-03-21 21:20 ` Michael Niedermayer 0 siblings, 0 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-21 21:20 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1339 bytes --] On Mon, Mar 21, 2022 at 11:06:14AM +0100, Tomas Härdin wrote: > sön 2022-03-20 klockan 15:06 +0100 skrev Michael Niedermayer: > > On Sun, Mar 20, 2022 at 02:05:41PM +0100, Tomas Härdin wrote: > > > lör 2022-03-19 klockan 23:50 +0100 skrev Michael Niedermayer: > > [...] > > > > > > > > > > > > > > > > > > > + > > > > > > + //avio_read() used int > > > > > > + if (c > INT_MAX / sizeof(UID)) > > > > > > + return AVERROR_PATCHWELCOME; > > > > > > + *count = c; > > > > > > + > > > > > > > > > > This should already be caught by av_calloc(), no? > > > > > > > > the API as in the documentation of av_calloc() does not gurantee > > > > this. > > > > > > Yes it does: > > > > > > The allocated memory will have size `size * nmemb` bytes. > > > [...] > > > `NULL` if the block cannot be allocated > > > > void *av_calloc(size_t nmemb, size_t size) > > size_t can be larger than int, so size * nmemb may be larger than > > INT_MAX > > Crap, you're right. This also brings to mind the question why > packages_count etc are int rather than unsigned or uint32_t.. > > Patch is OK then will apply thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Opposition brings concord. Out of discord comes the fairest harmony. -- Heraclitus [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure in mxf_read_strong_ref_array() 2022-03-12 23:52 [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size Michael Niedermayer 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() Michael Niedermayer @ 2022-03-12 23:52 ` Michael Niedermayer 2022-03-13 15:52 ` Marton Balint 2022-03-14 19:21 ` Tomas Härdin 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 4/4] avformat/mxfdec: Do not clear array in mxf_read_strong_ref_array() before writing Michael Niedermayer 2022-03-13 19:03 ` [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size James Almer 3 siblings, 2 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-12 23:52 UTC (permalink / raw) To: FFmpeg development discussions and patches Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavformat/mxfdec.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index d7cdd22c8a..828fc0f9f1 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -932,6 +932,7 @@ static int mxf_read_cryptographic_context(void *arg, AVIOContext *pb, int tag, i static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) { + int64_t ret; unsigned c = avio_rb32(pb); //avio_read() used int @@ -946,7 +947,12 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) return AVERROR(ENOMEM); } avio_skip(pb, 4); /* useless size of objects, always 16 according to specs */ - avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); + ret = avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); + if (ret != *count * sizeof(UID)) { + *count = ret < 0 ? 0 : ret / sizeof(UID); + return ret < 0 ? ret : AVERROR_INVALIDDATA; + } + return 0; } -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure in mxf_read_strong_ref_array() 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure " Michael Niedermayer @ 2022-03-13 15:52 ` Marton Balint 2022-03-14 13:58 ` Michael Niedermayer 2022-03-14 19:21 ` Tomas Härdin 1 sibling, 1 reply; 23+ messages in thread From: Marton Balint @ 2022-03-13 15:52 UTC (permalink / raw) To: FFmpeg development discussions and patches On Sun, 13 Mar 2022, Michael Niedermayer wrote: > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavformat/mxfdec.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > index d7cdd22c8a..828fc0f9f1 100644 > --- a/libavformat/mxfdec.c > +++ b/libavformat/mxfdec.c > @@ -932,6 +932,7 @@ static int mxf_read_cryptographic_context(void *arg, AVIOContext *pb, int tag, i > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > { > + int64_t ret; > unsigned c = avio_rb32(pb); > > //avio_read() used int > @@ -946,7 +947,12 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > return AVERROR(ENOMEM); > } > avio_skip(pb, 4); /* useless size of objects, always 16 according to specs */ > - avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > + ret = avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > + if (ret != *count * sizeof(UID)) { > + *count = ret < 0 ? 0 : ret / sizeof(UID); I suggest you hard fail if the read count is not the expected, do not silently ignore corrupt file. Regards, Marton > + return ret < 0 ? ret : AVERROR_INVALIDDATA; > + } > + > return 0; > } > > -- > 2.17.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure in mxf_read_strong_ref_array() 2022-03-13 15:52 ` Marton Balint @ 2022-03-14 13:58 ` Michael Niedermayer 2022-03-14 17:08 ` Marton Balint 0 siblings, 1 reply; 23+ messages in thread From: Michael Niedermayer @ 2022-03-14 13:58 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1734 bytes --] On Sun, Mar 13, 2022 at 04:52:25PM +0100, Marton Balint wrote: > > > On Sun, 13 Mar 2022, Michael Niedermayer wrote: > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavformat/mxfdec.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > > index d7cdd22c8a..828fc0f9f1 100644 > > --- a/libavformat/mxfdec.c > > +++ b/libavformat/mxfdec.c > > @@ -932,6 +932,7 @@ static int mxf_read_cryptographic_context(void *arg, AVIOContext *pb, int tag, i > > > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > > { > > + int64_t ret; > > unsigned c = avio_rb32(pb); > > > > //avio_read() used int > > @@ -946,7 +947,12 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > > return AVERROR(ENOMEM); > > } > > avio_skip(pb, 4); /* useless size of objects, always 16 according to specs */ > > - avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > > + ret = avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > > + if (ret != *count * sizeof(UID)) { > > + *count = ret < 0 ? 0 : ret / sizeof(UID); > > I suggest you hard fail if the read count is not the expected, do not > silently ignore corrupt file. > > Regards, > Marton > > > + return ret < 0 ? ret : AVERROR_INVALIDDATA; Does it not hard fail here ? thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Take away the freedom of one citizen and you will be jailed, take away the freedom of all citizens and you will be congratulated by your peers in Parliament. [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure in mxf_read_strong_ref_array() 2022-03-14 13:58 ` Michael Niedermayer @ 2022-03-14 17:08 ` Marton Balint 2022-03-15 12:48 ` Michael Niedermayer 0 siblings, 1 reply; 23+ messages in thread From: Marton Balint @ 2022-03-14 17:08 UTC (permalink / raw) To: FFmpeg development discussions and patches On Mon, 14 Mar 2022, Michael Niedermayer wrote: > On Sun, Mar 13, 2022 at 04:52:25PM +0100, Marton Balint wrote: >> >> >> On Sun, 13 Mar 2022, Michael Niedermayer wrote: >> >>> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> >>> --- >>> libavformat/mxfdec.c | 8 +++++++- >>> 1 file changed, 7 insertions(+), 1 deletion(-) >>> >>> diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c >>> index d7cdd22c8a..828fc0f9f1 100644 >>> --- a/libavformat/mxfdec.c >>> +++ b/libavformat/mxfdec.c >>> @@ -932,6 +932,7 @@ static int mxf_read_cryptographic_context(void *arg, AVIOContext *pb, int tag, i >>> >>> static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) >>> { >>> + int64_t ret; >>> unsigned c = avio_rb32(pb); >>> >>> //avio_read() used int >>> @@ -946,7 +947,12 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) >>> return AVERROR(ENOMEM); >>> } >>> avio_skip(pb, 4); /* useless size of objects, always 16 according to specs */ >>> - avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); >>> + ret = avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); >>> + if (ret != *count * sizeof(UID)) { >>> + *count = ret < 0 ? 0 : ret / sizeof(UID); >> > >> I suggest you hard fail if the read count is not the expected, do not >> silently ignore corrupt file. >> >> Regards, >> Marton >> >>> + return ret < 0 ? ret : AVERROR_INVALIDDATA; > > Does it not hard fail here ? Yeah, it does, sorry. This extra count calculation confused me... I'd just probably set it to 0 in case of a partial read, same as in case of an error, but fine either way I guess. Regards, Marton _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure in mxf_read_strong_ref_array() 2022-03-14 17:08 ` Marton Balint @ 2022-03-15 12:48 ` Michael Niedermayer 0 siblings, 0 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-15 12:48 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 2343 bytes --] On Mon, Mar 14, 2022 at 06:08:32PM +0100, Marton Balint wrote: > > > On Mon, 14 Mar 2022, Michael Niedermayer wrote: > > > On Sun, Mar 13, 2022 at 04:52:25PM +0100, Marton Balint wrote: > > > > > > > > > On Sun, 13 Mar 2022, Michael Niedermayer wrote: > > > > > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > > > --- > > > > libavformat/mxfdec.c | 8 +++++++- > > > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > > > > index d7cdd22c8a..828fc0f9f1 100644 > > > > --- a/libavformat/mxfdec.c > > > > +++ b/libavformat/mxfdec.c > > > > @@ -932,6 +932,7 @@ static int mxf_read_cryptographic_context(void *arg, AVIOContext *pb, int tag, i > > > > > > > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > > > > { > > > > + int64_t ret; > > > > unsigned c = avio_rb32(pb); > > > > > > > > //avio_read() used int > > > > @@ -946,7 +947,12 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > > > > return AVERROR(ENOMEM); > > > > } > > > > avio_skip(pb, 4); /* useless size of objects, always 16 according to specs */ > > > > - avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > > > > + ret = avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > > > > + if (ret != *count * sizeof(UID)) { > > > > + *count = ret < 0 ? 0 : ret / sizeof(UID); > > > > > > > > I suggest you hard fail if the read count is not the expected, do not > > > silently ignore corrupt file. > > > > > > Regards, > > > Marton > > > > > > > + return ret < 0 ? ret : AVERROR_INVALIDDATA; > > > > Does it not hard fail here ? > > Yeah, it does, sorry. This extra count calculation confused me... I'd just > probably set it to 0 in case of a partial read, same as in case of an error, > but fine either way I guess. i wanted to set the count to be most correct value. So if someone was debuging this and tried to just not fail it would already have a useable value in count. thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB it is not once nor twice but times without number that the same ideas make their appearance in the world. -- Aristotle [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure in mxf_read_strong_ref_array() 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure " Michael Niedermayer 2022-03-13 15:52 ` Marton Balint @ 2022-03-14 19:21 ` Tomas Härdin 2022-03-19 22:54 ` Michael Niedermayer 1 sibling, 1 reply; 23+ messages in thread From: Tomas Härdin @ 2022-03-14 19:21 UTC (permalink / raw) To: FFmpeg development discussions and patches sön 2022-03-13 klockan 00:52 +0100 skrev Michael Niedermayer: > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavformat/mxfdec.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > index d7cdd22c8a..828fc0f9f1 100644 > --- a/libavformat/mxfdec.c > +++ b/libavformat/mxfdec.c > @@ -932,6 +932,7 @@ static int mxf_read_cryptographic_context(void > *arg, AVIOContext *pb, int tag, i > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, > int *count) > { > + int64_t ret; > unsigned c = avio_rb32(pb); > > //avio_read() used int > @@ -946,7 +947,12 @@ static int mxf_read_strong_ref_array(AVIOContext > *pb, UID **refs, int *count) > return AVERROR(ENOMEM); > } > avio_skip(pb, 4); /* useless size of objects, always 16 > according to specs */ > - avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > + ret = avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > + if (ret != *count * sizeof(UID)) { > + *count = ret < 0 ? 0 : ret / sizeof(UID); > + return ret < 0 ? ret : AVERROR_INVALIDDATA; Looks ok /Tomas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure in mxf_read_strong_ref_array() 2022-03-14 19:21 ` Tomas Härdin @ 2022-03-19 22:54 ` Michael Niedermayer 0 siblings, 0 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-19 22:54 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1626 bytes --] On Mon, Mar 14, 2022 at 08:21:04PM +0100, Tomas Härdin wrote: > sön 2022-03-13 klockan 00:52 +0100 skrev Michael Niedermayer: > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavformat/mxfdec.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > > index d7cdd22c8a..828fc0f9f1 100644 > > --- a/libavformat/mxfdec.c > > +++ b/libavformat/mxfdec.c > > @@ -932,6 +932,7 @@ static int mxf_read_cryptographic_context(void > > *arg, AVIOContext *pb, int tag, i > > > > static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, > > int *count) > > { > > + int64_t ret; > > unsigned c = avio_rb32(pb); > > > > //avio_read() used int > > @@ -946,7 +947,12 @@ static int mxf_read_strong_ref_array(AVIOContext > > *pb, UID **refs, int *count) > > return AVERROR(ENOMEM); > > } > > avio_skip(pb, 4); /* useless size of objects, always 16 > > according to specs */ > > - avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > > + ret = avio_read(pb, (uint8_t *)*refs, *count * sizeof(UID)); > > + if (ret != *count * sizeof(UID)) { > > + *count = ret < 0 ? 0 : ret / sizeof(UID); > > + return ret < 0 ? ret : AVERROR_INVALIDDATA; > > Looks ok i will apply once we agree on the previous patch as that is on top of it thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Asymptotically faster algorithms should always be preferred if you have asymptotical amounts of data [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* [FFmpeg-devel] [PATCH 4/4] avformat/mxfdec: Do not clear array in mxf_read_strong_ref_array() before writing 2022-03-12 23:52 [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size Michael Niedermayer 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() Michael Niedermayer 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure " Michael Niedermayer @ 2022-03-12 23:52 ` Michael Niedermayer 2022-03-13 15:53 ` Marton Balint 2022-03-13 19:03 ` [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size James Almer 3 siblings, 1 reply; 23+ messages in thread From: Michael Niedermayer @ 2022-03-12 23:52 UTC (permalink / raw) To: FFmpeg development discussions and patches Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavformat/mxfdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 828fc0f9f1..f088712494 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -941,7 +941,7 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) *count = c; av_free(*refs); - *refs = av_calloc(*count, sizeof(UID)); + *refs = av_malloc(*count * sizeof(UID)); if (!*refs) { *count = 0; return AVERROR(ENOMEM); -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 4/4] avformat/mxfdec: Do not clear array in mxf_read_strong_ref_array() before writing 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 4/4] avformat/mxfdec: Do not clear array in mxf_read_strong_ref_array() before writing Michael Niedermayer @ 2022-03-13 15:53 ` Marton Balint 2022-03-14 13:59 ` Michael Niedermayer 0 siblings, 1 reply; 23+ messages in thread From: Marton Balint @ 2022-03-13 15:53 UTC (permalink / raw) To: FFmpeg development discussions and patches On Sun, 13 Mar 2022, Michael Niedermayer wrote: > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavformat/mxfdec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > index 828fc0f9f1..f088712494 100644 > --- a/libavformat/mxfdec.c > +++ b/libavformat/mxfdec.c > @@ -941,7 +941,7 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > *count = c; > > av_free(*refs); > - *refs = av_calloc(*count, sizeof(UID)); > + *refs = av_malloc(*count * sizeof(UID)); I suggest av_malloc_array(), even if it can't overflow because of earlier checks. Thanks, Marton > if (!*refs) { > *count = 0; > return AVERROR(ENOMEM); > -- > 2.17.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 4/4] avformat/mxfdec: Do not clear array in mxf_read_strong_ref_array() before writing 2022-03-13 15:53 ` Marton Balint @ 2022-03-14 13:59 ` Michael Niedermayer 0 siblings, 0 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-14 13:59 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1174 bytes --] On Sun, Mar 13, 2022 at 04:53:29PM +0100, Marton Balint wrote: > > > On Sun, 13 Mar 2022, Michael Niedermayer wrote: > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavformat/mxfdec.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > > index 828fc0f9f1..f088712494 100644 > > --- a/libavformat/mxfdec.c > > +++ b/libavformat/mxfdec.c > > @@ -941,7 +941,7 @@ static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count) > > *count = c; > > > > av_free(*refs); > > - *refs = av_calloc(*count, sizeof(UID)); > > + *refs = av_malloc(*count * sizeof(UID)); > > I suggest av_malloc_array(), even if it can't overflow because of earlier > checks. agree, will change that thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB "You are 36 times more likely to die in a bathtub than at the hands of a terrorist. Also, you are 2.5 times more likely to become a president and 2 times more likely to become an astronaut, than to die in a terrorist attack." -- Thoughty2 [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size 2022-03-12 23:52 [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size Michael Niedermayer ` (2 preceding siblings ...) 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 4/4] avformat/mxfdec: Do not clear array in mxf_read_strong_ref_array() before writing Michael Niedermayer @ 2022-03-13 19:03 ` James Almer 2022-03-14 14:04 ` Michael Niedermayer 2022-03-21 18:59 ` Michael Niedermayer 3 siblings, 2 replies; 23+ messages in thread From: James Almer @ 2022-03-13 19:03 UTC (permalink / raw) To: ffmpeg-devel On 3/12/2022 8:52 PM, Michael Niedermayer wrote: > Fixes: Out of array read > Fixes: 45137/clusterfuzz-testcase-minimized-ffmpeg_BSF_VP9_SUPERFRAME_SPLIT_fuzzer-4984270639202304 > > Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavcodec/vp9_superframe_split_bsf.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c > index ed0444561a..6af555c078 100644 > --- a/libavcodec/vp9_superframe_split_bsf.c > +++ b/libavcodec/vp9_superframe_split_bsf.c > @@ -51,6 +51,11 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > return ret; > in = s->buffer_pkt; > > + if (in->size == 0) { !in->size > + ret = AVERROR_INVALIDDATA; > + goto fail; > + } > + > marker = in->data[in->size - 1]; Do we want to abort on in->data && !in->size, or just pass the packet through? I'm partial to the latter, so it would mean initializing marker to 0 and check instead for in->size before setting marker, so the check below fails and the packet is just passed through. Not sure what others think about it. > if ((marker & 0xe0) == 0xc0) { > int length_size = 1 + ((marker >> 3) & 0x3); _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size 2022-03-13 19:03 ` [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size James Almer @ 2022-03-14 14:04 ` Michael Niedermayer 2022-03-14 14:07 ` James Almer 2022-03-21 18:59 ` Michael Niedermayer 1 sibling, 1 reply; 23+ messages in thread From: Michael Niedermayer @ 2022-03-14 14:04 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1380 bytes --] On Sun, Mar 13, 2022 at 04:03:42PM -0300, James Almer wrote: > > > On 3/12/2022 8:52 PM, Michael Niedermayer wrote: > > Fixes: Out of array read > > Fixes: 45137/clusterfuzz-testcase-minimized-ffmpeg_BSF_VP9_SUPERFRAME_SPLIT_fuzzer-4984270639202304 > > > > Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavcodec/vp9_superframe_split_bsf.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c > > index ed0444561a..6af555c078 100644 > > --- a/libavcodec/vp9_superframe_split_bsf.c > > +++ b/libavcodec/vp9_superframe_split_bsf.c > > @@ -51,6 +51,11 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > > return ret; > > in = s->buffer_pkt; > > + if (in->size == 0) { > > !in->size I favor checking "== 0" when its about the value 0 and !X when its about something being not set / not allocated. but i can change it if you prefer thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The smallest minority on earth is the individual. Those who deny individual rights cannot claim to be defenders of minorities. - Ayn Rand [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size 2022-03-14 14:04 ` Michael Niedermayer @ 2022-03-14 14:07 ` James Almer 2022-03-14 14:16 ` Michael Niedermayer 0 siblings, 1 reply; 23+ messages in thread From: James Almer @ 2022-03-14 14:07 UTC (permalink / raw) To: ffmpeg-devel On 3/14/2022 11:04 AM, Michael Niedermayer wrote: > On Sun, Mar 13, 2022 at 04:03:42PM -0300, James Almer wrote: >> >> >> On 3/12/2022 8:52 PM, Michael Niedermayer wrote: >>> Fixes: Out of array read >>> Fixes: 45137/clusterfuzz-testcase-minimized-ffmpeg_BSF_VP9_SUPERFRAME_SPLIT_fuzzer-4984270639202304 >>> >>> Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg >>> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> >>> --- >>> libavcodec/vp9_superframe_split_bsf.c | 5 +++++ >>> 1 file changed, 5 insertions(+) >>> >>> diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c >>> index ed0444561a..6af555c078 100644 >>> --- a/libavcodec/vp9_superframe_split_bsf.c >>> +++ b/libavcodec/vp9_superframe_split_bsf.c >>> @@ -51,6 +51,11 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) >>> return ret; >>> in = s->buffer_pkt; >>> + if (in->size == 0) { >> >> !in->size > > I favor checking "== 0" when its about the value 0 and !X when its about > something being not set / not allocated. > but i can change it if you prefer > > thx I suggested it for the sake of consistence. Most AVPacket.size checks use !X to check for 0. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size 2022-03-14 14:07 ` James Almer @ 2022-03-14 14:16 ` Michael Niedermayer 0 siblings, 0 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-14 14:16 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1749 bytes --] On Mon, Mar 14, 2022 at 11:07:38AM -0300, James Almer wrote: > > > On 3/14/2022 11:04 AM, Michael Niedermayer wrote: > > On Sun, Mar 13, 2022 at 04:03:42PM -0300, James Almer wrote: > > > > > > > > > On 3/12/2022 8:52 PM, Michael Niedermayer wrote: > > > > Fixes: Out of array read > > > > Fixes: 45137/clusterfuzz-testcase-minimized-ffmpeg_BSF_VP9_SUPERFRAME_SPLIT_fuzzer-4984270639202304 > > > > > > > > Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg > > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > > > --- > > > > libavcodec/vp9_superframe_split_bsf.c | 5 +++++ > > > > 1 file changed, 5 insertions(+) > > > > > > > > diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c > > > > index ed0444561a..6af555c078 100644 > > > > --- a/libavcodec/vp9_superframe_split_bsf.c > > > > +++ b/libavcodec/vp9_superframe_split_bsf.c > > > > @@ -51,6 +51,11 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > > > > return ret; > > > > in = s->buffer_pkt; > > > > + if (in->size == 0) { > > > > > > !in->size > > > > I favor checking "== 0" when its about the value 0 and !X when its about > > something being not set / not allocated. > > but i can change it if you prefer > > > > thx > > I suggested it for the sake of consistence. Most AVPacket.size checks use !X > to check for 0. changed thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB No human being will ever know the Truth, for even if they happen to say it by chance, they would not even known they had done so. -- Xenophanes [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size 2022-03-13 19:03 ` [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size James Almer 2022-03-14 14:04 ` Michael Niedermayer @ 2022-03-21 18:59 ` Michael Niedermayer 1 sibling, 0 replies; 23+ messages in thread From: Michael Niedermayer @ 2022-03-21 18:59 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 2139 bytes --] On Sun, Mar 13, 2022 at 04:03:42PM -0300, James Almer wrote: > > > On 3/12/2022 8:52 PM, Michael Niedermayer wrote: > > Fixes: Out of array read > > Fixes: 45137/clusterfuzz-testcase-minimized-ffmpeg_BSF_VP9_SUPERFRAME_SPLIT_fuzzer-4984270639202304 > > > > Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavcodec/vp9_superframe_split_bsf.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c > > index ed0444561a..6af555c078 100644 > > --- a/libavcodec/vp9_superframe_split_bsf.c > > +++ b/libavcodec/vp9_superframe_split_bsf.c > > @@ -51,6 +51,11 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > > return ret; > > in = s->buffer_pkt; > > + if (in->size == 0) { > > !in->size > > > + ret = AVERROR_INVALIDDATA; > > + goto fail; > > + } > > + > > marker = in->data[in->size - 1]; > > Do we want to abort on in->data && !in->size, or just pass the packet > through? > I'm partial to the latter, so it would mean initializing marker to 0 and > check instead for in->size before setting marker, so the check below fails > and the packet is just passed through. > > Not sure what others think about it. I have no opinion on this. I just want the bug fixed. As both andreas and ossfuzz noticed this affects other filters too. not sure the passthough makes sense for all them, i will just dumbly post a passthrough based patch for the other one ossfuzz found too but maybe erroring out as in andreas patch makes more sense thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The real ebay dictionary, page 1 "Used only once" - "Some unspecified defect prevented a second use" "In good condition" - "Can be repaird by experienced expert" "As is" - "You wouldnt want it even if you were payed for it, if you knew ..." [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2022-03-21 21:21 UTC | newest] Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-03-12 23:52 [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size Michael Niedermayer 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 2/4] avformat/mxfdec: Check count in mxf_read_strong_ref_array() Michael Niedermayer 2022-03-14 19:19 ` Tomas Härdin 2022-03-19 22:50 ` Michael Niedermayer 2022-03-20 13:05 ` Tomas Härdin 2022-03-20 14:06 ` Michael Niedermayer 2022-03-21 10:06 ` Tomas Härdin 2022-03-21 21:20 ` Michael Niedermayer 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 3/4] avformat/mxfdec: Check for avio_read() failure " Michael Niedermayer 2022-03-13 15:52 ` Marton Balint 2022-03-14 13:58 ` Michael Niedermayer 2022-03-14 17:08 ` Marton Balint 2022-03-15 12:48 ` Michael Niedermayer 2022-03-14 19:21 ` Tomas Härdin 2022-03-19 22:54 ` Michael Niedermayer 2022-03-12 23:52 ` [FFmpeg-devel] [PATCH 4/4] avformat/mxfdec: Do not clear array in mxf_read_strong_ref_array() before writing Michael Niedermayer 2022-03-13 15:53 ` Marton Balint 2022-03-14 13:59 ` Michael Niedermayer 2022-03-13 19:03 ` [FFmpeg-devel] [PATCH 1/4] avcodec/vp9_superframe_split_bsf: Check in size James Almer 2022-03-14 14:04 ` Michael Niedermayer 2022-03-14 14:07 ` James Almer 2022-03-14 14:16 ` Michael Niedermayer 2022-03-21 18:59 ` Michael Niedermayer
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git