diff --git a/rdtk/librdtk/rdtk_font.c b/rdtk/librdtk/rdtk_font.c index 1774ae4ff..fdcc19bd3 100644 --- a/rdtk/librdtk/rdtk_font.c +++ b/rdtk/librdtk/rdtk_font.c @@ -146,6 +146,7 @@ int rdtk_font_text_draw_size(rdtkFont* font, uint16_t* width, uint16_t* height, return 1; } +WINPR_ATTR_MALLOC(free, 1) static char* rdtk_font_load_descriptor_file(const char* filename, size_t* pSize) { WINPR_ASSERT(filename); @@ -170,7 +171,7 @@ static char* rdtk_font_load_descriptor_file(const char* filename, size_t* pSize) if (fileSize.i64 < 1) goto fail; - uint8_t* buffer = (uint8_t*)malloc(fileSize.s + 2); + char* buffer = (char*)calloc(fileSize.s + 4, sizeof(char)); if (!buffer) goto fail; @@ -193,7 +194,7 @@ static char* rdtk_font_load_descriptor_file(const char* filename, size_t* pSize) buffer[fileSize.s] = '\0'; buffer[fileSize.s + 1] = '\0'; *pSize = fileSize.s; - return (char*)buffer; + return buffer; fail: (void)fclose(fp); @@ -238,16 +239,12 @@ static int rdtk_font_convert_descriptor_code_to_utf8(const char* str, uint8_t* u return 1; } -static int rdtk_font_parse_descriptor_buffer(rdtkFont* font, const char* sbuffer, size_t size) +static int rdtk_font_parse_descriptor_buffer(rdtkFont* font, char* buffer, size_t size) { int rc = -1; WINPR_ASSERT(font); - char* buffer = strndup(sbuffer, size); - if (!buffer) - goto fail; - const char xmlversion[] = ""; const char xmlfont[] = "