From c58c83ea2d70bf679e9a3350bae9aa60f24b9f7f Mon Sep 17 00:00:00 2001 From: lns Date: Tue, 16 May 2023 15:07:43 +0200 Subject: Improved missing usage of nDPIs malloc wrapper. Fixes #1978. * added CI check Signed-off-by: lns --- utils/check_symbols.sh | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 utils/check_symbols.sh (limited to 'utils') diff --git a/utils/check_symbols.sh b/utils/check_symbols.sh new file mode 100755 index 000000000..32f4fac89 --- /dev/null +++ b/utils/check_symbols.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + +set -e + +SCRIPT_DIR="$(realpath $(dirname ${0}))" +NDPI_LIB="${1:-${SCRIPT_DIR}/../src/lib/libndpi.a}" + +if [ ! -r "${NDPI_LIB}" ]; then + printf '%s\n' "${0}: nDPI static library '$(realpath ${NDPI_LIB})' not found." + exit 1 +fi + +FAIL_COUNT=0 +CURRENT_OBJECT='' +for line in `nm -P -u "${NDPI_LIB}"`; do + OBJECT="$(printf '%s' "${line}" | grep -E "^${NDPI_LIB}\[.*\.o\]:" | grep -oE "\[.*\.o\]" || true)" + if [ ! -z "${OBJECT}" ]; then + CURRENT_OBJECT="${OBJECT}" + fi + + #printf '%s\n' "${line}" + FOUND_SYMBOL="$(printf '%s' "${line}" | grep '^\(malloc\|calloc\|realloc\|free\)$' || true)" + + if [ ! -z "${FOUND_SYMBOL}" ]; then + SKIP=0 + case "${CURRENT_OBJECT}" in + '[ndpi_utils.o]'|'[ndpi_memory.o]'|'[roaring.o]') SKIP=1 ;; + esac + + if [ ${SKIP} -eq 0 ]; then + FAIL_COUNT="$(expr ${FAIL_COUNT} + 1)" + printf '%s: %s\n' "${CURRENT_OBJECT}" "${FOUND_SYMBOL}" + fi + fi +done + +printf 'Unwanted symbols found: %s\n' "${FAIL_COUNT}" +if [ ${FAIL_COUNT} -gt 0 ]; then + printf '%s\n' 'Please make sure to use only ndpi_malloc/ndpi_calloc/ndpi_realloc/ndpi_free wrapper instead of malloc/calloc/realloc/free' +fi +exit ${FAIL_COUNT} -- cgit v1.2.3