Thu Jun 13 17:25:11 1996 David Mosberger-Tang <davidm@azstarnet.com>
authorroland <roland>
Wed, 19 Jun 1996 06:38:16 +0000 (06:38 +0000)
committerroland <roland>
Wed, 19 Jun 1996 06:38:16 +0000 (06:38 +0000)
* 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.

sunrpc/xdr_mem.c
sunrpc/xdr_rec.c
sunrpc/xdr_stdio.c

index fb15f11..ac7c954 100644 (file)
@@ -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);
 }
index 4543595..974e829 100644 (file)
@@ -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;
 }
index da4877a..5f01699 100644 (file)
@@ -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);
 }