aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/g723_1.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-10-14 03:42:28 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-10-14 03:42:28 +0200
commit014b178f84fd6c5766e6a626a83f15a0dc635c90 (patch)
tree5400f65b02f0a43c6753e3893a1fc0b17cd59036 /libavcodec/g723_1.c
parent2fed05f53a881b64a02de7a324d67d8c029c6cf1 (diff)
downloadffmpeg-014b178f84fd6c5766e6a626a83f15a0dc635c90.tar.gz
g723_1: fix overflow in square_root()
the intermediate does not fit in a signed 32bit int Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/g723_1.c')
-rw-r--r--libavcodec/g723_1.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/g723_1.c b/libavcodec/g723_1.c
index 29eb4fae2c..017ecc41c4 100644
--- a/libavcodec/g723_1.c
+++ b/libavcodec/g723_1.c
@@ -226,8 +226,10 @@ static int unpack_bitstream(G723_1_Context *p, const uint8_t *buf,
/**
* Bitexact implementation of sqrt(val/2).
*/
-static int16_t square_root(int val)
+static int16_t square_root(unsigned val)
{
+ av_assert2(!(val & 0x80000000));
+
return (ff_sqrt(val << 1) >> 1) & (~1);
}