Procházet zdrojové kódy

rpc: remove silly use of ReadVarint in subscription ID generator (#21391)

Found by @protolambda
Felix Lange před 5 roky
rodič
revize
9c2ac6fbd5
1 změnil soubory, kde provedl 6 přidání a 3 odebrání
  1. 6 3
      rpc/subscription.go

+ 6 - 3
rpc/subscription.go

@@ -17,7 +17,6 @@
 package rpc
 
 import (
-	"bufio"
 	"container/list"
 	"context"
 	crand "crypto/rand"
@@ -51,10 +50,14 @@ func NewID() ID {
 
 // randomIDGenerator returns a function generates a random IDs.
 func randomIDGenerator() func() ID {
-	seed, err := binary.ReadVarint(bufio.NewReader(crand.Reader))
-	if err != nil {
+	var buf = make([]byte, 8)
+	var seed int64
+	if _, err := crand.Read(buf); err == nil {
+		seed = int64(binary.BigEndian.Uint64(buf))
+	} else {
 		seed = int64(time.Now().Nanosecond())
 	}
+
 	var (
 		mu  sync.Mutex
 		rng = rand.New(rand.NewSource(seed))