[packages/audit] Up to 4.1.2

arekm arekm at pld-linux.org
Mon Jan 19 21:46:42 CET 2026


commit ee77e1db24ad31c9f9b8ec120fcc55d666b750d8
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Mon Jan 19 21:45:33 2026 +0100

    Up to 4.1.2

 audit-install.patch             |  20 --
 audit-no-refusemanualstop.patch |  14 +-
 audit-systemd-notonly.patch     |  65 ----
 audit.spec                      | 127 +++-----
 gcc14.patch                     | 655 ----------------------------------------
 5 files changed, 53 insertions(+), 828 deletions(-)
---
diff --git a/audit.spec b/audit.spec
index 220635b..85353fe 100644
--- a/audit.spec
+++ b/audit.spec
@@ -3,38 +3,28 @@
 %bcond_without	kerberos5	# Kerberos V support via heimdal
 %bcond_without	golang		# Go language bindings
 %bcond_with	gccgo		# use GCC go frontend instead of golang implementation
-%bcond_without	python		# Python bindings (any)
-%bcond_without	python2		# Python 2 bindings
-%bcond_without	python3		# Python 3 bindings
+%bcond_without	python		# Python bindings
 %bcond_without	zos_remote	# zos-remote audisp plugin (LDAP dep)
 
 %ifnarch %{go_arches}
 %define		with_gccgo	1
 %endif
 
-%if %{without python}
-%undefine	with_python2
-%undefine	with_python3
-%endif
-
 Summary:	User space tools for 2.6 kernel auditing
 Summary(pl.UTF-8):	Narzędzia przestrzeni użytkownika do audytu jąder 2.6
 Name:		audit
-Version:	3.1.4
-Release:	3
+Version:	4.1.2
+Release:	1
 License:	GPL v2+
 Group:		Daemons
-Source0:	https://people.redhat.com/sgrubb/audit/%{name}-%{version}.tar.gz
-# Source0-md5:	ff038f1056572ecfa01293b96cc33d70
+Source0:	https://github.com/linux-audit/audit-userspace/archive/refs/tags/v%{version}.tar.gz
+# Source0-md5:	6c02718852fb6993c8a97dd39c1ffc1b
 Source2:	%{name}d.init
 Source3:	%{name}d.sysconfig
-Patch0:		%{name}-install.patch
-Patch1:		%{name}-nolibs.patch
-Patch2:		%{name}-systemd-notonly.patch
-Patch3:		%{name}-no-refusemanualstop.patch
-Patch4:		golang-paths.patch
-Patch5:		gcc14.patch
-URL:		http://people.redhat.com/sgrubb/audit/
+Patch0:		%{name}-nolibs.patch
+Patch1:		%{name}-no-refusemanualstop.patch
+Patch2:		golang-paths.patch
+URL:		https://github.com/linux-audit/audit-userspace
 BuildRequires:	autoconf >= 2.59
 BuildRequires:	automake >= 1:1.12.6
 BuildRequires:	glibc-headers >= 6:2.3.6
@@ -44,13 +34,7 @@ BuildRequires:	libtool >= 2:2
 BuildRequires:	libwrap-devel
 BuildRequires:	linux-libc-headers >= 7:2.6.30
 %{?with_zos_remote:BuildRequires:	openldap-devel}
-%if %{with python2}
-BuildRequires:	python-devel >= 1:2.5
-BuildRequires:	python-modules
-BuildRequires:	rpm-pythonprov
-BuildRequires:	swig-python
-%endif
-%if %{with python3}
+%if %{with python}
 BuildRequires:	python3-devel
 BuildRequires:	rpm-pythonprov
 BuildRequires:	swig-python
@@ -149,19 +133,6 @@ Go language interface to libaudit library.
 %description -n golang-audit -l pl.UTF-8
 Interfejs języka Go do biblioteki libaudit.
 
-%package -n python-audit
-Summary:	Python 2.x interface to libaudit library
-Summary(pl.UTF-8):	Interfejs Pythona 2.x do biblioteki libaudit
-License:	LGPL v2.1+
-Group:		Libraries/Python
-Requires:	%{name}-libs = %{version}-%{release}
-
-%description -n python-audit
-Python 2.x interface to libaudit library.
-
-%description -n python-audit -l pl.UTF-8
-Interfejs Pythona 2.x do biblioteki libaudit.
-
 %package -n python3-audit
 Summary:	Python 3.x interface to libaudit library
 Summary(pl.UTF-8):	Interfejs Pythona 3.x do biblioteki libaudit
@@ -176,13 +147,10 @@ Python 3.x interface to libaudit library.
 Interfejs Pythona 3.x do biblioteki libaudit.
 
 %prep
-%setup -q
-%patch -P 0 -p1
-%patch -P 1 -p1
-%patch -P 2 -p1
-%patch -P 3 -p1
-%patch -P 4 -p1
-%patch -P 5 -p1
+%setup -q -n %{name}-userspace-%{version}
+%patch -P0 -p1
+%patch -P1 -p1
+%patch -P2 -p1
 
 %if %{without python}
 sed 's#[^ ]*swig/[^ ]*/Makefile ##g' -i configure.ac
@@ -201,7 +169,6 @@ sed 's/swig//' -i bindings/Makefile.am
 	CFLAGS_FOR_BUILD="%{rpmcflags}" \
 	LDFLAGS_FOR_BUILD="%{rpmldflags}" \
 	%{?with_kerberos5:--enable-gssapi-krb5} \
