diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-08-21 12:17:51 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-08-21 12:17:51 -0700 |
| commit | 6b66debe7532bd7c3b0c88da7332315d90a84d43 (patch) | |
| tree | 6fe144fd290fe9ff9f9824960449135bf0ff08c1 | |
| parent | 75adda86be49e6839e50443f0bae5875d9910897 (diff) | |
| download | nng-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.c | 7 |
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); |
