summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2005-07-18 03:06:34 +0000
committerRoland McGrath <roland@gnu.org>2005-07-18 03:06:34 +0000
commita8f2e5659fe008d2c38e349ed5315e43fbd0e0d5 (patch)
tree82de82aa2bbbe256b165360f783727a87bd8ab2d
parent931ab4110611adefe672922f01d664dba3ad6619 (diff)
2005-03-21 Thorsten Kukuk <kukuk@suse.de>
[BZ #1098] * sunrpc/xdr_stdio.c (xdrstdio_getlong, xdrstdio_putlong): Convert correctly between long/int on 64bit big-endian.
-rw-r--r--sunrpc/xdr_stdio.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sunrpc/xdr_stdio.c b/sunrpc/xdr_stdio.c
index 4daa062c82..e73c5a5202 100644
--- a/sunrpc/xdr_stdio.c
+++ b/sunrpc/xdr_stdio.c
@@ -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;
}