Browse Source

Document that the MPEG12 "fast" functions can read out of bounds.

This is intentional (and a reason why fast usually should not be used),
but a few people sent patches to "fix" this recently so it would be
better to document this.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
tags/n1.0
Reimar Döffinger 13 years ago
parent
commit
3905caf251
1 changed files with 15 additions and 0 deletions
  1. +15
    -0
      libavcodec/mpeg12.c

+ 15
- 0
libavcodec/mpeg12.c View File

@@ -232,6 +232,11 @@ end:
return 0; return 0;
} }


/**
* 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.
*/
static inline int mpeg1_fast_decode_block_inter(MpegEncContext *s, DCTELEM *block, int n) static inline int mpeg1_fast_decode_block_inter(MpegEncContext *s, DCTELEM *block, int n)
{ {
int level, i, j, run; int level, i, j, run;
@@ -383,6 +388,11 @@ end:
return 0; return 0;
} }


/**
* 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.
*/
static inline int mpeg2_fast_decode_block_non_intra(MpegEncContext *s, static inline int mpeg2_fast_decode_block_non_intra(MpegEncContext *s,
DCTELEM *block, int n) DCTELEM *block, int n)
{ {
@@ -523,6 +533,11 @@ static inline int mpeg2_decode_block_intra(MpegEncContext *s, DCTELEM *block, in
return 0; return 0;
} }


/**
* 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.
*/
static inline int mpeg2_fast_decode_block_intra(MpegEncContext *s, DCTELEM *block, int n) static inline int mpeg2_fast_decode_block_intra(MpegEncContext *s, DCTELEM *block, int n)
{ {
int level, dc, diff, j, run; int level, dc, diff, j, run;


Loading…
Cancel
Save