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/libcli | |
parent | f5bc88d40be1b01c319c4db30ada8de1ffd9f3f1 (diff) | |
download | samba-70cb5ac03c476110c0348881f49ad0697037ca38.tar.gz samba-70cb5ac03c476110c0348881f49ad0697037ca38.tar.xz 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/libcli')
-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 34d715e3e5b..586f2fa6531 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 58cb5f07bee..ca6f0dc031c 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) { |