@@ -13,16 +13,14 @@ * file. */ #include "config.h" -#include #include #include #import "OFStrFTime.h" -#import "OFASPrintF.h" #import "macros.h" static const char weekDays[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; @@ -61,11 +59,11 @@ break; case stateInConversionSpecifier:; const char *appendFormat; unsigned int value = 0; - char *append; + char append[5]; int appendLen; switch (format[i]) { case '%': appendFormat = "%%"; @@ -139,23 +137,22 @@ break; default: return 0; } - appendLen = OFASPrintF(&append, appendFormat, value); - if (appendLen < 0) + appendLen = snprintf(append, sizeof(append), + appendFormat, value); + if (appendLen < 0 || + (size_t)appendLen >= sizeof(append)) return 0; - if (bufferLen - j < (size_t)appendLen) { - free(append); + if (bufferLen - j < (size_t)appendLen) return 0; - } memcpy(buffer + j, append, appendLen); j += appendLen; - free(append); state = stateSearchConversionSpecifier; } } if (j >= bufferLen)