Index: lib/libc/rpc/clnt_vc.c =================================================================== RCS file: /cvsroot/src/lib/libc/rpc/clnt_vc.c,v retrieving revision 1.21 diff -u -p -w -b -r1.21 clnt_vc.c --- lib/libc/rpc/clnt_vc.c 11 Mar 2013 20:19:29 -0000 1.21 +++ lib/libc/rpc/clnt_vc.c 14 May 2013 12:11:49 -0000 @@ -519,6 +519,7 @@ clnt_vc_control( sigset_t mask; #endif sigset_t newmask; + u_int32_t temp; _DIAGASSERT(cl != NULL); @@ -599,15 +600,18 @@ clnt_vc_control( * begining of the RPC header. MUST be changed if the * call_struct is changed */ + memcpy(&temp, (void *)(ct->ct_u.ct_mcallc + + 4 * BYTES_PER_XDR_UNIT), sizeof(temp)); + *(u_int32_t *)(void *)info = - ntohl(*(u_int32_t *)(void *)(ct->ct_u.ct_mcallc + - 4 * BYTES_PER_XDR_UNIT)); + ntohl(temp); break; case CLSET_VERS: - *(u_int32_t *)(void *)(ct->ct_u.ct_mcallc + - 4 * BYTES_PER_XDR_UNIT) = - htonl(*(u_int32_t *)(void *)info); + temp = htonl(*(u_int32_t *)(void *)info); + memcpy((void *)(ct->ct_u.ct_mcallc + + 4 * BYTES_PER_XDR_UNIT), + &temp, sizeof(temp)); break; case CLGET_PROG: @@ -617,15 +621,18 @@ clnt_vc_control( * begining of the RPC header. MUST be changed if the * call_struct is changed */ + memcpy(&temp, (void *)(ct->ct_u.ct_mcallc + + 3 * BYTES_PER_XDR_UNIT), sizeof(temp)); + *(u_int32_t *)(void *)info = - ntohl(*(u_int32_t *)(void *)(ct->ct_u.ct_mcallc + - 3 * BYTES_PER_XDR_UNIT)); + ntohl(temp); break; case CLSET_PROG: - *(u_int32_t *)(void *)(ct->ct_u.ct_mcallc + - 3 * BYTES_PER_XDR_UNIT) = - htonl(*(u_int32_t *)(void *)info); + temp = htonl(*(u_int32_t *)(void *)info); + memcpy((void *)(ct->ct_u.ct_mcallc + + 3 * BYTES_PER_XDR_UNIT), + &temp, sizeof(temp)); break; default: