<p dir="ltr"><br>
On Nov 30, 2015 8:28 AM, "Eric S. Raymond" <<a href="mailto:esr@thyrsus.com">esr@thyrsus.com</a>> wrote:<br>
><br>
> Hal Murray <<a href="mailto:hmurray@megapathdsl.net">hmurray@megapathdsl.net</a>>:<br>
> > It's from Debian wheezy (and decendents like Rasbian)<br>
> > gcc (Debian 4.7.2-5) 4.7.2<br>
> ><br>
> > [109/174] Compiling ntpd/ntp_io.c<br>
> > ../ntpd/ntp_io.c: In function â€˜process_routing_msgs’:<br>
> > ../ntpd/ntp_io.c:4629:7: warning: comparison between signed and unsigned<br>
> > integer expressions [-Wsign-compare]<br>
> ><br>
> > That line of code is:<br>
> >              NLMSG_OK(nh, cnt);<br>
> > It's the middle term in a for loop.<br>
> ><br>
> > nh is a pointer, cnt is an int.<br>
> ><br>
> > NLMSG_OK comes from /usr/include/linux/netlink.h<br>
> > #define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \<br>
> >                            (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \<br>
> >                            (nlh)->nlmsg_len <= (len))<br>
> > nlmsg_len comes from a struct nlmsghdr:<br>
> >         __u32           nlmsg_len;      /* Length of message including header<br>
> > */<br>
> ><br>
> > That part of the header didn't change from wheezy to jessie.<br>
> ><br>
> > The 3rd term is comparing an unsigned with an int.  So the real question is<br>
> > why the compiler on other systems don't complain.<br>
> ><br>
> > Is there a clean fix for this, or do we just document it as a glitch in this<br>
> > environment?<br>
><br>
> Try replacing the call with NLMSG_OK(nh, (uint32_t)cnt). That might do it.</p>
<p dir="ltr">Sizes should be size_t.  That's the crux of the problem although it likely propagates.</p>
<p dir="ltr">Also.. Is there a style rule for macro argument names? I thought it was considered bad form to use arguments without leading _. The name len seems common and could lead to unexpected side-effects.</p>
<p dir="ltr">> But please test in other environments before you commit.  It seems to me<br>
> the most likely reason that this error isn't everywhere is that the<br>
> type declaration of nlmsg_len is not stable across NLS versions.  If so,<br>
> trying to fix this could induce more warnings than it solves.</p>
<p dir="ltr">What other types is it? </p>
<p dir="ltr">> --<br>
>                 <a href="<a href="http://www.catb.org/~esr/">http://www.catb.org/~esr/</a>">Eric S. Raymond</a><br>
> _______________________________________________<br>
> devel mailing list<br>
> <a href="mailto:devel@ntpsec.org">devel@ntpsec.org</a><br>
> <a href="http://lists.ntpsec.org/mailman/listinfo/devel">http://lists.ntpsec.org/mailman/listinfo/devel</a><br>
</p>