| Index: net/quic/core/crypto/crypto_handshake_message.cc
|
| diff --git a/net/quic/core/crypto/crypto_handshake_message.cc b/net/quic/core/crypto/crypto_handshake_message.cc
|
| index 220c46adfc0d3e2e9551e88adab078dd1afac6d7..0d0813abb843e9570f0ac517458689809a476c47 100644
|
| --- a/net/quic/core/crypto/crypto_handshake_message.cc
|
| +++ b/net/quic/core/crypto/crypto_handshake_message.cc
|
| @@ -79,9 +79,9 @@ void CryptoHandshakeMessage::Erase(QuicTag tag) {
|
| tag_value_map_.erase(tag);
|
| }
|
|
|
| -QuicErrorCode CryptoHandshakeMessage::GetTaglist(QuicTag tag,
|
| - const QuicTag** out_tags,
|
| - size_t* out_len) const {
|
| +QuicErrorCode CryptoHandshakeMessage::GetTaglist(
|
| + QuicTag tag,
|
| + QuicTagVector* out_tags) const {
|
| QuicTagValueMap::const_iterator it = tag_value_map_.find(tag);
|
| QuicErrorCode ret = QUIC_NO_ERROR;
|
|
|
| @@ -92,13 +92,17 @@ QuicErrorCode CryptoHandshakeMessage::GetTaglist(QuicTag tag,
|
| }
|
|
|
| if (ret != QUIC_NO_ERROR) {
|
| - *out_tags = nullptr;
|
| - *out_len = 0;
|
| + out_tags->clear();
|
| return ret;
|
| }
|
|
|
| - *out_tags = reinterpret_cast<const QuicTag*>(it->second.data());
|
| - *out_len = it->second.size() / sizeof(QuicTag);
|
| + size_t num_tags = it->second.size() / sizeof(QuicTag);
|
| + out_tags->resize(num_tags);
|
| + for (size_t i = 0; i < num_tags; ++i) {
|
| + QuicTag tag;
|
| + memcpy(&tag, it->second.data() + i * sizeof(tag), sizeof(tag));
|
| + (*out_tags)[i] = tag;
|
| + }
|
| return ret;
|
| }
|
|
|
|
|