X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=lib%2Fnum2str.c;fp=lib%2Fnum2str.c;h=ce17727598d16e51ddb25576ef5718d3d223abe0;hp=1abe22f33794c0ccf6b724e74aef7a1f62271166;hb=38b00241e3bd97b1aed6b669b357f2ec89743f0c;hpb=797ef7b209d7423f34dfe513beeede21d2efddc4 diff --git a/lib/num2str.c b/lib/num2str.c index 1abe22f3..ce177275 100644 --- a/lib/num2str.c +++ b/lib/num2str.c @@ -4,6 +4,7 @@ #include #include "../compiler/compiler.h" +#include "../oslib/asprintf.h" #include "num2str.h" #define ARRAY_SIZE(x) (sizeof((x)) / (sizeof((x)[0]))) @@ -39,10 +40,6 @@ char *num2str(uint64_t num, int maxlen, int base, int pow2, enum n2s_unit units) compiletime_assert(sizeof(sistr) == sizeof(iecstr), "unit prefix arrays must be identical sizes"); assert(units < ARRAY_SIZE(unitstr)); - buf = malloc(128); - if (!buf) - return NULL; - if (pow2) unitprefix = iecstr; else @@ -91,8 +88,9 @@ done: if (post_index >= ARRAY_SIZE(sistr)) post_index = 0; - sprintf(buf, "%llu%s%s", (unsigned long long) num, - unitprefix[post_index], unitstr[units]); + if (asprintf(&buf, "%llu%s%s", (unsigned long long) num, + unitprefix[post_index], unitstr[units]) < 0) + buf = NULL; return buf; } @@ -114,7 +112,8 @@ done: sprintf(fmt, "%%.%df", (int)(maxlen - strlen(tmp) - 1)); sprintf(tmp, fmt, (double)modulo / (double)thousand); - sprintf(buf, "%llu.%s%s%s", (unsigned long long) num, &tmp[2], - unitprefix[post_index], unitstr[units]); + if (asprintf(&buf, "%llu.%s%s%s", (unsigned long long) num, &tmp[2], + unitprefix[post_index], unitstr[units]) < 0) + buf = NULL; return buf; }