Skip to content

Commit 8057d56

Browse files
fix: appease linter gosec
G115: integer overflow conversion int -> uint (gosec)
1 parent 3319e93 commit 8057d56

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

Diff for: go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ go 1.23.4
66
replace github.com/mailru/easyjson => github.com/cmaglie/easyjson v0.8.1
77

88
require (
9+
fortio.org/safecast v1.0.0
910
github.com/ProtonMail/go-crypto v1.1.3
1011
github.com/arduino/go-paths-helper v1.12.1
1112
github.com/arduino/go-properties-orderedmap v1.8.1

Diff for: go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
22
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
3+
fortio.org/safecast v1.0.0 h1:dr3131WPX8iS1pTf76+39WeXbTrerDYLvi9s7Oi3wiY=
4+
fortio.org/safecast v1.0.0/go.mod h1:xZmcPk3vi4kuUFf+tq4SvnlVdwViqf6ZSZl91Jr9Jdg=
35
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
46
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
57
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=

Diff for: internal/arduino/builder/sketch.go

+18-5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"strconv"
2525
"strings"
2626

27+
"fortio.org/safecast"
2728
f "github.com/arduino/arduino-cli/internal/algorithms"
2829
"github.com/arduino/arduino-cli/internal/arduino/builder/cpp"
2930
"github.com/arduino/arduino-cli/internal/i18n"
@@ -297,8 +298,12 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
297298
if segment.Address < initialAddress {
298299
initialAddress = segment.Address
299300
}
300-
if segment.Address+uint32(len(segment.Data)) > lastAddress {
301-
lastAddress = segment.Address + uint32(len(segment.Data))
301+
lenData, err := safecast.Convert[uint32](len(segment.Data))
302+
if err != nil {
303+
return err
304+
}
305+
if segment.Address+lenData > lastAddress {
306+
lastAddress = segment.Address + lenData
302307
}
303308
}
304309
for _, segment := range memSketch.GetDataSegments() {
@@ -308,8 +313,12 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
308313
if segment.Address < initialAddress {
309314
initialAddress = segment.Address
310315
}
311-
if segment.Address+uint32(len(segment.Data)) > lastAddress {
312-
lastAddress = segment.Address + uint32(len(segment.Data))
316+
lenData, err := safecast.Convert[uint32](len(segment.Data))
317+
if err != nil {
318+
return err
319+
}
320+
if segment.Address+lenData > lastAddress {
321+
lastAddress = segment.Address + lenData
313322
}
314323
}
315324

@@ -323,7 +332,11 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
323332
// Write out a .bin if the addresses doesn't go too far away from origin
324333
// (and consequently produce a very large bin)
325334
size := lastAddress - initialAddress
326-
if size > uint32(maximumBinSize) {
335+
maximumBinSizeUint32, err := safecast.Convert[uint32](maximumBinSize)
336+
if err != nil {
337+
return nil
338+
}
339+
if size > maximumBinSizeUint32 {
327340
return nil
328341
}
329342
mergedSketchPathBin := paths.New(strings.TrimSuffix(mergedSketchPath.String(), ".hex") + ".bin")

Diff for: internal/go-configmap/configuration.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import (
1919
"fmt"
2020
"reflect"
2121
"strings"
22+
23+
"fortio.org/safecast"
2224
)
2325

2426
type Map struct {
@@ -88,7 +90,7 @@ func tryConversion(current any, desiredType reflect.Type) (any, error) {
8890
return uint(currentFloat), nil
8991
}
9092
if currentInt, ok := current.(int); ok {
91-
return uint(currentInt), nil
93+
return safecast.Convert[uint](currentInt)
9294
}
9395
case reflect.Int:
9496
// Exception for JSON decoder: json decoder will decode all numbers as float64

0 commit comments

Comments
 (0)