summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2001-12-10 00:39:01 +0000
committerAndrew Tridgell <tridge@samba.org>2001-12-10 00:39:01 +0000
commite051c2c430f706835f250b10cc63e5621054b5ec (patch)
treee35e8844027bdacd71b926cf448e25ea5d21e28c
parent4ad81e7714bac620ae8c5a3a341548523c7ceada (diff)
downloadsamba-e051c2c430f706835f250b10cc63e5621054b5ec.tar.gz
samba-e051c2c430f706835f250b10cc63e5621054b5ec.tar.bz2
samba-e051c2c430f706835f250b10cc63e5621054b5ec.zip
make sid_binstring available without HAVE_ADS
(This used to be commit 4a6d29768665f71b72cf48ee34ee9a9c451232f6)
-rw-r--r--source3/lib/util_sid.c17
-rw-r--r--source3/lib/util_str.c23
-rw-r--r--source3/libads/ldap.c39
-rw-r--r--source3/nsswitch/winbindd_ads.c8
-rw-r--r--source3/nsswitch/winbindd_cache.c3
-rw-r--r--source3/nsswitch/winbindd_proto.h49
6 files changed, 48 insertions, 91 deletions
diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c
index 923037f479..72365f5e46 100644
--- a/source3/lib/util_sid.c
+++ b/source3/lib/util_sid.c
@@ -663,3 +663,20 @@ BOOL non_mappable_sid(DOM_SID *sid)
return False;
}
+
+/*
+ return the binary string representation of a DOM_SID
+ caller must free
+*/
+char *sid_binstring(DOM_SID *sid)
+{
+ char *buf, *s;
+ int len = sid_size(sid);
+ buf = malloc(len);
+ if (!buf) return NULL;
+ sid_linearize(buf, len, sid);
+ s = binary_string(buf, len);
+ free(buf);
+ return s;
+}
+
diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c
index d7e6fa0781..2205f5cf0d 100644
--- a/source3/lib/util_str.c
+++ b/source3/lib/util_str.c
@@ -914,3 +914,26 @@ void strupper_m(char *s)
* as source string even in multibyte encoding. (VIV) */
unix_strupper(s,strlen(s)+1,s,strlen(s)+1);
}
+
+/*
+ return a RFC2254 binary string representation of a buffer
+ used in LDAP filters
+ caller must free
+*/
+char *binary_string(char *buf, int len)
+{
+ char *s;
+ int i, j;
+ const char *hex = "0123456789ABCDEF";
+ s = malloc(len * 3 + 1);
+ if (!s) return NULL;
+ for (j=i=0;i<len;i++) {
+ s[j] = '\\';
+ s[j+1] = hex[((unsigned char)buf[i]) >> 4];
+ s[j+2] = hex[((unsigned char)buf[i]) & 0xF];
+ j += 3;
+ }
+ s[j] = 0;
+ return s;
+}
+
diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
index c81f2474ae..2fe97ebb1a 100644
--- a/source3/libads/ldap.c
+++ b/source3/libads/ldap.c
@@ -386,45 +386,6 @@ NTSTATUS ads_set_machine_password(ADS_STRUCT *ads,
return ret;
}
-
-/*
- return a RFC2254 binary string representation of a buffer
- used in filters
- caller must free
-*/
-char *ads_binary_string(char *buf, int len)
-{
- char *s;
- int i, j;
- const char *hex = "0123456789ABCDEF";
- s = malloc(len * 3 + 1);
- if (!s) return NULL;
- for (j=i=0;i<len;i++) {
- s[j] = '\\';
- s[j+1] = hex[((unsigned char)buf[i]) >> 4];
- s[j+2] = hex[((unsigned char)buf[i]) & 0xF];
- j += 3;
- }
- s[j] = 0;
- return s;
-}
-
-/*
- return the binary string representation of a DOM_SID
- caller must free
-*/
-char *ads_sid_binstring(DOM_SID *sid)
-{
- char *buf, *s;
- int len = sid_size(sid);
- buf = malloc(len);
- if (!buf) return NULL;
- sid_linearize(buf, len, sid);
- s = ads_binary_string(buf, len);
- free(buf);
- return s;
-}
-
/*
pull the first entry from a ADS result
*/
diff --git a/source3/nsswitch/winbindd_ads.c b/source3/nsswitch/winbindd_ads.c
index cabb482f7d..e009f9a9ab 100644
--- a/source3/nsswitch/winbindd_ads.c
+++ b/source3/nsswitch/winbindd_ads.c
@@ -400,7 +400,7 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
ads = ads_cached_connection(domain);
if (!ads) goto done;
- sidstr = ads_sid_binstring(sid);
+ sidstr = sid_binstring(sid);
asprintf(&exp, "(objectSid=%s)", sidstr);
rc = ads_search_retry(ads, &msg, exp, attrs);
free(exp);
@@ -452,7 +452,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
ads = ads_cached_connection(domain);
if (!ads) goto done;
- sidstr = ads_sid_binstring(&sid);
+ sidstr = sid_binstring(&sid);
asprintf(&exp, "(objectSid=%s)", sidstr);
rc = ads_search_retry(ads, &msg, exp, attrs);
free(exp);
@@ -523,7 +523,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
ads = ads_cached_connection(domain);
if (!ads) goto done;
- sidstr = ads_sid_binstring(&sid);
+ sidstr = sid_binstring(&sid);
asprintf(&exp, "(objectSid=%s)", sidstr);
rc = ads_search_retry(ads, &msg, exp, attrs);
free(exp);
@@ -589,7 +589,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
if (!ads) goto done;
sid_from_rid(domain, group_rid, &group_sid);
- sidstr = ads_sid_binstring(&group_sid);
+ sidstr = sid_binstring(&group_sid);
/* search for all users who have that group sid as primary group or as member */
asprintf(&exp, "(&(objectclass=user)(|(primaryGroupID=%d)(memberOf=%s)))",
group_rid, sidstr);
diff --git a/source3/nsswitch/winbindd_cache.c b/source3/nsswitch/winbindd_cache.c
index e78410e3a5..912ac162b5 100644
--- a/source3/nsswitch/winbindd_cache.c
+++ b/source3/nsswitch/winbindd_cache.c
@@ -36,6 +36,7 @@ struct cache_entry {
static struct winbind_cache *wcache;
+/* flush the cache */
void wcache_flush_cache(void)
{
extern BOOL opt_nocache;
@@ -500,7 +501,7 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
if (!cache->tdb) goto do_query;
- sidstr = ads_sid_binstring(sid);
+ sidstr = sid_binstring(sid);
centry = wcache_fetch(cache, domain, "SIDTONAME/%s/%s", domain->name, sidstr);
if (!centry) goto do_query;
diff --git a/source3/nsswitch/winbindd_proto.h b/source3/nsswitch/winbindd_proto.h
index fbb5c731d1..4abc10c63b 100644
--- a/source3/nsswitch/winbindd_proto.h
+++ b/source3/nsswitch/winbindd_proto.h
@@ -3,10 +3,6 @@
/* This file is automatically generated with "make proto". DO NOT EDIT */
-/* The following definitions come from nsswitch/wcache.c */
-
-struct cache_entry *centry_start(struct winbindd_domain *domain, NTSTATUS status);
-
/* The following definitions come from nsswitch/winbindd.c */
int main(int argc, char **argv);
@@ -25,49 +21,8 @@ int ads_search_retry_dn(ADS_STRUCT *ads, void **res,
/* The following definitions come from nsswitch/winbindd_cache.c */
-void winbindd_cache_init(void);
-void winbindd_store_user_cache(struct winbindd_domain *domain,
- struct getpwent_user *sam_entries,
- int num_sam_entries);
-void winbindd_store_group_cache(struct winbindd_domain *domain,
- struct acct_info *sam_entries,
- int num_sam_entries);
-void winbindd_store_name_cache_entry(struct winbindd_domain *domain,
- char *sid, struct winbindd_name *name);
-void winbindd_store_sid_cache_entry(struct winbindd_domain *domain,
- const char *name, struct winbindd_sid *sid);
-void winbindd_store_user_cache_entry(struct winbindd_domain *domain,
- char *user_name, struct winbindd_pw *pw);
-void winbindd_store_uid_cache_entry(struct winbindd_domain *domain, uid_t uid,
- struct winbindd_pw *pw);
-void winbindd_store_group_cache_entry(struct winbindd_domain *domain,
- char *group_name, struct winbindd_gr *gr,
- void *extra_data, int extra_data_len);
-void winbindd_store_gid_cache_entry(struct winbindd_domain *domain, gid_t gid,
- struct winbindd_gr *gr, void *extra_data,
- int extra_data_len);
-BOOL winbindd_fetch_user_cache(struct winbindd_domain *domain,
- struct getpwent_user **sam_entries,
- int *num_entries);
-BOOL winbindd_fetch_group_cache(struct winbindd_domain *domain,
- struct acct_info **sam_entries,
- int *num_entries);
-BOOL winbindd_fetch_sid_cache_entry(struct winbindd_domain *domain,
- const char *name, struct winbindd_sid *sid);
-BOOL winbindd_fetch_name_cache_entry(struct winbindd_domain *domain,
- char *sid, struct winbindd_name *name);
-BOOL winbindd_fetch_user_cache_entry(struct winbindd_domain *domain,
- char *user, struct winbindd_pw *pw);
-BOOL winbindd_fetch_uid_cache_entry(struct winbindd_domain *domain, uid_t uid,
- struct winbindd_pw *pw);
-BOOL winbindd_fetch_group_cache_entry(struct winbindd_domain *domain,
- char *group, struct winbindd_gr *gr,
- void **extra_data, int *extra_data_len);
-BOOL winbindd_fetch_gid_cache_entry(struct winbindd_domain *domain, gid_t gid,
- struct winbindd_gr *gr,
- void **extra_data, int *extra_data_len);
-void winbindd_flush_cache(void);
-void winbindd_cache_status(void);
+void wcache_flush_cache(void);
+struct cache_entry *centry_start(struct winbindd_domain *domain, NTSTATUS status);
/* The following definitions come from nsswitch/winbindd_cm.c */