From 645b1406d1aef5b9c52f1a3abe58bc480b149b87 Mon Sep 17 00:00:00 2001 From: Ryan Lee Date: Tue, 1 Oct 2024 16:36:10 -0700 Subject: [PATCH] Basic test that invokes aalogparse functions from C++ code Signed-off-by: Ryan Lee --- .gitignore | 4 ++++ libraries/libapparmor/configure.ac | 3 +++ libraries/libapparmor/src/Makefile.am | 5 ++++- .../libapparmor/src/tst_aalogparse_cpp.cpp | 20 +++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 libraries/libapparmor/src/tst_aalogparse_cpp.cpp diff --git a/.gitignore b/.gitignore index c32a35423..d672d90cf 100644 --- a/.gitignore +++ b/.gitignore @@ -109,6 +109,10 @@ libraries/libapparmor/src/tst_aalogmisc libraries/libapparmor/src/tst_aalogmisc.log libraries/libapparmor/src/tst_aalogmisc.o libraries/libapparmor/src/tst_aalogmisc.trs +libraries/libapparmor/src/tst_aalogparse_cpp +libraries/libapparmor/src/tst_aalogparse_cpp.log +libraries/libapparmor/src/tst_aalogparse_cpp.o +libraries/libapparmor/src/tst_aalogparse_cpp.trs libraries/libapparmor/src/tst_aalogparse_reentrancy libraries/libapparmor/src/tst_aalogparse_reentrancy.log libraries/libapparmor/src/tst_aalogparse_reentrancy.o diff --git a/libraries/libapparmor/configure.ac b/libraries/libapparmor/configure.ac index 6e75463a1..85ce865cc 100644 --- a/libraries/libapparmor/configure.ac +++ b/libraries/libapparmor/configure.ac @@ -92,6 +92,8 @@ if test "$ac_cv_prog_cc_c99" = "no"; then AC_MSG_ERROR([C99 mode is required to build libapparmor]) fi +AC_PROG_CXX + m4_ifndef([AX_CHECK_COMPILE_FLAG], [AC_MSG_ERROR(['autoconf-archive' missing])]) EXTRA_CFLAGS="-Wall $EXTRA_WARNINGS -fPIC" AX_CHECK_COMPILE_FLAG([-flto-partition=none], , , [-Werror]) @@ -99,6 +101,7 @@ AS_VAR_IF([ax_cv_check_cflags__Werror__flto_partition_none], [yes], [EXTRA_CFLAGS="$EXTRA_CFLAGS -flto-partition=none"] ,) AC_SUBST([AM_CFLAGS], ["$EXTRA_CFLAGS"]) +AC_SUBST([AM_CXXFLAGS], ["$EXTRA_CFLAGS"]) AC_OUTPUT( Makefile diff --git a/libraries/libapparmor/src/Makefile.am b/libraries/libapparmor/src/Makefile.am index 986b85f9c..f81de3ee3 100644 --- a/libraries/libapparmor/src/Makefile.am +++ b/libraries/libapparmor/src/Makefile.am @@ -73,6 +73,9 @@ CLEANFILES = libapparmor.pc tst_aalogmisc_SOURCES = tst_aalogmisc.c tst_aalogmisc_LDADD = .libs/libapparmor.a +tst_aalogparse_cpp_SOURCES = tst_aalogparse_cpp.cpp +tst_aalogparse_cpp_LDADD = .libs/libapparmor.a + tst_aalogparse_reentrancy_SOURCES = tst_aalogparse_reentrancy.c tst_aalogparse_reentrancy_LDADD = .libs/libapparmor.a tst_aalogparse_reentrancy_LDFLAGS = -pthread @@ -84,7 +87,7 @@ tst_kernel_SOURCES = tst_kernel.c tst_kernel_LDADD = .libs/libapparmor.a tst_kernel_LDFLAGS = -pthread -check_PROGRAMS = tst_aalogmisc tst_aalogparse_reentrancy tst_features tst_kernel +check_PROGRAMS = tst_aalogmisc tst_aalogparse_reentrancy tst_aalogparse_cpp tst_features tst_kernel TESTS = $(check_PROGRAMS) .PHONY: check-local diff --git a/libraries/libapparmor/src/tst_aalogparse_cpp.cpp b/libraries/libapparmor/src/tst_aalogparse_cpp.cpp new file mode 100644 index 000000000..ad28c6ab5 --- /dev/null +++ b/libraries/libapparmor/src/tst_aalogparse_cpp.cpp @@ -0,0 +1,20 @@ +#include +#include + +#include "private.h" + +const char* log_line = "[23342.075380] audit: type=1400 audit(1725487203.971:1831): apparmor=\"DENIED\" operation=\"open\" class=\"file\" profile=\"snap-update-ns.firmware-updater\" name=\"/proc/202964/maps\" pid=202964 comm=\"5\" requested_mask=\"r\" denied_mask=\"r\" fsuid=1000 ouid=0"; + +int main(void) { + int rc = 0; + + /* Very basic test to ensure we can do aalogparse stuff in C++ */ + aa_log_record *record = parse_record(log_line); + MY_TEST(record != NULL, "Log failed to parse"); + MY_TEST(record->version == AA_RECORD_SYNTAX_V2, "Log should have parsed as v2 form"); + MY_TEST(record->aa_namespace == NULL, "Log should have NULL namespace"); + MY_TEST((record->rule_class != NULL) && (strcmp(record->rule_class, "file") == 0), "Log should have file class"); + free_record(record); + + return rc; +} \ No newline at end of file