diff --git a/src/libimp/fmt.cpp b/src/libimp/fmt.cpp index 587b99b..dfeb228 100644 --- a/src/libimp/fmt.cpp +++ b/src/libimp/fmt.cpp @@ -113,6 +113,9 @@ template int sprintf(fmt_context &ctx, span const &sfmt, A a) { for (int sz = -1;;) { auto sbuf = ctx.buffer(sz + 1); + if (sbuf.size() < (sz + 1)) { + return -1; + } sz = std::snprintf(sbuf.data(), sbuf.size(), sfmt.data(), a); if (sz <= 0) { return sz;