From: Ben Ford Date: Tue, 4 Aug 2020 19:36:22 +0000 (-0500) Subject: utils.c: NULL terminate ast_base64decode_string. X-Git-Tag: 18.0.0-rc1~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=769a9611e7639b02e12a5bbb1b7fdc72f96b251d;p=thirdparty%2Fasterisk.git utils.c: NULL terminate ast_base64decode_string. With the addition of STIR/SHAKEN, the function ast_base64decode_string was added for convenience since there is a lot of converting done during the STIR/SHAKEN process. This function returned the decoded string for you, but did not NULL terminate it, causing some issues (specifically with MALLOC_DEBUG). Now, the returned string is NULL terminated, and the documentation has been updated to reflect this. Change-Id: Icdd7d05b323b0c47ff6ed43492937a03641bdcf5 --- diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h index f6280ebdfe..0ee11ee5d5 100644 --- a/include/asterisk/utils.h +++ b/include/asterisk/utils.h @@ -267,7 +267,7 @@ int ast_base64decode(unsigned char *dst, const char *src, int max); * \brief Same as ast_base64decode, but does the math for you and returns * a decoded string * - * \note The returned string will need to be freed later + * \note The returned string will need to be freed later and IS NULL terminated * * \param src The source buffer * diff --git a/main/utils.c b/main/utils.c index 0b6c649342..827ee2e57a 100644 --- a/main/utils.c +++ b/main/utils.c @@ -331,12 +331,13 @@ char *ast_base64decode_string(const char *src) } decoded_len = (encoded_len / 4 * 3) - padding; - decoded_string = ast_calloc(1, decoded_len); + decoded_string = ast_malloc(decoded_len + 1); if (!decoded_string) { return NULL; } ast_base64decode(decoded_string, src, decoded_len); + decoded_string[decoded_len] = '\0'; return (char *)decoded_string; }