From 6e25723c82eced9eff8c06bd645b754008824370 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 7 Sep 2011 15:28:42 +1000 Subject: lib: added base64_decode_data_blob_talloc() its nice to be able to allocate on other than NULL Pair-Programmed-With: Andrew Bartlett --- lib/util/base64.c | 13 +++++++++++-- lib/util/util.h | 8 ++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'lib/util') diff --git a/lib/util/base64.c b/lib/util/base64.c index 19ce2d1b85..bc78404c18 100644 --- a/lib/util/base64.c +++ b/lib/util/base64.c @@ -29,10 +29,10 @@ static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0 /** * Decode a base64 string into a DATA_BLOB - simple and slow algorithm **/ -_PUBLIC_ DATA_BLOB base64_decode_data_blob(const char *s) +_PUBLIC_ DATA_BLOB base64_decode_data_blob_talloc(TALLOC_CTX *mem_ctx, const char *s) { int bit_offset, byte_offset, idx, i, n; - DATA_BLOB decoded = data_blob(s, strlen(s)+1); + DATA_BLOB decoded = data_blob_talloc(mem_ctx, s, strlen(s)+1); unsigned char *d = decoded.data; char *p; @@ -61,9 +61,18 @@ _PUBLIC_ DATA_BLOB base64_decode_data_blob(const char *s) /* fix up length */ decoded.length = n; + decoded.data = talloc_realloc(mem_ctx, decoded.data, uint8_t, n); return decoded; } +/** + * Decode a base64 string into a DATA_BLOB - simple and slow algorithm + **/ +_PUBLIC_ DATA_BLOB base64_decode_data_blob(const char *s) +{ + return base64_decode_data_blob_talloc(NULL, s); +} + /** * Decode a base64 string in-place - wrapper for the above **/ diff --git a/lib/util/util.h b/lib/util/util.h index 0102feaddf..9a76fa9f04 100644 --- a/lib/util/util.h +++ b/lib/util/util.h @@ -412,7 +412,15 @@ _PUBLIC_ void string_replace(char *s, char oldc, char newc); /** Base64 decode a string, place into a data blob. Caller to data_blob_free() the result. **/ +_PUBLIC_ DATA_BLOB base64_decode_data_blob_talloc(TALLOC_CTX *mem_ctx, const char *s); + +/** + Base64 decode a string, place into a data blob on NULL context. + Caller to data_blob_free() the result. +**/ _PUBLIC_ DATA_BLOB base64_decode_data_blob(const char *s); + + /** Base64 decode a string, inplace **/ -- cgit