From 60b12263ac96b81e78631ac1482733749b484d76 Mon Sep 17 00:00:00 2001
From: Tristan Matthews <tristan.matthews@savoirfairelinux.com>
Date: Fri, 27 Apr 2012 18:20:14 -0400
Subject: [PATCH] * #9979: Don't do runtime assertions on data.

---
 daemon/src/audio/audiortp/audio_rtp_record_handler.cpp | 1 +
 daemon/src/audio/audiortp/audio_rtp_session.cpp        | 2 +-
 daemon/src/audio/codecs/alaw.cpp                       | 5 +----
 daemon/src/audio/codecs/g722.cpp                       | 7 ++-----
 daemon/src/audio/codecs/gsmcodec.cpp                   | 4 ----
 daemon/src/audio/codecs/speexcodec.h                   | 5 ++---
 daemon/src/audio/codecs/ulaw.cpp                       | 5 +----
 7 files changed, 8 insertions(+), 21 deletions(-)

diff --git a/daemon/src/audio/audiortp/audio_rtp_record_handler.cpp b/daemon/src/audio/audiortp/audio_rtp_record_handler.cpp
index 2282f6cdac..69c293c358 100644
--- a/daemon/src/audio/audiortp/audio_rtp_record_handler.cpp
+++ b/daemon/src/audio/audiortp/audio_rtp_record_handler.cpp
@@ -171,6 +171,7 @@ void AudioRtpRecordHandler::processDataDecode(unsigned char *spkrData, size_t si
         return;
 
     int inSamples = 0;
+    size = std::min(size, audioRtpRecord_.decData_.size());
     SFLDataFormat *spkrDataDecoded = audioRtpRecord_.decData_.data();
     {
         ost::MutexLock lock(audioRtpRecord_.audioCodecMutex_);
diff --git a/daemon/src/audio/audiortp/audio_rtp_session.cpp b/daemon/src/audio/audiortp/audio_rtp_session.cpp
index b0464cae86..5f4901048c 100644
--- a/daemon/src/audio/audiortp/audio_rtp_session.cpp
+++ b/daemon/src/audio/audiortp/audio_rtp_session.cpp
@@ -156,7 +156,7 @@ void AudioRtpSession::receiveSpeakerData()
         return;
 
     unsigned char* spkrDataIn = (unsigned char*) adu->getData(); // data in char
-    unsigned int size = adu->getSize(); // size in char
+    size_t size = adu->getSize(); // size in char
 
     // DTMF over RTP, size must be over 4 in order to process it as voice data
     if (size > 4)
diff --git a/daemon/src/audio/codecs/alaw.cpp b/daemon/src/audio/codecs/alaw.cpp
index 39c6a6e655..7b7ffdd378 100644
--- a/daemon/src/audio/codecs/alaw.cpp
+++ b/daemon/src/audio/codecs/alaw.cpp
@@ -31,7 +31,6 @@
 
 #include "sfl_types.h"
 #include "audiocodec.h"
-#include <cassert>
 
 class Alaw : public sfl::AudioCodec {
 
@@ -48,16 +47,14 @@ class Alaw : public sfl::AudioCodec {
     private:
         virtual int decode(SFLDataFormat *dst, unsigned char *src, size_t buf_size)
         {
-            assert(buf_size == frameSize_ / 2 /* compression factor = 2:1 */ * sizeof(SFLDataFormat));
             for (unsigned char* end = src + buf_size; src < end; ++src, ++dst)
                 *dst = ALawDecode(*src);
 
             return frameSize_;
         }
 
-        virtual int encode(unsigned char *dst, SFLDataFormat *src, size_t buf_size)
+        virtual int encode(unsigned char *dst, SFLDataFormat *src, size_t /*buf_size*/)
         {
-            assert(buf_size >= frameSize_ / 2 /* compression factor = 2:1 */ * sizeof(SFLDataFormat));
             for (unsigned char *end = dst + frameSize_; dst < end; ++src, ++dst)
                 *dst = ALawEncode(*src);
 
diff --git a/daemon/src/audio/codecs/g722.cpp b/daemon/src/audio/codecs/g722.cpp
index 1048db7f5c..b452ff3653 100644
--- a/daemon/src/audio/codecs/g722.cpp
+++ b/daemon/src/audio/codecs/g722.cpp
@@ -36,7 +36,6 @@
 
 #include <cstdlib>
 #include <cstring>
-#include <cassert>
 
 class G722 : public sfl::AudioCodec {
 
@@ -55,14 +54,12 @@ class G722 : public sfl::AudioCodec {
     private:
         virtual int decode(SFLDataFormat *dst, unsigned char *src, size_t buf_size)
         {
-            assert(buf_size == frameSize_ / sizeof(SFLDataFormat) * encode_state_.bits_per_sample / 8);
-            return g722_decode(dst, (const uint8_t*) src, buf_size);
+            return g722_decode(dst, src, buf_size);
         }
 
         virtual int encode(unsigned char *dst, SFLDataFormat *src, size_t buf_size)
         {
-            int out = g722_encode((uint8_t*) dst, src, frameSize_);
-            assert((size_t) out <= buf_size);
+            int out = g722_encode(dst, src, frameSize_);
             return out;
         }
 
diff --git a/daemon/src/audio/codecs/gsmcodec.cpp b/daemon/src/audio/codecs/gsmcodec.cpp
index 7c1e68c22f..5d7afe24fb 100644
--- a/daemon/src/audio/codecs/gsmcodec.cpp
+++ b/daemon/src/audio/codecs/gsmcodec.cpp
@@ -33,7 +33,6 @@
 #include "audiocodec.h"
 #include "sfl_types.h"
 #include "noncopyable.h"
-#include <cassert>
 #include <stdexcept>
 
 extern "C" {
@@ -70,8 +69,6 @@ class Gsm : public sfl::AudioCodec {
 
         virtual int decode(SFLDataFormat * dst, unsigned char * src, size_t buf_size)
         {
-            assert(buf_size == 33);
-
             if (gsm_decode(decode_gsmhandle_, (gsm_byte*) src, (gsm_signal*) dst) < 0)
                 throw std::runtime_error("ERROR: gsm_decode\n");
 
@@ -80,7 +77,6 @@ class Gsm : public sfl::AudioCodec {
 
         virtual int encode(unsigned char * dst, SFLDataFormat * src, size_t buf_size)
         {
-            assert(buf_size >= 33);
             gsm_encode(encode_gsmhandle_, (gsm_signal*) src, (gsm_byte*) dst);
             return 33;
         }
diff --git a/daemon/src/audio/codecs/speexcodec.h b/daemon/src/audio/codecs/speexcodec.h
index 7b53fcdce2..20727a830e 100644
--- a/daemon/src/audio/codecs/speexcodec.h
+++ b/daemon/src/audio/codecs/speexcodec.h
@@ -32,7 +32,6 @@
 #include "global.h"
 #include "audiocodec.h"
 #include "noncopyable.h"
-#include <cstdio>
 #include <speex/speex.h>
 #include <cassert>
 
@@ -71,8 +70,8 @@ class Speex : public sfl::AudioCodec {
             speex_frame_size_(0) {
                 assert(payload >= 110 && payload <= 112);
                 assert(110 == PAYLOAD_CODEC_SPEEX_8000 &&
-                        111 == PAYLOAD_CODEC_SPEEX_16000 &&
-                        112 == PAYLOAD_CODEC_SPEEX_32000);
+                       111 == PAYLOAD_CODEC_SPEEX_16000 &&
+                       112 == PAYLOAD_CODEC_SPEEX_32000);
                 int type = payload - 110;
 
                 clockRate_ = clockRate[type];
diff --git a/daemon/src/audio/codecs/ulaw.cpp b/daemon/src/audio/codecs/ulaw.cpp
index 2c2ea5a7ae..51448e6999 100644
--- a/daemon/src/audio/codecs/ulaw.cpp
+++ b/daemon/src/audio/codecs/ulaw.cpp
@@ -31,7 +31,6 @@
 
 #include "audiocodec.h"
 #include "sfl_types.h"
-#include <cassert>
 
 class Ulaw : public sfl::AudioCodec {
     public:
@@ -45,7 +44,6 @@ class Ulaw : public sfl::AudioCodec {
         }
 
         virtual int decode(SFLDataFormat *dst, unsigned char *src, size_t buf_size) {
-            assert(buf_size == frameSize_ / 2 /* compression factor = 2:1 */ * sizeof(SFLDataFormat));
             for (unsigned char* end = src + buf_size; src < end; ++src, ++dst)
                 *dst = ULawDecode(*src);
 
@@ -53,8 +51,7 @@ class Ulaw : public sfl::AudioCodec {
         }
 
         virtual int encode(unsigned char *dst, SFLDataFormat *src, size_t buf_size) {
-            assert(buf_size >= frameSize_ / 2 /* compression factor = 2:1 */ * sizeof(SFLDataFormat));
-            for (uint8* end = dst + frameSize_; dst < end; ++src, ++dst)
+            for (unsigned char * end = dst + frameSize_; dst < end; ++src, ++dst)
                 *dst = ULawEncode(*src);
 
             return frameSize_ / 2 /* compression factor = 2:1 */ * sizeof(SFLDataFormat);;
-- 
GitLab