From 512535097e543333584f268eb62fe81c9ac76cc6 Mon Sep 17 00:00:00 2001 From: "xians@webrtc.org" Date: Thu, 25 Oct 2012 13:58:02 +0000 Subject: [PATCH] Added buffer length when calling encrypt(). Write the extra two bytes. BUG=934 TEST=Run VoE Autotest Encryption with Valgrind. Review URL: https://webrtc-codereview.appspot.com/930004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@2995 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/voice_engine/channel.cc | 2 ++ .../voice_engine/test/auto_test/standard/encryption_test.cc | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc index 4370b74c9..6bb5454c8 100644 --- a/webrtc/voice_engine/channel.cc +++ b/webrtc/voice_engine/channel.cc @@ -187,6 +187,8 @@ Channel::SendPacket(int channel, const void *data, int len) // Allocate memory for encryption buffer one time only _encryptionRTPBufferPtr = new WebRtc_UWord8[kVoiceEngineMaxIpPacketSizeBytes]; + memset(_encryptionRTPBufferPtr, 0, + kVoiceEngineMaxIpPacketSizeBytes); } // Perform encryption (SRTP or external) diff --git a/webrtc/voice_engine/test/auto_test/standard/encryption_test.cc b/webrtc/voice_engine/test/auto_test/standard/encryption_test.cc index acb1a0dee..084d216c7 100644 --- a/webrtc/voice_engine/test/auto_test/standard/encryption_test.cc +++ b/webrtc/voice_engine/test/auto_test/standard/encryption_test.cc @@ -28,6 +28,8 @@ void BasicBitInverseEncryption::encrypt(int, unsigned char* in_data, int i; for (i = 0; i < bytes_in; i++) out_data[i] = ~in_data[i]; + out_data[bytes_in] = 0; + out_data[bytes_in + 1] = 0; *bytes_out = bytes_in + 2; } @@ -46,6 +48,8 @@ void BasicBitInverseEncryption::encrypt_rtcp(int, unsigned char* in_data, int i; for (i = 0; i < bytes_in; i++) out_data[i] = ~in_data[i]; + out_data[bytes_in] = 0; + out_data[bytes_in + 1] = 0; *bytes_out = bytes_in + 2; } @@ -55,6 +59,8 @@ void BasicBitInverseEncryption::decrypt_rtcp(int, unsigned char* in_data, int i; for (i = 0; i < bytes_in; i++) out_data[i] = ~in_data[i]; + out_data[bytes_in] = 0; + out_data[bytes_in + 1] = 0; *bytes_out = bytes_in + 2; }