From: roland Date: Wed, 19 Jun 1996 06:38:16 +0000 (+0000) Subject: Thu Jun 13 17:25:11 1996 David Mosberger-Tang X-Git-Tag: libc-960619~20 X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=commitdiff_plain;h=1445ee190a29c5b18945388919add083ed3a2c5e Thu Jun 13 17:25:11 1996 David Mosberger-Tang * sunrpc/xdr_stdio.c (xdrstdio_getlong), sunrpc/xdr_rec.c (xdrrec_getlong), sunrpc/xdr_mem.c (xdrmem_getlong): Make sure appropriate sign-extension is performed on machines with sizeof(long) > 4. --- diff --git a/sunrpc/xdr_mem.c b/sunrpc/xdr_mem.c index fb15f113ce..ac7c9541d0 100644 --- a/sunrpc/xdr_mem.c +++ b/sunrpc/xdr_mem.c @@ -99,7 +99,7 @@ xdrmem_getlong(xdrs, lp) if ((xdrs->x_handy -= 4) < 0) return (FALSE); - *lp = (long)ntohl((u_long)(*((int32_t *)(xdrs->x_private)))); + *lp = (int32_t) ntohl((*((int32_t *)(xdrs->x_private)))); xdrs->x_private += 4; return (TRUE); } diff --git a/sunrpc/xdr_rec.c b/sunrpc/xdr_rec.c index 45435951d0..974e8295dd 100644 --- a/sunrpc/xdr_rec.c +++ b/sunrpc/xdr_rec.c @@ -201,14 +201,14 @@ xdrrec_getlong(xdrs, lp) if (rstrm->fbtbc >= BYTES_PER_XDR_UNIT && rstrm->in_boundry - (char *) buflp >= BYTES_PER_XDR_UNIT) { - *lp = ntohl(*buflp); + *lp = (int32_t) ntohl(*buflp); rstrm->fbtbc -= BYTES_PER_XDR_UNIT; rstrm->in_finger += BYTES_PER_XDR_UNIT; } else { if (! xdrrec_getbytes(xdrs, (caddr_t) &mylong, BYTES_PER_XDR_UNIT)) return FALSE; - *lp = ntohl(mylong); + *lp = (int32_t) ntohl(mylong); } return TRUE; } diff --git a/sunrpc/xdr_stdio.c b/sunrpc/xdr_stdio.c index da4877a9e8..5f016993e7 100644 --- a/sunrpc/xdr_stdio.c +++ b/sunrpc/xdr_stdio.c @@ -108,7 +108,7 @@ xdrstdio_getlong(xdrs, lp) if (fread((caddr_t)&mycopy, 4, 1, (FILE *)xdrs->x_private) != 1) return (FALSE); - *(int32_t*)lp = ntohl(mycopy); + *lp = (int32_t) ntohl(mycopy); return (TRUE); }