aboutsummaryrefslogtreecommitdiff
path: root/src/platform
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-08-25 11:11:35 -0700
committerGarrett D'Amore <garrett@damore.org>2017-08-28 11:39:03 -0700
commit601c64ec4f2b8a41fba59d31a987090feeb69e84 (patch)
tree985ec57b3e238b4eed9b42ddaa4736b949df8c6f /src/platform
parent595da8102f3e34e95dad351bc55cd45421616723 (diff)
downloadnng-601c64ec4f2b8a41fba59d31a987090feeb69e84.tar.gz
nng-601c64ec4f2b8a41fba59d31a987090feeb69e84.tar.bz2
nng-601c64ec4f2b8a41fba59d31a987090feeb69e84.zip
Introduce utility safe string handling functions.
We have our versions of strdup, strlcat, and strlcpy. This means we can avoid using snprintf() in many cases (saving cycles), and we can get safer checks. We use the platform supplied versions of these if they exist (wrapping with nni_xxx versions.)
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/posix/posix_ipc.c7
-rw-r--r--src/platform/posix/posix_sockaddr.c5
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;