diff options
author | mbr <mbr@FreeBSD.org> | 2004-01-24 01:23:30 +0000 |
---|---|---|
committer | mbr <mbr@FreeBSD.org> | 2004-01-24 01:23:30 +0000 |
commit | 44c47ce008799dc4b497d4272aebf7ca58a9012a (patch) | |
tree | d6dfed8c299d401b01f9f8b134312db3c0889ffc /lib/libc/xdr | |
parent | 6ee028691dd06ee6eb1b8bb5a0cb9fcde8776828 (diff) | |
download | FreeBSD-src-44c47ce008799dc4b497d4272aebf7ca58a9012a.zip FreeBSD-src-44c47ce008799dc4b497d4272aebf7ca58a9012a.tar.gz |
When writing/reading longs use explicit 32bit temporary values.
MFNetBSD rev. 1.15 + rev 1.16
PR: bin/60901
Submitted by: Logan Gabriel <gersh@sonn.com>
Obtained from: NetBSD
Diffstat (limited to 'lib/libc/xdr')
-rw-r--r-- | lib/libc/xdr/xdr_stdio.c | 7 |
1 files changed, 4 insertions, 3 deletions
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); |