+++ /dev/null
---- dietlibc-0.12.orig/librpc/xdr_mem.c
-+++ dietlibc-0.12/librpc/xdr_mem.c
-@@ -48,13 +48,13 @@
- #include <netinet/in.h>
- #include <string.h>
-
--static bool_t xdrmem_getlong();
--static bool_t xdrmem_putlong();
-+static bool_t xdrmem_getlong(XDR*, long*);
-+static bool_t xdrmem_putlong(XDR*, const long*);
- static bool_t xdrmem_getbytes();
- static bool_t xdrmem_putbytes();
- static unsigned int xdrmem_getpos();
- static bool_t xdrmem_setpos();
--static int32_t *xdrmem_inline();
-+static int32_t *xdrmem_inline(XDR*, unsigned int);
- static void xdrmem_destroy();
-
- static struct xdr_ops xdrmem_ops = {
-@@ -94,54 +94,41 @@
- register XDR *xdrs;
- long *lp;
- {
-+ if (xdrs->x_handy < 4) return FALSE;
-+ xdrs->x_handy -= 4;
-
-- if ((xdrs->x_handy -= sizeof(long)) < 0)
-- return (FALSE);
--
-- *lp = (long) ntohl((unsigned long) (*((long *) (xdrs->x_private))));
-- xdrs->x_private += sizeof(long);
--
-- return (TRUE);
-+ *lp = (int32_t) ntohl((*((int32_t *) (xdrs->x_private))));
-+ xdrs->x_private += 4;
-+ return TRUE;
- }
-
--static bool_t xdrmem_putlong(xdrs, lp)
--register XDR *xdrs;
--long *lp;
-+static bool_t xdrmem_putlong(XDR* xdrs, const long* lp)
- {
-+ if (xdrs->x_handy < 4) return FALSE;
-+ xdrs->x_handy -= 4;
-
-- if ((xdrs->x_handy -= sizeof(long)) < 0)
-- return (FALSE);
--
-- *(long *) xdrs->x_private = (long) htonl((unsigned long) (*lp));
-- xdrs->x_private += sizeof(long);
-+ *(int32_t *) xdrs->x_private = htonl(*lp);
-+ xdrs->x_private += sizeof(long);
-
-- return (TRUE);
-+ return (TRUE);
- }
-
--static bool_t xdrmem_getbytes(xdrs, addr, len)
--register XDR *xdrs;
--char* addr;
--register unsigned int len;
-+static bool_t xdrmem_getbytes(XDR* xdrs, char* addr, unsigned int len)
- {
--
-- if ((xdrs->x_handy -= len) < 0)
-- return (FALSE);
-- memmove(addr, xdrs->x_private, len);
-- xdrs->x_private += len;
-- return (TRUE);
-+ if (xdrs->x_handy < len) return FALSE;
-+ xdrs->x_handy -= len;
-+ memmove(addr, xdrs->x_private, len);
-+ xdrs->x_private += len;
-+ return TRUE;
- }
-
--static bool_t xdrmem_putbytes(xdrs, addr, len)
--register XDR *xdrs;
--char* addr;
--register unsigned int len;
-+static bool_t xdrmem_putbytes(XDR* xdrs, char* addr, unsigned int len)
- {
--
-- if ((xdrs->x_handy -= len) < 0)
-- return (FALSE);
-- memmove(xdrs->x_private, addr, len);
-- xdrs->x_private += len;
-- return (TRUE);
-+ if (xdrs->x_handy < len) return FALSE;
-+ xdrs->x_handy -= len;
-+ memmove(xdrs->x_private, addr, len);
-+ xdrs->x_private += len;
-+ return (TRUE);
- }
-
- static unsigned int xdrmem_getpos(xdrs)
-@@ -155,19 +142,19 @@
- register XDR *xdrs;
- unsigned int pos;
- {
-- register char* newaddr = xdrs->x_base + pos;
-- register char* lastaddr = xdrs->x_private + xdrs->x_handy;
-+ register char* newaddr = xdrs->x_base + pos;
-+ register char* lastaddr = xdrs->x_private + xdrs->x_handy;
-
-- if ((long) newaddr > (long) lastaddr)
-- return (FALSE);
-- xdrs->x_private = newaddr;
-- xdrs->x_handy = (int) lastaddr - (int) newaddr;
-- return (TRUE);
-+ if ((long) newaddr > (long) lastaddr || (long)newaddr<(long)xdrs->x_base)
-+ return (FALSE);
-+ xdrs->x_private = newaddr;
-+ xdrs->x_handy = (int) lastaddr - (int) newaddr;
-+ return (TRUE);
- }
-
- static int32_t *xdrmem_inline(xdrs, len)
- register XDR *xdrs;
--int len;
-+unsigned int len;
- {
- int32_t *buf = 0;
-
---- dietlibc-0.12.orig/librpc/xdr_rec.c
-+++ dietlibc-0.12/librpc/xdr_rec.c
-@@ -458,9 +458,7 @@
- return (FALSE);
- }
-
--static int32_t *xdrrec_inline(xdrs, len)
--register XDR *xdrs;
--int len;
-+static int32_t *xdrrec_inline(XDR* xdrs, unsigned int len)
- {
- register RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
- int32_t *buf = NULL;
---- dietlibc-0.12.orig/librpc/xdr_stdio.c
-+++ dietlibc-0.12/librpc/xdr_stdio.c
-@@ -169,9 +169,7 @@
- FALSE : TRUE);
- }
-
--static int32_t *xdrstdio_inline(xdrs, len)
--XDR *xdrs;
--unsigned int len;
-+static int32_t *xdrstdio_inline(XDR* xdrs, unsigned int len)
- {
-
- /*
---- dietlibc-0.12.orig/include/rpc/xdr.h
-+++ dietlibc-0.12/include/rpc/xdr.h
-@@ -126,7 +126,7 @@
- /* returns bytes off from beginning */
- bool_t (*x_setpostn) (XDR *__xdrs, unsigned int __pos);
- /* lets you reposition the stream */
-- int32_t *(*x_inline) (XDR *__xdrs, int __len);
-+ int32_t *(*x_inline) (XDR *__xdrs, unsigned int __len);
- /* buf quick ptr to buffered data */
- void (*x_destroy) (XDR *__xdrs);
- /* free privates of this xdr_stream */
-@@ -139,7 +139,7 @@
- char* x_public; /* users' data */
- char* x_private; /* pointer to private data */
- char* x_base; /* private used for position info */
-- int x_handy; /* extra private word */
-+ unsigned int x_handy; /* extra private word */
- };
-
- /*