From 82839267d3ee60d7951a50fd1385ca0d20c76a65 Mon Sep 17 00:00:00 2001 From: Jonathan Rudenberg Date: Mon, 16 Nov 2015 22:07:11 -0500 Subject: [PATCH] Copy PeerEphemeral to avoid buffer corruption --- state.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/state.go b/state.go index d8914c3..22182cb 100644 --- a/state.go +++ b/state.go @@ -151,11 +151,14 @@ func NewHandshakeState(c Config) *HandshakeState { s: c.StaticKeypair, e: c.EphemeralKeypair, rs: c.PeerStatic, - re: c.PeerEphemeral, messagePatterns: c.Pattern.Messages, shouldWrite: c.Initiator, rng: c.Random, } + if len(c.PeerEphemeral) > 0 { + hs.re = make([]byte, len(c.PeerEphemeral)) + copy(hs.re, c.PeerEphemeral) + } hs.SymmetricState.cs = c.CipherSuite namePrefix := "Noise_" if len(c.PresharedKey) > 0 {