@@ -24,6 +24,7 @@ import (
24
24
"strconv"
25
25
"strings"
26
26
27
+ "fortio.org/safecast"
27
28
f "github.com/arduino/arduino-cli/internal/algorithms"
28
29
"github.com/arduino/arduino-cli/internal/arduino/builder/cpp"
29
30
"github.com/arduino/arduino-cli/internal/i18n"
@@ -297,8 +298,12 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
297
298
if segment.Address < initialAddress {
298
299
initialAddress = segment.Address
299
300
}
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
302
307
}
303
308
}
304
309
for _, segment := range memSketch.GetDataSegments() {
@@ -308,8 +313,12 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
308
313
if segment.Address < initialAddress {
309
314
initialAddress = segment.Address
310
315
}
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
313
322
}
314
323
}
315
324
@@ -323,7 +332,11 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
323
332
// Write out a .bin if the addresses doesn't go too far away from origin
324
333
// (and consequently produce a very large bin)
325
334
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 {
327
340
return nil
328
341
}
329
342
mergedSketchPathBin := paths.New(strings.TrimSuffix(mergedSketchPath.String(), ".hex") + ".bin")
0 commit comments