From 75cc707dd049c52b82ff4e4d9ee4639cbabed9d1 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 14 Apr 2026 11:09:04 +0300 Subject: recordline: reject invalid uptime/bootTime (s3) Return ok=false when strconv.ParseUint fails instead of using zero values. Add tests for non-numeric and empty numeric fields. Made-with: Cursor --- internal/recordline/recordline.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'internal/recordline/recordline.go') diff --git a/internal/recordline/recordline.go b/internal/recordline/recordline.go index 940f235..077fa35 100644 --- a/internal/recordline/recordline.go +++ b/internal/recordline/recordline.go @@ -22,8 +22,14 @@ func Parse(line string) (Fields, bool) { if len(parts) != 3 { return Fields{}, false } - uptime, _ := strconv.ParseUint(parts[0], 10, 64) - bootTime, _ := strconv.ParseUint(parts[1], 10, 64) + uptime, err := strconv.ParseUint(parts[0], 10, 64) + if err != nil { + return Fields{}, false + } + bootTime, err := strconv.ParseUint(parts[1], 10, 64) + if err != nil { + return Fields{}, false + } osStr := parts[2] kernelName := osStr if i := strings.Index(osStr, " "); i > 0 { -- cgit v1.2.3