OSDN Git Service

sync with glibc
authorMike Frysinger <vapier@gentoo.org>
Mon, 23 Jan 2006 23:22:10 +0000 (23:22 -0000)
committerMike Frysinger <vapier@gentoo.org>
Mon, 23 Jan 2006 23:22:10 +0000 (23:22 -0000)
include/rpc/xdr.h
libc/inet/rpc/Makefile.in
libc/inet/rpc/auth_none.c
libc/inet/rpc/rpc_cmsg.c [moved from libc/inet/rpc/rpc_callmsg.c with 100% similarity]
libc/inet/rpc/svc_authux.c [moved from libc/inet/rpc/svc_auth_unix.c with 100% similarity]
libc/inet/rpc/xdr_mem.c
libc/inet/rpc/xdr_rec.c
libc/inet/rpc/xdr_stdio.c

index 4b2bb0e..d2d097c 100644 (file)
 #ifdef _LIBC
 /* Some adjustments to make the libc source from glibc
  * compile more easily with uClibc... */
-#ifndef __FORCE_GLIBC
-#define __FORCE_GLIBC
-#endif
-#ifndef _GNU_SOUCE
-#define _GNU_SOUCE
-#endif
-#define _(X)   X
+# ifndef __FORCE_GLIBC
+#  define __FORCE_GLIBC
+# endif
+# ifndef _GNU_SOUCE
+#  define _GNU_SOUCE
+# endif
+# define _(X)  X
 #endif
 #include <features.h>
 #include <sys/types.h>
@@ -137,7 +137,7 @@ struct XDR
        /* returns bytes off from beginning */
        bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos);
        /* lets you reposition the stream */
-       int32_t *(*x_inline) (XDR *__xdrs, int __len);
+       int32_t *(*x_inline) (XDR *__xdrs, u_int __len);
        /* buf quick ptr to buffered data */
        void (*x_destroy) (XDR *__xdrs);
        /* free privates of this xdr_stream */
@@ -150,7 +150,7 @@ struct XDR
     caddr_t x_public;          /* users' data */
     caddr_t x_private;         /* pointer to private data */
     caddr_t x_base;            /* private used for position info */
-    int x_handy;               /* extra private word */
+    u_int x_handy;             /* extra private word */
   };
 
 /*
@@ -273,20 +273,8 @@ struct xdr_discrim
  * and shouldn't be used any longer. Code which use this defines or longs
  * in the RPC code will not work on 64bit Solaris platforms !
  */
-/* #define IXDR_GET_LONG(buf) \ */
-/*     ((long)ntohl((u_long)*(*(u_int32_t**)&(buf))++)) */
-/* #define IXDR_PUT_LONG(buf, v) \ */
-/*     (*(*(u_int32_t**)&(buf))++ = (long)htonl((u_long)(v))) */
-
-/* WARNING: These macros are not safe against side effects for the 'buf'
- * argument.  But the old versions they're replacing took the address of
- * 'buf' and were probably not safe in that situation either. */
-#define IXDR_GET_LONG(buf) \
-       ((long) ntohl((u_long) (((u_int32_t *)(buf = (void *)(((char *) buf) + sizeof(u_int32_t))))[-1]) ))
-#define IXDR_PUT_LONG(buf, v) \
-       (((u_int32_t *)(buf = (void *)(((char *) buf) + sizeof(u_int32_t))))[-1]) = (long)htonl((u_long)(v))
-
-
+#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))
+#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))
 #define IXDR_GET_U_LONG(buf)         ((u_long)IXDR_GET_LONG(buf))
 #define IXDR_PUT_U_LONG(buf, v)              IXDR_PUT_LONG(buf, (long)(v))
 
index 9bfa781..0b766f2 100644 (file)
@@ -11,8 +11,8 @@ CSRC:=        auth_none.c auth_unix.c authunix_prot.c bindresvport.c \
        clnt_generic.c clnt_perror.c clnt_raw.c clnt_simple.c clnt_tcp.c \
        clnt_udp.c rpc_dtablesize.c get_myaddress.c getrpcent.c getrpcport.c \
        pmap_clnt.c pmap_getmaps.c pmap_getport.c pmap_prot.c \
-       pmap_prot2.c pmap_rmt.c rpc_prot.c rpc_commondata.c rpc_callmsg.c \
-       svc.c svc_auth.c svc_auth_unix.c svc_raw.c svc_run.c svc_simple.c \
+       pmap_prot2.c pmap_rmt.c rpc_prot.c rpc_commondata.c rpc_cmsg.c \
+       svc.c svc_auth.c svc_authux.c svc_raw.c svc_run.c svc_simple.c \
        svc_tcp.c svc_udp.c xdr.c xdr_array.c xdr_float.c xdr_mem.c \
        xdr_rec.c xdr_reference.c xdr_stdio.c \
        rtime.c clnt_unix.c svc_unix.c create_xid.c xdr_intXX_t.c rcmd.c \
