mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 14:07:59 +00:00
Work around cppcheck 2.0 uninitvar false positives
cppcheck 2.0 reports false positives about uninitialized variables in a lot of places throughout BIND source code, e.g.: bin/dnssec/dnssec-cds.c:283:6: error: Uninitialized variable: length [uninitvar] if (isc_buffer_availablelength(&buf) <= len) { ^ Apparently cppcheck 2.0 has issues with processing (&var)->field syntax, which is what the macros from lib/isc/include/isc/buffer.h are evaluated to. This issue was reported upstream [1] and will hopefully be addressed in a future cppcheck release. In the meantime, to avoid modifying BIND source code in multiple places just because of a static checker false positive, work around the issue by adding intermediate variables to buffer macro definitions using a sed invocation in the cppcheck job script. [1] https://sourceforge.net/p/cppcheck/discussion/general/thread/122153e3c1/
This commit is contained in:
@@ -353,6 +353,9 @@ stages:
|
||||
<<: *default_triggering_rules
|
||||
stage: postcheck
|
||||
script:
|
||||
# Workaround for cppcheck 2.0 uninitvar false positives triggered by (&var)->field syntax
|
||||
# (see: https://sourceforge.net/p/cppcheck/discussion/general/thread/122153e3c1/)
|
||||
- sed -i '/^#define ISC__BUFFER.*\\$/{s|_b|__b|;N;s|do {|\0 isc_buffer_t *_b = (isc_buffer_t *)__b;|}; /^#define ISC__BUFFER.*REGION.*\\$/{s|_r|__r|;N;s|do {|\0 isc_region_t *_r = (isc_region_t *)__r;|; /USEDREGION/{s|isc_buffer_t|const \0|g}}' lib/isc/include/isc/buffer.h
|
||||
- *configure
|
||||
- (make -nwk all || true) | compiledb
|
||||
- export GCC_VERSION=$(gcc --version | sed -n 's/.* \([0-9]\+\)\.[0-9]\+\.[0-9]\+.*/\1/p')
|
||||
|
Reference in New Issue
Block a user