From 6bc903263a037d7eae53deb1b9f671bb092584dd Mon Sep 17 00:00:00 2001 From: Colin Vidal Date: Tue, 14 Oct 2025 12:45:21 +0200 Subject: [PATCH] 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. (cherry picked from commit 754595ea2d9aee4e789d6fc0f295f64f0e2312d6) --- cocci/implicit_casts_warning.spatch | 56 +++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 cocci/implicit_casts_warning.spatch diff --git a/cocci/implicit_casts_warning.spatch b/cocci/implicit_casts_warning.spatch new file mode 100644 index 0000000000..1f2e10cc91 --- /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)