diff options
author | Andrew Tridgell <tridge@samba.org> | 2001-12-05 04:44:34 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2001-12-05 04:44:34 +0000 |
commit | 19c0459153bd6f0ea56b84f78725a77bb70be138 (patch) | |
tree | 277640458da3a686363e8a98b61750e64d438b4a | |
parent | 24449a9b0bb83ab511347cde89e15bb67f6997b5 (diff) | |
download | samba-19c0459153bd6f0ea56b84f78725a77bb70be138.tar.gz samba-19c0459153bd6f0ea56b84f78725a77bb70be138.tar.bz2 samba-19c0459153bd6f0ea56b84f78725a77bb70be138.zip |
added functions that convert a ads binary blob to a string (for
searching on SID)
(This used to be commit 31d6d049b30e364e062f108d6f9221bbdc2ebec5)
-rw-r--r-- | source3/libads/ldap.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c index 50583146c0..34ca2ad04d 100644 --- a/source3/libads/ldap.c +++ b/source3/libads/ldap.c @@ -376,6 +376,45 @@ 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 */ |