diff options
Diffstat (limited to 'src/platform')
| -rw-r--r-- | src/platform/posix/posix_ipc.c | 7 | ||||
| -rw-r--r-- | src/platform/posix/posix_sockaddr.c | 5 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/platform/posix/posix_ipc.c b/src/platform/posix/posix_ipc.c index 2daec4ea..f0a9a973 100644 --- a/src/platform/posix/posix_ipc.c +++ b/src/platform/posix/posix_ipc.c @@ -98,9 +98,14 @@ nni_plat_ipc_remove_stale(const char *path) int fd; int rv; struct sockaddr_un sun; + size_t sz; sun.sun_family = AF_UNIX; - snprintf(sun.sun_path, sizeof(sun.sun_path), "%s", path); + sz = sizeof(sun.sun_path); + + if (nni_strlcpy(sun.sun_path, path, sz) >= sz) { + return (NNG_EADDRINVAL); + } if ((fd = socket(AF_UNIX, NNI_STREAM_SOCKTYPE, 0)) < 0) { return (nni_plat_errno(errno)); diff --git a/src/platform/posix/posix_sockaddr.c b/src/platform/posix/posix_sockaddr.c index 21a2b863..ea630b01 100644 --- a/src/platform/posix/posix_sockaddr.c +++ b/src/platform/posix/posix_sockaddr.c @@ -31,6 +31,7 @@ nni_posix_nn2sockaddr(void *sa, const nni_sockaddr *na) const nng_sockaddr_in * nsin; const nng_sockaddr_in6 * nsin6; const nng_sockaddr_path *nspath; + size_t sz; switch (na->s_un.s_family) { case NNG_AF_INET: @@ -59,8 +60,8 @@ nni_posix_nn2sockaddr(void *sa, const nni_sockaddr *na) nspath = &na->s_un.s_path; memset(spath, 0, sizeof(*spath)); // Make sure that the path fits! - if (snprintf(spath->sun_path, sizeof(spath->sun_path), "%s", - nspath->sa_path) >= sizeof(spath->sun_path)) { + sz = sizeof(spath->sun_path); + if (nni_strlcpy(spath->sun_path, nspath->sa_path, sz) >= sz) { return (-1); } spath->sun_family = PF_UNIX; |
