mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-20 22:40:47 +00:00
shorten: use the unsigned type where needed
get_uint returns an unsigned value, use an unsigned to store blocksize to make sure the comparison logic is correct and report correctly the error for the channel count not supported. CC: libav-stable@libav.org (cherry picked from commit5cf7c72757
) (cherry picked from commit88089eecfd
) Signed-off-by: Luca Barbato <lu_zero@gentoo.org> Conflicts: libavcodec/shorten.c
This commit is contained in:
parent
5df064df62
commit
f42d03746a
@ -83,7 +83,7 @@ typedef struct ShortenContext {
|
||||
GetBitContext gb;
|
||||
|
||||
int min_framesize, max_framesize;
|
||||
int channels;
|
||||
unsigned channels;
|
||||
|
||||
int32_t *decoded[MAX_CHANNELS];
|
||||
int32_t *decoded_base[MAX_CHANNELS];
|
||||
@ -339,6 +339,10 @@ static int read_header(ShortenContext *s)
|
||||
s->internal_ftype = get_uint(s, TYPESIZE);
|
||||
|
||||
s->channels = get_uint(s, CHANSIZE);
|
||||
if (!s->channels) {
|
||||
av_log(s->avctx, AV_LOG_ERROR, "No channels reported\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
if (s->channels > MAX_CHANNELS) {
|
||||
av_log(s->avctx, AV_LOG_ERROR, "too many channels: %d\n", s->channels);
|
||||
s->channels = 0;
|
||||
@ -348,7 +352,8 @@ static int read_header(ShortenContext *s)
|
||||
|
||||
/* get blocksize if version > 0 */
|
||||
if (s->version > 0) {
|
||||
int skip_bytes, blocksize;
|
||||
int skip_bytes;
|
||||
unsigned blocksize;
|
||||
|
||||
blocksize = get_uint(s, av_log2(DEFAULT_BLOCK_SIZE));
|
||||
if (!blocksize || blocksize > MAX_BLOCKSIZE) {
|
||||
@ -500,7 +505,7 @@ static int shorten_decode_frame(AVCodecContext *avctx, void *data,
|
||||
s->bitshift = get_ur_golomb_shorten(&s->gb, BITSHIFTSIZE);
|
||||
break;
|
||||
case FN_BLOCKSIZE: {
|
||||
int blocksize = get_uint(s, av_log2(s->blocksize));
|
||||
unsigned blocksize = get_uint(s, av_log2(s->blocksize));
|
||||
if (blocksize > s->blocksize) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Increasing block size is not supported\n");
|
||||
|
Loading…
Reference in New Issue
Block a user