svn commit: samba r21396 - in branches: SAMBA_3_0/source SAMBA_3_0/source/nsswitch SAMBA_3_0_25/source SAMBA_3_0_25/source/nsswitch

herb at samba.org herb at samba.org
Fri Feb 16 19:49:13 GMT 2007


Author: herb
Date: 2007-02-16 19:49:12 +0000 (Fri, 16 Feb 2007)
New Revision: 21396

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=21396

Log:
fix wbinfo --lookup-rids command
allow detection of libbiconv if all others fail - need for FreeBSD


Modified:
   branches/SAMBA_3_0/source/aclocal.m4
   branches/SAMBA_3_0/source/nsswitch/wb_common.c
   branches/SAMBA_3_0/source/nsswitch/wbinfo.c
   branches/SAMBA_3_0_25/source/aclocal.m4
   branches/SAMBA_3_0_25/source/nsswitch/wb_common.c
   branches/SAMBA_3_0_25/source/nsswitch/wbinfo.c


Changeset:
Modified: branches/SAMBA_3_0/source/aclocal.m4
===================================================================
--- branches/SAMBA_3_0/source/aclocal.m4	2007-02-16 17:36:58 UTC (rev 21395)
+++ branches/SAMBA_3_0/source/aclocal.m4	2007-02-16 19:49:12 UTC (rev 21396)
@@ -362,6 +362,23 @@
             jm_cv_func_iconv=yes
             jm_cv_lib_iconv="iconv")
           LIBS="$jm_save_LIBS"
