Subject: Build failure in ntpq.c
To: None <kardel@netbsd.org>
From: Julio M. Merino Vidal <jmmv84@gmail.com>
List: current-users
Date: 06/12/2006 12:23:48
Hi,
[ CC'ing kardel@, who imported the latest ntp code ]
I just got these build failures in current with sources as of a couple
of hours ago:
/usr/src/dist/ntp/ntpq/ntpq.c: In function `decodeint':
/usr/src/dist/ntp/ntpq/ntpq.c:1935: warning: dereferencing type-punned
pointer will break strict-aliasing rules
/usr/src/dist/ntp/ntpq/ntpq.c:1936: warning: dereferencing type-punned
pointer will break strict-aliasing rules
/usr/src/dist/ntp/ntpq/ntpq_ops.c: In function `dogetassoc':
/usr/src/dist/ntp/ntpq/ntpq_ops.c:880: warning: dereferencing
type-punned pointer will break strict-aliasing rules
The following fixed the problem. Is it correct?
Index: ntpq.c
===================================================================
RCS file: /cvsroot/src/dist/ntp/ntpq/ntpq.c,v
retrieving revision 1.8
diff -u -p -r1.8 ntpq.c
--- ntpq.c 11 Jun 2006 19:34:21 -0000 1.8
+++ ntpq.c 12 Jun 2006 09:59:51 -0000
@@ -1932,8 +1932,8 @@ decodeint(
{
if (*str == '0') {
if (*(str+1) == 'x' || *(str+1) == 'X')
- return hextoint(str+2, (u_long *)&val);
- return octtoint(str, (u_long *)&val);
+ return hextoint(str+2, (u_long *)val);
+ return octtoint(str, (u_long *)val);
}
return atoint(str, val);
}
Index: ntpq_ops.c
===================================================================
RCS file: /cvsroot/src/dist/ntp/ntpq/ntpq_ops.c,v
retrieving revision 1.4
diff -u -p -r1.4 ntpq_ops.c
--- ntpq_ops.c 11 Jun 2006 19:34:21 -0000 1.4
+++ ntpq_ops.c 12 Jun 2006 10:21:18 -0000
@@ -871,13 +871,13 @@ dogetassoc(
FILE *fp
)
{
- u_short *datap;
+ char *datap;
int res;
int dsize;
u_short rstatus;
res = doquery(CTL_OP_READSTAT, 0, 0, 0, (char *)0, &rstatus,
- &dsize, (char **)&datap);
+ &dsize, &datap);
if (res != 0)
return 0;
@@ -900,9 +900,9 @@ dogetassoc(
numassoc = 0;
while (dsize > 0) {
- assoc_cache[numassoc].assid = ntohs(*datap);
+ assoc_cache[numassoc].assid = ntohs(*((u_short *)datap));
datap++;
- assoc_cache[numassoc].status = ntohs(*datap);
+ assoc_cache[numassoc].status = ntohs(*((u_short *)datap));
datap++;
if (++numassoc >= MAXASSOC)
break;
Thanks.
--
Julio M. Merino Vidal <jmmv84@gmail.com>
The Julipedia - http://julipedia.blogspot.com/