Message ID | 20190420161142.28792-1-michael@niedermayer.cc |
---|---|
State | Accepted |
Commit | f17e8e90bb1fe5e4db18cc6dde9522417108c7bd |
Headers | show |
On 4/20/19, Michael Niedermayer <michael@niedermayer.cc> wrote: > Fixes: index 20 out of bounds for type 'const char *[4][128]' > Fixes: > 14367/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5718819672162304 > > 14367/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5718819672162304 > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavcodec/ccaption_dec.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c > index 09ceb1b3bf..bf3563a0bc 100644 > --- a/libavcodec/ccaption_dec.c > +++ b/libavcodec/ccaption_dec.c > @@ -212,10 +212,10 @@ static const unsigned char pac2_attribs[32][3] = // > Color, font, ident > > struct Screen { > /* +1 is used to compensate null character of string */ > - uint8_t characters[SCREEN_ROWS][SCREEN_COLUMNS+1]; > - uint8_t charsets[SCREEN_ROWS][SCREEN_COLUMNS+1]; > - uint8_t colors[SCREEN_ROWS][SCREEN_COLUMNS+1]; > - uint8_t fonts[SCREEN_ROWS][SCREEN_COLUMNS+1]; > + uint8_t characters[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > + uint8_t charsets[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > + uint8_t colors[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > + uint8_t fonts[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > /* > * Bitmask of used rows; if a bit is not set, the > * corresponding row is not used. > -- > 2.21.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". Probably OK
Hi Michael! On 2019-04-20 18:11 +0200, Michael Niedermayer wrote: > Fixes: index 20 out of bounds for type 'const char *[4][128]' Somehow I don't understand this diagnostic message. It says "index 20 out of bounds for [4][128]". You're change looks like an off-by-one fix. Sorry; I'm surely missing something as I didn't look up the code, just thought I might as well ask... Alexander > Fixes: 14367/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5718819672162304 > > 14367/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5718819672162304 > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavcodec/ccaption_dec.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c > index 09ceb1b3bf..bf3563a0bc 100644 > --- a/libavcodec/ccaption_dec.c > +++ b/libavcodec/ccaption_dec.c > @@ -212,10 +212,10 @@ static const unsigned char pac2_attribs[32][3] = // Color, font, ident > > struct Screen { > /* +1 is used to compensate null character of string */ > - uint8_t characters[SCREEN_ROWS][SCREEN_COLUMNS+1]; > - uint8_t charsets[SCREEN_ROWS][SCREEN_COLUMNS+1]; > - uint8_t colors[SCREEN_ROWS][SCREEN_COLUMNS+1]; > - uint8_t fonts[SCREEN_ROWS][SCREEN_COLUMNS+1]; > + uint8_t characters[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > + uint8_t charsets[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > + uint8_t colors[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > + uint8_t fonts[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; > /* > * Bitmask of used rows; if a bit is not set, the > * corresponding row is not used. > -- > 2.21.0
On Mon, Apr 22, 2019 at 09:49:41AM +0200, Alexander Strasser wrote: > Hi Michael! > > On 2019-04-20 18:11 +0200, Michael Niedermayer wrote: > > Fixes: index 20 out of bounds for type 'const char *[4][128]' > > Somehow I don't understand this diagnostic message. It says "index > 20 out of bounds for [4][128]". > > You're change looks like an off-by-one fix. > > Sorry; I'm surely missing something as I didn't look up the code, > just thought I might as well ask... yes, the out of array read causes a value that is out of range to be used and later cause the quoted 2nd out of array read [...]
diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c index 09ceb1b3bf..bf3563a0bc 100644 --- a/libavcodec/ccaption_dec.c +++ b/libavcodec/ccaption_dec.c @@ -212,10 +212,10 @@ static const unsigned char pac2_attribs[32][3] = // Color, font, ident struct Screen { /* +1 is used to compensate null character of string */ - uint8_t characters[SCREEN_ROWS][SCREEN_COLUMNS+1]; - uint8_t charsets[SCREEN_ROWS][SCREEN_COLUMNS+1]; - uint8_t colors[SCREEN_ROWS][SCREEN_COLUMNS+1]; - uint8_t fonts[SCREEN_ROWS][SCREEN_COLUMNS+1]; + uint8_t characters[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; + uint8_t charsets[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; + uint8_t colors[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; + uint8_t fonts[SCREEN_ROWS+1][SCREEN_COLUMNS+1]; /* * Bitmask of used rows; if a bit is not set, the * corresponding row is not used.
Fixes: index 20 out of bounds for type 'const char *[4][128]' Fixes: 14367/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5718819672162304 14367/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5718819672162304 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavcodec/ccaption_dec.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)