Reject non-canonical timestamps in Timestamp.Scan
CI / ci (push) Successful in 49s
CI / ci (pull_request) Successful in 48s
Independent review Codex gpt-6-sol high: CHANGES_REQUIRED (1 medium)

time.Parse accepts a comma before fractional seconds, so Scan took
"2026-10-03T12:37:05,123Z" and Value then wrote it back with a period.
Scan now requires the parsed instant to re-format byte-identically to
its input, and the rejection test covers the comma form.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 08:42:15 -04:00
co-authored by Claude Opus 5.5
parent 59c3cf259d
commit 5304887ce9
2 changed files with 7 additions and 1 deletions
+3
View File
@@ -47,6 +47,9 @@ func (t *Timestamp) Scan(src any) error {
if err != nil {
return fmt.Errorf("store: scan Timestamp %q: %w", s, err)
}
if parsed.Format(timestampLayout) != s {
return fmt.Errorf("store: scan Timestamp %q: want %s", s, timestampLayout)
}
t.Time = parsed
return nil
}