Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Jul 2016 01:36:54 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   [Bug 210831] ports-mgmt/pkg 1.8.6: src/utils.c in 32-bit context like armv6/powerpc: 'labs' given an argument of type 'long long' but has parameter of type 'long' which may cause truncation of value
Message-ID:  <bug-210831-13@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D210831

            Bug ID: 210831
           Summary: ports-mgmt/pkg 1.8.6: src/utils.c in 32-bit context
                    like armv6/powerpc: 'labs' given an argument of type
                    'long long' but has parameter of type 'long' which may
                    cause truncation of value
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: pkg@FreeBSD.org
          Reporter: markmi@dsl-only.net
             Flags: maintainer-feedback?(pkg@FreeBSD.org)
          Assignee: pkg@FreeBSD.org

src/utils.c has the code:

        bytes_change =3D labs(newsize - oldsize);

where newsize and oldsize have type int64_t (or what it translates to) and
bytes_changed has type size_t (or what it translates to). The compiler
targeting armv6 (with -mcpu=3Dcortex_a7 specified) that reported this sugge=
sted
use of llabs (from C99).

The labs parameter and return type need not match size_t well for the purpo=
se,
even ignoring unsigned vs. signed issue for the same width if that occurs.

        bytes_change =3D (size_t) llabs(newsize - oldsize);

likely would be more auto adjusting without compiler warnings for current
contexts. [Depends on what set_pkg_jobs_summary_pkg(. . ., &oldsize, &newsi=
ze,
. . .) is doing under the variations in types for various contexts. Likely
oldsize and newsize values do track size_t or a signed variant with the same
width to an extent.]

If prior to C99 is to be covered (where llabs might not exist even if the t=
ypes
involved here do exist) then an explicit expansion of an expression (or mac=
ros
that expand to such) would be a way to get that more auto-adjusting nature:

        bytes_change =3D (size_t) ((oldsize <=3D newsize)
                                 ?newsize - oldsize :oldsize-newsize);

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-210831-13>