Skip to content

Commit 2973de6

Browse files
committed
add magic number to avoid unexpected collison
1 parent aed64a2 commit 2973de6

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

agent/agent.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,14 @@ func formatBytes(val uint64) string {
207207
}
208208

209209
func handle(conn io.ReadWriter, msg []byte) error {
210+
reader := bufio.NewReader(conn)
211+
magic, err := binary.ReadVarint(reader)
212+
if err != nil {
213+
return err
214+
}
215+
if magic != internal.MAGIC {
216+
return fmt.Errorf("gops: invalid magic number: %v", magic)
217+
}
210218
switch msg[0] {
211219
case signal.StackTrace:
212220
return pprof.Lookup("goroutine").WriteTo(conn, 2)
@@ -286,7 +294,7 @@ func handle(conn io.ReadWriter, msg []byte) error {
286294
time.Sleep(5 * time.Second)
287295
trace.Stop()
288296
case signal.SetGCPercent:
289-
perc, err := binary.ReadVarint(bufio.NewReader(conn))
297+
perc, err := binary.ReadVarint(reader)
290298
if err != nil {
291299
return err
292300
}

internal/cmd/shared.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,9 @@ func cmdLazy(addr net.TCPAddr, c byte, params ...byte) (io.Reader, error) {
306306
return nil, err
307307
}
308308
buf := []byte{c}
309+
magic := make([]byte, binary.MaxVarintLen64)
310+
binary.PutVarint(magic, internal.MAGIC)
311+
buf = append(buf, magic...)
309312
buf = append(buf, params...)
310313
if _, err := conn.Write(buf); err != nil {
311314
return nil, err

internal/internal.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ import (
1313
"strings"
1414
)
1515

16-
const gopsConfigDirEnvKey = "GOPS_CONFIG_DIR"
16+
const (
17+
goipsConfigDirEnvKey = "GOPS_CONFIG_DIR"
18+
MAGIC = 0xabcdefedcba
19+
)
1720

1821
func ConfigDir() (string, error) {
1922
if configDir := os.Getenv(gopsConfigDirEnvKey); configDir != "" {

0 commit comments

Comments
 (0)