More CodeQL fixes

This commit is contained in:
Kovid Goyal 2025-04-20 21:53:11 +05:30
parent adfcffa5d7
commit 237bb35ee9
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
6 changed files with 25 additions and 14 deletions

View file

@ -4,6 +4,7 @@ package utils
import (
"fmt"
"math"
"strconv"
"strings"
"time"
@ -43,7 +44,10 @@ func ISO8601Parse(raw string) (time.Time, error) {
text := raw[:num_digits]
raw = raw[num_digits:]
ans, err := strconv.ParseUint(text, 10, 32)
return int(ans), err
if err == nil && ans <= math.MaxInt {
return int(ans), nil
}
return math.MaxInt, err
}
optional_separator := func(x byte) bool {
@ -77,7 +81,8 @@ func ISO8601Parse(raw string) (time.Time, error) {
}
}
var hour, minute, second, nsec int
var hour, minute, second int
var nsec int64
if len(raw) > 0 && (raw[0] == 'T' || raw[0] == ' ') {
raw = raw[1:]
@ -114,7 +119,7 @@ func ISO8601Parse(raw string) (time.Time, error) {
if err != nil {
return errf("timestamp does not have a valid nanosecond field")
}
nsec = int(n)
nsec = int64(n)
for ; extra > 0; extra-- {
nsec *= 10
}
@ -158,7 +163,7 @@ func ISO8601Parse(raw string) (time.Time, error) {
seconds := tzhour*3600 + tzminute*60
loc = time.FixedZone("", tzsign*seconds)
}
return time.Date(year, time.Month(month), day, hour, minute, second, nsec, loc), err
return time.Date(year, time.Month(month), day, hour, minute, second, int(nsec), loc), err
}
func ISO8601Format(x time.Time) string {

View file

@ -6,6 +6,7 @@ import (
"fmt"
"strconv"
"strings"
"unicode/utf8"
)
var _ = fmt.Print
@ -38,7 +39,7 @@ func is_oct_char(ch rune) bool {
func (self *ansi_c) write_digits(base int) {
if self.digit_idx > 0 {
text := string(self.digits[:self.digit_idx])
if val, err := strconv.ParseUint(text, base, 32); err == nil && val <= 0x10ffff {
if val, err := strconv.ParseUint(text, base, 32); err == nil && val <= utf8.MaxRune {
self.output.WriteRune(rune(val))
}
}