Message ID | d64c84f4-6253-5a31-0bff-771ebff2fa28@gentoo.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> On Jul 31, 2017, at 12:26 AM, Joshua Kinard <kumba@gentoo.org> wrote: > > As annotated in the bcopy(3) man page, bcopy() was marked as LEGACY in > POSIX.1-2001 and removed in POSIX.1-2008, and should be replaced with > either memcpy() or memmove() calls to copy bytes from one memory region to > another. The attached patch replaces all bcopy() calls in libtirpc with > equivalent memmove() calls. As far as I can tell these are all deprecated code paths. memmove(3) should be safe in all cases, but there's no way to test the change. Reviewed-by: Chuck Lever <chuck.lever@oracle.com> > Signed-off-by: Joshua Kinard <kumba@gentoo.org> > --- > > src/auth_time.c | 2 +- > src/crypt_client.c | 8 ++++---- > src/svc_auth_des.c | 2 +- > 3 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/src/auth_time.c b/src/auth_time.c > index 210d251..5426902 100644 > --- a/src/auth_time.c > +++ b/src/auth_time.c > @@ -104,7 +104,7 @@ static int uaddr_to_sockaddr(uaddr, sin) > p_bytes[1] = (unsigned char)a[5] & 0x000000FF; > > sin->sin_family = AF_INET; /* always */ > - bcopy((char *)&p_bytes, (char *)&sin->sin_port, 2); > + memmove((char *)&sin->sin_port, (char *)&p_bytes, 2); > > return (0); > } > diff --git a/src/crypt_client.c b/src/crypt_client.c > index f393926..b8c5767 100644 > --- a/src/crypt_client.c > +++ b/src/crypt_client.c > @@ -75,8 +75,8 @@ _des_crypt_call(buf, len, dparms) > des_crypt_1_arg.desbuf.desbuf_val = buf; > des_crypt_1_arg.des_dir = dparms->des_dir; > des_crypt_1_arg.des_mode = dparms->des_mode; > - bcopy(dparms->des_ivec, des_crypt_1_arg.des_ivec, 8); > - bcopy(dparms->des_key, des_crypt_1_arg.des_key, 8); > + memmove(des_crypt_1_arg.des_ivec, dparms->des_ivec, 8); > + memmove(des_crypt_1_arg.des_key, dparms->des_key, 8); > > result_1 = des_crypt_1(&des_crypt_1_arg, clnt); > if (result_1 == (desresp *) NULL) { > @@ -88,8 +88,8 @@ _des_crypt_call(buf, len, dparms) > > if (result_1->stat == DESERR_NONE || > result_1->stat == DESERR_NOHWDEVICE) { > - bcopy(result_1->desbuf.desbuf_val, buf, len); > - bcopy(result_1->des_ivec, dparms->des_ivec, 8); > + memmove(buf, result_1->desbuf.desbuf_val, len); > + memmove(dparms->des_ivec, result_1->des_ivec, 8); > } > > clnt_freeres(clnt, (xdrproc_t)xdr_desresp, result_1); > diff --git a/src/svc_auth_des.c b/src/svc_auth_des.c > index 64a7682..5813c5a 100644 > --- a/src/svc_auth_des.c > +++ b/src/svc_auth_des.c > @@ -145,7 +145,7 @@ _svcauth_des(rqst, msg) > return (AUTH_BADCRED); > } > cred->adc_fullname.name = area->area_netname; > - bcopy((char *)ixdr, cred->adc_fullname.name, > + memmove(cred->adc_fullname.name, (char *)ixdr, > (u_int)namelen); > cred->adc_fullname.name[namelen] = 0; > ixdr += (RNDUP(namelen) / BYTES_PER_XDR_UNIT); > -- Chuck Lever chucklever@gmail.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/src/auth_time.c b/src/auth_time.c index 210d251..5426902 100644 --- a/src/auth_time.c +++ b/src/auth_time.c @@ -104,7 +104,7 @@ static int uaddr_to_sockaddr(uaddr, sin) p_bytes[1] = (unsigned char)a[5] & 0x000000FF; sin->sin_family = AF_INET; /* always */ - bcopy((char *)&p_bytes, (char *)&sin->sin_port, 2); + memmove((char *)&sin->sin_port, (char *)&p_bytes, 2); return (0); } diff --git a/src/crypt_client.c b/src/crypt_client.c index f393926..b8c5767 100644 --- a/src/crypt_client.c +++ b/src/crypt_client.c @@ -75,8 +75,8 @@ _des_crypt_call(buf, len, dparms) des_crypt_1_arg.desbuf.desbuf_val = buf; des_crypt_1_arg.des_dir = dparms->des_dir; des_crypt_1_arg.des_mode = dparms->des_mode; - bcopy(dparms->des_ivec, des_crypt_1_arg.des_ivec, 8); - bcopy(dparms->des_key, des_crypt_1_arg.des_key, 8); + memmove(des_crypt_1_arg.des_ivec, dparms->des_ivec, 8); + memmove(des_crypt_1_arg.des_key, dparms->des_key, 8); result_1 = des_crypt_1(&des_crypt_1_arg, clnt); if (result_1 == (desresp *) NULL) { @@ -88,8 +88,8 @@ _des_crypt_call(buf, len, dparms) if (result_1->stat == DESERR_NONE || result_1->stat == DESERR_NOHWDEVICE) { - bcopy(result_1->desbuf.desbuf_val, buf, len); - bcopy(result_1->des_ivec, dparms->des_ivec, 8); + memmove(buf, result_1->desbuf.desbuf_val, len); + memmove(dparms->des_ivec, result_1->des_ivec, 8); } clnt_freeres(clnt, (xdrproc_t)xdr_desresp, result_1); diff --git a/src/svc_auth_des.c b/src/svc_auth_des.c index 64a7682..5813c5a 100644 --- a/src/svc_auth_des.c +++ b/src/svc_auth_des.c @@ -145,7 +145,7 @@ _svcauth_des(rqst, msg) return (AUTH_BADCRED); } cred->adc_fullname.name = area->area_netname; - bcopy((char *)ixdr, cred->adc_fullname.name, + memmove(cred->adc_fullname.name, (char *)ixdr, (u_int)namelen); cred->adc_fullname.name[namelen] = 0; ixdr += (RNDUP(namelen) / BYTES_PER_XDR_UNIT);
As annotated in the bcopy(3) man page, bcopy() was marked as LEGACY in POSIX.1-2001 and removed in POSIX.1-2008, and should be replaced with either memcpy() or memmove() calls to copy bytes from one memory region to another. The attached patch replaces all bcopy() calls in libtirpc with equivalent memmove() calls. Signed-off-by: Joshua Kinard <kumba@gentoo.org> --- src/auth_time.c | 2 +- src/crypt_client.c | 8 ++++---- src/svc_auth_des.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html