CI: run SAN, UBSAN under Ubuntu 24.04 for more modern tooling

- core: suppress pointer mismatch for UBSAN
  The supression is just an interim solution until the pointer issue
  has been fully analyzed and aligned (or considered OK w/ reasoning).
- suppress an issue in libcivetweb
This commit is contained in:
Rainer Gerhards 2025-09-04 08:37:01 +02:00
parent c0de6aeafc
commit f91adbefc4
No known key found for this signature in database
GPG Key ID: 0CB6B2A8BE80B499
2 changed files with 13 additions and 3 deletions

View File

@ -155,9 +155,12 @@ jobs:
export ABORT_ALL_ON_TEST_FAIL='YES'
export VERBOSE=1
;;
'ubuntu_22_san')
'ubuntu_24_san')
# TODO: remove the -fno-sanitize=function once the root issue is solved. We use
# it in order to migrate to the newer sanitizer checker which otherwise
# would be much delayed. That was the prime reason we did not upgrade before.
export CI_SANITIZE_BLACKLIST='tests/asan.supp'
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04'
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:24.04'
export CC='clang'
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests \
--disable-libfaketime --without-valgrind-testbench --disable-valgrind \
@ -167,6 +170,7 @@ jobs:
export CFLAGS="-fstack-protector -D_FORTIFY_SOURCE=2 \
-fsanitize=address,undefined,nullability,unsigned-integer-overflow \
-fno-sanitize-recover=undefined,nullability,unsigned-integer-overflow \
-fno-sanitize=function \
-g -O3 -fno-omit-frame-pointer -fno-color-diagnostics"
export LSAN_OPTIONS='detect_leaks=0'
export UBSAN_OPTIONS='print_stacktrace=1'

View File

@ -1154,7 +1154,10 @@ finalize_it:
* a pointer to the objects interface.
* rgerhards, 2008-02-29
*/
static rsRetVal UseObj(const char *srcFile, uchar *pObjName, uchar *pObjFile, interface_t *pIf) {
static ATTR_NO_SANITIZE_UNDEFINED rsRetVal UseObj(const char *srcFile,
uchar *pObjName,
uchar *pObjFile,
interface_t *pIf) {
DEFiRet;
objInfo_t *pObjInfo;
@ -1201,6 +1204,9 @@ static rsRetVal UseObj(const char *srcFile, uchar *pObjName, uchar *pObjFile, in
module.Use(srcFile, pObjInfo->pModInfo); /* increase refcount */
}
// TODO: fix interface pointer type, remove ATTR_NO_SANITIZE_UNDEFINED above
// The supression is just an interim solution until the pointer issue
// has been fully analyzed and aligned (or considered OK w/ reasoning).
CHKiRet(pObjInfo->QueryIF(pIf));
pIf->ifIsLoaded = 1; /* we are happy */