diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-14 11:09:04 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-14 11:09:04 +0300 |
| commit | 75cc707dd049c52b82ff4e4d9ee4639cbabed9d1 (patch) | |
| tree | 352fd16d0e24422126fdd7c57e89de4e565122c5 /internal | |
| parent | f143b6daca50eba520ceaec51c36222ab6ae667d (diff) | |
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
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/recordline/recordline.go | 10 | ||||
| -rw-r--r-- | internal/recordline/recordline_test.go | 17 |
2 files changed, 14 insertions, 13 deletions
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 { diff --git a/internal/recordline/recordline_test.go b/internal/recordline/recordline_test.go index 4fcc152..80eb955 100644 --- a/internal/recordline/recordline_test.go +++ b/internal/recordline/recordline_test.go @@ -54,17 +54,12 @@ func TestParse(t *testing.T) { }, true, }, - { - "abc:def:Linux 6.5.0", - Fields{ - Uptime: 0, - BootTime: 0, - OS: "Linux 6.5.0", - KernelName: "Linux", - KernelMajor: "Linux 6...", - }, - true, - }, + {"abc:def:Linux 6.5.0", Fields{}, false}, + {"abc:1700000000:Linux 6.5.0", Fields{}, false}, + {"12345:def:Linux 6.5.0", Fields{}, false}, + {":1:Linux", Fields{}, false}, + {"1::Linux", Fields{}, false}, + {" 0x10:1:Linux", Fields{}, false}, {"", Fields{}, false}, {" ", Fields{}, false}, {"only:two", Fields{}, false}, |
