ctdb-tcp: Fix CID 1362724 Unchecked return value from library
authorMartin Schwenke <martin@meltin.net>
Wed, 10 Aug 2016 07:31:52 +0000 (17:31 +1000)
committerMartin Schwenke <martins@samba.org>
Wed, 17 Aug 2016 21:00:25 +0000 (23:00 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12157

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/tcp/tcp_connect.c

index 91da9e49210079dd911327594c624fcb26bb41cd..82f2e746192e061f237d54fe4df7d31f3e546437 100644 (file)
@@ -243,6 +243,7 @@ static void ctdb_listen_event(struct tevent_context *ev, struct tevent_fd *fde,
        int fd, nodeid;
        struct ctdb_incoming *in;
        int one = 1;
+       int ret;
 
        memset(&addr, 0, sizeof(addr));
        len = sizeof(addr);
@@ -261,7 +262,17 @@ static void ctdb_listen_event(struct tevent_context *ev, struct tevent_fd *fde,
        in->fd = fd;
        in->ctdb = ctdb;
 
-       set_blocking(in->fd, false);
+       ret = set_blocking(in->fd, false);
+       if (ret != 0) {
+               DEBUG(DEBUG_ERR,
+                     (__location__
+                      " failed to set socket non-blocking (%s)\n",
+                      strerror(errno)));
+               close(in->fd);
+               in->fd = -1;
+               return;
+       }
+
        set_close_on_exec(in->fd);
 
        DEBUG(DEBUG_DEBUG, (__location__ " Created SOCKET FD:%d to incoming ctdb connection\n", fd));