From f5315af4db461805d21604bbc576bd43b69e35dd Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Thu, 4 Aug 2016 23:34:59 +0200 Subject: [PATCH] fix packet unpacker in-place encryption --- packet_unpacker.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packet_unpacker.go b/packet_unpacker.go index ca0a8cdc..13c773c7 100644 --- a/packet_unpacker.go +++ b/packet_unpacker.go @@ -22,12 +22,14 @@ type packetUnpacker struct { } func (u *packetUnpacker) Unpack(publicHeaderBinary []byte, hdr *PublicHeader, data []byte) (*unpackedPacket, error) { - data, err := u.aead.Open(data[:0], data, hdr.PacketNumber, publicHeaderBinary) + buf := getPacketBuffer() + defer putPacketBuffer(buf) + decrypted, err := u.aead.Open(buf, data, hdr.PacketNumber, publicHeaderBinary) if err != nil { // Wrap err in quicError so that public reset is sent by session return nil, qerr.Error(qerr.DecryptionFailure, err.Error()) } - r := bytes.NewReader(data) + r := bytes.NewReader(decrypted) // read private flag byte, for QUIC Version < 34 var entropyBit bool