mirror of
https://github.com/securego/gosec.git
synced 2025-01-12 04:45:53 +00:00
Fix G115 false positive when going from parsed uint to larger int
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
This commit is contained in:
parent
08ea2a57db
commit
9b13cd5ab4
2 changed files with 40 additions and 1 deletions
|
@ -226,7 +226,12 @@ func isStringToIntConversion(instr *ssa.Convert, dstType string) bool {
|
|||
if err != nil {
|
||||
return false
|
||||
}
|
||||
isSafe := bitSizeValue <= dstInt.size && signed == dstInt.signed
|
||||
|
||||
// we're good if:
|
||||
// - signs match and bit size is <= than destination
|
||||
// - parsing unsigned and bit size is < than destination
|
||||
isSafe := (bitSizeValue <= dstInt.size && signed == dstInt.signed) ||
|
||||
(bitSizeValue < dstInt.size && !signed)
|
||||
return isSafe
|
||||
}
|
||||
}
|
||||
|
|
|
@ -426,6 +426,40 @@ import (
|
|||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var a string = "13"
|
||||
b, _ := strconv.ParseUint(a, 10, 16)
|
||||
c := int(b)
|
||||
fmt.Printf("%d\n", c)
|
||||
}
|
||||
`,
|
||||
}, 0, gosec.NewConfig()},
|
||||
{[]string{
|
||||
`
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var a string = "13"
|
||||
b, _ := strconv.ParseUint(a, 10, 31)
|
||||
c := int32(b)
|
||||
fmt.Printf("%d\n", c)
|
||||
}
|
||||
`,
|
||||
}, 0, gosec.NewConfig()},
|
||||
{[]string{
|
||||
`
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var a string = "13"
|
||||
b, _ := strconv.ParseInt(a, 10, 8)
|
||||
|
|
Loading…
Reference in a new issue