Index: net/quic/quic_framer.cc |
diff --git a/net/quic/quic_framer.cc b/net/quic/quic_framer.cc |
index d2a7694631df431fb0f2e68d4169d0e2c85026c4..c381695e4eeebaa36c4eb57a3e279b81bc47e432 100644 |
--- a/net/quic/quic_framer.cc |
+++ b/net/quic/quic_framer.cc |
@@ -781,12 +781,12 @@ bool QuicFramer::AppendPacketHeader(const QuicPacketHeader& header, |
// The FEC group number is the sequence number of the first fec |
// protected packet, or 0 if this packet is not protected. |
if (header.is_in_fec_group == IN_FEC_GROUP) { |
- DCHECK_GE(header.packet_sequence_number, header.fec_group); |
- DCHECK_GT(255u, header.packet_sequence_number - header.fec_group); |
+ DCHECK_LE(header.fec_group, header.packet_sequence_number); |
+ DCHECK_LT(header.packet_sequence_number - header.fec_group, 255u); |
// Offset from the current packet sequence number to the first fec |
// protected packet. |
uint8 first_fec_protected_packet_offset = |
- header.packet_sequence_number - header.fec_group; |
+ static_cast<uint8>(header.packet_sequence_number - header.fec_group); |
if (!writer->WriteBytes(&first_fec_protected_packet_offset, 1)) { |
return false; |
} |
@@ -987,18 +987,20 @@ QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo( |
QuicPacketSequenceNumber last_missing = *iter; |
++iter; |
for (; iter != frame.missing_packets.end(); ++iter) { |
- if (cur_range_length != numeric_limits<uint8>::max() && |
+ if (cur_range_length < numeric_limits<uint8>::max() && |
*iter == (last_missing + 1)) { |
++cur_range_length; |
} else { |
- ack_info.nack_ranges[last_missing - cur_range_length] = cur_range_length; |
+ ack_info.nack_ranges[last_missing - cur_range_length] = |
+ static_cast<uint8>(cur_range_length); |
cur_range_length = 0; |
} |
ack_info.max_delta = max(ack_info.max_delta, *iter - last_missing); |
last_missing = *iter; |
} |
// Include the last nack range. |
- ack_info.nack_ranges[last_missing - cur_range_length] = cur_range_length; |
+ ack_info.nack_ranges[last_missing - cur_range_length] = |
+ static_cast<uint8>(cur_range_length); |
// Include the range to the largest observed. |
ack_info.max_delta = |
max(ack_info.max_delta, frame.largest_observed - last_missing); |
@@ -1904,7 +1906,7 @@ bool QuicFramer::AppendTypeByte(const QuicFrame& frame, |
break; |
} |
default: |
- type_byte = frame.type; |
+ type_byte = static_cast<uint8>(frame.type); |
break; |
} |
@@ -1957,7 +1959,9 @@ bool QuicFramer::AppendStreamFrame( |
return false; |
} |
if (!no_stream_frame_length) { |
- if (!writer->WriteUInt16(frame.data.TotalBufferSize())) { |
+ if ((frame.data.TotalBufferSize() > std::numeric_limits<uint16>::max()) || |
+ !writer->WriteUInt16( |
+ static_cast<uint16>(frame.data.TotalBufferSize()))) { |
LOG(DFATAL) << "Writing stream frame length failed"; |
return false; |
} |
@@ -2071,7 +2075,7 @@ bool QuicFramer::AppendAckFrameAndTypeByte( |
} |
const uint8 num_missing_ranges = |
- min(ack_info.nack_ranges.size(), max_num_ranges); |
+ static_cast<uint8>(min(ack_info.nack_ranges.size(), max_num_ranges)); |
if (!writer->WriteBytes(&num_missing_ranges, 1)) { |
return false; |
} |
@@ -2098,11 +2102,11 @@ bool QuicFramer::AppendAckFrameAndTypeByte( |
// Append revived packets. |
// If not all the revived packets fit, only mention the ones that do. |
- uint8 num_revived_packets = min(frame.revived_packets.size(), |
- kMaxRevivedPackets); |
- num_revived_packets = min( |
+ uint8 num_revived_packets = |
+ static_cast<uint8>(min(frame.revived_packets.size(), kMaxRevivedPackets)); |
+ num_revived_packets = static_cast<uint8>(min( |
static_cast<size_t>(num_revived_packets), |
- (writer->capacity() - writer->length()) / largest_observed_length); |
+ (writer->capacity() - writer->length()) / largest_observed_length)); |
if (!writer->WriteBytes(&num_revived_packets, 1)) { |
return false; |
} |