diff options
Diffstat (limited to 'lib/util/base64.c')
-rw-r--r-- | lib/util/base64.c | 13 |
1 files changed, 11 insertions, 2 deletions
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,10 +61,19 @@ _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 **/ _PUBLIC_ void base64_decode_inplace(char *s) |