+
+          if test "$jm_cv_lib_iconv" != yes; then
+            jm_save_LIBS="$LIBS"
+            LIBS="$LIBS -lbiconv"
+            AC_TRY_LINK([#include <stdlib.h>
+#include <biconv.h>],
+              [iconv_t cd = iconv_open("","");
+               iconv(cd,NULL,NULL,NULL,NULL);
+               iconv_close(cd);],
+              jm_cv_lib_iconv=yes
+              jm_cv_func_iconv=yes
+              jm_cv_include="biconv.h"
+              jm_cv_biconv=yes
+              jm_cv_lib_iconv="biconv")
+
+            LIBS="$jm_save_LIBS"
+	  fi
         fi
       fi
     fi

Modified: branches/SAMBA_3_0/source/nsswitch/wb_common.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/wb_common.c	2007-02-16 17:36:58 UTC (rev 21395)
+++ branches/SAMBA_3_0/source/nsswitch/wb_common.c	2007-02-16 19:49:12 UTC (rev 21396)
@@ -504,7 +504,7 @@
 		
 		/* Mallocate memory for extra data */
 		
-		if (!(response->extra_data.data = malloc(extra_data_len))) {
+		if (!(response->extra_data.data = SMB_MALLOC(extra_data_len))) {
 			return -1;
 		}
 		

Modified: branches/SAMBA_3_0/source/nsswitch/wbinfo.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/wbinfo.c	2007-02-16 17:36:58 UTC (rev 21395)
+++ branches/SAMBA_3_0/source/nsswitch/wbinfo.c	2007-02-16 19:49:12 UTC (rev 21396)
@@ -638,7 +638,7 @@
 
 /* Lookup a list of RIDs */
 
-static BOOL wbinfo_lookuprids(char *domain_sid, char *arg)
+static BOOL wbinfo_lookuprids(char *domain, char *arg)
 {
 	size_t i;
 	DOM_SID sid;
@@ -650,12 +650,27 @@
 	enum lsa_SidType *types;
 	const char *domain_name;
 	TALLOC_CTX *mem_ctx;
+	struct winbindd_request request;
+	struct winbindd_response response;
 
-	if (!string_to_sid(&sid, domain_sid)) {
-		d_printf("Could not convert %s to sid\n", domain_sid);
+	if ((domain == NULL) || (strequal(domain, ".")) || (domain[0] == '\0'))
+		fstrcpy(request.domain_name, get_winbind_domain());
+	else
+		fstrcpy(request.domain_name, domain);
+
+	/* Send request */
+
+	if (winbindd_request_response(WINBINDD_DOMAIN_INFO, &request, &response) !=
+	    NSS_STATUS_SUCCESS) {
+		d_printf("Could not get domain sid for %s\n", request.domain_name);
 		return False;
 	}
 
+	if (!string_to_sid(&sid, response.data.domain_info.sid)) {
+		d_printf("Could not convert %s to sid\n", response.data.domain_info.sid);
+		return False;
+	}
+
 	mem_ctx = talloc_new(NULL);
 	if (mem_ctx == NULL) {
 		d_printf("talloc_new failed\n");

Modified: branches/SAMBA_3_0_25/source/aclocal.m4
===================================================================
--- branches/SAMBA_3_0_25/source/aclocal.m4	2007-02-16 17:36:58 UTC (rev 21395)
+++ branches/SAMBA_3_0_25/source/aclocal.m4	2007-02-16 19:49:12 UTC (rev 21396)
@@ -362,6 +362,23 @@
             jm_cv_func_iconv=yes
             jm_cv_lib_iconv="iconv")
           LIBS="$jm_save_LIBS"
+
+          if test "$jm_cv_lib_iconv" != yes; then
+            jm_save_LIBS="$LIBS"
+            LIBS="$LIBS -lbiconv"
+            AC_TRY_LINK([#include <stdlib.h>
+#include <biconv.h>],
+              [iconv_t cd = iconv_open("","");
+               iconv(cd,NULL,NULL,NULL,NULL);
+               iconv_close(cd);],
+              jm_cv_lib_iconv=yes
+              jm_cv_func_iconv=yes
+              jm_cv_include="biconv.h"
+              jm_cv_biconv=yes
+              jm_cv_lib_iconv="biconv")
+
+            LIBS="$jm_save_LIBS"
+	  fi
         fi
       fi
     fi

Modified: branches/SAMBA_3_0_25/source/nsswitch/wb_common.c
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/wb_common.c	2007-02-16 17:36:58 UTC (rev 21395)
+++ branches/SAMBA_3_0_25/source/nsswitch/wb_common.c	2007-02-16 19:49:12 UTC (rev 21396)
@@ -504,7 +504,7 @@
 		
 		/* Mallocate memory for extra data */
 		
-		if (!(response->extra_data.data = malloc(extra_data_len))) {
+		if (!(response->extra_data.data = SMB_MALLOC(extra_data_len))) {
 			return -1;
 		}
 		

Modified: branches/SAMBA_3_0_25/source/nsswitch/wbinfo.c
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/wbinfo.c	2007-02-16 17:36:58 UTC (rev 21395)
+++ branches/SAMBA_3_0_25/source/nsswitch/wbinfo.c	2007-02-16 19:49:12 UTC (rev 21396)
@@ -638,7 +638,7 @@
 
 /* Lookup a list of RIDs */
 
-static BOOL wbinfo_lookuprids(char *domain_sid, char *arg)
+static BOOL wbinfo_lookuprids(char *domain, char *arg)
 {
 	size_t i;
 	DOM_SID sid;
@@ -650,12 +650,27 @@
 	enum lsa_SidType *types;
 	const char *domain_name;
 	TALLOC_CTX *mem_ctx;
+	struct winbindd_request request;
+	struct winbindd_response response;
 
-	if (!string_to_sid(&sid, domain_sid)) {
-		d_printf("Could not convert %s to sid\n", domain_sid);
+	if ((domain == NULL) || (strequal(domain, ".")) || (domain[0] == '\0'))
+		fstrcpy(request.domain_name, get_winbind_domain());
+	else
+		fstrcpy(request.domain_name, domain);
+
+	/* Send request */
+
+	if (winbindd_request_response(WINBINDD_DOMAIN_INFO, &request, &response) !=
+	    NSS_STATUS_SUCCESS) {
+		d_printf("Could not get domain sid for %s\n", request.domain_name);
 		return False;
 	}
 
+	if (!string_to_sid(&sid, response.data.domain_info.sid)) {
+		d_printf("Could not convert %s to sid\n", response.data.domain_info.sid);
+		return False;
+	}
+
 	mem_ctx = talloc_new(NULL);
 	if (mem_ctx == NULL) {
 		d_printf("talloc_new failed\n");



More information about the samba-cvs mailing list