summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-14 11:09:04 +0300
committerPaul Buetow <paul@buetow.org>2026-04-14 11:09:04 +0300
commit75cc707dd049c52b82ff4e4d9ee4639cbabed9d1 (patch)
tree352fd16d0e24422126fdd7c57e89de4e565122c5 /internal
parentf143b6daca50eba520ceaec51c36222ab6ae667d (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.go10
-rw-r--r--internal/recordline/recordline_test.go17
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},