summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68>2022-01-12 12:48:03 +0000
committerylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68>2022-01-12 12:48:03 +0000
commit67043ea8687ed689183af9c98f0c347e459fb805 (patch)
tree034ba97f0ecc9595feed24cd49e81569a0e4ef01
parent8ae83eba047e1fd0635fa401b9cee742626466ae (diff)
downloadlibapr-67043ea8687ed689183af9c98f0c347e459fb805.tar.gz
Merge r1896956 from trunk:
apr_sockaddr_ip_getbuf: Follow up to r1883728. Return APR_ENOSPC if returned buf is truncated for an AF_UNIX. Submitted by: ylavic git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x@1896958 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--network_io/unix/sockaddr.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/network_io/unix/sockaddr.c b/network_io/unix/sockaddr.c
index 487e2ab99..a31867dc4 100644
--- a/network_io/unix/sockaddr.c
+++ b/network_io/unix/sockaddr.c
@@ -120,9 +120,10 @@ APR_DECLARE(apr_status_t) apr_sockaddr_ip_getbuf(char *buf, apr_size_t buflen,
{
#if APR_HAVE_SOCKADDR_UN
if (sockaddr->family == APR_UNIX) {
- apr_size_t len = (apr_size_t)sockaddr->ipaddr_len;
- apr_cpystrn(buf, sockaddr->ipaddr_ptr, buflen < len ? buflen : len);
- return APR_SUCCESS;
+ const char *ptr = sockaddr->ipaddr_ptr;
+ apr_size_t len = apr_cpystrn(buf, ptr, buflen) - buf;
+ /* assumes that sockaddr->ipaddr_ptr is nul terminated */
+ return ptr[len] ? APR_ENOSPC : APR_SUCCESS;
}
#endif