| 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 |