From 91287bb8407e3b9022bc663b07870510aedabbc3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 27 Oct 2018 17:56:47 +0100 Subject: [Fix] Remove ambigious format flag from printf --- clang-plugin/printf_check.cc | 14 +------------- src/libserver/cfg_rcl.c | 6 ++++-- src/libutil/printf.c | 7 ------- src/libutil/printf.h | 1 - src/rspamadm/configdump.c | 4 ++-- 5 files changed, 7 insertions(+), 25 deletions(-) diff --git a/clang-plugin/printf_check.cc b/clang-plugin/printf_check.cc index 9b4819d08..f8a78aa0b 100644 --- a/clang-plugin/printf_check.cc +++ b/clang-plugin/printf_check.cc @@ -187,9 +187,6 @@ namespace rspamd { case 'D': return llvm::make_unique (int32_arg_handler, this->pcontext, this->ci); - case 'B': - return llvm::make_unique (gboolean_arg_handler, - this->pcontext, this->ci); case 'T': return llvm::make_unique (tok_arg_handler, this->pcontext, this->ci); @@ -369,7 +366,7 @@ namespace rspamd { format_specs = { 's', 'd', 'l', 'L', 'v', 'V', 'f', 'F', 'g', 'G', - 'T', 'z', 'D', 'c', 'p', 'P', 'e', 'B' + 'T', 'z', 'D', 'c', 'p', 'P', 'e' }; }; @@ -719,15 +716,6 @@ namespace rspamd { return true; } - static bool - gboolean_arg_handler (const Expr *arg, struct PrintfArgChecker *ctx) - { - return check_builtin_type (arg, - ctx, - {BuiltinType::Kind::Int}, // gboolean is int in fact - "%b"); - } - static bool check_struct_type (const Expr *arg, struct PrintfArgChecker *ctx, const std::string &sname, const std::string &fmt) diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 8d18335d2..a96cd6b67 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -2509,7 +2509,8 @@ rspamd_rcl_parse_struct_string (rspamd_mempool_t *pool, break; case UCL_BOOLEAN: *target = rspamd_mempool_alloc (pool, num_str_len); - rspamd_snprintf (*target, num_str_len, "%B", (gboolean)obj->value.iv); + rspamd_snprintf (*target, num_str_len, "%s", + ((gboolean)obj->value.iv) ? "true" : "false"); break; default: g_set_error (err, @@ -2869,7 +2870,8 @@ rspamd_rcl_parse_struct_string_list (rspamd_mempool_t *pool, break; case UCL_BOOLEAN: val = rspamd_mempool_alloc (pool, num_str_len); - rspamd_snprintf (val, num_str_len, "%B", (gboolean)cur->value.iv); + rspamd_snprintf (val, num_str_len, "%s", + ((gboolean)cur->value.iv) ? "true" : "false"); break; default: g_set_error (err, diff --git a/src/libutil/printf.c b/src/libutil/printf.c index 7ee4d35e6..148b49d9e 100644 --- a/src/libutil/printf.c +++ b/src/libutil/printf.c @@ -602,7 +602,6 @@ rspamd_vprintf_common (rspamd_printf_append_func func, rspamd_ftok_t *tok; GString *gs; GError *err; - gboolean bv; while (*fmt) { @@ -969,12 +968,6 @@ rspamd_vprintf_common (rspamd_printf_append_func func, continue; - case 'B': - bv = (gboolean) va_arg (args, double); - RSPAMD_PRINTF_APPEND (bv ? "true" : "false", bv ? 4 : 5); - - continue; - case 'p': ui64 = (uintptr_t) va_arg (args, void *); hex = 2; diff --git a/src/libutil/printf.h b/src/libutil/printf.h index 73787d3a5..86947f67c 100644 --- a/src/libutil/printf.h +++ b/src/libutil/printf.h @@ -32,7 +32,6 @@ * %[0][width][.width]F long double * %[0][width][.width]g double * %[0][width][.width]G long double - * %B boolean (true or false) * %P pid_t * %r rlim_t * %p void * diff --git a/src/rspamadm/configdump.c b/src/rspamadm/configdump.c index 962089437..cf08ceac0 100644 --- a/src/rspamadm/configdump.c +++ b/src/rspamadm/configdump.c @@ -143,8 +143,8 @@ rspamadm_add_doc_elt (const ucl_object_t *obj, const ucl_object_t *doc_obj, elt = ucl_object_lookup (doc_obj, "required"); if (elt) { - rspamd_printf_fstring (&comment, " * Required: %B", - ucl_object_toboolean (elt)); + rspamd_printf_fstring (&comment, " * Required: %s", + ucl_object_toboolean (elt) ? "true" : "false"); cur_comment = ucl_object_fromstring_common (comment->str, comment->len, 0); rspamd_fstring_erase (comment, 0, comment->len); DL_APPEND (nobj, cur_comment); -- cgit v1.2.3