Signed-off-by: Jan Friesse <[email protected]>
---
 exec/coroipcs.c |   24 +++++++++++++++++++++---
 1 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/exec/coroipcs.c b/exec/coroipcs.c
index 39f7ff7..3d17af4 100644
--- a/exec/coroipcs.c
+++ b/exec/coroipcs.c
@@ -797,7 +797,13 @@ req_setup_recv (
        iov_recv.iov_base = &conn_info->setup_msg[conn_info->setup_bytes_read];
        iov_recv.iov_len = sizeof (mar_req_setup_t) - 
conn_info->setup_bytes_read;
 #ifdef COROSYNC_LINUX
-       setsockopt(conn_info->fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof (on));
+       res = setsockopt(conn_info->fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof 
(on));
+       if (res == -1) {
+               log_printf (LOGSYS_LEVEL_ERROR,
+                       "Can't set SO_PASSCRED socket option for IPC 
connection.\n");
+               ipc_disconnect (conn_info);
+               return (CS_ERR_LIBRARY);
+       }
 #endif
 
 retry_recv:
@@ -905,8 +911,14 @@ retry_recv:
 
        if (conn_info->setup_bytes_read == sizeof (mar_req_setup_t)) {
 #ifdef COROSYNC_LINUX
-               setsockopt(conn_info->fd, SOL_SOCKET, SO_PASSCRED,
+               res = setsockopt(conn_info->fd, SOL_SOCKET, SO_PASSCRED,
                        &off, sizeof (off));
+               if (res == -1) {
+                       log_printf (LOGSYS_LEVEL_ERROR,
+                               "Can't set SO_PASSCRED socket option for IPC 
connection.\n");
+                       ipc_disconnect (conn_info);
+                       return (CS_ERR_LIBRARY);
+               }
 #endif
                return (CS_OK);
        }
@@ -1518,7 +1530,13 @@ retry_accept:
         * Request credentials of sender provided by kernel
         */
 #ifdef COROSYNC_LINUX
-       setsockopt(new_fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof (on));
+       res = setsockopt(new_fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof (on));
+       if (res == -1) {
+               log_printf (LOGSYS_LEVEL_ERROR,
+                       "Can't set SO_PASSCRED socket option for IPC 
connection.\n");
+               close(new_fd);
+               return (0);
+       }
 #endif
 
        res = conn_info_create (new_fd);
-- 
1.7.1

_______________________________________________
discuss mailing list
[email protected]
http://lists.corosync.org/mailman/listinfo/discuss

Reply via email to