aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-08-21 12:17:51 -0700
committerGarrett D'Amore <garrett@damore.org>2017-08-21 12:17:51 -0700
commit6b66debe7532bd7c3b0c88da7332315d90a84d43 (patch)
tree6fe144fd290fe9ff9f9824960449135bf0ff08c1
parent75adda86be49e6839e50443f0bae5875d9910897 (diff)
downloadnng-6b66debe7532bd7c3b0c88da7332315d90a84d43.tar.gz
nng-6b66debe7532bd7c3b0c88da7332315d90a84d43.tar.bz2
nng-6b66debe7532bd7c3b0c88da7332315d90a84d43.zip
Validate that we do not overrun sun_path in sockaddr_un.
-rw-r--r--src/platform/posix/posix_sockaddr.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/platform/posix/posix_sockaddr.c b/src/platform/posix/posix_sockaddr.c
index 59e1ebee..21a2b863 100644
--- a/src/platform/posix/posix_sockaddr.c
+++ b/src/platform/posix/posix_sockaddr.c
@@ -58,9 +58,12 @@ nni_posix_nn2sockaddr(void *sa, const nni_sockaddr *na)
spath = (void *) sa;
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)) {
+ return (-1);
+ }
spath->sun_family = PF_UNIX;
- snprintf(spath->sun_path, sizeof(spath->sun_path), "%s",
- nspath->sa_path);
return (sizeof(*spath));
}
return (-1);