diff options
author | Jai Luthra <me@jailuthra.in> | 2020-01-24 13:33:32 +0300 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2020-02-04 13:19:12 +0300 |
commit | ddeb58d58c77d0cee3b8592a084c6d9368dd0df4 (patch) | |
tree | 47d839e225fe9d708bad6a839c56628ef77bb30e /libavcodec/mlpenc.c | |
parent | 990990ed5d72b531cf5cc605af89830d8d42e7d0 (diff) |
mlpenc: prevent negative lsb_bits lshift
Fixes Coverity CID 1396239.
Signed-off-by: Jai Luthra <me@jailuthra.in>
Diffstat (limited to 'libavcodec/mlpenc.c')
-rw-r--r-- | libavcodec/mlpenc.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libavcodec/mlpenc.c b/libavcodec/mlpenc.c index 1cee38c82f..41030f6f07 100644 --- a/libavcodec/mlpenc.c +++ b/libavcodec/mlpenc.c @@ -1,6 +1,7 @@ /** * MLP encoder * Copyright (c) 2008 Ramiro Polla + * Copyright (c) 2016-2019 Jai Luthra * * This file is part of FFmpeg. * @@ -1562,7 +1563,7 @@ static void no_codebook_bits_offset(MLPEncodeContext *ctx, BestOffset *bo) { DecodingParams *dp = ctx->cur_decoding_params; - int32_t unsign; + int32_t unsign = 0; int lsb_bits; min -= offset; @@ -1572,7 +1573,8 @@ static void no_codebook_bits_offset(MLPEncodeContext *ctx, lsb_bits += !!lsb_bits; - unsign = 1 << (lsb_bits - 1); + if (lsb_bits > 0) + unsign = 1 << (lsb_bits - 1); bo->offset = offset; bo->lsb_bits = lsb_bits; @@ -1591,7 +1593,7 @@ static void no_codebook_bits(MLPEncodeContext *ctx, { DecodingParams *dp = ctx->cur_decoding_params; int16_t offset; - int32_t unsign; + int32_t unsign = 0; uint32_t diff; int lsb_bits; @@ -1607,7 +1609,8 @@ static void no_codebook_bits(MLPEncodeContext *ctx, lsb_bits = number_sbits(diff) - 1; - unsign = 1 << (lsb_bits - 1); + if (lsb_bits > 0) + unsign = 1 << (lsb_bits - 1); /* If all samples are the same (lsb_bits == 0), offset must be * adjusted because of sign_shift. */ |