diff options
author | Andrew Tridgell <tridge@samba.org> | 2011-09-07 15:28:42 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2011-09-08 03:35:27 +0200 |
commit | 6e25723c82eced9eff8c06bd645b754008824370 (patch) | |
tree | 9cec25329c3aafe5418ecd423df6ed688bcce8b9 /lib/util/base64.c | |
parent | 1e9573fe4d6204a0c9b790f290e1a3763e2d980f (diff) | |
download | samba-6e25723c82eced9eff8c06bd645b754008824370.tar.gz |
lib: added base64_decode_data_blob_talloc()
its nice to be able to allocate on other than NULL
Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
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 19ce2d1b850..bc78404c181 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) |