diff options
author | Andrew Bartlett <abartlet@samba.org> | 2007-12-27 07:47:11 -0600 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2007-12-27 01:51:05 -0600 |
commit | 70cb5ac03c476110c0348881f49ad0697037ca38 (patch) | |
tree | b9f358620285d8c23f320ff9abdbecc0a4bfadf3 /source4 | |
parent | f5bc88d40be1b01c319c4db30ada8de1ffd9f3f1 (diff) | |
download | samba-70cb5ac03c476110c0348881f49ad0697037ca38.tar.gz samba-70cb5ac03c476110c0348881f49ad0697037ca38.tar.bz2 samba-70cb5ac03c476110c0348881f49ad0697037ca38.zip |
r26613: Add a function to write a DATA_BLOB into an LDAPString.
This respects the length set in the DATA_BLOB, rather than hoping to
see NULL termination of the data pointer.
(found testing the Ambigious Name Resolution code against OpenLDAP).
Andrew Bartlett
(This used to be commit bc0022e8c7357b126dc91a945f0e53e4e4108e7d)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/libcli/ldap/ldap.c | 6 | ||||
-rw-r--r-- | source4/libcli/util/asn1.c | 7 |
2 files changed, 10 insertions, 3 deletions
diff --git a/source4/libcli/ldap/ldap.c b/source4/libcli/ldap/ldap.c index 34d715e3e5..586f2fa653 100644 --- a/source4/libcli/ldap/ldap.c +++ b/source4/libcli/ldap/ldap.c @@ -77,7 +77,7 @@ static bool ldap_push_filter(struct asn1_data *data, struct ldb_parse_tree *tree i = 0; if ( ! tree->u.substring.start_with_wildcard) { asn1_push_tag(data, ASN1_CONTEXT_SIMPLE(0)); - asn1_write_LDAPString(data, (char *)tree->u.substring.chunks[i]->data); + asn1_write_DATA_BLOB_LDAPString(data, tree->u.substring.chunks[i]); asn1_pop_tag(data); i++; } @@ -91,7 +91,7 @@ static bool ldap_push_filter(struct asn1_data *data, struct ldb_parse_tree *tree ctx = 1; } asn1_push_tag(data, ASN1_CONTEXT_SIMPLE(ctx)); - asn1_write_LDAPString(data, (char *)tree->u.substring.chunks[i]->data); + asn1_write_DATA_BLOB_LDAPString(data, tree->u.substring.chunks[i]); asn1_pop_tag(data); i++; } @@ -157,7 +157,7 @@ static bool ldap_push_filter(struct asn1_data *data, struct ldb_parse_tree *tree asn1_pop_tag(data); } asn1_push_tag(data, ASN1_CONTEXT_SIMPLE(3)); - asn1_write_LDAPString(data, (char *)tree->u.extended.value.data); + asn1_write_DATA_BLOB_LDAPString(data, &tree->u.extended.value); asn1_pop_tag(data); asn1_push_tag(data, ASN1_CONTEXT_SIMPLE(4)); asn1_write_uint8(data, tree->u.extended.dnAttributes); diff --git a/source4/libcli/util/asn1.c b/source4/libcli/util/asn1.c index 58cb5f07be..ca6f0dc031 100644 --- a/source4/libcli/util/asn1.c +++ b/source4/libcli/util/asn1.c @@ -285,6 +285,13 @@ bool asn1_write_LDAPString(struct asn1_data *data, const char *s) return !data->has_error; } +/* write a LDAP string from a DATA_BLOB */ +bool asn1_write_DATA_BLOB_LDAPString(struct asn1_data *data, const DATA_BLOB *s) +{ + asn1_write(data, s->data, s->length); + return !data->has_error; +} + /* write a general string */ bool asn1_write_GeneralString(struct asn1_data *data, const char *s) { |