From 8aec5f6726ff0fcfa7eb8838c400e6338571e5ae Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 3 Feb 2020 11:06:49 +0100 Subject: [PATCH] string_printf Wformat-security hack # #3594, #3592 --- src/libslic3r/libslic3r.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index 0454644bb9..7d9558f1e5 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -231,16 +231,17 @@ static inline bool is_approx(Number value, Number test_value) } template -std::string string_printf(const char *const fmt, Args &&...args) +std::string string_printf(const char *const _fmt, Args &&...args) { static const size_t INITIAL_LEN = 1024; std::vector buffer(INITIAL_LEN, '\0'); - int bufflen = snprintf(buffer.data(), INITIAL_LEN - 1, fmt, std::forward(args)...); + auto fmt = std::string("%s") + _fmt; + int bufflen = snprintf(buffer.data(), INITIAL_LEN - 1, fmt.c_str(), "", std::forward(args)...); if (bufflen >= int(INITIAL_LEN)) { buffer.resize(size_t(bufflen) + 1); - snprintf(buffer.data(), buffer.size(), fmt, std::forward(args)...); + snprintf(buffer.data(), buffer.size(), fmt.c_str(), "", std::forward(args)...); } return std::string(buffer.begin(), buffer.begin() + bufflen);