diff options
Diffstat (limited to 'elf/dl-audit.c')
-rw-r--r-- | elf/dl-audit.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/elf/dl-audit.c b/elf/dl-audit.c index 4066dfe..74b87f4 100644 --- a/elf/dl-audit.c +++ b/elf/dl-audit.c @@ -19,6 +19,32 @@ #include <ldsodefs.h> void +_dl_audit_activity_map (struct link_map *l, int action) +{ + struct audit_ifaces *afct = GLRO(dl_audit); + for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt) + { + if (afct->activity != NULL) + afct->activity (&link_map_audit_state (l, cnt)->cookie, action); + afct = afct->next; + } +} + +void +_dl_audit_activity_nsid (Lmid_t nsid, int action) +{ + /* If head is NULL, the namespace has become empty, and the audit interface + does not give us a way to signal LA_ACT_CONSISTENT for it because the + first loaded module is used to identify the namespace. */ + struct link_map *head = GL(dl_ns)[nsid]._ns_loaded; + if (__glibc_likely (GLRO(dl_naudit) == 0) + || head == NULL || head->l_auditing) + return; + + _dl_audit_activity_map (head, action); +} + +void _dl_audit_objopen (struct link_map *l, Lmid_t nsid) { if (__glibc_likely (GLRO(dl_naudit) == 0)) |