rpc-transport/socket: NULL pointer dereferencing clang fix

Problem: ctx and res can be NULL.

Solution: introduced a VALIDATE_OR_GOTO statement, hence removed
the null check for ctx; added a check for res.

Updates: bz#1622665

Change-Id: Ifee4c73e260530ab44c0a34c5ff5568f38f92c94
Signed-off-by: Shwetha Acharya <sacharya@redhat.com>
This commit is contained in:
Shwetha Acharya 2018-10-23 12:57:45 +05:30 committed by Amar Tumballi
parent d7fa1a85b1
commit 0c835893fd
2 changed files with 3 additions and 3 deletions

View File

@ -413,7 +413,7 @@ af_inet_server_get_local_sockaddr(rpc_transport_t *this, struct sockaddr *addr,
}
}
if (!(*addr_len)) {
if (!(*addr_len) && res) {
memcpy(addr, res->ai_addr, res->ai_addrlen);
*addr_len = res->ai_addrlen;
}

View File

@ -2985,6 +2985,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,
GF_VALIDATE_OR_GOTO("socket", this, out);
GF_VALIDATE_OR_GOTO("socket", this->private, out);
GF_VALIDATE_OR_GOTO("socket", this->xl, out);
GF_VALIDATE_OR_GOTO("socket", this->ctx, out);
THIS = this->xl;
priv = this->private;
@ -3006,8 +3007,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,
new_sock = sys_accept(priv->sock, SA(&new_sockaddr), &addrlen, aflags);
if (ctx)
event_handled(ctx->event_pool, fd, idx, gen);
event_handled(ctx->event_pool, fd, idx, gen);
if (new_sock == -1) {
gf_log(this->name, GF_LOG_WARNING, "accept on %d failed (%s)",