Package: samba
Version: 3.0.21a-1
Severity: important
Tags: patch
The vfs module "full_audit" is broken, somehow the parameter bitmap
gets freed after the client disconnects from the share (but not the
server). In result, the modules logs everything, filling up /var and
using lots of cpu for smbd and syslog processes.
The patch has been tested and works fine, it's an immediate fix but
maybe not the right way to do it.
It would be appreciated to have the patch in debian while it is
submitted upstream.
regards
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.4.32
Locale: LANG=C, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Versions of packages samba depends on:
ii debconf [debc 1.4.66 Debian configuration management sy
ii libacl1 2.2.34-1 Access control list shared library
ii libattr1 2.4.25-1 Extended attribute shared library
ii libc6 2.3.5-8 GNU C Library: Shared libraries an
ii libcomerr2 1.38+1.39-WIP-2005.12.10-1 common error description library
ii libcupsys2 1.1.23-12 Common UNIX Printing System(tm) -
ii libkrb53 1.4.3-5 MIT Kerberos runtime libraries
ii libldap2 2.1.30-12 OpenLDAP libraries
ii libpam-module 0.79-3 Pluggable Authentication Modules f
ii libpam-runtim 0.79-3 Runtime support for the PAM librar
ii libpam0g 0.79-3 Pluggable Authentication Modules l
ii libpopt0 1.7-5 lib for parsing cmdline parameters
ii logrotate 3.7.1-2 Log rotation utility
ii lsb-base 3.0-13 Linux Standard Base 3.0 init scrip
ii netbase 4.24 Basic TCP/IP networking system
ii samba-common 3.0.21a-1 Samba common files used by both th
Versions of packages samba recommends:
pn smbldap-tools <none> (no description available)
-- debconf information excluded
--- vfs_full_audit.c.orig 2006-01-16 15:29:14.000000000 +0000
+++ vfs_full_audit.c 2006-01-16 15:31:12.000000000 +0000
@@ -667,7 +667,7 @@
static BOOL log_success(vfs_op_type op)
{
if (success_ops == NULL)
- return True;
+ return False;
return bitmap_query(success_ops, op);
}
@@ -677,7 +677,7 @@
static BOOL log_failure(vfs_op_type op)
{
if (failure_ops == NULL)
- return True;
+ return False;
return bitmap_query(failure_ops, op);
}
@@ -776,16 +776,25 @@
{
int result;
const char *none[] = { NULL };
- const char *all [] = { "all" };
openlog("smbd_audit", 0, audit_syslog_facility(handle));
+
+ if (success_ops) {
+ bitmap_free(success_ops);
+ success_ops = NULL;
+ }
+
+ if (failure_ops) {
+ bitmap_free(failure_ops);
+ failure_ops = NULL;
+ }
init_bitmap(&success_ops,
lp_parm_string_list(SNUM(conn), "full_audit", "success",
none));
init_bitmap(&failure_ops,
lp_parm_string_list(SNUM(conn), "full_audit", "failure",
- all));
+ none));
result = SMB_VFS_NEXT_CONNECT(handle, conn, svc, user);
@@ -803,12 +812,6 @@
do_log(SMB_VFS_OP_DISCONNECT, True, handle,
"%s", lp_servicename(SNUM(conn)));
- bitmap_free(success_ops);
- success_ops = NULL;
-
- bitmap_free(failure_ops);
- failure_ops = NULL;
-
return;
}