The branch, master has been updated
       via  b1e718f nsswitch: Simplify winbind_named_pipe_sock()
      from  a84e982 ctdb-build: only use ctdb/packaging/mkversion.sh for the 
standalone build.

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit b1e718f101fe6788b64b2deab09d2001bf8e0b2f
Author: Volker Lendecke <[email protected]>
Date:   Sun Mar 1 11:43:01 2015 +0000

    nsswitch: Simplify winbind_named_pipe_sock()
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Ralph Boehme <[email protected]>
    
    Autobuild-User(master): Ralph Böhme <[email protected]>
    Autobuild-Date(master): Mon Jun  8 19:48:18 CEST 2015 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 nsswitch/wb_common.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/nsswitch/wb_common.c b/nsswitch/wb_common.c
index 036557a..3194df1 100644
--- a/nsswitch/wb_common.c
+++ b/nsswitch/wb_common.c
@@ -220,10 +220,10 @@ static int winbind_named_pipe_sock(const char *dir)
 {
        struct sockaddr_un sunaddr;
        struct stat st;
-       char *path = NULL;
        int fd;
        int wait_time;
        int slept;
+       int ret;
 
        /* Check permissions on unix socket directory */
 
@@ -244,25 +244,24 @@ static int winbind_named_pipe_sock(const char *dir)
 
        /* Connect to socket */
 
-       if (asprintf(&path, "%s/%s", dir, WINBINDD_SOCKET_NAME) < 0) {
+       sunaddr = (struct sockaddr_un) { .sun_family = AF_UNIX };
+
+       ret = snprintf(sunaddr.sun_path, sizeof(sunaddr.sun_path),
+                      "%s/%s", dir, WINBINDD_SOCKET_NAME);
+       if ((ret == -1) || (ret >= sizeof(sunaddr.sun_path))) {
+               errno = ENAMETOOLONG;
                return -1;
        }
 
-       ZERO_STRUCT(sunaddr);
-       sunaddr.sun_family = AF_UNIX;
-       strncpy(sunaddr.sun_path, path, sizeof(sunaddr.sun_path) - 1);
-
        /* If socket file doesn't exist, don't bother trying to connect
           with retry.  This is an attempt to make the system usable when
           the winbindd daemon is not running. */
 
-       if (lstat(path, &st) == -1) {
+       if (lstat(sunaddr.sun_path, &st) == -1) {
                errno = ENOENT;
-               SAFE_FREE(path);
                return -1;
        }
 
-       SAFE_FREE(path);
        /* Check permissions on unix socket file */
 
        /*
@@ -290,7 +289,6 @@ static int winbind_named_pipe_sock(const char *dir)
        for (wait_time = 0; connect(fd, (struct sockaddr *)&sunaddr, 
sizeof(sunaddr)) == -1;
                        wait_time += slept) {
                struct pollfd pfd;
-               int ret;
                int connect_errno = 0;
                socklen_t errnosize;
 


-- 
Samba Shared Repository

Reply via email to