From: Viktor Szakats Date: Wed, 24 Dec 2025 00:13:19 +0000 (+0100) Subject: os400sys: replace `strcpy()` with `memcpy()` X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=sidebyside;p=thirdparty%2Fcurl.git os400sys: replace `strcpy()` with `memcpy()` Source and target are the same size, null-terminator is already present in the target buffer. Closes #20089 --- diff --git a/packages/OS400/os400sys.c b/packages/OS400/os400sys.c index f3da1a4105..3ae28205dd 100644 --- a/packages/OS400/os400sys.c +++ b/packages/OS400/os400sys.c @@ -705,14 +705,14 @@ char *Curl_ldap_get_dn_a(void *ld, LDAPMessage *entry) return cp2; QadrtConvertE2A(cp2, cp, i, i); - cp2[i] = '\0'; /* No way to allocate a buffer here, because it will be released by ldap_memfree() and ldap_memalloc() does not exist. The solution is to - overwrite the EBCDIC buffer with ASCII to return it. */ + overwrite the EBCDIC buffer with ASCII to return it. - /* !checksrc! disable BANNEDFUNC 1 */ - strcpy(cp, cp2); + The destination buffer already has a null-terminator at the correct + position. Keep it outouched and copy the buffer without a terminator. */ + memcpy(cp, cp2, i); free(cp2); return cp; } @@ -736,14 +736,14 @@ char *Curl_ldap_first_attribute_a(void *ld, LDAPMessage *entry, return cp2; QadrtConvertE2A(cp2, cp, i, i); - cp2[i] = '\0'; /* No way to allocate a buffer here, because it will be released by ldap_memfree() and ldap_memalloc() does not exist. The solution is to - overwrite the EBCDIC buffer with ASCII to return it. */ + overwrite the EBCDIC buffer with ASCII to return it. - /* !checksrc! disable BANNEDFUNC 1 */ - strcpy(cp, cp2); + The destination buffer already has a null-terminator at the correct + position. Keep it outouched and copy the buffer without a terminator. */ + memcpy(cp, cp2, i); free(cp2); return cp; } @@ -767,14 +767,14 @@ char *Curl_ldap_next_attribute_a(void *ld, LDAPMessage *entry, return cp2; QadrtConvertE2A(cp2, cp, i, i); - cp2[i] = '\0'; /* No way to allocate a buffer here, because it will be released by ldap_memfree() and ldap_memalloc() does not exist. The solution is to - overwrite the EBCDIC buffer with ASCII to return it. */ + overwrite the EBCDIC buffer with ASCII to return it. - /* !checksrc! disable BANNEDFUNC 1 */ - strcpy(cp, cp2); + The destination buffer already has a null-terminator at the correct + position. Keep it outouched and copy the buffer without a terminator. */ + memcpy(cp, cp2, i); free(cp2); return cp; }