From: Colin Vidal Date: Tue, 14 Oct 2025 10:45:21 +0000 (+0200) Subject: add spatch to detect implicit bool/int/result cast X-Git-Tag: v9.21.16~54^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=754595ea2d9aee4e789d6fc0f295f64f0e2312d6;p=thirdparty%2Fbind9.git add spatch to detect implicit bool/int/result cast Detection of implicit cast from a boolean into an int, or an isc_result_t into a boolean (either in an assignement or return position). If such pattern is found, a warning comment is added into the code (and the CI will fails) so the error can be spotted and manually fixed. --- diff --git a/cocci/implicit_casts_warning.spatch b/cocci/implicit_casts_warning.spatch new file mode 100644 index 00000000000..1f2e10cc913 --- /dev/null +++ b/cocci/implicit_casts_warning.spatch @@ -0,0 +1,56 @@ +@bool_into_int_warning@ +position p; +int i; +bool b; +@@ +i = b@p; + +@script:python@ +p << bool_into_int_warning.p; +@@ +report = coccilib.report.build_report(p[0], "WARNING: implicit bool->int cast on assignment") +sys.stderr.write(report) + + + +@return_isc_result_t_into_bool_warning@ +position p; +isc_result_t result; +identifier fn; +identifier literalresult =~ "ISC_R_.*|DNS_R_.*|DST_R_.*|ISCCC_R_.*"; +@@ +bool fn(...) { +<... +( +return result@p; +| +return literalresult@p; +) +...> +} + +@script:python@ +p << return_isc_result_t_into_bool_warning.p; +@@ +report = coccilib.report.build_report(p[0], "WARNING: implicit isc_result_t->bool cast on return value") +sys.stderr.write(report) + + + +@isc_result_t_into_bool_warning@ +position p; +isc_result_t result; +identifier literalresult =~ "ISC_R_.*|DNS_R_.*|DST_R_.*|ISCCC_R_.*"; +bool b; +@@ +( +b = result@p; +| +b = literalresult@p; +) + +@script:python@ +p << isc_result_t_into_bool_warning.p; +@@ +report = coccilib.report.build_report(p[0], "WARNING: implicit isc_result_t->bool cast on assignment") +sys.stderr.write(report)