pull up r21906 from trunk
authorTom Yu <tlyu@mit.edu>
Thu, 19 Feb 2009 00:36:31 +0000 (00:36 +0000)
committerTom Yu <tlyu@mit.edu>
Thu, 19 Feb 2009 00:36:31 +0000 (00:36 +0000)
 ------------------------------------------------------------------------
 r21906 | epeisach | 2009-02-06 00:22:34 -0500 (Fri, 06 Feb 2009) | 12 lines
 Changed paths:
    M /trunk/src/lib/kadm5/kadm_rpc_xdr.c

 ticket: 6374
 subject: Do not assume sizeof(bool_t) == sizeof(krb5_boolean)

 bool_t is defined as int, krb5_boolean as unsigned int.  These are
 similar size but someone someday might change the krb5_boolean.
 Instead of passing a krb5_boolean * to xdr_bool, implement xdr_krb5_boolean
 which keeps the different types separate.

 This cleans up a number of warnings.

 ------------------------------------------------------------------------

ticket: 6374
version_fixed: 1.7
status: resolved

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-7@22029 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/kadm5/kadm_rpc_xdr.c

index d760ff14d10f9e0bd3aaf94d94840854ac98d54a..00b9ae226707c2d21e039b67feb5e14ca7713694 100644 (file)
@@ -220,6 +220,29 @@ xdr_krb5_ui_2(XDR *xdrs, krb5_ui_2 *objp)
 
 
 
+static bool_t xdr_krb5_boolean(XDR *xdrs, krb5_boolean *kbool)
+{
+       bool_t val;
+       
+       switch (xdrs->x_op) {
+       case XDR_DECODE:
+            if (!xdr_bool(xdrs, &val))
+                    return FALSE;
+            
+            *kbool = (val == FALSE) ? FALSE : TRUE;
+            return TRUE;
+            
+       case XDR_ENCODE:
+            val = *kbool ? TRUE : FALSE;
+            return xdr_bool(xdrs, &val);
+
+       case XDR_FREE:
+            return TRUE;
+       }
+       
+       return FALSE;
+}
+
 bool_t xdr_krb5_key_data_nocontents(XDR *xdrs, krb5_key_data *objp)
 {
      /*
@@ -655,7 +678,7 @@ xdr_chpass3_arg(XDR *xdrs, chpass3_arg *objp)
        if (!xdr_krb5_principal(xdrs, &objp->princ)) {
                return (FALSE);
        }
-       if (!xdr_bool(xdrs, &objp->keepold)) {
+       if (!xdr_krb5_boolean(xdrs, &objp->keepold)) {
                return (FALSE);
        }
        if (!xdr_array(xdrs, (caddr_t *)&objp->ks_tuple,
@@ -715,7 +738,7 @@ xdr_setkey3_arg(XDR *xdrs, setkey3_arg *objp)
        if (!xdr_krb5_principal(xdrs, &objp->princ)) {
                return (FALSE);
        }
-       if (!xdr_bool(xdrs, &objp->keepold)) {
+       if (!xdr_krb5_boolean(xdrs, &objp->keepold)) {
                return (FALSE);
        }
        if (!xdr_array(xdrs, (caddr_t *) &objp->ks_tuple,
@@ -752,7 +775,7 @@ xdr_chrand3_arg(XDR *xdrs, chrand3_arg *objp)
        if (!xdr_krb5_principal(xdrs, &objp->princ)) {
                return (FALSE);
        }
-       if (!xdr_bool(xdrs, &objp->keepold)) {
+       if (!xdr_krb5_boolean(xdrs, &objp->keepold)) {
                return (FALSE);
        }
        if (!xdr_array(xdrs, (caddr_t *)&objp->ks_tuple,