From 8ca7e0347adc650e6f48de1156855d02194c88eb Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 11 Nov 2015 17:26:06 +0000 Subject: [PATCH] Add gboolean check support. --- clang-plugin/printf_check.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/clang-plugin/printf_check.cc b/clang-plugin/printf_check.cc index 5d0411ab4..821aae852 100644 --- a/clang-plugin/printf_check.cc +++ b/clang-plugin/printf_check.cc @@ -75,6 +75,9 @@ namespace rspamd { static bool int32_arg_handler (const Expr *arg, struct PrintfArgChecker *ctx); + static bool gboolean_arg_handler (const Expr *arg, + struct PrintfArgChecker *ctx); + static bool tok_arg_handler (const Expr *arg, struct PrintfArgChecker *ctx); @@ -187,6 +190,9 @@ 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); @@ -350,7 +356,7 @@ namespace rspamd { format_specs = { 's', 'd', 'l', 'L', 'v', 'V', 'f', 'F', 'g', 'G', - 'T', 'z', 'D', 'c', 'p', 'P', 'e' + 'T', 'z', 'D', 'c', 'p', 'P', 'e', 'b' }; }; @@ -674,6 +680,15 @@ 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) -- 2.39.5