summaryrefslogtreecommitdiff
path: root/source4/libcli/ldap
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2009-06-10 11:45:13 +1000
committerAndrew Tridgell <tridge@samba.org>2009-06-10 11:45:53 +1000
commita5003de56beefa800858b60bb62545c1ad324922 (patch)
tree985336e3b473b7415f646d0bbdd1aa81c551980d /source4/libcli/ldap
parentd42019644bdad2b0810d054e72378026a02dc295 (diff)
downloadsamba-a5003de56beefa800858b60bb62545c1ad324922.tar.gz
samba-a5003de56beefa800858b60bb62545c1ad324922.tar.bz2
samba-a5003de56beefa800858b60bb62545c1ad324922.zip
fixed the encoding/decoding of the reverse attribute for server side sort
Diffstat (limited to 'source4/libcli/ldap')
-rw-r--r--source4/libcli/ldap/ldap_controls.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/source4/libcli/ldap/ldap_controls.c b/source4/libcli/ldap/ldap_controls.c
index 7949758a80..48ac5424a0 100644
--- a/source4/libcli/ldap/ldap_controls.c
+++ b/source4/libcli/ldap/ldap_controls.c
@@ -126,9 +126,9 @@ static bool decode_server_sort_request(void *mem_ctx, DATA_BLOB in, void *_out)
}
}
- if (asn1_peek_tag(data, ASN1_BOOLEAN)) {
+ if (asn1_peek_tag(data, ASN1_CONTEXT_SIMPLE(1))) {
bool reverse;
- if (!asn1_read_BOOLEAN(data, &reverse)) {
+ if (!asn1_read_BOOLEAN_context(data, &reverse, 1)) {
return false;
}
lssc[num]->reverse = reverse;
@@ -688,6 +688,13 @@ static bool encode_server_sort_request(void *mem_ctx, void *in, DATA_BLOB *out)
return false;
}
+ /*
+ RFC2891 section 1.1:
+ SortKeyList ::= SEQUENCE OF SEQUENCE {
+ attributeType AttributeDescription,
+ orderingRule [0] MatchingRuleId OPTIONAL,
+ reverseOrder [1] BOOLEAN DEFAULT FALSE }
+ */
for (num = 0; lssc[num]; num++) {
if (!asn1_push_tag(data, ASN1_SEQUENCE(0))) {
return false;
@@ -704,7 +711,7 @@ static bool encode_server_sort_request(void *mem_ctx, void *in, DATA_BLOB *out)
}
if (lssc[num]->reverse) {
- if (!asn1_write_BOOLEAN(data, lssc[num]->reverse)) {
+ if (!asn1_write_BOOLEAN_context(data, lssc[num]->reverse, 1)) {
return false;
}
}