From 68724d418dd085781218f00a2a68ad586ea4707b Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 16 Jan 2015 12:24:16 +0000 Subject: [PATCH] Fix double format output. --- src/libutil/printf.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/libutil/printf.c b/src/libutil/printf.c index d43e38810..26fc174e8 100644 --- a/src/libutil/printf.c +++ b/src/libutil/printf.c @@ -411,8 +411,19 @@ rspamd_vprintf_common (rspamd_printf_append_func func, case '.': fmt++; - while (*fmt >= '0' && *fmt <= '9') { - frac_width = frac_width * 10 + *fmt++ - '0'; + if (*fmt == '*') { + d = (gint)va_arg (args, gint); + if (G_UNLIKELY (d < 0)) { + msg_err ("critical error: fraction width is less than 0"); + return 0; + } + frac_width = (guint)d; + fmt++; + } + else { + while (*fmt >= '0' && *fmt <= '9') { + frac_width = frac_width * 10 + *fmt++ - '0'; + } } break; -- 2.39.5