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>
|
2006-10-16 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
[BZ #3369]
|
[BZ #3369]
|
||||||
|
@ -85,7 +85,7 @@ all: # Make this the default target; it will be defined in Rules.
|
|||||||
|
|
||||||
include ../Makeconfig
|
include ../Makeconfig
|
||||||
|
|
||||||
tests = tst-xdrmem
|
tests = tst-xdrmem tst-xdrmem2
|
||||||
xtests := tst-getmyaddr
|
xtests := tst-getmyaddr
|
||||||
|
|
||||||
ifeq ($(have-thread-library),yes)
|
ifeq ($(have-thread-library),yes)
|
||||||
|
@ -177,13 +177,15 @@ xdrmem_setpos (xdrs, pos)
|
|||||||
{
|
{
|
||||||
caddr_t newaddr = xdrs->x_base + pos;
|
caddr_t newaddr = xdrs->x_base + pos;
|
||||||
caddr_t lastaddr = xdrs->x_private + xdrs->x_handy;
|
caddr_t lastaddr = xdrs->x_private + xdrs->x_handy;
|
||||||
|
size_t handy = lastaddr - newaddr;
|
||||||
|
|
||||||
if ((long) newaddr > (long) lastaddr
|
if (newaddr > lastaddr
|
||||||
|| (UINT_MAX < LONG_MAX
|
|| newaddr < xdrs->x_base
|
||||||
&& (long) UINT_MAX < (long) lastaddr - (long) newaddr))
|
|| handy != (u_int) handy)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
xdrs->x_private = newaddr;
|
xdrs->x_private = newaddr;
|
||||||
xdrs->x_handy = (long) lastaddr - (long) newaddr;
|
xdrs->x_handy = (u_int) handy;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user