summaryrefslogtreecommitdiff
path: root/libc/sunrpc/xdr_mem.c
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2006-11-07 22:59:31 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2006-11-07 22:59:31 +0000
commit2a9b4a0cce09a1bccb092ddc9fb98532ec8b720f (patch)
treed89ccfd8639aaf3a0ece7ac6ccff0b345ba757c7 /libc/sunrpc/xdr_mem.c
parent5464a78aac33302c987c3dab8463f53c3c1dd7df (diff)
downloadeglibc2-2a9b4a0cce09a1bccb092ddc9fb98532ec8b720f.tar.gz
Merge changes between r426 and r615 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@616 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sunrpc/xdr_mem.c')
-rw-r--r--libc/sunrpc/xdr_mem.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libc/sunrpc/xdr_mem.c b/libc/sunrpc/xdr_mem.c
index e3167de04..7b1261bba 100644
--- a/libc/sunrpc/xdr_mem.c
+++ b/libc/sunrpc/xdr_mem.c
@@ -177,13 +177,15 @@ xdrmem_setpos (xdrs, pos)
{
caddr_t newaddr = xdrs->x_base + pos;
caddr_t lastaddr = xdrs->x_private + xdrs->x_handy;
+ size_t handy = lastaddr - newaddr;
- if ((long) newaddr > (long) lastaddr
- || (UINT_MAX < LONG_MAX
- && (long) UINT_MAX < (long) lastaddr - (long) newaddr))
+ if (newaddr > lastaddr
+ || newaddr < xdrs->x_base
+ || handy != (u_int) handy)
return FALSE;
+
xdrs->x_private = newaddr;
- xdrs->x_handy = (long) lastaddr - (long) newaddr;
+ xdrs->x_handy = (u_int) handy;
return TRUE;
}