Skip to content

False positive: Go x, _ := strconv.ParseUint(,, strconv.IntSize-1); int(x) #14733

Open
@thediveo

Description

@thediveo

Description of the false positive

If I'm not mistaken and making a terribly stupid mistake here I would expect that Go's strconv.IntSize-1 should cover the positive range of an int, regardless of architecture integer size. The actual value range returned by strconv.ParseUint in an uint64 should be correctly castable to an int without ambiguities.

Currently, CodeQL scanning reports "Incorrect conversion between integer types". Am I getting this one horribly wrong?

Code samples or links to source code

fd, err := strconv.ParseUint(fdInfoEntry.Name(), 10, strconv.IntSize-1)
if err != nil {
    continue
}
taptunFd, err := unix.PidfdGetfd(pidfd, int(fd), 0)

https://github.com/siemens/ghostwire/pull/29/checks?check_run_id=18520023133

Related: #9295 ... but it seems the PR addressing the "old" issue doesn't address this case too.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions