[SCM] Samba Shared Repository - branch master updated

Jim McDonough jmcd at samba.org
Tue Sep 20 06:01:10 UTC 2016


The branch, master has been updated
       via  d8a5565 waf: Explicitly link against libnss_wins.so
       via  124ae4e nsswitch: Add missing arguments to wins gethostbyname*
      from  b208499 gencache: Bail out of stabilize if we can not get the allrecord lock

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


- Log -----------------------------------------------------------------
commit d8a5565ae647352d11d622bd4e73ff4568678a7c
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Sep 19 16:21:31 2016 +0200

    waf: Explicitly link against libnss_wins.so
    
    If we do not specify replace as a depencency here, it will not link to
    libreplace using an rpath.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12277
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Jim McDonough <jmcd at samba.org>
    
    Autobuild-User(master): Jim McDonough <jmcd at samba.org>
    Autobuild-Date(master): Tue Sep 20 08:00:08 CEST 2016 on sn-devel-144

commit 124ae4e861f048fe015bff32ace4abff4d3e6c62
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Sep 19 16:17:11 2016 +0200

    nsswitch: Add missing arguments to wins gethostbyname*
    
    The errno pointer argument is missing.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12269
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Jim McDonough <jmcd at samba.org>

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

Summary of changes:
 nsswitch/wins.c        | 51 ++++++++++++++++++++++++++++++++++++++++----------
 nsswitch/wscript_build |  2 +-
 2 files changed, 42 insertions(+), 11 deletions(-)


Changeset truncated at 500 lines:

diff --git a/nsswitch/wins.c b/nsswitch/wins.c
index fc65c03..be84f2e 100644
--- a/nsswitch/wins.c
+++ b/nsswitch/wins.c
@@ -39,10 +39,19 @@ static pthread_mutex_t wins_nss_mutex = PTHREAD_MUTEX_INITIALIZER;
 #define INADDRSZ 4
 #endif
 
-NSS_STATUS _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
-			  char *buffer, size_t buflen, int *h_errnop);
-NSS_STATUS _nss_wins_gethostbyname2_r(const char *name, int af, struct hostent *he,
-			   char *buffer, size_t buflen, int *h_errnop);
+NSS_STATUS _nss_wins_gethostbyname_r(const char *hostname,
+				     struct hostent *he,
+				     char *buffer,
+				     size_t buflen,
+				     int *errnop,
+				     int *h_errnop);
+NSS_STATUS _nss_wins_gethostbyname2_r(const char *name,
+				      int af,
+				      struct hostent *he,
+				      char *buffer,
+				      size_t buflen,
+				      int *errnop,
+				      int *h_errnop);
 
 static char *lookup_byname_backend(const char *name)
 {
@@ -225,8 +234,12 @@ gethostbyname() - we ignore any domain portion of the name and only
 handle names that are at most 15 characters long
   **************************************************************************/
 NSS_STATUS
-_nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
-			  char *buffer, size_t buflen, int *h_errnop)
+_nss_wins_gethostbyname_r(const char *hostname,
+			  struct hostent *he,
+			  char *buffer,
+			  size_t buflen,
+			  int *errnop,
+			  int *h_errnop)
 {
 	NSS_STATUS nss_status = NSS_STATUS_SUCCESS;
 	char *ip;
@@ -247,6 +260,7 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
 
 	ip = lookup_byname_backend(name);
 	if (ip == NULL) {
+		*errnop = EINVAL;
 		nss_status = NSS_STATUS_NOTFOUND;
 		goto out;
 	}
@@ -254,6 +268,7 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
 	rc = inet_pton(AF_INET, ip, &in);
 	wbcFreeMemory(ip);
 	if (rc == 0) {
+		*errnop = errno;
 		nss_status = NSS_STATUS_TRYAGAIN;
 		goto out;
 	}
@@ -263,6 +278,7 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
 	namelen = strlen(name) + 1;
 
 	if ((he->h_name = get_static(&buffer, &buflen, namelen)) == NULL) {
+		*errnop = EAGAIN;
 		nss_status = NSS_STATUS_TRYAGAIN;
 		goto out;
 	}
@@ -275,18 +291,21 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
 		i = sizeof(char*) - i;
 
 	if (get_static(&buffer, &buflen, i) == NULL) {
+		*errnop = EAGAIN;
 		nss_status = NSS_STATUS_TRYAGAIN;
 		goto out;
 	}
 
 	if ((he->h_addr_list = (char **)get_static(
 		     &buffer, &buflen, 2 * sizeof(char *))) == NULL) {
+		*errnop = EAGAIN;
 		nss_status = NSS_STATUS_TRYAGAIN;
 		goto out;
 	}
 
 	if ((he->h_addr_list[0] = get_static(&buffer, &buflen,
 					     INADDRSZ)) == NULL) {
+		*errnop = EAGAIN;
 		nss_status = NSS_STATUS_TRYAGAIN;
 		goto out;
 	}
@@ -306,12 +325,14 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
 		i = sizeof(char*) - i;
 
 	if (get_static(&buffer, &buflen, i) == NULL) {
+		*errnop = EAGAIN;
 		nss_status = NSS_STATUS_TRYAGAIN;
 		goto out;
 	}
 
 	if ((he->h_aliases = (char **)get_static(
 		     &buffer, &buflen, sizeof(char *))) == NULL) {
+		*errnop = EAGAIN;
 		nss_status = NSS_STATUS_TRYAGAIN;
 		goto out;
 	}
@@ -330,17 +351,27 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
 
 
 NSS_STATUS
-_nss_wins_gethostbyname2_r(const char *name, int af, struct hostent *he,
-			   char *buffer, size_t buflen, int *h_errnop)
+_nss_wins_gethostbyname2_r(const char *name,
+			   int af,
+			   struct hostent *he,
+			   char *buffer,
+			   size_t buflen,
+			   int *errnop,
+			   int *h_errnop)
 {
 	NSS_STATUS nss_status;
 
 	if(af!=AF_INET) {
+		*errnop = EAFNOSUPPORT;
 		*h_errnop = NO_DATA;
 		nss_status = NSS_STATUS_UNAVAIL;
 	} else {
-		nss_status = _nss_wins_gethostbyname_r(
-				name, he, buffer, buflen, h_errnop);
+		nss_status = _nss_wins_gethostbyname_r(name,
+						       he,
+						       buffer,
+						       buflen,
+						       errnop,
+						       h_errnop);
 	}
 	return nss_status;
 }
diff --git a/nsswitch/wscript_build b/nsswitch/wscript_build
index f286896..ab8f8ea 100644
--- a/nsswitch/wscript_build
+++ b/nsswitch/wscript_build
@@ -42,7 +42,7 @@ if (Utils.unversioned_sys_platform() == 'linux' or (host_os.rfind('gnu') > -1)):
     bld.SAMBA3_LIBRARY('nss_wins',
                        keep_underscore=True,
                        source='wins.c',
-                       deps='''wbclient''',
+                       deps='wbclient replace',
                        public_headers=[],
                        public_headers_install=False,
                        pc_files=[],


-- 
Samba Shared Repository



More information about the samba-cvs mailing list