only update last packet number after decryption in session

This commit is contained in:
Lucas Clemente
2016-08-23 12:11:10 +02:00
parent a6d868874d
commit d1d53beaa8

View File

@@ -242,7 +242,6 @@ func (s *Session) handlePacketImpl(remoteAddr interface{}, hdr *PublicHeader, da
s.lastRcvdPacketNumber,
hdr.PacketNumber,
)
s.lastRcvdPacketNumber = hdr.PacketNumber
if utils.Debug() {
utils.Debugf("<- Reading packet 0x%x (%d bytes) for connection %x", hdr.PacketNumber, len(data)+len(hdr.Raw), hdr.ConnectionID)
}
@@ -255,6 +254,9 @@ func (s *Session) handlePacketImpl(remoteAddr interface{}, hdr *PublicHeader, da
return err
}
// Only do this after decrypting, so we are sure the packet is not attacker-controlled
s.lastRcvdPacketNumber = hdr.PacketNumber
err = s.receivedPacketHandler.ReceivedPacket(hdr.PacketNumber, packet.entropyBit)
// ignore duplicate packets
if err == ackhandlerlegacy.ErrDuplicatePacket || err == ackhandler.ErrDuplicatePacket {