aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJai Luthra <me@jailuthra.in>2020-01-24 16:03:32 +0530
committerPaul B Mahol <onemda@gmail.com>2020-02-04 11:19:12 +0100
commitddeb58d58c77d0cee3b8592a084c6d9368dd0df4 (patch)
tree47d839e225fe9d708bad6a839c56628ef77bb30e
parent990990ed5d72b531cf5cc605af89830d8d42e7d0 (diff)
downloadffmpeg-ddeb58d58c77d0cee3b8592a084c6d9368dd0df4.tar.gz
mlpenc: prevent negative lsb_bits lshift
Fixes Coverity CID 1396239. Signed-off-by: Jai Luthra <me@jailuthra.in>
-rw-r--r--libavcodec/mlpenc.c11
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. */