svn commit: r193745 - in stable/7/lib/libc: . rpc

Dag-Erling Smorgrav des at FreeBSD.org
Mon Jun 8 19:59:28 UTC 2009


Author: des
Date: Mon Jun  8 19:59:26 2009
New Revision: 193745
URL: http://svn.freebsd.org/changeset/base/193745

Log:
  merge r173763: fix aliasing bug

Modified:
  stable/7/lib/libc/   (props changed)
  stable/7/lib/libc/rpc/authdes_prot.c
  stable/7/lib/libc/rpc/authunix_prot.c
  stable/7/lib/libc/rpc/key_prot_xdr.c
  stable/7/lib/libc/rpc/rpc_callmsg.c
  stable/7/lib/libc/rpc/rpc_prot.c
  stable/7/lib/libc/rpc/rpcb_prot.c
  stable/7/lib/libc/rpc/rpcb_st_xdr.c

Modified: stable/7/lib/libc/rpc/authdes_prot.c
==============================================================================
--- stable/7/lib/libc/rpc/authdes_prot.c	Mon Jun  8 19:57:35 2009	(r193744)
+++ stable/7/lib/libc/rpc/authdes_prot.c	Mon Jun  8 19:59:26 2009	(r193745)
@@ -54,10 +54,11 @@ xdr_authdes_cred(xdrs, cred)
 	XDR *xdrs;
 	struct authdes_cred *cred;
 {
+	enum authdes_namekind *padc_namekind = &cred->adc_namekind;
 	/*
 	 * Unrolled xdr
 	 */
-	ATTEMPT(xdr_enum(xdrs, (enum_t *)&cred->adc_namekind));
+	ATTEMPT(xdr_enum(xdrs, (enum_t *) padc_namekind));
 	switch (cred->adc_namekind) {
 	case ADN_FULLNAME:
 		ATTEMPT(xdr_string(xdrs, &cred->adc_fullname.name,

Modified: stable/7/lib/libc/rpc/authunix_prot.c
==============================================================================
--- stable/7/lib/libc/rpc/authunix_prot.c	Mon Jun  8 19:57:35 2009	(r193744)
+++ stable/7/lib/libc/rpc/authunix_prot.c	Mon Jun  8 19:59:26 2009	(r193745)
@@ -60,15 +60,18 @@ xdr_authunix_parms(xdrs, p)
 	XDR *xdrs;
 	struct authunix_parms *p;
 {
+	int **paup_gids;
 
 	assert(xdrs != NULL);
 	assert(p != NULL);
 
+	paup_gids = &p->aup_gids;
+
 	if (xdr_u_long(xdrs, &(p->aup_time))
 	    && xdr_string(xdrs, &(p->aup_machname), MAX_MACHINE_NAME)
 	    && xdr_int(xdrs, &(p->aup_uid))
 	    && xdr_int(xdrs, &(p->aup_gid))
-	    && xdr_array(xdrs, (caddr_t *)&(p->aup_gids),
+	    && xdr_array(xdrs, (char **) paup_gids,
 		    &(p->aup_len), NGRPS, sizeof(int), (xdrproc_t)xdr_int) ) {
 		return (TRUE);
 	}

Modified: stable/7/lib/libc/rpc/key_prot_xdr.c
==============================================================================
--- stable/7/lib/libc/rpc/key_prot_xdr.c	Mon Jun  8 19:57:35 2009	(r193744)
+++ stable/7/lib/libc/rpc/key_prot_xdr.c	Mon Jun  8 19:59:26 2009	(r193745)
@@ -117,12 +117,14 @@ xdr_cryptkeyres(register XDR *xdrs, cryp
 bool_t
 xdr_unixcred(register XDR *xdrs, unixcred *objp)
 {
+	u_int **pgids_val;
 
 	if (!xdr_u_int(xdrs, &objp->uid))
 		return (FALSE);
 	if (!xdr_u_int(xdrs, &objp->gid))
 		return (FALSE);
-	if (!xdr_array(xdrs, (char **)&objp->gids.gids_val, (u_int *) &objp->gids.gids_len, MAXGIDS,
+	pgids_val = &objp->gids.gids_val;
+	if (!xdr_array(xdrs, (char **) pgids_val, (u_int *) &objp->gids.gids_len, MAXGIDS,
 		sizeof (u_int), (xdrproc_t) xdr_u_int))
 		return (FALSE);
 	return (TRUE);

Modified: stable/7/lib/libc/rpc/rpc_callmsg.c
==============================================================================
--- stable/7/lib/libc/rpc/rpc_callmsg.c	Mon Jun  8 19:57:35 2009	(r193744)
+++ stable/7/lib/libc/rpc/rpc_callmsg.c	Mon Jun  8 19:59:26 2009	(r193745)
@@ -59,6 +59,7 @@ xdr_callmsg(xdrs, cmsg)
 	XDR *xdrs;
 	struct rpc_msg *cmsg;
 {
+	enum msg_type *prm_direction;
 	int32_t *buf;
 	struct opaque_auth *oa;
 
@@ -190,9 +191,10 @@ xdr_callmsg(xdrs, cmsg)
 			return (TRUE);
 		}
 	}
+	prm_direction = &cmsg->rm_direction;
 	if (
 	    xdr_u_int32_t(xdrs, &(cmsg->rm_xid)) &&
-	    xdr_enum(xdrs, (enum_t *)&(cmsg->rm_direction)) &&
+	    xdr_enum(xdrs, (enum_t *) prm_direction) &&
 	    (cmsg->rm_direction == CALL) &&
 	    xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_rpcvers)) &&
 	    (cmsg->rm_call.cb_rpcvers == RPC_MSG_VERSION) &&

Modified: stable/7/lib/libc/rpc/rpc_prot.c
==============================================================================
--- stable/7/lib/libc/rpc/rpc_prot.c	Mon Jun  8 19:57:35 2009	(r193744)
+++ stable/7/lib/libc/rpc/rpc_prot.c	Mon Jun  8 19:59:26 2009	(r193745)
@@ -108,14 +108,17 @@ xdr_accepted_reply(xdrs, ar)
 	XDR *xdrs;   
 	struct accepted_reply *ar;
 {
+	enum accept_stat *par_stat;
 
 	assert(xdrs != NULL);
 	assert(ar != NULL);
 
+	par_stat = &ar->ar_stat;
+
 	/* personalized union, rather than calling xdr_union */
 	if (! xdr_opaque_auth(xdrs, &(ar->ar_verf)))
 		return (FALSE);
-	if (! xdr_enum(xdrs, (enum_t *)&(ar->ar_stat)))
+	if (! xdr_enum(xdrs, (enum_t *) par_stat))
 		return (FALSE);
 	switch (ar->ar_stat) {
 
@@ -144,12 +147,16 @@ xdr_rejected_reply(xdrs, rr)
 	XDR *xdrs;
 	struct rejected_reply *rr;
 {
+	enum reject_stat *prj_stat;
+	enum auth_stat *prj_why;
 
 	assert(xdrs != NULL);
 	assert(rr != NULL);
 
+	prj_stat = &rr->rj_stat;
+
 	/* personalized union, rather than calling xdr_union */
-	if (! xdr_enum(xdrs, (enum_t *)&(rr->rj_stat)))
+	if (! xdr_enum(xdrs, (enum_t *) prj_stat))
 		return (FALSE);
 	switch (rr->rj_stat) {
 
@@ -159,7 +166,8 @@ xdr_rejected_reply(xdrs, rr)
 		return (xdr_u_int32_t(xdrs, &(rr->rj_vers.high)));
 
 	case AUTH_ERROR:
-		return (xdr_enum(xdrs, (enum_t *)&(rr->rj_why)));
+		prj_why = &rr->rj_why;
+		return (xdr_enum(xdrs, (enum_t *) prj_why));
 	}
 	/* NOTREACHED */
 	assert(0);
@@ -179,14 +187,20 @@ xdr_replymsg(xdrs, rmsg)
 	XDR *xdrs;
 	struct rpc_msg *rmsg;
 {
+	enum msg_type *prm_direction;
+	enum reply_stat *prp_stat;
+
 	assert(xdrs != NULL);
 	assert(rmsg != NULL);
 
+	prm_direction = &rmsg->rm_direction;
+	prp_stat = &rmsg->rm_reply.rp_stat;
+
 	if (
 	    xdr_u_int32_t(xdrs, &(rmsg->rm_xid)) && 
-	    xdr_enum(xdrs, (enum_t *)&(rmsg->rm_direction)) &&
+	    xdr_enum(xdrs, (enum_t *) prm_direction) &&
 	    (rmsg->rm_direction == REPLY) )
-		return (xdr_union(xdrs, (enum_t *)&(rmsg->rm_reply.rp_stat),
+		return (xdr_union(xdrs, (enum_t *) prp_stat,
 		   (caddr_t)(void *)&(rmsg->rm_reply.ru), reply_dscrm,
 		   NULL_xdrproc_t));
 	return (FALSE);
@@ -203,16 +217,19 @@ xdr_callhdr(xdrs, cmsg)
 	XDR *xdrs;
 	struct rpc_msg *cmsg;
 {
+	enum msg_type *prm_direction;
 
 	assert(xdrs != NULL);
 	assert(cmsg != NULL);
 
+	prm_direction = &cmsg->rm_direction;
+
 	cmsg->rm_direction = CALL;
 	cmsg->rm_call.cb_rpcvers = RPC_MSG_VERSION;
 	if (
 	    (xdrs->x_op == XDR_ENCODE) &&
 	    xdr_u_int32_t(xdrs, &(cmsg->rm_xid)) &&
-	    xdr_enum(xdrs, (enum_t *)&(cmsg->rm_direction)) &&
+	    xdr_enum(xdrs, (enum_t *) prm_direction) &&
 	    xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_rpcvers)) &&
 	    xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_prog)) )
 		return (xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_vers)));

Modified: stable/7/lib/libc/rpc/rpcb_prot.c
==============================================================================
--- stable/7/lib/libc/rpc/rpcb_prot.c	Mon Jun  8 19:57:35 2009	(r193744)
+++ stable/7/lib/libc/rpc/rpcb_prot.c	Mon Jun  8 19:59:26 2009	(r193745)
@@ -320,11 +320,13 @@ xdr_netbuf(xdrs, objp)
 	struct netbuf *objp;
 {
 	bool_t dummy;
+	void **pp;
 
 	if (!xdr_u_int32_t(xdrs, (u_int32_t *) &objp->maxlen)) {
 		return (FALSE);
 	}
-	dummy = xdr_bytes(xdrs, (char **)&(objp->buf),
+	pp = &objp->buf;
+	dummy = xdr_bytes(xdrs, (char **) pp,
 			(u_int *)&(objp->len), objp->maxlen);
 	return (dummy);
 }

Modified: stable/7/lib/libc/rpc/rpcb_st_xdr.c
==============================================================================
--- stable/7/lib/libc/rpc/rpcb_st_xdr.c	Mon Jun  8 19:57:35 2009	(r193744)
+++ stable/7/lib/libc/rpc/rpcb_st_xdr.c	Mon Jun  8 19:59:26 2009	(r193745)
@@ -52,6 +52,7 @@ xdr_rpcbs_addrlist(xdrs, objp)
 	XDR *xdrs;
 	rpcbs_addrlist *objp;
 {
+	struct rpcbs_addrlist **pnext;
 
 	    if (!xdr_u_int32_t(xdrs, &objp->prog)) {
 		return (FALSE);
@@ -69,7 +70,9 @@ xdr_rpcbs_addrlist(xdrs, objp)
 		return (FALSE);
 	    }
 
-	    if (!xdr_pointer(xdrs, (char **)&objp->next,
+	    pnext = &objp->next;
+
+	    if (!xdr_pointer(xdrs, (char **) pnext,
 			sizeof (rpcbs_addrlist),
 			(xdrproc_t)xdr_rpcbs_addrlist)) {
 		return (FALSE);
@@ -86,6 +89,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp)
 	rpcbs_rmtcalllist *objp;
 {
 	int32_t *buf;
+	struct rpcbs_rmtcalllist **pnext;
 
 	if (xdrs->x_op == XDR_ENCODE) {
 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
@@ -119,7 +123,8 @@ xdr_rpcbs_rmtcalllist(xdrs, objp)
 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
 		return (FALSE);
 	}
-	if (!xdr_pointer(xdrs, (char **)&objp->next,
+	pnext = &objp->next;
+	if (!xdr_pointer(xdrs, (char **) pnext,
 			sizeof (rpcbs_rmtcalllist),
 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
 		return (FALSE);
@@ -157,7 +162,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp)
 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
 		return (FALSE);
 	}
-	if (!xdr_pointer(xdrs, (char **)&objp->next,
+	if (!xdr_pointer(xdrs, (char **) pnext,
 			sizeof (rpcbs_rmtcalllist),
 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
 		return (FALSE);
@@ -185,7 +190,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp)
 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
 		return (FALSE);
 	}
-	if (!xdr_pointer(xdrs, (char **)&objp->next,
+	if (!xdr_pointer(xdrs, (char **) pnext,
 			sizeof (rpcbs_rmtcalllist),
 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
 		return (FALSE);


More information about the svn-src-all mailing list