]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
2005-03-21 Thorsten Kukuk <kukuk@suse.de>
authorRoland McGrath <roland@gnu.org>
Mon, 18 Jul 2005 03:06:34 +0000 (03:06 +0000)
committerRoland McGrath <roland@gnu.org>
Mon, 18 Jul 2005 03:06:34 +0000 (03:06 +0000)
[BZ #1098]
* sunrpc/xdr_stdio.c (xdrstdio_getlong, xdrstdio_putlong):
Convert correctly between long/int on 64bit big-endian.

sunrpc/xdr_stdio.c

index 4daa062c82557bfc3cfb16a025bd439ca3ae0db0..e73c5a5202528f8810b2b35c417c658a7af76ca0 100644 (file)
@@ -108,20 +108,20 @@ xdrstdio_destroy (XDR *xdrs)
 static bool_t
 xdrstdio_getlong (XDR *xdrs, long *lp)
 {
-  int32_t mycopy;
+  u_int32_t mycopy;
 
-  if (fread ((caddr_t) & mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
+  if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
     return FALSE;
-  *lp = (int32_t) ntohl (mycopy);
+  *lp = (long) ntohl (mycopy);
   return TRUE;
 }
 
 static bool_t
 xdrstdio_putlong (XDR *xdrs, const long *lp)
 {
-  long mycopy = htonl (*lp);
-  lp = &mycopy;
-  if (fwrite ((caddr_t) lp, 4, 1, (FILE *) xdrs->x_private) != 1)
+  int32_t mycopy = htonl ((u_int32_t) *lp);
+
+  if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
     return FALSE;
   return TRUE;
 }