From: Vsevolod Stakhov Date: Wed, 11 Nov 2015 17:26:06 +0000 (+0000) Subject: Add gboolean check support. X-Git-Tag: 1.1.0~580 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ca7e0347adc650e6f48de1156855d02194c88eb;p=thirdparty%2Frspamd.git Add gboolean check support. --- diff --git a/clang-plugin/printf_check.cc b/clang-plugin/printf_check.cc index 5d0411ab4b..821aae852e 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)