summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source4/libcli/ldap/ldap_controls.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/source4/libcli/ldap/ldap_controls.c b/source4/libcli/ldap/ldap_controls.c
index 17d96f6f9d..1e67a0124a 100644
--- a/source4/libcli/ldap/ldap_controls.c
+++ b/source4/libcli/ldap/ldap_controls.c
@@ -1129,10 +1129,16 @@ static bool encode_openldap_dereference(void *mem_ctx, void *in, DATA_BLOB *out)
}
}
- asn1_pop_tag(data);
- asn1_pop_tag(data);
+ if (!asn1_pop_tag(data)) {
+ return false;
+ }
+ if (!asn1_pop_tag(data)) {
+ return false;
+ }
+ }
+ if (!asn1_pop_tag(data)) {
+ return false;
}
- asn1_pop_tag(data);
*out = data_blob_talloc(mem_ctx, data->data, data->length);
if (out->data == NULL) {
@@ -1181,8 +1187,12 @@ static bool decode_openldap_dereference(void *mem_ctx, DATA_BLOB in, void *_out)
return false;
}
- asn1_read_OctetString_talloc(r[i], data, &r[i]->source_attribute);
- asn1_read_OctetString_talloc(r[i], data, &r[i]->dereferenced_dn);
+ if (!asn1_read_OctetString_talloc(r[i], data, &r[i]->source_attribute)) {
+ return false;
+ }
+ if (!asn1_read_OctetString_talloc(r[i], data, &r[i]->dereferenced_dn)) {
+ return false;
+ }
if (asn1_peek_tag(data, ASN1_CONTEXT(0))) {
if (!asn1_start_tag(data, ASN1_CONTEXT(0))) {
return false;