From 9155480bbda86417bd9838ba3be896c28e3e4959 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Tue, 31 Mar 2026 09:43:04 +0100 Subject: [PATCH] Use explicit integer bounds in Proxmox parsing --- pkg/proxmox/client.go | 4 +++- pkg/proxmox/intconv.go | 13 ++++--------- pkg/proxmox/replication_test.go | 4 ++-- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/pkg/proxmox/client.go b/pkg/proxmox/client.go index 955328b71..ae7b1a09b 100644 --- a/pkg/proxmox/client.go +++ b/pkg/proxmox/client.go @@ -1606,7 +1606,9 @@ func (a *VMIpAddress) UnmarshalJSON(data []byte) error { if prefix > 128 { prefix = 128 } - a.Prefix = int(prefix) + if prefix <= 128 { + a.Prefix = int(prefix) + } return nil } diff --git a/pkg/proxmox/intconv.go b/pkg/proxmox/intconv.go index b09628da3..b5d2a30ef 100644 --- a/pkg/proxmox/intconv.go +++ b/pkg/proxmox/intconv.go @@ -2,20 +2,15 @@ package proxmox import "math" -const ( - maxInt = int(^uint(0) >> 1) - minInt = -maxInt - 1 -) - func intFromInt64Checked(v int64) (int, bool) { - if v > int64(maxInt) || v < int64(minInt) { + if v > int64(math.MaxInt) || v < int64(math.MinInt) { return 0, false } return int(v), true } func intFromUint64Checked(v uint64) (int, bool) { - if v > uint64(maxInt) { + if v > uint64(math.MaxInt) { return 0, false } return int(v), true @@ -26,7 +21,7 @@ func intFromFloat64RoundedChecked(v float64) (int, bool) { return 0, false } rounded := math.Round(v) - if rounded > float64(maxInt) || rounded < float64(minInt) { + if rounded > float64(math.MaxInt) || rounded < float64(math.MinInt) { return 0, false } return int(rounded), true @@ -37,7 +32,7 @@ func intFromFloat64TruncChecked(v float64) (int, bool) { return 0, false } truncated := math.Trunc(v) - if truncated > float64(maxInt) || truncated < float64(minInt) { + if truncated > float64(math.MaxInt) || truncated < float64(math.MinInt) { return 0, false } return int(truncated), true diff --git a/pkg/proxmox/replication_test.go b/pkg/proxmox/replication_test.go index d48360200..9a2454d0b 100644 --- a/pkg/proxmox/replication_test.go +++ b/pkg/proxmox/replication_test.go @@ -123,8 +123,8 @@ func TestIntFromAny(t *testing.T) { {"string empty", "", 0, false}, {"string whitespace", " 42 ", 42, true}, {"string invalid", "abc", 0, false}, - {"uint64 overflow", uint64(maxInt) + 1, 0, false}, - {"float64 overflow", float64(maxInt) * 2, 0, false}, + {"uint64 overflow", uint64(math.MaxInt) + 1, 0, false}, + {"float64 overflow", float64(math.MaxInt) * 2, 0, false}, } for _, tc := range tests {