s4: libcli: ldap controls - Ensure all asn1_XX returns are checked.
authorJeremy Allison <jra@samba.org>
Mon, 22 Sep 2014 20:28:18 +0000 (13:28 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 25 Sep 2014 22:51:16 +0000 (00:51 +0200)
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
source4/libcli/ldap/ldap_controls.c

index 17d96f6f9d7dd016180ecf4f2152e12ca75f8c40..1e67a0124a2933c1cc8f238abcfd85ca0edfb776 100644 (file)
@@ -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;