[PATCH v7 0/3] minimal run-time audit support

Stas Sergeev stsp2@yandex.ru
Thu Mar 2 19:40:48 GMT 2023


Changes in v7: address the review comment of Jonathon Anderson:
allow dynamically loaded audit module to work with previously
loaded modules. The technique is the same as in dl_main(): call
la_objopen() for every pre-existing object to "introduce" it to
an auditor.

Changes in v6: fix what seems to be a problem in v5: call
unload_audit_module() before _dl_signal_error(), rather than after.
It seems _dl_signal_error() may involve longjmp() so it should be
called the last, after any clean-ups.

Changes in v5: address the review comment of Jonathon Anderson:
Disabling existing audit call-backs may break some existing auditors
if they attempted to be loaded with dlload_audit_module(). Instead
return an error EINVAL and refuse to load an audit module that has
the unallowed call-backs (symbind, pltenter, pltexit). Extend test
to make sure the error is reported as expected.

Changes in v4: rebased, conflicts resolved.

Changes in v3: address the review comment of Jonathon Anderson:
Disable 3 audit call-backs for dynamically loaded modules. Namely
symbind, pltenter, pltexit. Extend test-case to make sure they
are not resolved and not called.

Changes in v2: address the review comment of Jonathon Anderson:
Add per-linkmap l_naudit counter to make sure each object is audited
only with the modules loaded before it. That avoids the possibility
of getting the "unrecognized" cookie. Test-case was enhanced to check
for unrecognized cookies.

This patch-set introduces the bare minimum functionality for working
with audit modules at run-time.

Patch1 fixes the check in dlmopen() which avoids loading solibs into
the auditing namespace. But RTLD_NOLOAD was forgotten to check, and
with that flags nothing gets loaded into auditing namespace, so dlmopen()
should succeed and return the handle for auditing object.

Patch2 adds dlload_audit_module() function and a test-case for it.

-- 
2.37.2



More information about the Libc-alpha mailing list