Index: webrtc/modules/audio_coding/codecs/ilbc/create_augmented_vec.c |
diff --git a/webrtc/modules/audio_coding/codecs/ilbc/create_augmented_vec.c b/webrtc/modules/audio_coding/codecs/ilbc/create_augmented_vec.c |
index 8ae28ac3b9962735069b2b5d6db1d3b4ae49edbc..6b2307c23715c996bb2c9490e08d292a3a99907d 100644 |
--- a/webrtc/modules/audio_coding/codecs/ilbc/create_augmented_vec.c |
+++ b/webrtc/modules/audio_coding/codecs/ilbc/create_augmented_vec.c |
@@ -18,6 +18,7 @@ |
#include "defines.h" |
#include "constants.h" |
+#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" |
/*----------------------------------------------------------------* |
* Recreate a specific codebook vector from the augmented part. |
@@ -53,5 +54,15 @@ void WebRtcIlbcfix_CreateAugmentedVec( |
/* copy the second noninterpolated part */ |
ppo = buffer - index; |
- WEBRTC_SPL_MEMCPY_W16(cbVec+index,ppo,(SUBL-index)); |
+ /* |tempbuff2| is declared in WebRtcIlbcfix_GetCbVec and is SUBL+5 elements |
+ long. |buffer| points one element past the end of that vector, i.e., at |
+ tempbuff2+SUBL+5. Since ppo=buffer-index, we cannot read any more than |
+ |index| elements from |ppo|. |
+ |
+ |cbVec| is declared to be SUBL elements long in WebRtcIlbcfix_CbConstruct. |
+ Therefore, we can only write SUBL-index elements to cbVec+index. |
+ |
+ These two conditions limit the number of elements to copy. |
+ */ |
+ WEBRTC_SPL_MEMCPY_W16(cbVec+index, ppo, WEBRTC_SPL_MIN(SUBL-index, index)); |
} |