-	--enable-systemd \
 	--with-apparmor \
 	--with-io_uring \
 	--with-libwrap \
@@ -211,16 +178,17 @@ sed 's/swig//' -i bindings/Makefile.am
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_sysconfdir}/audit/rules.d,%{_var}/log/audit}
+install -d $RPM_BUILD_ROOT{%{_initddir},%{_sysconfdir}/{audit/rules.d,sysconfig},%{_var}/log/audit}
 
 %{__make} install \
+	initdir=%{systemdunitdir} \
 	DESTDIR=$RPM_BUILD_ROOT
 
 # default to no audit (and no overhead)
 cp -p rules/10-no-audit.rules $RPM_BUILD_ROOT%{_sysconfdir}/audit/rules.d
 
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/auditd
-install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/auditd
+cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/auditd
+cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/auditd
 
 install -d $RPM_BUILD_ROOT/%{_lib}
 %{__mv} $RPM_BUILD_ROOT%{_libdir}/libaudit.so.* $RPM_BUILD_ROOT/%{_lib}
@@ -229,18 +197,14 @@ ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libaudit.so.*.*.*) \
 %{__mv} $RPM_BUILD_ROOT%{_libdir}/libauparse.so.* $RPM_BUILD_ROOT/%{_lib}
 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libauparse.so.*.*.*) \
 	$RPM_BUILD_ROOT%{_libdir}/libauparse.so
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/libauplugin.so.* $RPM_BUILD_ROOT/%{_lib}
+ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libauplugin.so.*.*.*) \
+     $RPM_BUILD_ROOT%{_libdir}/libauplugin.so
 
 # RH initscripts-specific
 %{__rm} -r $RPM_BUILD_ROOT%{_libexecdir}/initscripts
 
