From af5ffd5bb9e0afc886c11c4d8c8b0ee4403ab802 Mon Sep 17 00:00:00 2001 From: "stefan@webrtc.org" Date: Fri, 23 Mar 2012 16:01:15 +0000 Subject: [PATCH] Fixes for coverity warnings. BUG= TEST= Review URL: https://webrtc-codereview.appspot.com/461001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1933 4adac7df-926f-26a2-2b94-8c16560cd09d --- src/common_video/jpeg/include/jpeg.h | 2 +- src/common_video/jpeg/jpeg.cc | 1 + src/modules/interface/module_common_types.h | 10 +++++++++- src/modules/rtp_rtcp/source/fec_test_helper.cc | 14 +++++++------- src/modules/rtp_rtcp/source/fec_test_helper.h | 2 +- src/modules/rtp_rtcp/source/producer_fec.cc | 8 ++++---- .../video_coding/codecs/vp8/main/source/vp8.cc | 7 ++++++- .../video_coding/main/source/generic_encoder.cc | 2 ++ .../video_coding/main/source/jitter_buffer.cc | 2 +- 9 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/common_video/jpeg/include/jpeg.h b/src/common_video/jpeg/include/jpeg.h index 05e759cbec..cfb7fcea97 100644 --- a/src/common_video/jpeg/include/jpeg.h +++ b/src/common_video/jpeg/include/jpeg.h @@ -49,7 +49,7 @@ public: private: jpeg_compress_struct* _cinfo; - char _fileName[256]; + char _fileName[257]; }; class JpegDecoder diff --git a/src/common_video/jpeg/jpeg.cc b/src/common_video/jpeg/jpeg.cc index 00586d4f66..3afbbab1de 100644 --- a/src/common_video/jpeg/jpeg.cc +++ b/src/common_video/jpeg/jpeg.cc @@ -74,6 +74,7 @@ JpegEncoder::SetFileName(const char* fileName) if (fileName) { strncpy(_fileName, fileName, 256); + _fileName[256] = 0; } return 0; } diff --git a/src/modules/interface/module_common_types.h b/src/modules/interface/module_common_types.h index d0bd3568af..1c5c18bfc2 100644 --- a/src/modules/interface/module_common_types.h +++ b/src/modules/interface/module_common_types.h @@ -309,11 +309,19 @@ class EncodedVideoData { public: EncodedVideoData() : + payloadType(0), + timeStamp(0), + renderTimeMs(0), + encodedWidth(0), + encodedHeight(0), completeFrame(false), missingFrame(false), payloadData(NULL), payloadSize(0), - bufferSize(0) + bufferSize(0), + fragmentationHeader(), + frameType(kVideoFrameDelta), + codec(kVideoCodecUnknown) {}; EncodedVideoData(const EncodedVideoData& data) diff --git a/src/modules/rtp_rtcp/source/fec_test_helper.cc b/src/modules/rtp_rtcp/source/fec_test_helper.cc index 981801583f..1fbadb8d58 100644 --- a/src/modules/rtp_rtcp/source/fec_test_helper.cc +++ b/src/modules/rtp_rtcp/source/fec_test_helper.cc @@ -40,7 +40,7 @@ RtpPacket* FrameGenerator::NextPacket(int offset, size_t length) { rtp_packet->header.header.sequenceNumber = seq_num_; rtp_packet->header.header.timestamp = timestamp_; rtp_packet->header.header.payloadType = kVp8PayloadType; - BuildRtpHeader(rtp_packet->data, rtp_packet->header.header); + BuildRtpHeader(rtp_packet->data, &rtp_packet->header.header); ++seq_num_; --num_packets_; return rtp_packet; @@ -87,13 +87,13 @@ void FrameGenerator::SetRedHeader(Packet* red_packet, uint8_t payload_type, red_packet->data[header_length] = payload_type; } -void FrameGenerator::BuildRtpHeader(uint8_t* data, RTPHeader header) { +void FrameGenerator::BuildRtpHeader(uint8_t* data, const RTPHeader* header) { data[0] = 0x80; // Version 2. - data[1] = header.payloadType; - data[1] |= (header.markerBit ? kRtpMarkerBitMask : 0); - ModuleRTPUtility::AssignUWord16ToBuffer(data+2, header.sequenceNumber); - ModuleRTPUtility::AssignUWord32ToBuffer(data+4, header.timestamp); - ModuleRTPUtility::AssignUWord32ToBuffer(data+8, header.ssrc); + data[1] = header->payloadType; + data[1] |= (header->markerBit ? kRtpMarkerBitMask : 0); + ModuleRTPUtility::AssignUWord16ToBuffer(data+2, header->sequenceNumber); + ModuleRTPUtility::AssignUWord32ToBuffer(data+4, header->timestamp); + ModuleRTPUtility::AssignUWord32ToBuffer(data+8, header->ssrc); } } // namespace webrtc diff --git a/src/modules/rtp_rtcp/source/fec_test_helper.h b/src/modules/rtp_rtcp/source/fec_test_helper.h index b84bafb6b6..4a037c789e 100644 --- a/src/modules/rtp_rtcp/source/fec_test_helper.h +++ b/src/modules/rtp_rtcp/source/fec_test_helper.h @@ -49,7 +49,7 @@ class FrameGenerator { int header_length) const; private: - void BuildRtpHeader(uint8_t* data, RTPHeader header); + static void BuildRtpHeader(uint8_t* data, const RTPHeader* header); int num_packets_; uint16_t seq_num_; diff --git a/src/modules/rtp_rtcp/source/producer_fec.cc b/src/modules/rtp_rtcp/source/producer_fec.cc index e7814368cb..20e024976a 100644 --- a/src/modules/rtp_rtcp/source/producer_fec.cc +++ b/src/modules/rtp_rtcp/source/producer_fec.cc @@ -120,11 +120,11 @@ int ProducerFec::AddRtpPacketAndGenerateFec(const uint8_t* data_buffer, assert(fec_packets_.empty()); incomplete_frame_ = true; const bool marker_bit = (data_buffer[1] & kRtpMarkerBitMask) ? true : false; - ForwardErrorCorrection::Packet* packet = new ForwardErrorCorrection::Packet; - packet->length = payload_length + rtp_header_length; - memcpy(packet->data, data_buffer, packet->length); - // FEC can only protect up to kMaxMediaPackets packets if (media_packets_fec_.size() < ForwardErrorCorrection::kMaxMediaPackets) { + // Generic FEC can only protect up to kMaxMediaPackets packets. + ForwardErrorCorrection::Packet* packet = new ForwardErrorCorrection::Packet; + packet->length = payload_length + rtp_header_length; + memcpy(packet->data, data_buffer, packet->length); media_packets_fec_.push_back(packet); } if (marker_bit) { diff --git a/src/modules/video_coding/codecs/vp8/main/source/vp8.cc b/src/modules/video_coding/codecs/vp8/main/source/vp8.cc index 788e47198f..9b0baea2fc 100644 --- a/src/modules/video_coding/codecs/vp8/main/source/vp8.cc +++ b/src/modules/video_coding/codecs/vp8/main/source/vp8.cc @@ -51,6 +51,7 @@ VP8Encoder::VP8Encoder() encoder_(NULL), config_(NULL), raw_(NULL) { + memset(&codec_, 0, sizeof(codec_)); uint32_t seed = static_cast(TickTime::MillisecondTimestamp()); srand(seed); } @@ -571,6 +572,7 @@ VP8Decoder::VP8Decoder() propagation_cnt_(-1), latest_keyframe_complete_(false), mfqe_enabled_(false) { + memset(&codec_, 0, sizeof(codec_)); } VP8Decoder::~VP8Decoder() { @@ -590,6 +592,9 @@ int VP8Decoder::Reset() { } int VP8Decoder::InitDecode(const VideoCodec* inst, int number_of_cores) { + if (inst == NULL) { + return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; + } int ret_val = Release(); if (ret_val < 0 ) { return ret_val; @@ -597,7 +602,7 @@ int VP8Decoder::InitDecode(const VideoCodec* inst, int number_of_cores) { if (decoder_ == NULL) { decoder_ = new vpx_dec_ctx_t; } - if (inst && inst->codecType == kVideoCodecVP8) { + if (inst->codecType == kVideoCodecVP8) { feedback_mode_ = inst->codecSpecific.VP8.feedbackModeOn; } vpx_codec_dec_cfg_t cfg; diff --git a/src/modules/video_coding/main/source/generic_encoder.cc b/src/modules/video_coding/main/source/generic_encoder.cc index 58cdd99ecc..87c6c965f0 100644 --- a/src/modules/video_coding/main/source/generic_encoder.cc +++ b/src/modules/video_coding/main/source/generic_encoder.cc @@ -158,6 +158,8 @@ _sendCallback(), _mediaOpt(NULL), _encodedBytes(0), _payloadType(0), +_codecType(kVideoCodecUnknown), +_internalSource(false), _bitStreamAfterEncoder(NULL) { #ifdef DEBUG_ENCODER_BIT_STREAM diff --git a/src/modules/video_coding/main/source/jitter_buffer.cc b/src/modules/video_coding/main/source/jitter_buffer.cc index 4b146b6d52..b4eee604b4 100644 --- a/src/modules/video_coding/main/source/jitter_buffer.cc +++ b/src/modules/video_coding/main/source/jitter_buffer.cc @@ -1652,7 +1652,7 @@ VCMJitterBuffer::UpdateOldJitterSample(const VCMPacket& packet) bool VCMJitterBuffer::IsPacketRetransmitted(const VCMPacket& packet) const { - if (_NACKSeqNum && _NACKSeqNumLength > 0) + if (_NACKSeqNumLength > 0) { for (WebRtc_UWord16 i = 0; i < _NACKSeqNumLength; i++) {