diff options
author | Andreas Schneider <asn@samba.org> | 2019-03-21 14:09:37 +0100 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2019-03-21 14:41:39 +0100 |
commit | 51d8982627f0da1715d196fd75ec17d6579a57b0 (patch) | |
tree | 7d14a0977c200528c52e9074a48f9af963ba67a7 /src/socket_wrapper.c | |
parent | b8dc4da6cb4903fce8f7b468c17caf12e3394c6b (diff) | |
download | socket_wrapper-51d8982627f0da1715d196fd75ec17d6579a57b0.tar.gz socket_wrapper-51d8982627f0da1715d196fd75ec17d6579a57b0.tar.xz socket_wrapper-51d8982627f0da1715d196fd75ec17d6579a57b0.zip |
swrap: Add missing NULL checks to socket_wrapper_dir()
This return either malloc'ed memory or NULL. Make sure there is no
problem.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'src/socket_wrapper.c')
-rw-r--r-- | src/socket_wrapper.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index a09851e..5b82e0c 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -1819,6 +1819,10 @@ static int convert_in_un_remote(struct socket_info *si, const struct sockaddr *i } swrap_dir = socket_wrapper_dir(); + if (swrap_dir == NULL) { + errno = EINVAL; + return -1; + } if (is_bcast) { snprintf(un->sun_path, sizeof(un->sun_path), @@ -1989,6 +1993,10 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in } swrap_dir = socket_wrapper_dir(); + if (swrap_dir == NULL) { + errno = EINVAL; + return -1; + } if (prt == 0) { /* handle auto-allocation of ephemeral ports */ @@ -3583,6 +3591,11 @@ static int swrap_auto_bind(int fd, struct socket_info *si, int family) } swrap_dir = socket_wrapper_dir(); + if (swrap_dir == NULL) { + errno = EINVAL; + ret = -1; + goto done; + } for (i = 0; i < SOCKET_MAX_SOCKETS; i++) { port = autobind_start + i; @@ -5388,6 +5401,9 @@ static ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, type = SOCKET_TYPE_CHAR_UDP; swrap_dir = socket_wrapper_dir(); + if (swrap_dir == NULL) { + return -1; + } for(iface=0; iface <= MAX_WRAPPED_INTERFACES; iface++) { snprintf(un_addr.sa.un.sun_path, @@ -5893,6 +5909,9 @@ static ssize_t swrap_sendmsg(int s, const struct msghdr *omsg, int flags) type = SOCKET_TYPE_CHAR_UDP; swrap_dir = socket_wrapper_dir(); + if (swrap_dir == NULL) { + return -1; + } for(iface=0; iface <= MAX_WRAPPED_INTERFACES; iface++) { snprintf(un_addr.sun_path, sizeof(un_addr.sun_path), "%s/"SOCKET_FORMAT, |