]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Silence warnings in lib/rpc 541/head
authorTom Yu <tlyu@mit.edu>
Tue, 20 Sep 2016 19:58:50 +0000 (15:58 -0400)
committerTom Yu <tlyu@mit.edu>
Wed, 21 Sep 2016 19:23:25 +0000 (15:23 -0400)
Cast through (void *) in xdr.c to silence pointer target width
warnings.  In xdr_sizeof.c, use x_private and x_base as proper
pointers as in xdr_mem.c instead of trying to store an integer in a
pointer.

src/lib/rpc/xdr.c
src/lib/rpc/xdr_sizeof.c

index 42611080fb4c63c87d6e672dc9c916b9f3cbbde3..2b7c17be35b121eeb83a2de9d5af1d0be4cf5288 100644 (file)
@@ -362,17 +362,17 @@ xdr_enum(XDR *xdrs, enum_t *ep)
                break;
        }
        if (sizeof (enum sizecheck) == sizeof (long)) {
-               return (xdr_long(xdrs, (long *)ep));
+               return (xdr_long(xdrs, (long *)(void *)ep));
        } else if (sizeof (enum sizecheck) == sizeof (int)) {
-               return (xdr_int(xdrs, (int *)ep));
+               return (xdr_int(xdrs, (int *)(void *)ep));
        } else if (sizeof (enum sizecheck) == sizeof (short)) {
-               return (xdr_short(xdrs, (short *)ep));
+               return (xdr_short(xdrs, (short *)(void *)ep));
        } else {
                return (FALSE);
        }
 #else
-       (void) (xdr_short(xdrs, (short *)ep));
-       return (xdr_long(xdrs, (long *)ep));
+       (void) (xdr_short(xdrs, (short *)(void *)ep));
+       return (xdr_long(xdrs, (long *)(void *)ep));
 #endif
 }
 
index 145e387555954755525c76e7ec645e40ee7e6dc7..5b77fa6ac07dd327e146c708381e6a411fe8bd45 100644 (file)
@@ -91,21 +91,21 @@ x_inline(xdrs, len)
        if (xdrs->x_op != XDR_ENCODE) {
                return (NULL);
        }
-       if (len < (int) xdrs->x_base) {
+       if (len < (int) ((caddr_t) xdrs->x_private - xdrs->x_base)) {
                /* x_private was already allocated */
                xdrs->x_handy += len;
                return ((rpc_inline_t *) xdrs->x_private);
        } else {
                /* Free the earlier space and allocate new area */
-               if (xdrs->x_private)
-                       free(xdrs->x_private);
-               if ((xdrs->x_private = (caddr_t) malloc(len)) == NULL) {
-                       xdrs->x_base = 0;
+               if (xdrs->x_base)
+                       free(xdrs->x_base);
+               if ((xdrs->x_base = (caddr_t) malloc(len)) == NULL) {
+                       xdrs->x_private = NULL;
                        return (NULL);
                }
-               xdrs->x_base = (caddr_t) len;
+               xdrs->x_private = xdrs->x_base + len;
                xdrs->x_handy += len;
-               return ((rpc_inline_t *) xdrs->x_private);
+               return ((rpc_inline_t *) (void *) xdrs->x_base);
        }
 }
 
@@ -121,10 +121,10 @@ x_destroy(xdrs)
        XDR *xdrs;
 {
        xdrs->x_handy = 0;
-       xdrs->x_base = 0;
-       if (xdrs->x_private) {
-               free(xdrs->x_private);
-               xdrs->x_private = NULL;
+       xdrs->x_private = NULL;
+       if (xdrs->x_base) {
+               free(xdrs->x_base);
+               xdrs->x_base = NULL;
        }
        return;
 }
@@ -159,7 +159,7 @@ xdr_sizeof(func, data)
        x.x_base = (caddr_t) 0;
 
        stat = func(&x, data);
-       if (x.x_private)
-               free(x.x_private);
+       if (x.x_base)
+               free(x.x_base);
        return (stat == TRUE ? (unsigned) x.x_handy: 0);
 }