Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Sep 2020 00:07:50 -0600
From:      Scott Long <scottl@samsco.org>
To:        Alan Somers <asomers@freebsd.org>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, src-committers <src-committers@freebsd.org>, svn-src-all <svn-src-all@freebsd.org>, svn-src-head <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r366207 - head/lib/libc/gen
Message-ID:  <A405C541-963C-4FFA-AE7E-E80B6F397ED7@samsco.org>
In-Reply-To: <CAOtMX2iUKpFrJC1vUJ5_AF75L_GDr_4Rui2TdrA-qPLRc8aDNw@mail.gmail.com>
References:  <202009272226.08RMQf1h054050@repo.freebsd.org> <20200927231519.GI2643@kib.kiev.ua> <CAOtMX2iUKpFrJC1vUJ5_AF75L_GDr_4Rui2TdrA-qPLRc8aDNw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help


> On Sep 27, 2020, at 10:08 PM, Alan Somers <asomers@freebsd.org> wrote:
>=20
> On Sun, Sep 27, 2020 at 5:15 PM Konstantin Belousov =
<kostikbel@gmail.com> wrote:
> On Sun, Sep 27, 2020 at 10:26:41PM +0000, Alan Somers wrote:
> > Author: asomers
> > Date: Sun Sep 27 22:26:41 2020
> > New Revision: 366207
> > URL: https://svnweb.freebsd.org/changeset/base/366207
> >=20
> > Log:
> >   Misc compiler warning fixes in lib/libc
> >  =20
> >   Reviewed by:        kevans, imp
> >   MFC after:  2 weeks
> >   Differential Revision:      https://reviews.freebsd.org/D26534
> >=20
> > Modified:
> >   head/lib/libc/gen/auxv.c
> >   head/lib/libc/gen/basename_compat.c
> >   head/lib/libc/gen/crypt.c
> >   head/lib/libc/gen/dirname_compat.c
> >   head/lib/libc/gen/fts-compat.c
> >   head/lib/libc/gen/ftw-compat11.c
> >   head/lib/libc/gen/getentropy.c
> >=20
> > Modified: head/lib/libc/gen/auxv.c
> > =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> > --- head/lib/libc/gen/auxv.c  Sun Sep 27 21:43:19 2020        =
(r366206)
> > +++ head/lib/libc/gen/auxv.c  Sun Sep 27 22:26:41 2020        =
(r366207)
> > @@ -67,7 +67,8 @@ __init_elf_aux_vector(void)
> >  }
> > =20
> >  static pthread_once_t aux_once =3D PTHREAD_ONCE_INIT;
> > -static int pagesize, osreldate, canary_len, ncpus, pagesizes_len, =
bsdflags;
> > +static int pagesize, osreldate, ncpus, bsdflags;
> > +static size_t canary_len, pagesizes_len;
> >  static int hwcap_present, hwcap2_present;
> >  static char *canary, *pagesizes, *execpath;
> >  static void *ps_strings, *timekeep;
> > @@ -245,16 +246,21 @@ int
> >  _elf_aux_info(int aux, void *buf, int buflen)
> >  {
> >       int res;
> > +     size_t buflen_;
> > =20
> >       __init_elf_aux_vector();
> >       if (__elf_aux_vector =3D=3D NULL)
> >               return (ENOSYS);
> >       _once(&aux_once, init_aux);
> > =20
> > +     if (buflen < 0)
> > +             return (EINVAL);
> > +     buflen_ =3D (size_t)buflen;
> > +
> >       switch (aux) {
> >       case AT_CANARY:
> > -             if (canary !=3D NULL && canary_len >=3D buflen) {
> > -                     memcpy(buf, canary, buflen);
> > +             if (canary !=3D NULL && canary_len >=3D buflen_) {
> > +                     memcpy(buf, canary, buflen_);
> >                       memset(canary, 0, canary_len);
> >                       canary =3D NULL;
> >                       res =3D 0;
> > @@ -267,35 +273,35 @@ _elf_aux_info(int aux, void *buf, int buflen)
> >               else if (buf =3D=3D NULL)
> >                       res =3D EINVAL;
> >               else {
> > -                     if (strlcpy(buf, execpath, buflen) >=3D =
buflen)
> > +                     if (strlcpy(buf, execpath, buflen_) >=3D =
buflen_)
> >                               res =3D EINVAL;
> >                       else
> >                               res =3D 0;
> >               }
> >               break;
> >       case AT_HWCAP:
> > -             if (hwcap_present && buflen =3D=3D sizeof(u_long)) {
> > +             if (hwcap_present && buflen_ =3D=3D sizeof(u_long)) {
> >                       *(u_long *)buf =3D hwcap;
> >                       res =3D 0;
> >               } else
> >                       res =3D ENOENT;
> >               break;
> >       case AT_HWCAP2:
> > -             if (hwcap2_present && buflen =3D=3D sizeof(u_long)) {
> > +             if (hwcap2_present && buflen_ =3D=3D sizeof(u_long)) {
> >                       *(u_long *)buf =3D hwcap2;
> >                       res =3D 0;
> >               } else
> >                       res =3D ENOENT;
> >               break;
> >       case AT_PAGESIZES:
> > -             if (pagesizes !=3D NULL && pagesizes_len >=3D buflen) =
{
> > -                     memcpy(buf, pagesizes, buflen);
> > +             if (pagesizes !=3D NULL && pagesizes_len >=3D buflen_) =
{
> > +                     memcpy(buf, pagesizes, buflen_);
> >                       res =3D 0;
> >               } else
> >                       res =3D ENOENT;
> >               break;
> >       case AT_PAGESZ:
> > -             if (buflen =3D=3D sizeof(int)) {
> > +             if (buflen_ =3D=3D sizeof(int)) {
> >                       if (pagesize !=3D 0) {
> >                               *(int *)buf =3D pagesize;
> >                               res =3D 0;
> > @@ -305,7 +311,7 @@ _elf_aux_info(int aux, void *buf, int buflen)
> >                       res =3D EINVAL;
> >               break;
> >       case AT_OSRELDATE:
> > -             if (buflen =3D=3D sizeof(int)) {
> > +             if (buflen_ =3D=3D sizeof(int)) {
> >                       if (osreldate !=3D 0) {
> >                               *(int *)buf =3D osreldate;
> >                               res =3D 0;
> > @@ -315,7 +321,7 @@ _elf_aux_info(int aux, void *buf, int buflen)
> >                       res =3D EINVAL;
> >               break;
> >       case AT_NCPUS:
> > -             if (buflen =3D=3D sizeof(int)) {
> > +             if (buflen_ =3D=3D sizeof(int)) {
> >                       if (ncpus !=3D 0) {
> >                               *(int *)buf =3D ncpus;
> >                               res =3D 0;
> > @@ -325,7 +331,7 @@ _elf_aux_info(int aux, void *buf, int buflen)
> >                       res =3D EINVAL;
> >               break;
> >       case AT_TIMEKEEP:
> > -             if (buflen =3D=3D sizeof(void *)) {
> > +             if (buflen_ =3D=3D sizeof(void *)) {
> >                       if (timekeep !=3D NULL) {
> >                               *(void **)buf =3D timekeep;
> >                               res =3D 0;
> > @@ -335,14 +341,14 @@ _elf_aux_info(int aux, void *buf, int buflen)
> >                       res =3D EINVAL;
> >               break;
> >       case AT_BSDFLAGS:
> > -             if (buflen =3D=3D sizeof(int)) {
> > +             if (buflen_ =3D=3D sizeof(int)) {
> >                       *(int *)buf =3D bsdflags;
> >                       res =3D 0;
> >               } else
> >                       res =3D EINVAL;
> >               break;
> >       case AT_PS_STRINGS:
> > -             if (buflen =3D=3D sizeof(void *)) {
> > +             if (buflen_ =3D=3D sizeof(void *)) {
> >                       if (ps_strings !=3D NULL) {
> >                               *(void **)buf =3D ps_strings;
> >                               res =3D 0;
>=20
> This is significant uglification of the code in the name of fixing =
pointless
> warnings.
>=20
> Warnings are NOT pointless.  99% of them are.  But the only way to =
find the 1% that aren't is to quell the 99% that are.  Last week I wrote =
a bug that fortunately got caught in code review.  But it shouldn't have =
made it that far.  It should've been caught by the compiler, but libc is =
only built with WARNS=3D2.  This commit is one step towards raising =
libc's WARNs level to 3.  Only 334 files left to go.
> =20

A suggestion that might make the diff of the first file a little smaller =
and attractive is to rename the passed in variable from =E2=80=9Cbuflen=E2=
=80=9D to =E2=80=9C_buflen=E2=80=9D and call the new local variable =
=E2=80=9Cbuflen=E2=80=9D.  You=E2=80=99d still need the test and =
assignment at the top of the function, but a lot of the rest of the diff =
would have evaporated away.

Scott




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A405C541-963C-4FFA-AE7E-E80B6F397ED7>