summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/util/asn1.c16
-rw-r--r--lib/util/asn1.h1
-rw-r--r--source3/lib/tldap.c13
3 files changed, 17 insertions, 13 deletions
diff --git a/lib/util/asn1.c b/lib/util/asn1.c
index aadaf8643a..08c4060fd1 100644
--- a/lib/util/asn1.c
+++ b/lib/util/asn1.c
@@ -764,6 +764,22 @@ bool asn1_write_enumerated(struct asn1_data *data, uint8_t v)
}
/*
+ Get us the data just written without copying
+*/
+bool asn1_blob(const struct asn1_data *asn1, DATA_BLOB *blob)
+{
+ if (asn1->has_error) {
+ return false;
+ }
+ if (asn1->nesting != NULL) {
+ return false;
+ }
+ blob->data = asn1->data;
+ blob->length = asn1->length;
+ return true;
+}
+
+/*
check if a ASN.1 blob is a full tag
*/
NTSTATUS asn1_full_tag(DATA_BLOB blob, uint8_t tag, size_t *packet_size)
diff --git a/lib/util/asn1.h b/lib/util/asn1.h
index 0f41ae33e5..b46494b2ea 100644
--- a/lib/util/asn1.h
+++ b/lib/util/asn1.h
@@ -93,6 +93,7 @@ bool asn1_read_Integer(struct asn1_data *data, int *i);
bool asn1_read_enumerated(struct asn1_data *data, int *v);
bool asn1_check_enumerated(struct asn1_data *data, int v);
bool asn1_write_enumerated(struct asn1_data *data, uint8_t v);
+bool asn1_blob(const struct asn1_data *asn1, DATA_BLOB *blob);
NTSTATUS asn1_full_tag(DATA_BLOB blob, uint8_t tag, size_t *packet_size);
#endif /* _ASN_1_H */
diff --git a/source3/lib/tldap.c b/source3/lib/tldap.c
index 7a36310ee4..4d2cd86f75 100644
--- a/source3/lib/tldap.c
+++ b/source3/lib/tldap.c
@@ -318,19 +318,6 @@ static ssize_t read_ldap_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
return talloc_get_size(*pbuf);
}
-static bool asn1_blob(const struct asn1_data *asn1, DATA_BLOB *blob)
-{
- if (asn1->has_error) {
- return false;
- }
- if (asn1->nesting != NULL) {
- return false;
- }
- blob->data = asn1->data;
- blob->length = asn1->length;
- return true;
-}
-
static void asn1_load_nocopy(struct asn1_data *data, uint8_t *buf, size_t len)
{
ZERO_STRUCTP(data);