1 --- dietlibc-0.12.orig/librpc/xdr_mem.c
2 +++ dietlibc-0.12/librpc/xdr_mem.c
4 #include <netinet/in.h>
7 -static bool_t xdrmem_getlong();
8 -static bool_t xdrmem_putlong();
9 +static bool_t xdrmem_getlong(XDR*, long*);
10 +static bool_t xdrmem_putlong(XDR*, const long*);
11 static bool_t xdrmem_getbytes();
12 static bool_t xdrmem_putbytes();
13 static unsigned int xdrmem_getpos();
14 static bool_t xdrmem_setpos();
15 -static int32_t *xdrmem_inline();
16 +static int32_t *xdrmem_inline(XDR*, unsigned int);
17 static void xdrmem_destroy();
19 static struct xdr_ops xdrmem_ops = {
24 + if (xdrs->x_handy < 4) return FALSE;
27 - if ((xdrs->x_handy -= sizeof(long)) < 0)
30 - *lp = (long) ntohl((unsigned long) (*((long *) (xdrs->x_private))));
31 - xdrs->x_private += sizeof(long);
34 + *lp = (int32_t) ntohl((*((int32_t *) (xdrs->x_private))));
35 + xdrs->x_private += 4;
39 -static bool_t xdrmem_putlong(xdrs, lp)
42 +static bool_t xdrmem_putlong(XDR* xdrs, const long* lp)
44 + if (xdrs->x_handy < 4) return FALSE;
47 - if ((xdrs->x_handy -= sizeof(long)) < 0)
50 - *(long *) xdrs->x_private = (long) htonl((unsigned long) (*lp));
51 - xdrs->x_private += sizeof(long);
52 + *(int32_t *) xdrs->x_private = htonl(*lp);
53 + xdrs->x_private += sizeof(long);
59 -static bool_t xdrmem_getbytes(xdrs, addr, len)
62 -register unsigned int len;
63 +static bool_t xdrmem_getbytes(XDR* xdrs, char* addr, unsigned int len)
66 - if ((xdrs->x_handy -= len) < 0)
68 - memmove(addr, xdrs->x_private, len);
69 - xdrs->x_private += len;
71 + if (xdrs->x_handy < len) return FALSE;
72 + xdrs->x_handy -= len;
73 + memmove(addr, xdrs->x_private, len);
74 + xdrs->x_private += len;
78 -static bool_t xdrmem_putbytes(xdrs, addr, len)
81 -register unsigned int len;
82 +static bool_t xdrmem_putbytes(XDR* xdrs, char* addr, unsigned int len)
85 - if ((xdrs->x_handy -= len) < 0)
87 - memmove(xdrs->x_private, addr, len);
88 - xdrs->x_private += len;
90 + if (xdrs->x_handy < len) return FALSE;
91 + xdrs->x_handy -= len;
92 + memmove(xdrs->x_private, addr, len);
93 + xdrs->x_private += len;
97 static unsigned int xdrmem_getpos(xdrs)
102 - register char* newaddr = xdrs->x_base + pos;
103 - register char* lastaddr = xdrs->x_private + xdrs->x_handy;
104 + register char* newaddr = xdrs->x_base + pos;
105 + register char* lastaddr = xdrs->x_private + xdrs->x_handy;
107 - if ((long) newaddr > (long) lastaddr)
109 - xdrs->x_private = newaddr;
110 - xdrs->x_handy = (int) lastaddr - (int) newaddr;
112 + if ((long) newaddr > (long) lastaddr || (long)newaddr<(long)xdrs->x_base)
114 + xdrs->x_private = newaddr;
115 + xdrs->x_handy = (int) lastaddr - (int) newaddr;
119 static int32_t *xdrmem_inline(xdrs, len)
126 --- dietlibc-0.12.orig/librpc/xdr_rec.c
127 +++ dietlibc-0.12/librpc/xdr_rec.c
132 -static int32_t *xdrrec_inline(xdrs, len)
135 +static int32_t *xdrrec_inline(XDR* xdrs, unsigned int len)
137 register RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
139 --- dietlibc-0.12.orig/librpc/xdr_stdio.c
140 +++ dietlibc-0.12/librpc/xdr_stdio.c
145 -static int32_t *xdrstdio_inline(xdrs, len)
148 +static int32_t *xdrstdio_inline(XDR* xdrs, unsigned int len)
152 --- dietlibc-0.12.orig/include/rpc/xdr.h
153 +++ dietlibc-0.12/include/rpc/xdr.h
155 /* returns bytes off from beginning */
156 bool_t (*x_setpostn) (XDR *__xdrs, unsigned int __pos);
157 /* lets you reposition the stream */
158 - int32_t *(*x_inline) (XDR *__xdrs, int __len);
159 + int32_t *(*x_inline) (XDR *__xdrs, unsigned int __len);
160 /* buf quick ptr to buffered data */
161 void (*x_destroy) (XDR *__xdrs);
162 /* free privates of this xdr_stream */
164 char* x_public; /* users' data */
165 char* x_private; /* pointer to private data */
166 char* x_base; /* private used for position info */
167 - int x_handy; /* extra private word */
168 + unsigned int x_handy; /* extra private word */