diff mbox

Replace bcopy() calls with equivalent memmove() calls

Message ID d64c84f4-6253-5a31-0bff-771ebff2fa28@gentoo.org (mailing list archive)
State New, archived
Headers show

Commit Message

Joshua Kinard July 31, 2017, 4:26 a.m. UTC
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

Comments

Chuck Lever July 31, 2017, 2:47 p.m. UTC | #1
> 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 mbox

Patch

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);