diff -r 038e3415100a -r bf6cf4dd847a project_files/frontlib/ini/inihelper.c --- a/project_files/frontlib/ini/inihelper.c Thu Jun 07 02:45:18 2012 +0200 +++ b/project_files/frontlib/ini/inihelper.c Fri Jun 08 19:52:24 2012 +0200 @@ -1,5 +1,6 @@ #include "inihelper.h" #include "../logging.h" +#include "../util.h" #include #include @@ -8,25 +9,6 @@ #include #include -static char *flib_asprintf(const char *fmt, ...) { - va_list argp; - va_start(argp, fmt); - size_t requiredSize = vsnprintf(NULL, 0, fmt, argp)+1; - char *buf = malloc(requiredSize); - if(buf) { - vsnprintf(buf, requiredSize, fmt, argp); - } - va_end(argp); - return buf; -} - -char *inihelper_strdupnull(const char *str) { - if(!str) { - return NULL; - } - return flib_asprintf("%s", str); -} - static bool keychar_needs_urlencoding(char c) { return !isalnum(c); } @@ -50,7 +32,10 @@ if(!keychar_needs_urlencoding(inbuf[inpos])) { outbuf[outpos++] = inbuf[inpos++]; } else { - sprintf(outbuf+outpos, "%%%02X", inbuf[inpos]); + if(snprintf(outbuf+outpos, 4, "%%%02X", (unsigned)((uint8_t*)inbuf)[inpos])<0) { + free(outbuf); + return NULL; + } inpos++; outpos += 3; } @@ -106,7 +91,7 @@ } char *inihelper_getstringdup(dictionary *inifile, bool *error, const char *sectionName, const char *keyName) { - return inihelper_strdupnull(inihelper_getstring(inifile, error, sectionName, keyName)); + return flib_strdupnull(inihelper_getstring(inifile, error, sectionName, keyName)); } int inihelper_getint(dictionary *inifile, bool *error, const char *sectionName, const char *keyName) {