diff options
author | Yann Ylavic <ylavic@apache.org> | 2022-01-12 12:48:03 +0000 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2022-01-12 12:48:03 +0000 |
commit | a7e67a659eb65d885951f41cfd0cf8ad96a712b6 (patch) | |
tree | 034ba97f0ecc9595feed24cd49e81569a0e4ef01 | |
parent | 0f97e7e6b44fd87a0e705388f15bf8c618bb5e56 (diff) | |
download | apr-a7e67a659eb65d885951f41cfd0cf8ad96a712b6.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.c | 7 |
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 |