index e69dc22..0585102 100644 (file)
@@ -42,7 +42,7 @@
 libc_hidden_proto(xdrmem_create)
 libc_hidden_proto(xdr_opaque_auth)
 
-#define MAX_MARSHEL_SIZE 20
+#define MAX_MARSHAL_SIZE 20
 
 /*
  * Authenticator operations routines
@@ -53,7 +53,7 @@ static bool_t authnone_marshal (AUTH *, XDR *);
 static bool_t authnone_validate (AUTH *, struct opaque_auth *);
 static bool_t authnone_refresh (AUTH *);
 
-static struct auth_ops ops = {
+static const struct auth_ops ops = {
   authnone_verf,
   authnone_marshal,
   authnone_validate,
@@ -61,9 +61,11 @@ static struct auth_ops ops = {
   authnone_destroy
 };
 
+/* Internal data and routines */
+
 struct authnone_private_s {
   AUTH no_client;
-  char marshalled_client[MAX_MARSHEL_SIZE];
+  char marshalled_client[MAX_MARSHAL_SIZE];
   u_int mcnt;
 };
 #ifdef __UCLIBC_HAS_THREADS__
@@ -91,9 +93,9 @@ authnone_create (void)
   if (!ap->mcnt)
     {
       ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth;
-      ap->no_client.ah_ops = &ops;
+      ap->no_client.ah_ops = (struct auth_ops *)&ops;
       xdrs = &xdr_stream;
-      xdrmem_create (xdrs, ap->marshalled_client, (u_int) MAX_MARSHEL_SIZE,
+      xdrmem_create (xdrs, ap->marshalled_client, (u_int) MAX_MARSHAL_SIZE,
                     XDR_ENCODE);
       (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_cred);
       (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_verf);
@@ -104,7 +106,6 @@ authnone_create (void)
 }
 libc_hidden_def(authnone_create)
 
-/*ARGSUSED */
 static bool_t
 authnone_marshal (AUTH *client attribute_unused, XDR *xdrs)
 {
index 191672e..7613ffc 100644 (file)
  *
  */
 
-#define __FORCE_GLIBC
 #include <features.h>
-
-
 #include <string.h>
+#include <limits.h>
 #include <rpc/rpc.h>
 
 libc_hidden_proto(memcpy)
@@ -53,7 +51,7 @@ static bool_t xdrmem_getbytes (XDR *, caddr_t, u_int);
 static bool_t xdrmem_putbytes (XDR *, const char *, u_int);
 static u_int xdrmem_getpos (const XDR *);
 static bool_t xdrmem_setpos (XDR *, u_int);
-static int32_t *xdrmem_inline (XDR *, int);
+static int32_t *xdrmem_inline (XDR *, u_int);
 static void xdrmem_destroy (XDR *);
 static bool_t xdrmem_getint32 (XDR *, int32_t *);
 static bool_t xdrmem_putint32 (XDR *, const int32_t *);
@@ -107,8 +105,9 @@ xdrmem_destroy (XDR *xdrs attribute_unused)
 static bool_t
 xdrmem_getlong (XDR *xdrs, long *lp)
 {
-  if ((xdrs->x_handy -= 4) < 0)
+  if (xdrs->x_handy < 4)
     return FALSE;
+  xdrs->x_handy -= 4;
   *lp = (int32_t) ntohl ((*((int32_t *) (xdrs->x_private))));
   xdrs->x_private += 4;
   return TRUE;
@@ -122,8 +121,9 @@ xdrmem_getlong (XDR *xdrs, long *lp)
 static bool_t
 xdrmem_putlong (XDR *xdrs, const long *lp)
 {
-  if ((xdrs->x_handy -= 4) < 0)
+  if (xdrs->x_handy < 4)
     return FALSE;
+  xdrs->x_handy -= 4;
   *(int32_t *) xdrs->x_private = htonl (*lp);
   xdrs->x_private += 4;
   return TRUE;
@@ -138,8 +138,9 @@ xdrmem_putlong (XDR *xdrs, const long *lp)
 static bool_t
 xdrmem_getbytes (XDR *xdrs, caddr_t addr, u_int len)
 {
-  if ((xdrs->x_handy -= len) < 0)
+  if (xdrs->x_handy < len)
     return FALSE;
+  xdrs->x_handy -= len;
   memcpy (addr, xdrs->x_private, len);
   xdrs->x_private += len;
   return TRUE;
@@ -152,8 +153,9 @@ xdrmem_getbytes (XDR *xdrs, caddr_t addr, u_int len)
 static bool_t
 xdrmem_putbytes (XDR *xdrs, const char *addr, u_int len)
 {
-  if ((xdrs->x_handy -= len) < 0)
+  if (xdrs->x_handy < len)
     return FALSE;
+  xdrs->x_handy -= len;
   memcpy (xdrs->x_private, addr, len);
   xdrs->x_private += len;
   return TRUE;
@@ -180,7 +182,9 @@ xdrmem_setpos (xdrs, pos)
   caddr_t newaddr = xdrs->x_base + pos;
   caddr_t lastaddr = xdrs->x_private + xdrs->x_handy;
 
-  if ((long) newaddr > (long) lastaddr)
+  if ((long) newaddr > (long) lastaddr
+      || (UINT_MAX < LONG_MAX
+         && (long) UINT_MAX < (long) lastaddr - (long) newaddr))
     return FALSE;
   xdrs->x_private = newaddr;
   xdrs->x_handy = (long) lastaddr - (long) newaddr;
@@ -191,7 +195,7 @@ xdrmem_setpos (xdrs, pos)
  * xdrs modified
  */
 static int32_t *
-xdrmem_inline (XDR *xdrs, int len)
+xdrmem_inline (XDR *xdrs, u_int len)
 {
   int32_t *buf = 0;
 
@@ -212,8 +216,9 @@ xdrmem_inline (XDR *xdrs, int len)
 static bool_t
 xdrmem_getint32 (XDR *xdrs, int32_t *ip)
 {
-  if ((xdrs->x_handy -= 4) < 0)
+  if (xdrs->x_handy < 4)
     return FALSE;
+  xdrs->x_handy -= 4;
   *ip = ntohl ((*((int32_t *) (xdrs->x_private))));
   xdrs->x_private += 4;
   return TRUE;
@@ -227,8 +232,9 @@ xdrmem_getint32 (XDR *xdrs, int32_t *ip)
 static bool_t
 xdrmem_putint32 (XDR *xdrs, const int32_t *ip)
 {
-  if ((xdrs->x_handy -= 4) < 0)
+  if (xdrs->x_handy < 4)
     return FALSE;
+  xdrs->x_handy -= 4;
   *(int32_t *) xdrs->x_private = htonl (*ip);
   xdrs->x_private += 4;
   return TRUE;
index 4534a83..99e6fe9 100644 (file)
@@ -71,7 +71,7 @@ static bool_t xdrrec_getbytes (XDR *, caddr_t, u_int);
 static bool_t xdrrec_putbytes (XDR *, const char *, u_int);
 static u_int xdrrec_getpos (const XDR *);
 static bool_t xdrrec_setpos (XDR *, u_int);
-static int32_t *xdrrec_inline (XDR *, int);
+static int32_t *xdrrec_inline (XDR *, u_int);
 static void xdrrec_destroy (XDR *);
 static bool_t xdrrec_getint32 (XDR *, int32_t *);
 static bool_t xdrrec_putint32 (XDR *, const int32_t *);
@@ -384,7 +384,7 @@ xdrrec_setpos (XDR *xdrs, u_int pos)
 }
 
 static int32_t *
-xdrrec_inline (XDR *xdrs, int len)
+xdrrec_inline (XDR *xdrs, u_int len)
 {
   RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
   int32_t *buf = NULL;
index 8bd0859..32689e1 100644 (file)
@@ -61,7 +61,7 @@ static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int);
 static bool_t xdrstdio_putbytes (XDR *, const char *, u_int);
 static u_int xdrstdio_getpos (const XDR *);
 static bool_t xdrstdio_setpos (XDR *, u_int);
-static int32_t *xdrstdio_inline (XDR *, int);
+static int32_t *xdrstdio_inline (XDR *, u_int);
 static void xdrstdio_destroy (XDR *);
 static bool_t xdrstdio_getint32 (XDR *, int32_t *);
 static bool_t xdrstdio_putint32 (XDR *, const int32_t *);
@@ -114,20 +114,20 @@ xdrstdio_destroy (XDR *xdrs)
 static bool_t
 xdrstdio_getlong (XDR *xdrs, long *lp)
 {
-  int32_t mycopy;
+  u_int32_t mycopy;
 
-  if (fread ((caddr_t) & mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
+  if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
     return FALSE;
-  *lp = (int32_t) ntohl (mycopy);
+  *lp = (long) ntohl (mycopy);
   return TRUE;
 }
 
 static bool_t
 xdrstdio_putlong (XDR *xdrs, const long *lp)
 {
-  long mycopy = htonl (*lp);
-  lp = &mycopy;
-  if (fwrite ((caddr_t) lp, 4, 1, (FILE *) xdrs->x_private) != 1)
+  int32_t mycopy = htonl ((u_int32_t) *lp);
+
+  if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
     return FALSE;
   return TRUE;
 }
@@ -163,7 +163,7 @@ xdrstdio_setpos (XDR *xdrs, u_int pos)
 }
 
 static int32_t *
-xdrstdio_inline (XDR *xdrs attribute_unused, int len attribute_unused)
+xdrstdio_inline (XDR *xdrs attribute_unused, u_int len attribute_unused)
 {
   /*
    * Must do some work to implement this: must insure