From 0713a18ebc87bad579b901b3dcd2499d8e5b552b Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@jmvalin.ca>
Date: Fri, 1 Mar 2024 17:34:52 -0500
Subject: [PATCH] Fix overflow in CELT Deep PLC

Added proper saturation and rounding
---
 celt/celt_decoder.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/celt/celt_decoder.c b/celt/celt_decoder.c
index 70b5ed12f..743c2031b 100644
--- a/celt/celt_decoder.c
+++ b/celt/celt_decoder.c
@@ -589,7 +589,7 @@ void update_plc_state(LPCNetPLCState *lpcnet, celt_sig *decode_mem[2], float *pl
       for (j=0;j<SINC_ORDER+1;j++) {
          sum += buf48k[3*i + j + offset]*sinc_filter[j];
       }
-      buf16k[i] = sum;
+      buf16k[i] = float2int(MIN32(32767.f, MAX32(-32767.f, sum)));
    }
    tmp_read_post = lpcnet->fec_read_pos;
    tmp_fec_skip = lpcnet->fec_skip;
-- 
GitLab