From 3ae10182b94ef4ea4b2ce217f858584cb33c4e8f Mon Sep 17 00:00:00 2001 From: Holger Hetterich Date: Thu, 18 Feb 2010 15:13:59 +0100 Subject: [PATCH] s3: vfs_full_audit.c: implement negated vfs_ops in the success/failure list Supports negated arguments in configuration like: full_audit:success = all !readdir !telldir !closedir Update the manpage accordingly. Part of BSO#4025 --- docs-xml/manpages-3/vfs_full_audit.8.xml | 11 +++++++---- source3/modules/vfs_full_audit.c | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/docs-xml/manpages-3/vfs_full_audit.8.xml b/docs-xml/manpages-3/vfs_full_audit.8.xml index 1d519e2..9c9dc84 100644 --- a/docs-xml/manpages-3/vfs_full_audit.8.xml +++ b/docs-xml/manpages-3/vfs_full_audit.8.xml @@ -184,7 +184,8 @@ LIST is a list of VFS operations that should be recorded if they succeed. Operations are specified using - the names listed above. + the names listed above. Operations can be unset by prefixing + the names with "!". @@ -195,7 +196,8 @@ LIST is a list of VFS operations that should be recorded if they failed. Operations are specified using - the names listed above. + the names listed above. Operations can be unset by prefixing + the names with "!". @@ -232,7 +234,8 @@ Log file and directory open operations on the [records] share using the LOCAL7 facility and ALERT priority, including - the username and IP address: + the username and IP address. Logging excludes the open VFS function + on failures: @@ -240,7 +243,7 @@ full_audit %u|%I open opendir - all + all !open LOCAL7 ALERT diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c index 19ac7ad..c3b5167 100644 --- a/source3/modules/vfs_full_audit.c +++ b/source3/modules/vfs_full_audit.c @@ -433,11 +433,11 @@ static bool log_failure(vfs_handle_struct *handle, vfs_op_type op) static void init_bitmap(struct bitmap **bm, const char **ops) { + int i; bool log_all = False; - + bool negated_ops = False; if (*bm != NULL) return; - *bm = bitmap_allocate(SMB_VFS_OP_LAST); if (*bm == NULL) { @@ -447,12 +447,15 @@ static void init_bitmap(struct bitmap **bm, const char **ops) } while (*ops != NULL) { - int i; bool found = False; + if ( *(*ops) == '!' && negated_ops == False) { + for (i=0; i