OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/core/quic_framer.h" | 5 #include "net/quic/core/quic_framer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cstdint> | 8 #include <cstdint> |
9 #include <map> | 9 #include <map> |
10 #include <memory> | 10 #include <memory> |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 | 669 |
670 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; | 670 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; |
671 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); | 671 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); |
672 | 672 |
673 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), | 673 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), |
674 false); | 674 false); |
675 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 675 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
676 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 676 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
677 ASSERT_TRUE(visitor_.header_.get()); | 677 ASSERT_TRUE(visitor_.header_.get()); |
678 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 678 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
679 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | |
680 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 679 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
681 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 680 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
682 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 681 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
683 | 682 |
684 // Now test framing boundaries. | 683 // Now test framing boundaries. |
685 for (size_t i = 0; | 684 for (size_t i = 0; |
686 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 685 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
687 !kIncludeVersion, !kIncludeDiversificationNonce, | 686 !kIncludeVersion, !kIncludeDiversificationNonce, |
688 PACKET_6BYTE_PACKET_NUMBER); | 687 PACKET_6BYTE_PACKET_NUMBER); |
689 ++i) { | 688 ++i) { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 }; | 722 }; |
724 // clang-format on | 723 // clang-format on |
725 | 724 |
726 QuicEncryptedPacket encrypted( | 725 QuicEncryptedPacket encrypted( |
727 AsChars(framer_.version() > QUIC_VERSION_38 ? packet39 : packet), | 726 AsChars(framer_.version() > QUIC_VERSION_38 ? packet39 : packet), |
728 arraysize(packet), false); | 727 arraysize(packet), false); |
729 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 728 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
730 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 729 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
731 ASSERT_TRUE(visitor_.header_.get()); | 730 ASSERT_TRUE(visitor_.header_.get()); |
732 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 731 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
733 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | |
734 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 732 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
735 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 733 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
736 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 734 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
737 | 735 |
738 // Now test framing boundaries. | 736 // Now test framing boundaries. |
739 for (size_t i = 0; | 737 for (size_t i = 0; |
740 i < GetPacketHeaderSize(framer_.version(), PACKET_0BYTE_CONNECTION_ID, | 738 i < GetPacketHeaderSize(framer_.version(), PACKET_0BYTE_CONNECTION_ID, |
741 !kIncludeVersion, !kIncludeDiversificationNonce, | 739 !kIncludeVersion, !kIncludeDiversificationNonce, |
742 PACKET_6BYTE_PACKET_NUMBER); | 740 PACKET_6BYTE_PACKET_NUMBER); |
743 ++i) { | 741 ++i) { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 | 803 |
806 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; | 804 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; |
807 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); | 805 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); |
808 | 806 |
809 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), | 807 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), |
810 false); | 808 false); |
811 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 809 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
812 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 810 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
813 ASSERT_TRUE(visitor_.header_.get()); | 811 ASSERT_TRUE(visitor_.header_.get()); |
814 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 812 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
815 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | |
816 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 813 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
817 EXPECT_TRUE(visitor_.header_->public_header.version_flag); | 814 EXPECT_TRUE(visitor_.header_->public_header.version_flag); |
818 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); | 815 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); |
819 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 816 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
820 | 817 |
821 // Now test framing boundaries. | 818 // Now test framing boundaries. |
822 for (size_t i = 0; | 819 for (size_t i = 0; |
823 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 820 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
824 kIncludeVersion, !kIncludeDiversificationNonce, | 821 kIncludeVersion, !kIncludeDiversificationNonce, |
825 PACKET_6BYTE_PACKET_NUMBER); | 822 PACKET_6BYTE_PACKET_NUMBER); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
882 | 879 |
883 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; | 880 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; |
884 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); | 881 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); |
885 | 882 |
886 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), | 883 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), |
887 false); | 884 false); |
888 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 885 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
889 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 886 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
890 ASSERT_TRUE(visitor_.header_.get()); | 887 ASSERT_TRUE(visitor_.header_.get()); |
891 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 888 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
892 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | |
893 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 889 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
894 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 890 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
895 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 891 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
896 | 892 |
897 // Now test framing boundaries. | 893 // Now test framing boundaries. |
898 for (size_t i = 0; | 894 for (size_t i = 0; |
899 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 895 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
900 !kIncludeVersion, !kIncludeDiversificationNonce, | 896 !kIncludeVersion, !kIncludeDiversificationNonce, |
901 PACKET_4BYTE_PACKET_NUMBER); | 897 PACKET_4BYTE_PACKET_NUMBER); |
902 ++i) { | 898 ++i) { |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 | 952 |
957 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; | 953 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; |
958 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); | 954 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); |
959 | 955 |
960 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), | 956 QuicEncryptedPacket encrypted(AsChars(packets[index]), arraysize(packet), |
961 false); | 957 false); |
962 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 958 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
963 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 959 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
964 ASSERT_TRUE(visitor_.header_.get()); | 960 ASSERT_TRUE(visitor_.header_.get()); |
965 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 961 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
966 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | |
967 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 962 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
968 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 963 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
969 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 964 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
970 visitor_.header_->public_header.packet_number_length); | 965 visitor_.header_->public_header.packet_number_length); |
971 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 966 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
972 | 967 |
973 // Now test framing boundaries. | 968 // Now test framing boundaries. |
974 for (size_t i = 0; | 969 for (size_t i = 0; |
975 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 970 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
976 !kIncludeVersion, !kIncludeDiversificationNonce, | 971 !kIncludeVersion, !kIncludeDiversificationNonce, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 ? packet_cid_be | 1013 ? packet_cid_be |
1019 : packet), | 1014 : packet), |
1020 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) | 1015 QuicUtils::IsConnectionIdWireFormatBigEndian(framer_.perspective()) |
1021 ? arraysize(packet_cid_be) | 1016 ? arraysize(packet_cid_be) |
1022 : arraysize(packet), | 1017 : arraysize(packet), |
1023 false); | 1018 false); |
1024 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); | 1019 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
1025 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); | 1020 EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error()); |
1026 ASSERT_TRUE(visitor_.header_.get()); | 1021 ASSERT_TRUE(visitor_.header_.get()); |
1027 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 1022 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
1028 EXPECT_FALSE(visitor_.header_->public_header.multipath_flag); | |
1029 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); | 1023 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
1030 EXPECT_FALSE(visitor_.header_->public_header.version_flag); | 1024 EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
1031 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1025 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1032 visitor_.header_->public_header.packet_number_length); | 1026 visitor_.header_->public_header.packet_number_length); |
1033 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); | 1027 EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
1034 | 1028 |
1035 // Now test framing boundaries. | 1029 // Now test framing boundaries. |
1036 for (size_t i = 0; | 1030 for (size_t i = 0; |
1037 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, | 1031 i < GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
1038 !kIncludeVersion, !kIncludeDiversificationNonce, | 1032 !kIncludeVersion, !kIncludeDiversificationNonce, |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1109 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); | 1103 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
1110 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1104 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1111 visitor_.header_->public_header.packet_number_length); | 1105 visitor_.header_->public_header.packet_number_length); |
1112 EXPECT_EQ(kPacketNumber - 1, visitor_.header_->packet_number); | 1106 EXPECT_EQ(kPacketNumber - 1, visitor_.header_->packet_number); |
1113 } | 1107 } |
1114 | 1108 |
1115 TEST_P(QuicFramerTest, PacketWithDiversificationNonce) { | 1109 TEST_P(QuicFramerTest, PacketWithDiversificationNonce) { |
1116 // clang-format off | 1110 // clang-format off |
1117 unsigned char packet[] = { | 1111 unsigned char packet[] = { |
1118 // public flags: includes nonce flag | 1112 // public flags: includes nonce flag |
1119 static_cast<unsigned char>( | 1113 0x3C, |
1120 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x3C : 0x7C), | |
1121 // connection_id | 1114 // connection_id |
1122 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, | 1115 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
1123 // nonce | 1116 // nonce |
1124 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | 1117 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
1125 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | 1118 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, |
1126 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | 1119 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, |
1127 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, | 1120 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, |
1128 // packet number | 1121 // packet number |
1129 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, | 1122 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
1130 | 1123 |
1131 // frame type (padding) | 1124 // frame type (padding) |
1132 0x00, | 1125 0x00, |
1133 0x00, 0x00, 0x00, 0x00 | 1126 0x00, 0x00, 0x00, 0x00 |
1134 }; | 1127 }; |
1135 | 1128 |
1136 unsigned char packet_cid_be[] = { | 1129 unsigned char packet_cid_be[] = { |
1137 // public flags: includes nonce flag | 1130 // public flags: includes nonce flag |
1138 static_cast<unsigned char>( | 1131 0x3C, |
1139 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x3C : 0x7C), | |
1140 // connection_id | 1132 // connection_id |
1141 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 1133 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
1142 // nonce | 1134 // nonce |
1143 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | 1135 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
1144 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | 1136 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, |
1145 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | 1137 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, |
1146 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, | 1138 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, |
1147 // packet number | 1139 // packet number |
1148 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, | 1140 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
1149 | 1141 |
1150 // frame type (padding) | 1142 // frame type (padding) |
1151 0x00, | 1143 0x00, |
1152 0x00, 0x00, 0x00, 0x00 | 1144 0x00, 0x00, 0x00, 0x00 |
1153 }; | 1145 }; |
1154 | 1146 |
1155 unsigned char packet39[] = { | 1147 unsigned char packet39[] = { |
1156 // public flags: includes nonce flag | 1148 // public flags: includes nonce flag |
1157 static_cast<unsigned char>( | 1149 0x3C, |
1158 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x3C : 0x7C), | |
1159 // connection_id | 1150 // connection_id |
1160 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, | 1151 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
1161 // nonce | 1152 // nonce |
1162 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | 1153 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
1163 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | 1154 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, |
1164 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | 1155 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, |
1165 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, | 1156 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, |
1166 // packet number | 1157 // packet number |
1167 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, | 1158 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, |
1168 | 1159 |
1169 // frame type (padding) | 1160 // frame type (padding) |
1170 0x00, | 1161 0x00, |
1171 0x00, 0x00, 0x00, 0x00 | 1162 0x00, 0x00, 0x00, 0x00 |
1172 }; | 1163 }; |
1173 | 1164 |
1174 unsigned char packet_cid_be39[] = { | 1165 unsigned char packet_cid_be39[] = { |
1175 // public flags: includes nonce flag | 1166 // public flags: includes nonce flag |
1176 static_cast<unsigned char>( | 1167 0x3C, |
1177 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x3C : 0x7C), | |
1178 // connection_id | 1168 // connection_id |
1179 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 1169 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
1180 // nonce | 1170 // nonce |
1181 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | 1171 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
1182 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | 1172 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, |
1183 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | 1173 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, |
1184 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, | 1174 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, |
1185 // packet number | 1175 // packet number |
1186 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, | 1176 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, |
1187 | 1177 |
(...skipping 14 matching lines...) Expand all Loading... |
1202 EXPECT_EQ(i, (*visitor_.public_header_->nonce)[static_cast<size_t>(i)]); | 1192 EXPECT_EQ(i, (*visitor_.public_header_->nonce)[static_cast<size_t>(i)]); |
1203 } | 1193 } |
1204 EXPECT_EQ(1u, visitor_.padding_frames_.size()); | 1194 EXPECT_EQ(1u, visitor_.padding_frames_.size()); |
1205 EXPECT_EQ(5, visitor_.padding_frames_[0]->num_padding_bytes); | 1195 EXPECT_EQ(5, visitor_.padding_frames_[0]->num_padding_bytes); |
1206 }; | 1196 }; |
1207 | 1197 |
1208 TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) { | 1198 TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) { |
1209 // clang-format off | 1199 // clang-format off |
1210 unsigned char packet[] = { | 1200 unsigned char packet[] = { |
1211 // public flags (8 byte connection_id, version flag and an unknown flag) | 1201 // public flags (8 byte connection_id, version flag and an unknown flag) |
1212 static_cast<unsigned char>( | 1202 0x39, |
1213 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x39 : 0x79), | |
1214 // connection_id | 1203 // connection_id |
1215 0x10, 0x32, 0x54, 0x76, | 1204 0x10, 0x32, 0x54, 0x76, |
1216 0x98, 0xBA, 0xDC, 0xFE, | 1205 0x98, 0xBA, 0xDC, 0xFE, |
1217 // version tag | 1206 // version tag |
1218 'Q', '0', '0', '0', | 1207 'Q', '0', '0', '0', |
1219 // packet number | 1208 // packet number |
1220 0xBC, 0x9A, 0x78, 0x56, | 1209 0xBC, 0x9A, 0x78, 0x56, |
1221 0x34, 0x12, | 1210 0x34, 0x12, |
1222 | 1211 |
1223 // frame type (padding frame) | 1212 // frame type (padding frame) |
1224 0x00, | 1213 0x00, |
1225 0x00, 0x00, 0x00, 0x00 | 1214 0x00, 0x00, 0x00, 0x00 |
1226 }; | 1215 }; |
1227 | 1216 |
1228 unsigned char packet_cid_be[] = { | 1217 unsigned char packet_cid_be[] = { |
1229 // public flags (8 byte connection_id, version flag and an unknown flag) | 1218 // public flags (8 byte connection_id, version flag and an unknown flag) |
1230 static_cast<unsigned char>( | 1219 0x39, |
1231 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x39 : 0x79), | |
1232 // connection_id | 1220 // connection_id |
1233 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 1221 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
1234 // version tag | 1222 // version tag |
1235 'Q', '0', '0', '0', | 1223 'Q', '0', '0', '0', |
1236 // packet number | 1224 // packet number |
1237 0xBC, 0x9A, 0x78, 0x56, | 1225 0xBC, 0x9A, 0x78, 0x56, |
1238 0x34, 0x12, | 1226 0x34, 0x12, |
1239 | 1227 |
1240 // frame type (padding frame) | 1228 // frame type (padding frame) |
1241 0x00, | 1229 0x00, |
1242 0x00, 0x00, 0x00, 0x00 | 1230 0x00, 0x00, 0x00, 0x00 |
1243 }; | 1231 }; |
1244 | 1232 |
1245 unsigned char packet39[] = { | 1233 unsigned char packet39[] = { |
1246 // public flags (8 byte connection_id, version flag and an unknown flag) | 1234 // public flags (8 byte connection_id, version flag and an unknown flag) |
1247 static_cast<unsigned char>( | 1235 0x39, |
1248 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x39 : 0x79), | |
1249 // connection_id | 1236 // connection_id |
1250 0x10, 0x32, 0x54, 0x76, | 1237 0x10, 0x32, 0x54, 0x76, |
1251 0x98, 0xBA, 0xDC, 0xFE, | 1238 0x98, 0xBA, 0xDC, 0xFE, |
1252 // version tag | 1239 // version tag |
1253 'Q', '0', '0', '0', | 1240 'Q', '0', '0', '0', |
1254 // packet number | 1241 // packet number |
1255 0x12, 0x34, 0x56, 0x78, | 1242 0x12, 0x34, 0x56, 0x78, |
1256 0x9A, 0xBC, | 1243 0x9A, 0xBC, |
1257 | 1244 |
1258 // frame type (padding frame) | 1245 // frame type (padding frame) |
1259 0x00, | 1246 0x00, |
1260 0x00, 0x00, 0x00, 0x00 | 1247 0x00, 0x00, 0x00, 0x00 |
1261 }; | 1248 }; |
1262 | 1249 |
1263 unsigned char packet_cid_be39[] = { | 1250 unsigned char packet_cid_be39[] = { |
1264 // public flags (8 byte connection_id, version flag and an unknown flag) | 1251 // public flags (8 byte connection_id, version flag and an unknown flag) |
1265 static_cast<unsigned char>( | 1252 0x39, |
1266 FLAGS_quic_reloadable_flag_quic_remove_multipath_bit ? 0x39 : 0x79), | |
1267 // connection_id | 1253 // connection_id |
1268 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, | 1254 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, |
1269 // version tag | 1255 // version tag |
1270 'Q', '0', '0', '0', | 1256 'Q', '0', '0', '0', |
1271 // packet number | 1257 // packet number |
1272 0x12, 0x34, 0x56, 0x78, | 1258 0x12, 0x34, 0x56, 0x78, |
1273 0x9A, 0xBC, | 1259 0x9A, 0xBC, |
1274 | 1260 |
1275 // frame type (padding frame) | 1261 // frame type (padding frame) |
1276 0x00, | 1262 0x00, |
(...skipping 5991 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7268 | 7254 |
7269 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; | 7255 unsigned char* packets[] = {packet, packet_cid_be, packet39, packet_cid_be39}; |
7270 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); | 7256 size_t index = GetPacketIndex(framer_.version(), framer_.perspective()); |
7271 | 7257 |
7272 QuicFramerFuzzFunc(packets[index], arraysize(packet)); | 7258 QuicFramerFuzzFunc(packets[index], arraysize(packet)); |
7273 } | 7259 } |
7274 | 7260 |
7275 } // namespace | 7261 } // namespace |
7276 } // namespace test | 7262 } // namespace test |
7277 } // namespace net | 7263 } // namespace net |
OLD | NEW |