2
0
Эх сурвалжийг харах

fix integer wraparound in the calculation of handshake timeouts on 32-bit targets (#1185)

Fixes: #1169
Jack Doan 11 сар өмнө
parent
commit
248cf194cd
2 өөрчлөгдсөн 5 нэмэгдсэн , 5 устгасан
  1. 4 4
      handshake_manager.go
  2. 1 1
      main.go

+ 4 - 4
handshake_manager.go

@@ -35,7 +35,7 @@ var (
 
 
 type HandshakeConfig struct {
 type HandshakeConfig struct {
 	tryInterval   time.Duration
 	tryInterval   time.Duration
-	retries       int
+	retries       int64
 	triggerBuffer int
 	triggerBuffer int
 	useRelays     bool
 	useRelays     bool
 
 
@@ -69,7 +69,7 @@ type HandshakeHostInfo struct {
 
 
 	startTime   time.Time        // Time that we first started trying with this handshake
 	startTime   time.Time        // Time that we first started trying with this handshake
 	ready       bool             // Is the handshake ready
 	ready       bool             // Is the handshake ready
-	counter     int              // How many attempts have we made so far
+	counter     int64            // How many attempts have we made so far
 	lastRemotes []netip.AddrPort // Remotes that we sent to during the previous attempt
 	lastRemotes []netip.AddrPort // Remotes that we sent to during the previous attempt
 	packetStore []*cachedPacket  // A set of packets to be transmitted once the handshake completes
 	packetStore []*cachedPacket  // A set of packets to be transmitted once the handshake completes
 
 
@@ -665,6 +665,6 @@ func generateIndex(l *logrus.Logger) (uint32, error) {
 	return index, nil
 	return index, nil
 }
 }
 
 
-func hsTimeout(tries int, interval time.Duration) time.Duration {
-	return time.Duration(tries / 2 * ((2 * int(interval)) + (tries-1)*int(interval)))
+func hsTimeout(tries int64, interval time.Duration) time.Duration {
+	return time.Duration(tries / 2 * ((2 * int64(interval)) + (tries-1)*int64(interval)))
 }
 }

+ 1 - 1
main.go

@@ -215,7 +215,7 @@ func Main(c *config.C, configTest bool, buildVersion string, logger *logrus.Logg
 
 
 	handshakeConfig := HandshakeConfig{
 	handshakeConfig := HandshakeConfig{
 		tryInterval:   c.GetDuration("handshakes.try_interval", DefaultHandshakeTryInterval),
 		tryInterval:   c.GetDuration("handshakes.try_interval", DefaultHandshakeTryInterval),
-		retries:       c.GetInt("handshakes.retries", DefaultHandshakeRetries),
+		retries:       int64(c.GetInt("handshakes.retries", DefaultHandshakeRetries)),
 		triggerBuffer: c.GetInt("handshakes.trigger_buffer", DefaultHandshakeTriggerBuffer),
 		triggerBuffer: c.GetInt("handshakes.trigger_buffer", DefaultHandshakeTriggerBuffer),
 		useRelays:     useRelays,
 		useRelays:     useRelays,