From ef185b00f0869d40c638cdda969997721cbb2e34 Mon Sep 17 00:00:00 2001 From: Qian Wang Date: Sat, 15 Jun 2019 11:52:46 +1000 Subject: [PATCH] Solve a data race --- internal/multiplex/obfs.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/multiplex/obfs.go b/internal/multiplex/obfs.go index d6a5e40..429fc58 100644 --- a/internal/multiplex/obfs.go +++ b/internal/multiplex/obfs.go @@ -41,8 +41,10 @@ func MakeObfs(key []byte, algo Crypto) Obfser { return nil, err } + cKey := make([]byte, len(key)) + copy(cKey, key) salt := encryptedPayload[len(encryptedPayload)-16:] - xorKey := genXorKey(key, salt) + xorKey := genXorKey(cKey, salt) xor(header, xorKey) // Composing final obfsed message @@ -72,7 +74,9 @@ func MakeDeobfs(key []byte, algo Crypto) Deobfser { payload := peeled[12:] salt := peeled[len(peeled)-16:] - xorKey := genXorKey(key, salt) + cKey := make([]byte, len(key)) + copy(cKey, key) + xorKey := genXorKey(cKey, salt) xor(header, xorKey) streamID := u32(header[0:4])