# HG changeset patch # User Olaf Wintermann # Date 1376314480 -7200 # Node ID d9bdd5a22c1d8268ebc4444c36c67d5848320bbf # Parent 9c64d2a3d10152e86e2c02cd66369c7e7fc5609c base64 encoded passwords in config.xml diff -r 9c64d2a3d101 -r d9bdd5a22c1d dav/config.c --- a/dav/config.c Mon Aug 12 14:55:31 2013 +0200 +++ b/dav/config.c Mon Aug 12 15:34:40 2013 +0200 @@ -90,8 +90,7 @@ } else if(xstreq(node->name, "user")) { repo->user = strdup(value); } else if(xstreq(node->name, "password")) { - // TODO: use base64 - repo->password = strdup(value); + repo->password = util_base64decode(value); } else if(xstreq(node->name, "default-key")) { repo->default_key = strdup(value); } else if(xstreq(node->name, "encrypt")) { diff -r 9c64d2a3d101 -r d9bdd5a22c1d dav/utils.c --- a/dav/utils.c Mon Aug 12 14:55:31 2013 +0200 +++ b/dav/utils.c Mon Aug 12 15:34:40 2013 +0200 @@ -34,6 +34,12 @@ #include #include +#include +#include +#include +#include +#include + #include "utils.h" @@ -150,3 +156,19 @@ return NULL; } + + +char* util_base64decode(char* in) { + size_t len = strlen(in); + char *out = calloc(1, len); + + BIO* b = BIO_new_mem_buf(in, len); + BIO *d = BIO_new(BIO_f_base64()); + BIO_set_flags(d, BIO_FLAGS_BASE64_NO_NL); + b = BIO_push(d, b); + + BIO_read(b, out, len); + BIO_free_all(b); + + return out; +} diff -r 9c64d2a3d101 -r d9bdd5a22c1d dav/utils.h --- a/dav/utils.h Mon Aug 12 14:55:31 2013 +0200 +++ b/dav/utils.h Mon Aug 12 15:34:40 2013 +0200 @@ -47,6 +47,8 @@ char* util_xml_get_text(xmlNode *elm); +char* util_base64decode(char* in); + #ifdef __cplusplus } #endif