lib: Use asn1_extract_blob()
authorVolker Lendecke <vl@samba.org>
Sat, 2 Jan 2016 19:10:53 +0000 (20:10 +0100)
committerJeremy Allison <jra@samba.org>
Tue, 5 Jan 2016 23:54:18 +0000 (00:54 +0100)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
libcli/auth/spnego_parse.c
libcli/ldap/ldap_message.c
source3/libsmb/clispnego.c
source4/auth/gensec/gensec_krb5.c
source4/libcli/ldap/ldap_controls.c

index 54181893043c176ff1bbb9ce7fa691028de2ad4b..b5e4b1c2a066c0589b7e754bab6b9a01c69392e0 100644 (file)
@@ -357,11 +357,12 @@ ssize_t spnego_write_data(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, struct spnego_da
                break;
        }
 
-       if (!asn1_has_error(asn1)) {
-               *blob = data_blob_talloc(mem_ctx, asn1->data, asn1->length);
-               ret = asn1->ofs;
+       if (!asn1_extract_blob(asn1, mem_ctx, blob)) {
+               goto err;
        }
 
+       ret = asn1->ofs;
+
   err:
 
        asn1_free(asn1);
@@ -427,8 +428,7 @@ bool spnego_write_mech_types(TALLOC_CTX *mem_ctx,
                goto err;
        }
 
-       *blob = data_blob_talloc(mem_ctx, asn1->data, asn1->length);
-       if (blob->length != asn1->length) {
+       if (!asn1_extract_blob(asn1, mem_ctx, blob)) {
                goto err;
        }
 
index f4b49ca31c9672db37b5cc8a73e1b3d691a74018..4518b30361dd8eec7c5dd617d49079dc4687f35b 100644 (file)
@@ -691,7 +691,10 @@ _PUBLIC_ bool ldap_encode(struct ldap_message *msg,
 
        if (!asn1_pop_tag(data)) goto err;
 
-       *result = data_blob_talloc(mem_ctx, data->data, data->length);
+       if (!asn1_extract_blob(data, mem_ctx, result)) {
+               goto err;
+       }
+
        asn1_free(data);
 
        return true;
index 61ccdae03ef93ccaaf2a551633cddd6830349780..6b33d61891246b84de096ba0f6f7553b7685fc25 100644 (file)
@@ -79,7 +79,9 @@ DATA_BLOB spnego_gen_negTokenInit(TALLOC_CTX *ctx,
 
        if (!asn1_pop_tag(data)) goto err;
 
-       ret = data_blob_talloc(ctx, data->data, data->length);
+       if (!asn1_extract_blob(data, ctx, &ret)) {
+               goto err;
+       }
 
   err:
 
@@ -250,7 +252,9 @@ DATA_BLOB spnego_gen_krb5_wrap(TALLOC_CTX *ctx, const DATA_BLOB ticket, const ui
        if (!asn1_write(data, ticket.data, ticket.length)) goto err;
        if (!asn1_pop_tag(data)) goto err;
 
-       ret = data_blob_talloc(ctx, data->data, data->length);
+       if (!asn1_extract_blob(data, ctx, &ret)) {
+               goto err;
+       }
 
   err:
 
@@ -377,7 +381,9 @@ DATA_BLOB spnego_gen_auth(TALLOC_CTX *ctx, DATA_BLOB blob)
        if (!asn1_pop_tag(data)) goto err;
        if (!asn1_pop_tag(data)) goto err;
 
-       ret = data_blob_talloc(ctx, data->data, data->length);
+       if (!asn1_extract_blob(data, ctx, &ret)) {
+               goto err;
+       }
 
  err:
 
index 7f512caab258faed05e5c4a46df4236c41e5c2a2..94506c87f67d7138e76f2622a7aed3d5d1508c0c 100644 (file)
@@ -422,7 +422,9 @@ static DATA_BLOB gensec_gssapi_gen_krb5_wrap(TALLOC_CTX *mem_ctx, const DATA_BLO
        if (!asn1_pop_tag(data)) goto err;
 
 
-       ret = data_blob_talloc(mem_ctx, data->data, data->length);
+       if (!asn1_extract_blob(data, mem_ctx, &ret)) {
+               goto err;
+       }
        asn1_free(data);
 
        return ret;
index f910acba38383156db92a4b9ea2d8b9fe77fb16a..448a2633c26c69a81d9920f24d8640855fd06cee 100644 (file)
@@ -512,10 +512,10 @@ static bool encode_verify_name_request(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -716,10 +716,10 @@ static bool encode_server_sort_response(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -774,10 +774,10 @@ static bool encode_server_sort_request(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -809,10 +809,10 @@ static bool encode_extended_dn_request(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -837,10 +837,10 @@ static bool encode_sd_flags_request(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -865,10 +865,10 @@ static bool encode_search_options_request(void *mem_ctx, void *in, DATA_BLOB *ou
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -897,10 +897,10 @@ static bool encode_paged_results_request(void *mem_ctx, void *in, DATA_BLOB *out
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -935,10 +935,10 @@ static bool encode_asq_control(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -971,10 +971,10 @@ static bool encode_dirsync_request(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -1047,10 +1047,10 @@ static bool encode_vlv_request(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -1089,10 +1089,10 @@ static bool encode_vlv_response(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
 
        return true;
@@ -1140,10 +1140,10 @@ static bool encode_openldap_dereference(void *mem_ctx, void *in, DATA_BLOB *out)
                return false;
        }
 
-       *out = data_blob_talloc(mem_ctx, data->data, data->length);
-       if (out->data == NULL) {
+       if (!asn1_extract_blob(data, mem_ctx, out)) {
                return false;
        }
+
        talloc_free(data);
        return true;
 }