Add functions to interact with ASan and MSan, and some sample uses
The sample uses are from when I debugged bug 617124. The change in neteq_network_stats_unittest.cc is a fix for a minor unrelated bug found by the try bots when I tried to land this CL (a test was passing uninitialized packet data to NetEq). BUG=chromium:617124 Review-Url: https://codereview.webrtc.org/2293893002 Cr-Commit-Position: refs/heads/master@{#14034}
This commit is contained in:
@ -12,7 +12,9 @@
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "webrtc/base/array_view.h"
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/base/sanitizer.h"
|
||||
#include "webrtc/base/trace_event.h"
|
||||
|
||||
namespace webrtc {
|
||||
@ -21,6 +23,7 @@ int AudioDecoder::Decode(const uint8_t* encoded, size_t encoded_len,
|
||||
int sample_rate_hz, size_t max_decoded_bytes,
|
||||
int16_t* decoded, SpeechType* speech_type) {
|
||||
TRACE_EVENT0("webrtc", "AudioDecoder::Decode");
|
||||
rtc::MsanCheckInitialized(rtc::MakeArrayView(encoded, encoded_len));
|
||||
int duration = PacketDuration(encoded, encoded_len);
|
||||
if (duration >= 0 &&
|
||||
duration * Channels() * sizeof(int16_t) > max_decoded_bytes) {
|
||||
@ -34,6 +37,7 @@ int AudioDecoder::DecodeRedundant(const uint8_t* encoded, size_t encoded_len,
|
||||
int sample_rate_hz, size_t max_decoded_bytes,
|
||||
int16_t* decoded, SpeechType* speech_type) {
|
||||
TRACE_EVENT0("webrtc", "AudioDecoder::DecodeRedundant");
|
||||
rtc::MsanCheckInitialized(rtc::MakeArrayView(encoded, encoded_len));
|
||||
int duration = PacketDurationRedundant(encoded, encoded_len);
|
||||
if (duration >= 0 &&
|
||||
duration * Channels() * sizeof(int16_t) > max_decoded_bytes) {
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
#include "defines.h"
|
||||
#include "constants.h"
|
||||
#include "webrtc/base/sanitizer.h"
|
||||
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
|
||||
|
||||
/*----------------------------------------------------------------*
|
||||
@ -40,6 +41,9 @@ void WebRtcIlbcfix_CreateAugmentedVec(
|
||||
*/
|
||||
size_t interp_len = WEBRTC_SPL_MIN(index, 4);
|
||||
|
||||
rtc_MsanCheckInitialized(buffer - index - interp_len, sizeof(buffer[0]),
|
||||
index + interp_len);
|
||||
|
||||
ilow = index - interp_len;
|
||||
|
||||
/* copy the first noninterpolated part */
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/base/logging.h"
|
||||
#include "webrtc/base/safe_conversions.h"
|
||||
#include "webrtc/base/sanitizer.h"
|
||||
#include "webrtc/base/trace_event.h"
|
||||
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/audio_decoder.h"
|
||||
@ -132,6 +133,7 @@ NetEqImpl::~NetEqImpl() = default;
|
||||
int NetEqImpl::InsertPacket(const WebRtcRTPHeader& rtp_header,
|
||||
rtc::ArrayView<const uint8_t> payload,
|
||||
uint32_t receive_timestamp) {
|
||||
rtc::MsanCheckInitialized(payload);
|
||||
TRACE_EVENT0("webrtc", "NetEqImpl::InsertPacket");
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
int error =
|
||||
|
||||
@ -201,7 +201,8 @@ NetEqNetworkStatsTest(NetEqDecoder codec,
|
||||
frame_size_samples_,
|
||||
&rtp_header_);
|
||||
if (!Lost(next_send_time)) {
|
||||
InsertPacket(rtp_header_, payload_, next_send_time);
|
||||
static const uint8_t payload[kPayloadSizeByte] = {0};
|
||||
InsertPacket(rtp_header_, payload, next_send_time);
|
||||
}
|
||||
}
|
||||
GetOutputAudio(&output_frame_);
|
||||
@ -277,7 +278,6 @@ NetEqNetworkStatsTest(NetEqDecoder codec,
|
||||
WebRtcRTPHeader rtp_header_;
|
||||
uint32_t last_lost_time_;
|
||||
uint32_t packet_loss_interval_;
|
||||
uint8_t payload_[kPayloadSizeByte];
|
||||
AudioFrame output_frame_;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user