[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [obfs4/master] Clean up static analysis warnings



commit 5b4397bff8f83dced4c415f5232442ae59f5072d
Author: Yawning Angel <yawning@xxxxxxxxxxxxxxx>
Date:   Sat Jan 19 11:42:24 2019 +0000

    Clean up static analysis warnings
    
    Mostly but not entirely discarding error return values of things that
    can not possibly fail despite the API returning errors.
---
 common/drbg/hash_drbg.go                       |  2 +-
 common/ntor/ntor.go                            | 10 ++++----
 common/socks5/rfc1929.go                       |  4 ++--
 common/socks5/socks5.go                        | 22 +++++++++---------
 common/socks5/socks_test.go                    | 10 +++++---
 obfs4proxy/obfs4proxy.go                       | 32 +++++++++++++-------------
 obfs4proxy/pt_extras.go                        |  6 ++---
 transports/meeklite/meek.go                    |  4 ++--
 transports/obfs2/obfs2.go                      |  6 ++---
 transports/obfs3/obfs3.go                      |  8 +++----
 transports/obfs4/framing/framing_test.go       |  2 +-
 transports/obfs4/handshake_ntor.go             | 24 +++++++++----------
 transports/scramblesuit/conn.go                | 12 +++++-----
 transports/scramblesuit/handshake_ticket.go    | 10 ++++----
 transports/scramblesuit/handshake_uniformdh.go | 14 +++++------
 transports/scramblesuit/hkdf_expand.go         |  6 ++---
 transports/transports.go                       | 16 +++++++++----
 17 files changed, 99 insertions(+), 89 deletions(-)

diff --git a/common/drbg/hash_drbg.go b/common/drbg/hash_drbg.go
index ea283ca..3d1a469 100644
--- a/common/drbg/hash_drbg.go
+++ b/common/drbg/hash_drbg.go
@@ -139,7 +139,7 @@ func (drbg *HashDrbg) Seed(seed int64) {
 
 // NextBlock returns the next 8 byte DRBG block.
 func (drbg *HashDrbg) NextBlock() []byte {
-	drbg.sip.Write(drbg.ofb[:])
+	_, _ = drbg.sip.Write(drbg.ofb[:])
 	copy(drbg.ofb[:], drbg.sip.Sum(nil))
 
 	ret := make([]byte, Size)
diff --git a/common/ntor/ntor.go b/common/ntor/ntor.go
index d5218db..48508bf 100644
--- a/common/ntor/ntor.go
+++ b/common/ntor/ntor.go
@@ -385,21 +385,21 @@ func ntorCommon(secretInput bytes.Buffer, id *NodeID, b *PublicKey, x *PublicKey
 
 	// KEY_SEED = H(secret_input, t_key)
 	h := hmac.New(sha256.New, tKey)
-	h.Write(secretInput.Bytes())
+	_, _ = h.Write(secretInput.Bytes())
 	tmp := h.Sum(nil)
 	copy(keySeed[:], tmp)
 
 	// verify = H(secret_input, t_verify)
 	h = hmac.New(sha256.New, tVerify)
-	h.Write(secretInput.Bytes())
+	_, _ = h.Write(secretInput.Bytes())
 	verify := h.Sum(nil)
 
 	// auth_input = verify | ID | B | Y | X | PROTOID | "Server"
 	authInput := bytes.NewBuffer(verify)
-	authInput.Write(suffix.Bytes())
-	authInput.Write([]byte("Server"))
+	_, _ = authInput.Write(suffix.Bytes())
+	_, _ = authInput.Write([]byte("Server"))
 	h = hmac.New(sha256.New, tMac)
-	h.Write(authInput.Bytes())
+	_, _ = h.Write(authInput.Bytes())
 	tmp = h.Sum(nil)
 	copy(auth[:], tmp)
 
diff --git a/common/socks5/rfc1929.go b/common/socks5/rfc1929.go
index f8176f1..d7849df 100644
--- a/common/socks5/rfc1929.go
+++ b/common/socks5/rfc1929.go
@@ -39,8 +39,8 @@ func (req *Request) authRFC1929() (err error) {
 	sendErrResp := func() {
 		// Swallow write/flush errors, the auth failure is the relevant error.
 		resp := []byte{authRFC1929Ver, authRFC1929Fail}
-		req.rw.Write(resp[:])
-		req.flushBuffers()
+		_, _ = req.rw.Write(resp[:])
+		_ = req.flushBuffers()
 	}
 
 	// The client sends a Username/Password request.
diff --git a/common/socks5/socks5.go b/common/socks5/socks5.go
index 876f934..a6f785d 100644
--- a/common/socks5/socks5.go
+++ b/common/socks5/socks5.go
@@ -257,15 +257,15 @@ func (req *Request) readCommand() error {
 
 	var err error
 	if err = req.readByteVerify("version", version); err != nil {
-		req.Reply(ReplyGeneralFailure)
+		_ = req.Reply(ReplyGeneralFailure)
 		return err
 	}
 	if err = req.readByteVerify("command", cmdConnect); err != nil {
-		req.Reply(ReplyCommandNotSupported)
+		_ = req.Reply(ReplyCommandNotSupported)
 		return err
 	}
 	if err = req.readByteVerify("reserved", rsv); err != nil {
-		req.Reply(ReplyGeneralFailure)
+		_ = req.Reply(ReplyGeneralFailure)
 		return err
 	}
 
@@ -273,49 +273,49 @@ func (req *Request) readCommand() error {
 	var atyp byte
 	var host string
 	if atyp, err = req.readByte(); err != nil {
-		req.Reply(ReplyGeneralFailure)
+		_ = req.Reply(ReplyGeneralFailure)
 		return err
 	}
 	switch atyp {
 	case atypIPv4:
 		var addr []byte
 		if addr, err = req.readBytes(net.IPv4len); err != nil {
-			req.Reply(ReplyGeneralFailure)
+			_ = req.Reply(ReplyGeneralFailure)
 			return err
 		}
 		host = net.IPv4(addr[0], addr[1], addr[2], addr[3]).String()
 	case atypDomainName:
 		var alen byte
 		if alen, err = req.readByte(); err != nil {
-			req.Reply(ReplyGeneralFailure)
+			_ = req.Reply(ReplyGeneralFailure)
 			return err
 		}
 		if alen == 0 {
-			req.Reply(ReplyGeneralFailure)
+			_ = req.Reply(ReplyGeneralFailure)
 			return fmt.Errorf("domain name with 0 length")
 		}
 		var addr []byte
 		if addr, err = req.readBytes(int(alen)); err != nil {
-			req.Reply(ReplyGeneralFailure)
+			_ = req.Reply(ReplyGeneralFailure)
 			return err
 		}
 		host = string(addr)
 	case atypIPv6:
 		var rawAddr []byte
 		if rawAddr, err = req.readBytes(net.IPv6len); err != nil {
-			req.Reply(ReplyGeneralFailure)
+			_ = req.Reply(ReplyGeneralFailure)
 			return err
 		}
 		addr := make(net.IP, net.IPv6len)
 		copy(addr[:], rawAddr[:])
 		host = fmt.Sprintf("[%s]", addr.String())
 	default:
-		req.Reply(ReplyAddressNotSupported)
+		_ = req.Reply(ReplyAddressNotSupported)
 		return fmt.Errorf("unsupported address type 0x%02x", atyp)
 	}
 	var rawPort []byte
 	if rawPort, err = req.readBytes(2); err != nil {
-		req.Reply(ReplyGeneralFailure)
+		_ = req.Reply(ReplyGeneralFailure)
 		return err
 	}
 	port := int(rawPort[0])<<8 | int(rawPort[1])
diff --git a/common/socks5/socks_test.go b/common/socks5/socks_test.go
index 720476f..3e331fb 100644
--- a/common/socks5/socks_test.go
+++ b/common/socks5/socks_test.go
@@ -56,12 +56,16 @@ func (c *testReadWriter) Write(buf []byte) (n int, err error) {
 	return c.writeBuf.Write(buf)
 }
 
-func (c *testReadWriter) writeHex(str string) (n int, err error) {
+func (c *testReadWriter) writeHex(str string) {
 	var buf []byte
+	var err error
+
 	if buf, err = hex.DecodeString(str); err != nil {
-		return
+		panic("writeHex: malformed hex: " + err.Error())
+	}
+	if _, err = c.readBuf.Write(buf); err != nil {
+		panic("writeHex: buffered write failed: " + err.Error())
 	}
-	return c.readBuf.Write(buf)
 }
 
 func (c *testReadWriter) readHex() string {
diff --git a/obfs4proxy/obfs4proxy.go b/obfs4proxy/obfs4proxy.go
index 0770455..6de361b 100644
--- a/obfs4proxy/obfs4proxy.go
+++ b/obfs4proxy/obfs4proxy.go
@@ -75,23 +75,25 @@ func clientSetup() (launched bool, listeners []net.Listener) {
 	for _, name := range ptClientInfo.MethodNames {
 		t := transports.Get(name)
 		if t == nil {
-			pt.CmethodError(name, "no such transport is supported")
+			_ = pt.CmethodError(name, "no such transport is supported")
 			continue
 		}
 
 		f, err := t.ClientFactory(stateDir)
 		if err != nil {
-			pt.CmethodError(name, "failed to get ClientFactory")
+			_ = pt.CmethodError(name, "failed to get ClientFactory")
 			continue
 		}
 
 		ln, err := net.Listen("tcp", socksAddr)
 		if err != nil {
-			pt.CmethodError(name, err.Error())
+			_ = pt.CmethodError(name, err.Error())
 			continue
 		}
 
-		go clientAcceptLoop(f, ln, ptClientProxy)
+		go func() {
+			_ = clientAcceptLoop(f, ln, ptClientProxy)
+		}()
 		pt.Cmethod(name, socks5.Version(), ln.Addr())
 
 		log.Infof("%s - registered listener: %s", name, ln.Addr())
@@ -137,7 +139,7 @@ func clientHandler(f base.ClientFactory, conn net.Conn, proxyURI *url.URL) {
 	args, err := f.ParseArgs(&socksReq.Args)
 	if err != nil {
 		log.Errorf("%s(%s) - invalid arguments: %s", name, addrStr, err)
-		socksReq.Reply(socks5.ReplyGeneralFailure)
+		_ = socksReq.Reply(socks5.ReplyGeneralFailure)
 		return
 	}
 
@@ -149,7 +151,7 @@ func clientHandler(f base.ClientFactory, conn net.Conn, proxyURI *url.URL) {
 			// This should basically never happen, since config protocol
 			// verifies this.
 			log.Errorf("%s(%s) - failed to obtain proxy dialer: %s", name, addrStr, log.ElideError(err))
-			socksReq.Reply(socks5.ReplyGeneralFailure)
+			_ = socksReq.Reply(socks5.ReplyGeneralFailure)
 			return
 		}
 		dialFn = dialer.Dial
@@ -157,7 +159,7 @@ func clientHandler(f base.ClientFactory, conn net.Conn, proxyURI *url.URL) {
 	remote, err := f.Dial("tcp", socksReq.Target, dialFn, args)
 	if err != nil {
 		log.Errorf("%s(%s) - outgoing connection failed: %s", name, addrStr, log.ElideError(err))
-		socksReq.Reply(socks5.ErrorToReplyCode(err))
+		_ = socksReq.Reply(socks5.ErrorToReplyCode(err))
 		return
 	}
 	defer remote.Close()
@@ -172,8 +174,6 @@ func clientHandler(f base.ClientFactory, conn net.Conn, proxyURI *url.URL) {
 	} else {
 		log.Infof("%s(%s) - closed connection", name, addrStr)
 	}
-
-	return
 }
 
 func serverSetup() (launched bool, listeners []net.Listener) {
@@ -186,23 +186,25 @@ func serverSetup() (launched bool, listeners []net.Listener) {
 		name := bindaddr.MethodName
 		t := transports.Get(name)
 		if t == nil {
-			pt.SmethodError(name, "no such transport is supported")
+			_ = pt.SmethodError(name, "no such transport is supported")
 			continue
 		}
 
 		f, err := t.ServerFactory(stateDir, &bindaddr.Options)
 		if err != nil {
-			pt.SmethodError(name, err.Error())
+			_ = pt.SmethodError(name, err.Error())
 			continue
 		}
 
 		ln, err := net.ListenTCP("tcp", bindaddr.Addr)
 		if err != nil {
-			pt.SmethodError(name, err.Error())
+			_ = pt.SmethodError(name, err.Error())
 			continue
 		}
 
-		go serverAcceptLoop(f, ln, &ptServerInfo)
+		go func() {
+			_ = serverAcceptLoop(f, ln, &ptServerInfo)
+		}()
 		if args := f.Args(); args != nil {
 			pt.SmethodArgs(name, ln.Addr(), *args)
 		} else {
@@ -262,8 +264,6 @@ func serverHandler(f base.ServerFactory, conn net.Conn, info *pt.ServerInfo) {
 	} else {
 		log.Infof("%s(%s) - closed connection", name, addrStr)
 	}
-
-	return
 }
 
 func copyLoop(a net.Conn, b net.Conn) error {
@@ -326,7 +326,7 @@ func main() {
 
 	// Determine if this is a client or server, initialize the common state.
 	var ptListeners []net.Listener
-	launched := false
+	var launched bool
 	isClient, err := ptIsClient()
 	if err != nil {
 		golog.Fatalf("[ERROR]: %s - must be run as a managed transport", execName)
diff --git a/obfs4proxy/pt_extras.go b/obfs4proxy/pt_extras.go
index f490fbc..dfe6d0f 100644
--- a/obfs4proxy/pt_extras.go
+++ b/obfs4proxy/pt_extras.go
@@ -43,19 +43,19 @@ import (
 
 func ptEnvError(msg string) error {
 	line := []byte(fmt.Sprintf("ENV-ERROR %s\n", msg))
-	pt.Stdout.Write(line)
+	_, _ = pt.Stdout.Write(line)
 	return errors.New(msg)
 }
 
 func ptProxyError(msg string) error {
 	line := []byte(fmt.Sprintf("PROXY-ERROR %s\n", msg))
-	pt.Stdout.Write(line)
+	_, _ = pt.Stdout.Write(line)
 	return errors.New(msg)
 }
 
 func ptProxyDone() {
 	line := []byte("PROXY DONE\n")
-	pt.Stdout.Write(line)
+	_, _ = pt.Stdout.Write(line)
 }
 
 func ptIsClient() (bool, error) {
diff --git a/transports/meeklite/meek.go b/transports/meeklite/meek.go
index ca52a4a..a99556b 100644
--- a/transports/meeklite/meek.go
+++ b/transports/meeklite/meek.go
@@ -216,7 +216,7 @@ func (c *meekConn) SetWriteDeadline(t time.Time) error {
 }
 
 func (c *meekConn) enqueueWrite(b []byte) (ok bool) {
-	defer func() { recover() }()
+	defer func() { _ = recover() }()
 	c.workerWrChan <- b
 	return true
 }
@@ -273,7 +273,7 @@ loop:
 			// If the poll interval has elapsed, issue a request.
 		case sndBuf = <-c.workerWrChan:
 			// If there is data pending a send, issue a request.
-		case _ = <-c.workerCloseChan:
+		case <-c.workerCloseChan:
 			break loop
 		}
 
diff --git a/transports/obfs2/obfs2.go b/transports/obfs2/obfs2.go
index 66e0dbb..7eaaa96 100644
--- a/transports/obfs2/obfs2.go
+++ b/transports/obfs2/obfs2.go
@@ -362,9 +362,9 @@ func mac(s, x []byte) []byte {
 	// H(x) is SHA256 of x.
 	// MAC(s, x) = H(s | x | s)
 	h := sha256.New()
-	h.Write(s)
-	h.Write(x)
-	h.Write(s)
+	_, _ = h.Write(s)
+	_, _ = h.Write(x)
+	_, _ = h.Write(s)
 	return h.Sum(nil)
 }
 
diff --git a/transports/obfs3/obfs3.go b/transports/obfs3/obfs3.go
index f25d1bd..26b4728 100644
--- a/transports/obfs3/obfs3.go
+++ b/transports/obfs3/obfs3.go
@@ -235,17 +235,17 @@ func (conn *obfs3Conn) kdf(sharedSecret []byte) error {
 	//   RESP_KEY = RESP_SECRET[:KEYLEN]
 	//   RESP_COUNTER = RESP_SECRET[KEYLEN:]
 	initHmac := hmac.New(sha256.New, sharedSecret)
-	initHmac.Write([]byte(initiatorKdfString))
+	_, _ = initHmac.Write([]byte(initiatorKdfString))
 	initSecret := initHmac.Sum(nil)
 	initHmac.Reset()
-	initHmac.Write([]byte(initiatorMagicString))
+	_, _ = initHmac.Write([]byte(initiatorMagicString))
 	initMagic := initHmac.Sum(nil)
 
 	respHmac := hmac.New(sha256.New, sharedSecret)
-	respHmac.Write([]byte(responderKdfString))
+	_, _ = respHmac.Write([]byte(responderKdfString))
 	respSecret := respHmac.Sum(nil)
 	respHmac.Reset()
-	respHmac.Write([]byte(responderMagicString))
+	_, _ = respHmac.Write([]byte(responderMagicString))
 	respMagic := respHmac.Sum(nil)
 
 	// The INIT_KEY value keys a block cipher (in CTR mode) used to
diff --git a/transports/obfs4/framing/framing_test.go b/transports/obfs4/framing/framing_test.go
index 03e0d3b..f34a3a6 100644
--- a/transports/obfs4/framing/framing_test.go
+++ b/transports/obfs4/framing/framing_test.go
@@ -158,7 +158,7 @@ func BenchmarkEncoder_Encode(b *testing.B) {
 				b.Fatal("buffer.Read() failed:", err)
 			}
 
-			n, err = encoder.Encode(frame[:], chopBuf[:n])
+			n, _ = encoder.Encode(frame[:], chopBuf[:n])
 			transfered += n - FrameOverhead
 		}
 		if transfered != len(payload) {
diff --git a/transports/obfs4/handshake_ntor.go b/transports/obfs4/handshake_ntor.go
index 99f3925..6629c46 100644
--- a/transports/obfs4/handshake_ntor.go
+++ b/transports/obfs4/handshake_ntor.go
@@ -137,7 +137,7 @@ func (hs *clientHandshake) generateHandshake() ([]byte, error) {
 	var buf bytes.Buffer
 
 	hs.mac.Reset()
-	hs.mac.Write(hs.keypair.Representative().Bytes()[:])
+	_, _ = hs.mac.Write(hs.keypair.Representative().Bytes()[:])
 	mark := hs.mac.Sum(nil)[:markLength]
 
 	// The client handshake is X | P_C | M_C | MAC(X | P_C | M_C | E) where:
@@ -161,9 +161,9 @@ func (hs *clientHandshake) generateHandshake() ([]byte, error) {
 
 	// Calculate and write the MAC.
 	hs.mac.Reset()
-	hs.mac.Write(buf.Bytes())
+	_, _ = hs.mac.Write(buf.Bytes())
 	hs.epochHour = []byte(strconv.FormatInt(getEpochHour(), 10))
-	hs.mac.Write(hs.epochHour)
+	_, _ = hs.mac.Write(hs.epochHour)
 	buf.Write(hs.mac.Sum(nil)[:macLength])
 
 	return buf.Bytes(), nil
@@ -185,7 +185,7 @@ func (hs *clientHandshake) parseServerHandshake(resp []byte) (int, []byte, error
 
 		// Derive the mark.
 		hs.mac.Reset()
-		hs.mac.Write(hs.serverRepresentative.Bytes()[:])
+		_, _ = hs.mac.Write(hs.serverRepresentative.Bytes()[:])
 		hs.serverMark = hs.mac.Sum(nil)[:markLength]
 	}
 
@@ -201,8 +201,8 @@ func (hs *clientHandshake) parseServerHandshake(resp []byte) (int, []byte, error
 
 	// Validate the MAC.
 	hs.mac.Reset()
-	hs.mac.Write(resp[:pos+markLength])
-	hs.mac.Write(hs.epochHour)
+	_, _ = hs.mac.Write(resp[:pos+markLength])
+	_, _ = hs.mac.Write(hs.epochHour)
 	macCmp := hs.mac.Sum(nil)[:macLength]
 	macRx := resp[pos+markLength : pos+markLength+macLength]
 	if !hmac.Equal(macCmp, macRx) {
@@ -262,7 +262,7 @@ func (hs *serverHandshake) parseClientHandshake(filter *replayfilter.ReplayFilte
 
 		// Derive the mark.
 		hs.mac.Reset()
-		hs.mac.Write(hs.clientRepresentative.Bytes()[:])
+		_, _ = hs.mac.Write(hs.clientRepresentative.Bytes()[:])
 		hs.clientMark = hs.mac.Sum(nil)[:markLength]
 	}
 
@@ -282,8 +282,8 @@ func (hs *serverHandshake) parseClientHandshake(filter *replayfilter.ReplayFilte
 		// Allow epoch to be off by up to a hour in either direction.
 		epochHour := []byte(strconv.FormatInt(getEpochHour()+int64(off), 10))
 		hs.mac.Reset()
-		hs.mac.Write(resp[:pos+markLength])
-		hs.mac.Write(epochHour)
+		_, _ = hs.mac.Write(resp[:pos+markLength])
+		_, _ = hs.mac.Write(epochHour)
 		macCmp := hs.mac.Sum(nil)[:macLength]
 		macRx := resp[pos+markLength : pos+markLength+macLength]
 		if hmac.Equal(macCmp, macRx) {
@@ -329,7 +329,7 @@ func (hs *serverHandshake) generateHandshake() ([]byte, error) {
 	var buf bytes.Buffer
 
 	hs.mac.Reset()
-	hs.mac.Write(hs.keypair.Representative().Bytes()[:])
+	_, _ = hs.mac.Write(hs.keypair.Representative().Bytes()[:])
 	mark := hs.mac.Sum(nil)[:markLength]
 
 	// The server handshake is Y | AUTH | P_S | M_S | MAC(Y | AUTH | P_S | M_S | E) where:
@@ -355,8 +355,8 @@ func (hs *serverHandshake) generateHandshake() ([]byte, error) {
 
 	// Calculate and write the MAC.
 	hs.mac.Reset()
-	hs.mac.Write(buf.Bytes())
-	hs.mac.Write(hs.epochHour) // Set in hs.parseClientHandshake()
+	_, _ = hs.mac.Write(buf.Bytes())
+	_, _ = hs.mac.Write(hs.epochHour) // Set in hs.parseClientHandshake()
 	buf.Write(hs.mac.Sum(nil)[:macLength])
 
 	return buf.Bytes(), nil
diff --git a/transports/scramblesuit/conn.go b/transports/scramblesuit/conn.go
index 335be6e..715d20a 100644
--- a/transports/scramblesuit/conn.go
+++ b/transports/scramblesuit/conn.go
@@ -245,7 +245,7 @@ func (conn *ssConn) makePacket(w io.Writer, pktType byte, data []byte, padLen in
 	// Encrypt the packet, and calculate the MAC.
 	conn.txCrypto.s.XORKeyStream(pkt, pkt)
 	conn.txCrypto.mac.Reset()
-	conn.txCrypto.mac.Write(pkt)
+	_, _ = conn.txCrypto.mac.Write(pkt)
 	mac := conn.txCrypto.mac.Sum(nil)[:macLength]
 
 	// Write out MAC | Packet.  Note that this does not go onto the network
@@ -273,7 +273,7 @@ func (conn *ssConn) readPackets() error {
 				break
 			}
 			mac := make([]byte, macLength)
-			conn.receiveBuffer.Read(mac)
+			_, _ = conn.receiveBuffer.Read(mac)
 			conn.receiveState.mac = mac
 		}
 
@@ -283,12 +283,12 @@ func (conn *ssConn) readPackets() error {
 				break
 			}
 			hdr := make([]byte, pktHdrLength)
-			conn.receiveBuffer.Read(hdr)
+			_, _ = conn.receiveBuffer.Read(hdr)
 
 			// Add the encrypted packet header to the HMAC instance, and then
 			// decrypt it so that the length of the packet can be determined.
 			conn.rxCrypto.mac.Reset()
-			conn.rxCrypto.mac.Write(hdr)
+			_, _ = conn.rxCrypto.mac.Write(hdr)
 			conn.rxCrypto.s.XORKeyStream(hdr, hdr)
 
 			// Store the plaintext packet header, and host byte order length
@@ -311,8 +311,8 @@ func (conn *ssConn) readPackets() error {
 				break
 			}
 			data = make([]byte, conn.receiveState.totalLen)
-			conn.receiveBuffer.Read(data)
-			conn.rxCrypto.mac.Write(data)
+			_, _ = conn.receiveBuffer.Read(data)
+			_, _ = conn.rxCrypto.mac.Write(data)
 			conn.rxCrypto.s.XORKeyStream(data, data)
 		}
 
diff --git a/transports/scramblesuit/handshake_ticket.go b/transports/scramblesuit/handshake_ticket.go
index 16b57d6..9672e1b 100644
--- a/transports/scramblesuit/handshake_ticket.go
+++ b/transports/scramblesuit/handshake_ticket.go
@@ -106,7 +106,7 @@ func (s *ssTicketStore) storeTicket(addr net.Addr, rawT []byte) {
 	// are ignored because the handshake code will just use UniformDH if a
 	// ticket is not available.
 	s.store[addr.String()] = t
-	s.serialize()
+	_ = s.serialize()
 }
 
 func (s *ssTicketStore) getTicket(addr net.Addr) (*ssTicket, error) {
@@ -198,7 +198,7 @@ func (hs *ssTicketClientHandshake) generateHandshake() ([]byte, error) {
 	hs.mac.Reset()
 
 	// The client handshake is T | P | M | MAC(T | P | M | E)
-	hs.mac.Write(hs.ticket.ticket[:])
+	_, _ = hs.mac.Write(hs.ticket.ticket[:])
 	m := hs.mac.Sum(nil)[:macLength]
 	p, err := makePad(hs.padLen)
 	if err != nil {
@@ -212,9 +212,9 @@ func (hs *ssTicketClientHandshake) generateHandshake() ([]byte, error) {
 
 	// Calculate and write the MAC.
 	e := []byte(strconv.FormatInt(getEpochHour(), 10))
-	hs.mac.Write(p)
-	hs.mac.Write(m)
-	hs.mac.Write(e)
+	_, _ = hs.mac.Write(p)
+	_, _ = hs.mac.Write(m)
+	_, _ = hs.mac.Write(e)
 	buf.Write(hs.mac.Sum(nil)[:macLength])
 
 	hs.mac.Reset()
diff --git a/transports/scramblesuit/handshake_uniformdh.go b/transports/scramblesuit/handshake_uniformdh.go
index 3e8ed59..5a79d64 100644
--- a/transports/scramblesuit/handshake_uniformdh.go
+++ b/transports/scramblesuit/handshake_uniformdh.go
@@ -76,7 +76,7 @@ func (hs *ssDHClientHandshake) generateHandshake() ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	hs.mac.Write(x)
+	_, _ = hs.mac.Write(x)
 	mC := hs.mac.Sum(nil)[:macLength]
 	pC, err := makePad(hs.padLen)
 	if err != nil {
@@ -90,9 +90,9 @@ func (hs *ssDHClientHandshake) generateHandshake() ([]byte, error) {
 
 	// Calculate and write the MAC.
 	hs.epochHour = []byte(strconv.FormatInt(getEpochHour(), 10))
-	hs.mac.Write(pC)
-	hs.mac.Write(mC)
-	hs.mac.Write(hs.epochHour)
+	_, _ = hs.mac.Write(pC)
+	_, _ = hs.mac.Write(mC)
+	_, _ = hs.mac.Write(hs.epochHour)
 	buf.Write(hs.mac.Sum(nil)[:macLength])
 
 	return buf.Bytes(), nil
@@ -113,7 +113,7 @@ func (hs *ssDHClientHandshake) parseServerHandshake(resp []byte) (int, []byte, e
 			return 0, nil, err
 		}
 		hs.mac.Reset()
-		hs.mac.Write(y)
+		_, _ = hs.mac.Write(y)
 		hs.serverMark = hs.mac.Sum(nil)[:macLength]
 	}
 
@@ -136,8 +136,8 @@ func (hs *ssDHClientHandshake) parseServerHandshake(resp []byte) (int, []byte, e
 	pos += uniformdh.Size
 
 	// Validate the MAC.
-	hs.mac.Write(resp[uniformdh.Size : pos+macLength])
-	hs.mac.Write(hs.epochHour)
+	_, _ = hs.mac.Write(resp[uniformdh.Size : pos+macLength])
+	_, _ = hs.mac.Write(hs.epochHour)
 	macCmp := hs.mac.Sum(nil)[:macLength]
 	macRx := resp[pos+macLength : pos+2*macLength]
 	if !hmac.Equal(macCmp, macRx) {
diff --git a/transports/scramblesuit/hkdf_expand.go b/transports/scramblesuit/hkdf_expand.go
index 9626b38..5f4f4b4 100644
--- a/transports/scramblesuit/hkdf_expand.go
+++ b/transports/scramblesuit/hkdf_expand.go
@@ -50,9 +50,9 @@ func hkdfExpand(hashFn func() hash.Hash, prk []byte, info []byte, l int) []byte
 	ctr := byte(1)
 	for toAppend > 0 {
 		h.Reset()
-		h.Write(t)
-		h.Write(info)
-		h.Write([]byte{ctr})
+		_, _ = h.Write(t)
+		_, _ = h.Write(info)
+		_, _ = h.Write([]byte{ctr})
 		t = h.Sum(nil)
 		ctr++
 
diff --git a/transports/transports.go b/transports/transports.go
index 6301c8b..921666a 100644
--- a/transports/transports.go
+++ b/transports/transports.go
@@ -84,11 +84,17 @@ func Get(name string) base.Transport {
 
 // Init initializes all of the integrated transports.
 func Init() error {
-	Register(new(meeklite.Transport))
-	Register(new(obfs2.Transport))
-	Register(new(obfs3.Transport))
-	Register(new(obfs4.Transport))
-	Register(new(scramblesuit.Transport))
+	for _, v := range []base.Transport{
+		new(meeklite.Transport),
+		new(obfs2.Transport),
+		new(obfs3.Transport),
+		new(obfs4.Transport),
+		new(scramblesuit.Transport),
+	} {
+		if err := Register(v); err != nil {
+			return err
+		}
+	}
 
 	return nil
 }

_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits