mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-24 14:41:06 +08:00
* sunrpc/xdr_mem.c (xdrmem_setpos): Don't compare addresses
as signed longs, check for x_base + pos overflow. * sunrpc/Makefile (tests): Add tst-xdrmem2. * sunrpc/tst-xdrmem2.c: New test.
This commit is contained in:
parent
9b004c59dd
commit
9ea3b0192f
@ -1,3 +1,10 @@
|
||||
2006-10-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sunrpc/xdr_mem.c (xdrmem_setpos): Don't compare addresses
|
||||
as signed longs, check for x_base + pos overflow.
|
||||
* sunrpc/Makefile (tests): Add tst-xdrmem2.
|
||||
* sunrpc/tst-xdrmem2.c: New test.
|
||||
|
||||
2006-10-16 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #3369]
|
||||
|
@ -85,7 +85,7 @@ all: # Make this the default target; it will be defined in Rules.
|
||||
|
||||
include ../Makeconfig
|
||||
|
||||
tests = tst-xdrmem
|
||||
tests = tst-xdrmem tst-xdrmem2
|
||||
xtests := tst-getmyaddr
|
||||
|
||||
ifeq ($(have-thread-library),yes)
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user