r21396: fix wbinfo --lookup-rids command
authorHerb Lewis <herb@samba.org>
Fri, 16 Feb 2007 19:49:12 +0000 (19:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:18:02 +0000 (12:18 -0500)
allow detection of libbiconv if all others fail - need for FreeBSD
(This used to be commit 7acc9421b0643cb04bff1f1d98ecb899f9b09601)

source3/aclocal.m4
source3/nsswitch/wb_common.c
source3/nsswitch/wbinfo.c

index b66a1c253ec6037c116fa323ac811b846ad83491..00c57baceefe8c1a95129c6af34db6e02506b855 100644 (file)
@@ -362,6 +362,23 @@ AC_DEFUN(jm_ICONV,
             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
index 05d2a660e73b27b59f92047056ed8457deee5ea0..13cefd135d4a9dfba5ff14e196142534d99dc30e 100644 (file)
@@ -504,7 +504,7 @@ int read_reply(struct winbindd_response *response)
                
                /* 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;
                }
                
index cabf995042a237eee04cc772fbc09d669e6e91a3..826b4fc04042409e7ec3cedfd27be23ea6aa9a58 100644 (file)
@@ -638,7 +638,7 @@ static BOOL wbinfo_lookupsid(char *sid)
 
 /* 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,9 +650,24 @@ static BOOL wbinfo_lookuprids(char *domain_sid, char *arg)
        enum lsa_SidType *types;
        const char *domain_name;
        TALLOC_CTX *mem_ctx;
+       struct winbindd_request request;
+       struct winbindd_response response;
+
+       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, domain_sid)) {
-               d_printf("Could not convert %s to sid\n", domain_sid);
+       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;
        }