-%if %{with python2}
-%py_comp $RPM_BUILD_ROOT%{py_sitedir}
-%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
-%py_postclean
-%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/*.la
-%endif
-
-%if %{with python3}
+%if %{with python}
 %{__rm} $RPM_BUILD_ROOT%{py3_sitedir}/*.la
 %endif
 
@@ -299,42 +263,46 @@ fi
 
 %files
 %defattr(644,root,root,755)
-%doc AUTHORS ChangeLog README THANKS rules/{README-rules,*.rules} init.d/auditd.cron
+%doc AUTHORS ChangeLog README.md THANKS rules/{README-rules,*.rules} init.d/auditd.cron
 %attr(750,root,root) %{_bindir}/aulast
 %attr(750,root,root) %{_bindir}/aulastlog
 %attr(750,root,root) %{_bindir}/ausyscall
-%attr(750,root,root) %{_bindir}/auvirt
 %attr(750,root,root) %{_sbindir}/auditctl
 %attr(750,root,root) %{_sbindir}/auditd
 %attr(750,root,root) %{_sbindir}/augenrules
 %attr(750,root,root) %{_sbindir}/aureport
 %attr(750,root,root) %{_sbindir}/ausearch
-%attr(750,root,root) %{_sbindir}/autrace
 %attr(755,root,root) %{_sbindir}/audisp-af_unix
+%attr(755,root,root) %{_sbindir}/audisp-filter
 %attr(755,root,root) %{_sbindir}/audisp-remote
 %attr(755,root,root) %{_sbindir}/audisp-syslog
-%dir %{_datadir}/audit
-%{_datadir}/audit/sample-rules
 %dir %{_sysconfdir}/audit
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/audisp-filter.conf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/audisp-remote.conf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/audit-stop.rules
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/auditd.conf
 %dir %{_sysconfdir}/audit/plugins.d
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/plugins.d/af_unix.conf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/plugins.d/au-remote.conf
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/plugins.d/filter.conf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/audit/plugins.d/syslog.conf
 %dir %{_sysconfdir}/audit/rules.d
 %attr(640,root,root) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/audit/rules.d/10-no-audit.rules
 %attr(754,root,root) /etc/rc.d/init.d/auditd
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/auditd
 %{systemdunitdir}/auditd.service
+%{systemdunitdir}/audit-rules.service
 %attr(750,root,root) %dir %{_var}/log/audit
+%{_datadir}/audit-rules
+%{systemdtmpfilesdir}/audit.conf
 %{_mandir}/man5/audisp-remote.conf.5*
 %{_mandir}/man5/auditd.conf.5*
+%{_mandir}/man5/auditd.cron.5*
 %{_mandir}/man5/auditd-plugins.5*
 %{_mandir}/man5/ausearch-expression.5*
 %{_mandir}/man7/audit.rules.7*
 %{_mandir}/man8/audisp-af_unix.8*
+%{_mandir}/man8/audisp-filter.8*
 %{_mandir}/man8/audisp-remote.8*
 %{_mandir}/man8/audisp-syslog.8*
 %{_mandir}/man8/auditctl.8*
@@ -345,8 +313,6 @@ fi
 %{_mandir}/man8/aureport.8*
 %{_mandir}/man8/ausearch.8*
 %{_mandir}/man8/ausyscall.8*
-%{_mandir}/man8/autrace.8*
-%{_mandir}/man8/auvirt.8*
 
 %if %{with zos_remote}
 %attr(755,root,root) %{_sbindir}/audispd-zos-remote
@@ -358,34 +324,41 @@ fi
 
 %files libs
 %defattr(644,root,root,755)
-%attr(755,root,root) /%{_lib}/libaudit.so.*.*.*
-%attr(755,root,root) %ghost /%{_lib}/libaudit.so.1
-%attr(755,root,root) /%{_lib}/libauparse.so.*.*.*
-%attr(755,root,root) %ghost /%{_lib}/libauparse.so.0
+/%{_lib}/libaudit.so.*.*.*
+%ghost /%{_lib}/libaudit.so.1
+/%{_lib}/libauparse.so.*.*.*
+%ghost /%{_lib}/libauparse.so.0
+/%{_lib}/libauplugin.so.*.*.*
+%ghost /%{_lib}/libauplugin.so.1
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/libaudit.conf
 %{_mandir}/man5/libaudit.conf.5*
 
 %files libs-devel
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libaudit.so
-%attr(755,root,root) %{_libdir}/libauparse.so
+%{_libdir}/libaudit.so
+%{_libdir}/libauparse.so
+%{_libdir}/libauplugin.so
 %{_libdir}/libaudit.la
 %{_libdir}/libauparse.la
+%{_libdir}/libauplugin.la
+%{_includedir}/audit*.h
 %{_includedir}/auparse*.h
+%{_includedir}/auplugin*.h
 %{_includedir}/libaudit.h
 %{_pkgconfigdir}/audit.pc
 %{_pkgconfigdir}/auparse.pc
 %{_aclocaldir}/audit.m4
 %{_mandir}/man3/audit_*.3*
 %{_mandir}/man3/auparse_*.3*
+%{_mandir}/man3/auplugin*.3*
 %{_mandir}/man3/ausearch_*.3*
 %{_mandir}/man3/get_auditfail_action.3*
-%{_mandir}/man3/set_aumessage_mode.3*
 
 %files libs-static
 %defattr(644,root,root,755)
 %{_libdir}/libaudit.a
 %{_libdir}/libauparse.a
+%{_libdir}/libauplugin.a
 
 %if %{with golang}
 %files -n golang-audit
@@ -394,15 +367,7 @@ fi
 %{_libdir}/golang/src/redhat.com/audit
 %endif
 
-%if %{with python2}
-%files -n python-audit
-%defattr(644,root,root,755)
-%attr(755,root,root) %{py_sitedir}/_audit.so
-%attr(755,root,root) %{py_sitedir}/auparse.so
-%{py_sitedir}/audit.py[co]
-%endif
-
-%if %{with python3}
+%if %{with python}
 %files -n python3-audit
 %defattr(644,root,root,755)
 %attr(755,root,root) %{py3_sitedir}/_audit.so
diff --git a/audit-install.patch b/audit-install.patch
deleted file mode 100644
index 8ef375c..0000000
--- a/audit-install.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- audit-3.0.8/init.d/Makefile.am.orig	2022-05-20 22:56:01.207939846 +0200
-+++ audit-3.0.8/init.d/Makefile.am	2022-05-21 09:06:17.806237390 +0200
-@@ -42,7 +42,7 @@ dist_audit_DATA = auditd.conf audit-stop
- sbin_SCRIPTS = augenrules
- 
- install-data-hook:
--	$(INSTALL_DATA) -D -m 640 ${srcdir}/${libconfig} ${DESTDIR}${sysconfdir}
-+	$(INSTALL_DATA) -D -m 640 ${srcdir}/${libconfig} ${DESTDIR}${sysconfdir}/${libconfig}
- if ENABLE_SYSTEMD
- else
- 	$(INSTALL_DATA) -D -m 640 ${srcdir}/auditd.sysconfig ${DESTDIR}${sysconfigdir}/auditd
-@@ -53,7 +53,7 @@ if ENABLE_SYSTEMD
- 	mkdir -p ${DESTDIR}${initdir}
- 	mkdir -p ${DESTDIR}${legacydir}
- 	mkdir -p ${DESTDIR}${libexecdir}
--	$(INSTALL_SCRIPT) -D -m 644 ${srcdir}/auditd.service ${DESTDIR}${initdir}
-+	$(INSTALL_SCRIPT) -D -m 644 ${srcdir}/auditd.service ${DESTDIR}${initdir}/auditd.service
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.rotate ${DESTDIR}${legacydir}/rotate
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.resume ${DESTDIR}${legacydir}/resume
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.reload ${DESTDIR}${legacydir}/reload
diff --git a/audit-no-refusemanualstop.patch b/audit-no-refusemanualstop.patch
index 0b0172d..aa81dd5 100644
--- a/audit-no-refusemanualstop.patch
+++ b/audit-no-refusemanualstop.patch
@@ -1,10 +1,10 @@
---- audit-3.0.8/init.d/auditd.service.orig	2022-05-21 09:13:09.864005082 +0200
-+++ audit-3.0.8/init.d/auditd.service	2022-05-21 09:13:29.090567589 +0200
-@@ -11,7 +11,6 @@ After=local-fs.target systemd-tmpfiles-s
- Before=sysinit.target shutdown.target
- ##Before=shutdown.target
+--- audit-userspace-4.1.2/init.d/auditd.service.in~	2025-09-02 03:57:57.000000000 +0200
++++ audit-userspace-4.1.2/init.d/auditd.service.in	2026-01-19 21:10:22.091850067 +0100
+@@ -24,7 +24,6 @@ After=local-fs.target systemd-tmpfiles-s
+ Before=sysinit.target shutdown.target audit-rules.service
+ #Before=shutdown.target
  Conflicts=shutdown.target
 -RefuseManualStop=yes
- ConditionKernelCommandLine=!audit=0
- ConditionKernelCommandLine=!audit=off
+ 
+ Documentation=man:auditd(8) https://github.com/linux-audit/audit-documentation
  
diff --git a/audit-systemd-notonly.patch b/audit-systemd-notonly.patch
deleted file mode 100644
index 8dd210e..0000000
--- a/audit-systemd-notonly.patch
+++ /dev/null
@@ -1,65 +0,0 @@
---- audit-3.1.4/init.d/Makefile.am.orig	2024-05-19 09:59:22.005980091 +0200
-+++ audit-3.1.4/init.d/Makefile.am	2024-05-19 10:14:22.091103912 +0200
-@@ -29,12 +29,11 @@ EXTRA_DIST = auditd.init auditd.service
- 	audit-stop.rules augenrules
- libconfig = libaudit.conf
- if ENABLE_SYSTEMD
--initdir = /usr/lib/systemd/system
-+systemdunitdir = /lib/systemd/system
- legacydir = $(libexecdir)/initscripts/legacy-actions/auditd
--else
-+endif
- initdir = $(sysconfdir)/rc.d/init.d
- sysconfigdir = $(sysconfdir)/sysconfig
--endif
- 
- auditdir = $(sysconfdir)/audit
- auditrdir = $(auditdir)/rules.d
-@@ -43,17 +42,14 @@ sbin_SCRIPTS = augenrules
- 
- install-data-hook:
- 	$(INSTALL_DATA) -D -m 640 ${srcdir}/${libconfig} ${DESTDIR}${sysconfdir}/${libconfig}
--if ENABLE_SYSTEMD
--else
- 	$(INSTALL_DATA) -D -m 640 ${srcdir}/auditd.sysconfig ${DESTDIR}${sysconfigdir}/auditd
--endif
- 
- install-exec-hook:
- if ENABLE_SYSTEMD
- 	mkdir -p ${DESTDIR}${initdir}
- 	mkdir -p ${DESTDIR}${legacydir}
- 	mkdir -p ${DESTDIR}${libexecdir}
--	$(INSTALL_SCRIPT) -D -m 644 ${srcdir}/auditd.service ${DESTDIR}${initdir}/auditd.service
-+	$(INSTALL_SCRIPT) -D -m 644 ${srcdir}/auditd.service ${DESTDIR}${systemdunitdir}/auditd.service
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.rotate ${DESTDIR}${legacydir}/rotate
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.resume ${DESTDIR}${legacydir}/resume
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.reload ${DESTDIR}${legacydir}/reload
-@@ -61,16 +57,15 @@ if ENABLE_SYSTEMD
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.stop ${DESTDIR}${legacydir}/stop
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.restart ${DESTDIR}${legacydir}/restart
- 	$(INSTALL_SCRIPT) -D -m 750 ${srcdir}/auditd.condrestart ${DESTDIR}${legacydir}/condrestart
--else
--	$(INSTALL_SCRIPT) -D ${srcdir}/auditd.init ${DESTDIR}${initdir}/auditd
- endif
-+	$(INSTALL_SCRIPT) -D ${srcdir}/auditd.init ${DESTDIR}${initdir}/auditd
- 	chmod 0755 $(DESTDIR)$(sbindir)/augenrules
- 
- 
- uninstall-hook:
- 	rm ${DESTDIR}${sysconfdir}/${libconfig}
- if ENABLE_SYSTEMD
--	rm ${DESTDIR}${initdir}/auditd.service
-+	rm ${DESTDIR}${systemdunitdir}/auditd.service
- 	rm ${DESTDIR}${legacydir}/rotate
- 	rm ${DESTDIR}${legacydir}/resume
- 	rm ${DESTDIR}${legacydir}/reload
-@@ -78,8 +73,7 @@ if ENABLE_SYSTEMD
- 	rm ${DESTDIR}${legacydir}/stop
- 	rm ${DESTDIR}${legacydir}/restart
- 	rm ${DESTDIR}${legacydir}/condrestart
--else
-+endif
- 	rm ${DESTDIR}${sysconfigdir}/auditd
- 	rm ${DESTDIR}${initdir}/auditd
--endif
- 
diff --git a/gcc14.patch b/gcc14.patch
deleted file mode 100644
index 59b09f6..0000000
--- a/gcc14.patch
+++ /dev/null
@@ -1,655 +0,0 @@
-From ec6763ed29a034b452a6fb568b226c57c7be30e7 Mon Sep 17 00:00:00 2001
-From: Yanase Yuki <41878038+zpc0 at users.noreply.github.com>
-Date: Tue, 14 May 2024 04:51:35 +0900
-Subject: [PATCH] Implicit builtin functions (#372)
-
-Correct a number of places where printf is being used without a prototype.
-All cases are in libraries which should not be using printf. Change them
-to return an error rather than communicate the problem.
-
-This is a backport of 8c7eaa7
-
-Co-authored-by: Steve Grubb <ausearch.1 at gmail.com>
----
- audisp/audispd-llist.c            | 10 +++++-----
- audisp/audispd-llist.h            |  4 ++--
- auparse/normalize-llist.c         | 12 ++++++------
- auparse/normalize-llist.h         |  4 ++--
- auparse/normalize.c               | 14 +++++++++-----
- src/auditctl-llist.c              | 18 +++++++++---------
- src/auditctl-llist.h              |  4 ++--
- src/ausearch-avc.c                | 16 ++++++++--------
- src/ausearch-avc.h                |  4 ++--
- src/ausearch-int.c                | 12 ++++++------
- src/ausearch-int.h                |  4 ++--
- src/ausearch-llist.c              | 14 +++++++-------
- src/ausearch-llist.h              |  2 +-
- src/ausearch-nvpair.c             | 12 ++++++------
- src/ausearch-nvpair.h             |  4 ++--
- src/ausearch-string.c             | 10 +++++-----
- src/ausearch-string.h             |  2 +-
- tools/aulastlog/aulastlog-llist.c | 18 +++++++++---------
- tools/aulastlog/aulastlog-llist.h |  4 ++--
- 19 files changed, 86 insertions(+), 82 deletions(-)
-
-diff --git a/audisp/audispd-llist.c b/audisp/audispd-llist.c
-index 30d7f03be..15ec038be 100644
---- a/audisp/audispd-llist.c
-+++ b/audisp/audispd-llist.c
-@@ -69,15 +69,13 @@ unsigned int plist_count_active(const conf_llist *l)
- 	return cnt;
- }
- 
--void plist_append(conf_llist *l, plugin_conf_t *p)
-+int plist_append(conf_llist *l, plugin_conf_t *p)
- {
- 	lnode* newnode;
- 
- 	newnode = malloc(sizeof(lnode));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	if (p) {
- 		void *pp = malloc(sizeof(struct plugin_conf));
-@@ -98,6 +96,8 @@ void plist_append(conf_llist *l, plugin_conf_t *p)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- void plist_clear(conf_llist* l)
-diff --git a/audisp/audispd-llist.h b/audisp/audispd-llist.h
-index 7c5279bd4..fb30f12b9 100644
---- a/audisp/audispd-llist.h
-+++ b/audisp/audispd-llist.h
-@@ -1,6 +1,6 @@
- /*
- * audispd-llist.h - Header file for ausearch-conf_llist.c
--* Copyright (c) 2007,2013 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2007,2013 Red Hat Inc.
- * All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
-@@ -51,7 +51,7 @@ unsigned int plist_count_active(const conf_llist *l);
- void plist_last(conf_llist *l);
- lnode *plist_next(conf_llist *l);
- static inline lnode *plist_get_cur(conf_llist *l) { return l->cur; }
--void plist_append(conf_llist *l, plugin_conf_t *p);
-+int plist_append(conf_llist *l, plugin_conf_t *p);
- void plist_clear(conf_llist* l);
- void plist_mark_all_unchecked(conf_llist* l);
- lnode *plist_find_unchecked(conf_llist* l);
-diff --git a/auparse/normalize-llist.c b/auparse/normalize-llist.c
-index 433c457f1..c0b03ae94 100644
---- a/auparse/normalize-llist.c
-+++ b/auparse/normalize-llist.c
-@@ -1,6 +1,6 @@
- /*
-  * normalize-llist.c - Minimal linked list library
-- * Copyright (c) 2016-17 Red Hat Inc., Durham, North Carolina.
-+ * Copyright (c) 2016-17 Red Hat Inc.
-  * All Rights Reserved. 
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -61,15 +61,14 @@ data_node *cllist_next(cllist *l)
- 	return l->cur;
- }
- 
--void cllist_append(cllist *l, uint32_t num, void *data)
-+// Returns 0 on success and 1 on error
-+int cllist_append(cllist *l, uint32_t num, void *data)
- {
- 	data_node *newnode;
- 
- 	newnode = malloc(sizeof(data_node));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	newnode->num = num;
- 	newnode->data = data;
-@@ -84,5 +83,6 @@ void cllist_append(cllist *l, uint32_t num, void *data)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+	return 0;
- }
- 
-diff --git a/auparse/normalize-llist.h b/auparse/normalize-llist.h
-index 3f2e3fbd4..a92d391fc 100644
---- a/auparse/normalize-llist.h
-+++ b/auparse/normalize-llist.h
-@@ -1,6 +1,6 @@
- /*
-  * normalize-llist.h - Header file for normalize-llist.c
-- * Copyright (c) 2016-17 Red Hat Inc., Durham, North Carolina.
-+ * Copyright (c) 2016-17 Red Hat Inc.
-  * All Rights Reserved.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -53,7 +53,7 @@ AUDIT_HIDDEN_START
- void cllist_create(cllist *l, void (*cleanup)(void *));
- void cllist_clear(cllist* l);
- data_node *cllist_next(cllist *l);
--void cllist_append(cllist *l, uint32_t num, void *data);
-+int cllist_append(cllist *l, uint32_t num, void *data);
- 
- AUDIT_HIDDEN_END
- 
-diff --git a/auparse/normalize.c b/auparse/normalize.c
-index 3c1d9c0bf..767557559 100644
---- a/auparse/normalize.c
-+++ b/auparse/normalize.c
-@@ -179,7 +179,8 @@ static unsigned int add_subj_attr(auparse_state_t *au, const char *str,
- 	if ((auparse_find_field(au, str))) {
- 		attr = set_record(0, rnum);
- 		attr = set_field(attr, auparse_get_field_num(au));
--		cllist_append(&D.actor.attr, attr, NULL);
-+		if (cllist_append(&D.actor.attr, attr, NULL))
-+			return 1;
- 		return 0;
- 	} else
- 		auparse_goto_record_num(au, rnum);
-@@ -224,7 +225,8 @@ static unsigned int add_obj_attr(auparse_state_t *au, const char *str,
- 	if ((auparse_find_field(au, str))) {
- 		attr = set_record(0, rnum);
- 		attr = set_field(attr, auparse_get_field_num(au));
--		cllist_append(&D.thing.attr, attr, NULL);
-+		if (cllist_append(&D.thing.attr, attr, NULL))
-+			return 1;
- 		return 0;
- 	} else
- 		auparse_goto_record_num(au, rnum);
-@@ -360,21 +362,23 @@ static void collect_id_obj2(auparse_state_t *au, const char *syscall)
- 	}
- }
- 
--static void collect_path_attrs(auparse_state_t *au)
-+static int collect_path_attrs(auparse_state_t *au)
- {
- 	value_t attr;
- 	unsigned int rnum = auparse_get_record_num(au);
- 
- 	auparse_first_field(au);
- 	if (add_obj_attr(au, "mode", rnum))
--		return;	// Failed opens don't have anything else
-+		return 1;	// Failed opens don't have anything else
- 
- 	// All the rest of the fields matter
- 	while ((auparse_next_field(au))) {
- 		attr = set_record(0, rnum);
- 		attr = set_field(attr, auparse_get_field_num(au));
--		cllist_append(&D.thing.attr, attr, NULL);
-+		if (cllist_append(&D.thing.attr, attr, NULL))
-+			return 1;
- 	}
-+	return 0;
- }
- 
- static void collect_cwd_attrs(auparse_state_t *au)
-diff --git a/src/auditctl-llist.c b/src/auditctl-llist.c
-index 481502de5..d80b07531 100644
---- a/src/auditctl-llist.c
-+++ b/src/auditctl-llist.c
-@@ -1,7 +1,7 @@
- /*
- * ausearch-llist.c - Minimal linked list library
--* Copyright (c) 2005 Red Hat Inc., Durham, North Carolina.
--* All Rights Reserved. 
-+* Copyright (c) 2005 Red Hat Inc.
-+* All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
- * terms of the GNU General Public License as published by the Free
-@@ -15,7 +15,7 @@
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to the
--* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor 
-+* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1335, USA.
- *
- * Authors:
-@@ -59,19 +59,17 @@ lnode *list_next(llist *l)
- 	return l->cur;
- }
- 
--void list_append(llist *l, struct audit_rule_data *r, size_t sz)
-+int list_append(llist *l, struct audit_rule_data *r, size_t sz)
- {
- 	lnode* newnode;
- 
- 	newnode = malloc(sizeof(lnode));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	if (r) {
- 		void *rr = malloc(sz);
--		if (rr) 
-+		if (rr)
- 			memcpy(rr, r, sz);
- 		newnode->r = rr;
- 	} else
-@@ -89,6 +87,8 @@ void list_append(llist *l, struct audit_rule_data *r, size_t sz)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- void list_clear(llist* l)
-diff --git a/src/auditctl-llist.h b/src/auditctl-llist.h
-index 630be0842..d1ee1740d 100644
---- a/src/auditctl-llist.h
-+++ b/src/auditctl-llist.h
-@@ -1,6 +1,6 @@
- /*
- * auditctl-llist.h - Header file for ausearch-llist.c
--* Copyright (c) 2005 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2005 Red Hat Inc.
- * All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
-@@ -50,7 +50,7 @@ void list_first(llist *l);
- void list_last(llist *l);
- lnode *list_next(llist *l);
- static inline lnode *list_get_cur(llist *l) { return l->cur; }
--void list_append(llist *l, struct audit_rule_data *r, size_t sz);
-+int list_append(llist *l, struct audit_rule_data *r, size_t sz);
- void list_clear(llist* l);
- 
- #endif
-diff --git a/src/ausearch-avc.c b/src/ausearch-avc.c
-index 38576563c..36d983232 100644
---- a/src/ausearch-avc.c
-+++ b/src/ausearch-avc.c
-@@ -1,7 +1,7 @@
- /*
- * ausearch-avc.c - Minimal linked list library for avcs
--* Copyright (c) 2006,2008,2014 Red Hat Inc., Durham, North Carolina.
--* All Rights Reserved. 
-+* Copyright (c) 2006,2008,2014 Red Hat Inc.
-+* All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
- * terms of the GNU General Public License as published by the Free
-@@ -15,7 +15,7 @@
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to the
--* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor 
-+* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1335, USA.
- *
- * Authors:
-@@ -62,15 +62,13 @@ static void alist_last(alist *l)
- 	l->cur = cur;
- }
- 
--void alist_append(alist *l, anode *node)
-+int alist_append(alist *l, anode *node)
- {
- 	anode* newnode;
- 
- 	newnode = malloc(sizeof(anode));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	if (node->scontext)
- 		newnode->scontext = node->scontext;
-@@ -108,6 +106,8 @@ void alist_append(alist *l, anode *node)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- int alist_find_subj(alist *l)
-diff --git a/src/ausearch-avc.h b/src/ausearch-avc.h
-index 6739ffe9f..a0b8ad32f 100644
---- a/src/ausearch-avc.h
-+++ b/src/ausearch-avc.h
-@@ -1,6 +1,6 @@
- /*
- * ausearch-avc.h - Header file for ausearch-string.c
--* Copyright (c) 2006,2008 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2006,2008 Red Hat Inc.
- * All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
-@@ -54,7 +54,7 @@ void alist_create(alist *l);
- static inline void alist_first(alist *l) { l->cur = l->head; }
- anode *alist_next(alist *l);
- static inline anode *alist_get_cur(alist *l) { return l->cur; }
--void alist_append(alist *l, anode *node);
-+int alist_append(alist *l, anode *node);
- void anode_init(anode *an);
- void anode_clear(anode *an);
- void alist_clear(alist* l);
-diff --git a/src/ausearch-int.c b/src/ausearch-int.c
-index 5f57b059c..d2288bf34 100644
---- a/src/ausearch-int.c
-+++ b/src/ausearch-int.c
-@@ -1,6 +1,6 @@
- /*
- * ausearch-int.c - Minimal linked list library for integers
--* Copyright (c) 2005,2008 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2005,2008 Red Hat Inc.
- * All Rights Reserved. 
- *
- * This software may be freely redistributed and/or modified under the
-@@ -41,15 +41,13 @@ int_node *ilist_next(ilist *l)
- 	return l->cur;
- }
- 
--void ilist_append(ilist *l, int num, unsigned int hits, int aux)
-+int ilist_append(ilist *l, int num, unsigned int hits, int aux)
- {
- 	int_node* newnode;
- 
- 	newnode = malloc(sizeof(int_node));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	newnode->num = num;
- 	newnode->hits = hits;
-@@ -65,6 +63,8 @@ void ilist_append(ilist *l, int num, unsigned int hits, int aux)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- void ilist_clear(ilist* l)
-diff --git a/src/ausearch-int.h b/src/ausearch-int.h
-index fea849933..d349104cf 100644
---- a/src/ausearch-int.h
-+++ b/src/ausearch-int.h
-@@ -1,6 +1,6 @@
- /*
- * ausearch-int.h - Header file for ausearch-int.c
--* Copyright (c) 2005,2008 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2005,2008 Red Hat Inc.
- * All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
-@@ -48,7 +48,7 @@ void ilist_create(ilist *l);
- static inline void ilist_first(ilist *l) { l->cur = l->head; }
- int_node *ilist_next(ilist *l);
- static inline int_node *ilist_get_cur(ilist *l) { return l->cur; }
--void ilist_append(ilist *l, int num, unsigned int hits, int aux);
-+int ilist_append(ilist *l, int num, unsigned int hits, int aux);
- void ilist_clear(ilist* l);
- 
- /* append a number if its not already on the list */
-diff --git a/src/ausearch-llist.c b/src/ausearch-llist.c
-index 7926980c5..ec0490401 100644
---- a/src/ausearch-llist.c
-+++ b/src/ausearch-llist.c
-@@ -1,6 +1,6 @@
- /*
- * ausearch-llist.c - Minimal linked list library
--* Copyright (c) 2005-2008,2011,2016 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2005-2008,2011,2016 Red Hat Inc.
- * Copyright (c) 2011 IBM Corp.
- * All Rights Reserved. 
- *
-@@ -102,15 +102,13 @@ lnode *list_prev(llist *l)
- 	return l->cur;
- }
- 
--void list_append(llist *l, lnode *node)
-+int list_append(llist *l, lnode *node)
- {
- 	lnode* newnode;
- 
- 	newnode = malloc(sizeof(lnode));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	if (node->message)
- 		newnode->message = node->message;
-@@ -123,7 +121,7 @@ void list_append(llist *l, lnode *node)
- 	newnode->type = node->type;
- 	newnode->a0 = node->a0;
- 	newnode->a1 = node->a1;
--	newnode->item = l->cnt; 
-+	newnode->item = l->cnt;
- 	newnode->next = NULL;
- 
- 	// if we are at top, fix this up
-@@ -135,6 +133,8 @@ void list_append(llist *l, lnode *node)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- int list_find_item(llist *l, unsigned int i)
-diff --git a/src/ausearch-llist.h b/src/ausearch-llist.h
-index 13ae2a04b..338b7cd95 100644
---- a/src/ausearch-llist.h
-+++ b/src/ausearch-llist.h
-@@ -107,7 +107,7 @@ void list_last(llist *l);
- lnode *list_next(llist *l);
- lnode *list_prev(llist *l);
- static inline lnode *list_get_cur(llist *l) { return l->cur; }
--void list_append(llist *l, lnode *node);
-+int list_append(llist *l, lnode *node);
- void list_clear(llist* l);
- int list_get_event(llist* l, event *e);
- 
-diff --git a/src/ausearch-nvpair.c b/src/ausearch-nvpair.c
-index 7b00bef3b..d0d48af3b 100644
---- a/src/ausearch-nvpair.c
-+++ b/src/ausearch-nvpair.c
-@@ -1,6 +1,6 @@
- /*
- * ausearch-nvpair.c - Minimal linked list library for name-value pairs
--* Copyright (c) 2006-08 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2006-08 Red Hat Inc.
- * All Rights Reserved. 
- *
- * This software may be freely redistributed and/or modified under the
-@@ -42,13 +42,11 @@ nvnode *search_list_next(nvlist *l)
- 	return l->cur;
- }
- 
--void search_list_append(nvlist *l, nvnode *node)
-+int search_list_append(nvlist *l, nvnode *node)
- {
- 	nvnode* newnode = malloc(sizeof(nvnode));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	newnode->name = node->name;
- 	newnode->val = node->val;
-@@ -66,6 +64,8 @@ void search_list_append(nvlist *l, nvnode *node)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- int search_list_find_val(nvlist *l, long val)
-diff --git a/src/ausearch-nvpair.h b/src/ausearch-nvpair.h
-index 95b63fee1..51f601bd2 100644
---- a/src/ausearch-nvpair.h
-+++ b/src/ausearch-nvpair.h
-@@ -1,6 +1,6 @@
- /*
- * ausearch-nvpair.h - Header file for ausearch-nvpair.c
--* Copyright (c) 2006-08 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2006-08 Red Hat Inc.
- * All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
-@@ -48,7 +48,7 @@ void search_list_create(nvlist *l);
- static inline void search_list_first(nvlist *l) { l->cur = l->head; }
- nvnode *search_list_next(nvlist *l);
- static inline nvnode *search_list_get_cur(nvlist *l) { return l->cur; }
--void search_list_append(nvlist *l, nvnode *node);
-+int search_list_append(nvlist *l, nvnode *node);
- void search_list_clear(nvlist* l);
- 
- /* Given a numeric index, find that record. */
-diff --git a/src/ausearch-string.c b/src/ausearch-string.c
-index 0388764c6..29243c98d 100644
---- a/src/ausearch-string.c
-+++ b/src/ausearch-string.c
-@@ -44,15 +44,13 @@ snode *slist_next(slist *l)
- 	return l->cur;
- }
- 
--void slist_append(slist *l, snode *node)
-+int slist_append(slist *l, snode *node)
- {
- 	snode* newnode;
- 
- 	newnode = malloc(sizeof(snode));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	if (node->str)
- 		newnode->str = node->str;
-@@ -79,6 +77,8 @@ void slist_append(slist *l, snode *node)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- void slist_clear(slist* l)
-diff --git a/src/ausearch-string.h b/src/ausearch-string.h
-index 39e927532..b2729bd50 100644
---- a/src/ausearch-string.h
-+++ b/src/ausearch-string.h
-@@ -49,7 +49,7 @@ void slist_create(slist *l);
- static inline void slist_first(slist *l) { l->cur = l->head; }
- snode *slist_next(slist *l);
- static inline snode *slist_get_cur(slist *l) { return l->cur; }
--void slist_append(slist *l, snode *node);
-+int slist_append(slist *l, snode *node);
- void slist_clear(slist* l);
- 
- /* append a string if its not already on the list */
-diff --git a/tools/aulastlog/aulastlog-llist.c b/tools/aulastlog/aulastlog-llist.c
-index 0b89be656..2a8aa141a 100644
---- a/tools/aulastlog/aulastlog-llist.c
-+++ b/tools/aulastlog/aulastlog-llist.c
-@@ -1,7 +1,7 @@
- /*
- * aulastlog-llist.c - Minimal linked list library
--* Copyright (c) 2008 Red Hat Inc., Durham, North Carolina.
--* All Rights Reserved. 
-+* Copyright (c) 2008 Red Hat Inc..
-+* All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
- * terms of the GNU General Public License as published by the Free
-@@ -15,7 +15,7 @@
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to the
--* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor 
-+* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1335, USA.
- *
- * Authors:
-@@ -41,15 +41,13 @@ lnode *list_next(llist *l)
- 	return l->cur;
- }
- 
--void list_append(llist *l, lnode *node)
-+int list_append(llist *l, lnode *node)
- {
- 	lnode* newnode;
- 
- 	newnode = malloc(sizeof(lnode));
--	if (newnode == NULL) {
--		printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
--		return;
--	}
-+	if (newnode == NULL)
-+		return 1;
- 
- 	newnode->sec = node->sec;
- 	newnode->uid = node->uid;
-@@ -62,7 +60,7 @@ void list_append(llist *l, lnode *node)
- 		newnode->term = strdup(node->term);
- 	else
- 		newnode->term = NULL;
--	newnode->item = l->cnt; 
-+	newnode->item = l->cnt;
- 	newnode->next = NULL;
- 
- 	// if we are at top, fix this up
-@@ -74,6 +72,8 @@ void list_append(llist *l, lnode *node)
- 	// make newnode current
- 	l->cur = newnode;
- 	l->cnt++;
-+
-+	return 0;
- }
- 
- void list_clear(llist* l)
-diff --git a/tools/aulastlog/aulastlog-llist.h b/tools/aulastlog/aulastlog-llist.h
-index 1b43a7f49..79e23b45d 100644
---- a/tools/aulastlog/aulastlog-llist.h
-+++ b/tools/aulastlog/aulastlog-llist.h
-@@ -1,6 +1,6 @@
- /*
- * aulastlog-llist.h - Header file for aulastlog-llist.c
--* Copyright (c) 2008 Red Hat Inc., Durham, North Carolina.
-+* Copyright (c) 2008 Red Hat Inc.
- * All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
-@@ -53,7 +53,7 @@ static inline void list_first(llist *l) { l->cur = l->head; }
- lnode *list_next(llist *l);
- static inline lnode *list_get_cur(llist *l) { return l->cur; }
- static inline unsigned int list_get_cnt(llist *l) { return l->cnt; }
--void list_append(llist *l, lnode *node);
-+int list_append(llist *l, lnode *node);
- void list_clear(llist* l);
- int list_update_login(llist* l, time_t t);
- int list_update_host(llist* l, const char *h);
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/audit.git/commitdiff/ee77e1db24ad31c9f9b8ec120fcc55d666b750d8



More information about the pld-cvs-commit mailing list