Date: Mon, 8 Jun 2009 19:59:27 +0000 (UTC) From: Dag-Erling Smorgrav <des@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r193745 - in stable/7/lib/libc: . rpc Message-ID: <200906081959.n58JxRaF041391@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906081959.n58JxRaF041391>