From 07ae3f265d519d1e063b9546346cb6261b5621c4 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 3 May 2026 11:08:10 +0700 Subject: [PATCH] fix(chrome): use strconv.Atoi for extractor key parsing fmt.Sscanf("%d", ...) silently accepts trailing garbage like "3abc" as 3. strconv.Atoi rejects the same input outright, so a malformed key surfaces as an error instead of a wrong-bucket override. --- internal/driver/chrome/driver.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/driver/chrome/driver.go b/internal/driver/chrome/driver.go index 0037160..d4b8dd6 100644 --- a/internal/driver/chrome/driver.go +++ b/internal/driver/chrome/driver.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "strconv" "strings" "sync" "time" @@ -390,8 +391,8 @@ func (d *Driver) EvaluateExtractors(ctx context.Context) (map[int]json.RawMessag } result := make(map[int]json.RawMessage, len(stringMap)) for key, value := range stringMap { - index := 0 - if _, err := fmt.Sscanf(key, "%d", &index); err != nil { + index, err := strconv.Atoi(key) + if err != nil { return nil, fmt.Errorf("non-integer extractor key %q", key) } result[index] = value