From ea80f3c5a272fae0ffe3edf898f5d8f28f9160fc Mon Sep 17 00:00:00 2001 From: henrygd Date: Tue, 7 Apr 2026 18:41:22 -0400 Subject: [PATCH] fix(agent): add safety check for read returning negative bytes (#1799) --- agent/gpu_amd_linux.go | 1 + agent/utils/utils.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/agent/gpu_amd_linux.go b/agent/gpu_amd_linux.go index 6af0784c..a6b24973 100644 --- a/agent/gpu_amd_linux.go +++ b/agent/gpu_amd_linux.go @@ -156,6 +156,7 @@ func (gm *GPUManager) updateAmdGpuData(cardPath string) bool { func readSysfsFloat(path string) (float64, error) { val, err := utils.ReadStringFileLimited(path, 64) if err != nil { + slog.Debug("Failed to read sysfs value", "path", path, "error", err) return 0, err } return strconv.ParseFloat(val, 64) diff --git a/agent/utils/utils.go b/agent/utils/utils.go index 1e682b1e..b8e8d993 100644 --- a/agent/utils/utils.go +++ b/agent/utils/utils.go @@ -1,6 +1,7 @@ package utils import ( + "fmt" "io" "math" "os" @@ -68,6 +69,9 @@ func ReadStringFileLimited(path string, maxSize int) (string, error) { if err != nil && err != io.EOF { return "", err } + if n < 0 { + return "", fmt.Errorf("%s returned negative bytes: %d", path, n) + } return strings.TrimSpace(string(buf[:n])), nil }