From 44c47ce008799dc4b497d4272aebf7ca58a9012a Mon Sep 17 00:00:00 2001 From: mbr Date: Sat, 24 Jan 2004 01:23:30 +0000 Subject: When writing/reading longs use explicit 32bit temporary values. MFNetBSD rev. 1.15 + rev 1.16 PR: bin/60901 Submitted by: Logan Gabriel Obtained from: NetBSD --- lib/libc/xdr/xdr_stdio.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lib/libc') diff --git a/lib/libc/xdr/xdr_stdio.c b/lib/libc/xdr/xdr_stdio.c index a8e10eb..103d240 100644 --- a/lib/libc/xdr/xdr_stdio.c +++ b/lib/libc/xdr/xdr_stdio.c @@ -113,10 +113,11 @@ xdrstdio_getlong(xdrs, lp) XDR *xdrs; long *lp; { + u_int32_t temp; - if (fread(lp, sizeof(int32_t), 1, (FILE *)xdrs->x_private) != 1) + if (fread(&temp, sizeof(int32_t), 1, (FILE *)xdrs->x_private) != 1) return (FALSE); - *lp = (long)ntohl((u_int32_t)*lp); + *lp = (long)ntohl(temp); return (TRUE); } @@ -125,7 +126,7 @@ xdrstdio_putlong(xdrs, lp) XDR *xdrs; const long *lp; { - long mycopy = (long)htonl((u_int32_t)*lp); + int32_t mycopy = htonl((u_int32_t)*lp); if (fwrite(&mycopy, sizeof(int32_t), 1, (FILE *)xdrs->x_private) != 1) return (FALSE); -- cgit v1.1