From 78ae4f9378cfc7e884a054088cbd088a2b18a6c8 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 1 Sep 2004 21:03:29 +0000 Subject: [PATCH] r2176: syncing necessary changes for 3.0.7 svn merge -r 1942:1946 $SVNURL/branches/SAMBA_3_0 svn merge -r 1946:1948 $SVNURL/branches/SAMBA_3_0 svn merge -r 1948:1964 $SVNURL/branches/SAMBA_3_0 svn merge -r 1967:1968 $SVNURL/branches/SAMBA_3_0 svn merge -r 1980:2001 $SVNURL/branches/SAMBA_3_0 svn merge -r 2001:2006 $SVNURL/branches/SAMBA_3_0 svn merge -r 2006:2007 $SVNURL/branches/SAMBA_3_0 svn merge -r 2007:2009 $SVNURL/branches/SAMBA_3_0 svn merge -r 2009:2013 $SVNURL/branches/SAMBA_3_0 svn merge -r 2013:2014 $SVNURL/branches/SAMBA_3_0 svn merge -r 2014:2015 $SVNURL/branches/SAMBA_3_0 svn merge -r 2015:2016 $SVNURL/branches/SAMBA_3_0 svn merge -r 2016:2018 $SVNURL/branches/SAMBA_3_0 svn merge -r 2022:2023 $SVNURL/branches/SAMBA_3_0 svn merge -r 2026:2027 $SVNURL/branches/SAMBA_3_0 svn merge -r 2057:2068 $SVNURL/branches/SAMBA_3_0 svn merge -r 2068:2070 $SVNURL/branches/SAMBA_3_0 svn merge -r 2076:2077 $SVNURL/branches/SAMBA_3_0 svn merge -r 2080:2082 $SVNURL/branches/SAMBA_3_0 svn merge -r 2082:2083 $SVNURL/branches/SAMBA_3_0 svn merge -r 2083:2086 $SVNURL/branches/SAMBA_3_0 svn merge -r 2086:2090 $SVNURL/branches/SAMBA_3_0 svn merge -r 2090:2091 $SVNURL/branches/SAMBA_3_0 svn merge -r 2091:2093 $SVNURL/branches/SAMBA_3_0 svn merge -r 2093:2111 $SVNURL/branches/SAMBA_3_0 svn merge -r 2116:2131 $SVNURL/branches/SAMBA_3_0 svn merge -r 2131:2133 $SVNURL/branches/SAMBA_3_0 svn merge -r 2133:2135 $SVNURL/branches/SAMBA_3_0 svn merge -r 2150:2152 $SVNURL/branches/SAMBA_3_0 svn merge -r 2147:2150 $SVNURL/branches/SAMBA_3_0 svn merge -r 2155:2157 $SVNURL/branches/SAMBA_3_0 svn merge -r 2163:2175 $SVNURL/branches/SAMBA_3_0 --- examples/LDAP/get_next_oid | 15 + examples/LDAP/samba.schema | 103 ++++- examples/autofs/{auto.a => auto.smb} | 6 +- packaging/Debian/debian-stable/changelog | 13 + packaging/Debian/debian-stable/files | 11 - .../debian-stable/patches/documentation.patch | 4 +- packaging/Debian/debian-stable/rules | 3 +- packaging/Debian/debian-stable/samba.docs | 1 - source/Makefile.in | 12 +- source/VERSION | 2 +- source/auth/auth_domain.c | 2 +- source/configure.in | 9 +- source/include/includes.h | 6 +- source/include/ntdomain.h | 2 +- source/include/rpc_spoolss.h | 1 + source/lib/pidfile.c | 7 + source/lib/util.c | 8 +- source/lib/util_str.c | 11 +- source/libads/ldap.c | 6 + source/libsmb/samlogon_cache.c | 11 +- source/modules/vfs_full_audit.c | 468 ++++++++++----------- source/nsswitch/winbindd_ads.c | 2 +- source/nsswitch/winbindd_cache.c | 4 +- source/nsswitch/winbindd_pam.c | 4 +- source/param/loadparm.c | 67 ++- source/printing/notify.c | 13 +- source/printing/nt_printing.c | 3 +- source/printing/printing.c | 29 +- source/printing/printing_db.c | 2 + source/rpc_server/srv_samr_nt.c | 3 - source/rpc_server/srv_spoolss_nt.c | 12 +- source/rpcclient/cmd_spoolss.c | 3 +- source/smbd/chgpasswd.c | 2 +- source/smbd/filename.c | 18 +- source/smbd/mangle_hash2.c | 3 +- source/smbd/open.c | 13 +- source/smbd/password.c | 23 +- source/smbd/reply.c | 27 +- source/smbd/uid.c | 1 + source/smbd/vfs.c | 42 +- source/tdb/tdb.c | 2 +- source/utils/ntlm_auth.c | 2 +- 42 files changed, 542 insertions(+), 434 deletions(-) create mode 100644 examples/LDAP/get_next_oid rename examples/autofs/{auto.a => auto.smb} (74%) delete mode 100644 packaging/Debian/debian-stable/files diff --git a/examples/LDAP/get_next_oid b/examples/LDAP/get_next_oid new file mode 100644 index 00000000000..bf002003753 --- /dev/null +++ b/examples/LDAP/get_next_oid @@ -0,0 +1,15 @@ +#!/bin/bash + +nextattrib=`cat samba.schema | grep -i attributetype.*\(.*1.3.6.1.4.1.7165. | grep -v '^#' | \ + awk '{print $3}' | cut -d. -f 10 | sort -n | tail -1` + +(( nextattrib += 1 )) + +echo "attributetype ( 1.3.6.1.4.1.7165.2.1.$nextattrib NAME ...." + +nextoc=`cat samba.schema | grep -i objectclass.*\(.*1.3.6.1.4.1.7165. | grep -v '^#' | \ + awk '{print $3}' | cut -d. -f 10 | sort -n | tail -1` + +(( nextoc += 1 )) + +echo "objectclass ( 1.3.6.1.4.1.7165.2.2.$nextoc NAME ...." diff --git a/examples/LDAP/samba.schema b/examples/LDAP/samba.schema index 8c6b8cb4e39..17ea2d9fd2f 100644 --- a/examples/LDAP/samba.schema +++ b/examples/LDAP/samba.schema @@ -10,6 +10,25 @@ ## 1.3.6.1.4.1.7165.2.1.x - attributetypes ## 1.3.6.1.4.1.7165.2.2.x - objectclasses ## +## ----- READ THIS WHEN ADDING A NEW ATTRIBUTE OR OBJECT CLASS ------ +## +## Run the 'get_next_oid' bash script in this directory to find the +## next available OID for attribute type and object classes. +## +## $ ./get_next_oid +## attributetype ( 1.3.6.1.4.1.7165.2.1.XX NAME .... +## objectclass ( 1.3.6.1.4.1.7165.2.2.XX NAME .... +## +## Also ensure that new entries adhere to the declaration style +## used throughout this file +## +## ( 1.3.6.1.4.1.7165.2.XX.XX NAME .... +## ^ ^ ^ +## +## The spaces are required for the get_next_oid script (and for +## readability). +## +## ------------------------------------------------------------------ ######################################################################## ## HISTORICAL ## @@ -212,7 +231,7 @@ attributetype ( 1.3.6.1.4.1.7165.2.1.49 NAME 'sambaBadPasswordTime' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -attributetype ( 1.3.6.1.4.1.7165.2.1.50 NAME 'sambaLogonHours' +attributetype ( 1.3.6.1.4.1.7165.2.1.55 NAME 'sambaLogonHours' DESC 'Logon Hours' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{42} SINGLE-VALUE ) @@ -255,7 +274,7 @@ attributetype ( 1.3.6.1.4.1.7165.2.1.47 NAME 'sambaMungedDial' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1050} ) -attributetype ( 1.3.6.1.4.1.7165.2.1.50 NAME 'sambaPasswordHistory' +attributetype ( 1.3.6.1.4.1.7165.2.1.54 NAME 'sambaPasswordHistory' DESC 'Concatenated MD4 hashes of the unicode passwords used on this account' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} ) @@ -316,6 +335,51 @@ attributetype ( 1.3.6.1.4.1.7165.2.1.40 NAME 'sambaAlgorithmicRidBase' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +attributetype ( 1.3.6.1.4.1.7165.2.1.41 NAME 'sambaShareName' + DESC 'Share Name' + EQUALITY caseIgnoreMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.7165.2.1.42 NAME 'sambaOptionName' + DESC 'Option Name' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + +attributetype ( 1.3.6.1.4.1.7165.2.1.43 NAME 'sambaBoolOption' + DESC 'A boolean option' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.7165.2.1.44 NAME 'sambaIntegerOption' + DESC 'An integer option' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.7165.2.1.45 NAME 'sambaStringOption' + DESC 'A string option' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.7165.2.1.46 NAME 'sambaStringListOption' + DESC 'A string list option' + EQUALITY caseIgnoreMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.3.6.1.4.1.7165.2.1.50 NAME 'sambaPrivName' + SUP name ) + +attributetype ( 1.3.6.1.4.1.7165.2.1.52 NAME 'sambaPrivilegeList' + DESC 'Privileges List' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{64} ) + +attributetype ( 1.3.6.1.4.1.7165.2.1.53 NAME 'sambaTrustFlags' + DESC 'Trust Password Flags' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + ####################################################################### ## objectClasses used by Samba 3.0 schema ## @@ -350,6 +414,14 @@ objectclass ( 1.3.6.1.4.1.7165.2.2.4 NAME 'sambaGroupMapping' SUP top AUXILIARY MAY ( displayName $ description $ sambaSIDList )) ## +## Trust password for trust relationships (any kind) +## +objectclass ( 1.3.6.1.4.1.7165.2.2.14 NAME 'sambaTrustPassword' SUP top STRUCTURAL + DESC 'Samba Trust Password' + MUST ( sambaDomainName $ sambaNTPassword $ sambaTrustFlags ) + MAY ( sambaSID $ sambaPwdLastSet )) + +## ## Whole-of-domain info ## objectclass ( 1.3.6.1.4.1.7165.2.2.5 NAME 'sambaDomain' SUP top STRUCTURAL @@ -359,7 +431,9 @@ objectclass ( 1.3.6.1.4.1.7165.2.2.5 NAME 'sambaDomain' SUP top STRUCTURAL MAY ( sambaNextRid $ sambaNextGroupRid $ sambaNextUserRid $ sambaAlgorithmicRidBase ) ) +## ## used for idmap_ldap module +## objectclass ( 1.3.6.1.4.1.7165.2.2.7 NAME 'sambaUnixIdPool' SUP top AUXILIARY DESC 'Pool for allocating UNIX uids/gids' MUST ( uidNumber $ gidNumber ) ) @@ -371,6 +445,27 @@ objectclass ( 1.3.6.1.4.1.7165.2.2.8 NAME 'sambaIdmapEntry' SUP top AUXILIARY MAY ( uidNumber $ gidNumber ) ) objectclass ( 1.3.6.1.4.1.7165.2.2.9 NAME 'sambaSidEntry' SUP top STRUCTURAL - DESC 'Structural Class for a SID' - MUST ( sambaSID ) ) + DESC 'Structural Class for a SID' + MUST ( sambaSID ) ) + +objectclass ( 1.3.6.1.4.1.7165.1.2.2.10 NAME 'sambaConfig' SUP top AUXILIARY + DESC 'Samba Configuration Section' + MAY ( description ) ) + +objectclass ( 1.3.6.1.4.1.7165.2.2.11 NAME 'sambaShare' SUP top STRUCTURAL + DESC 'Samba Share Section' + MUST ( sambaShareName ) + MAY ( description ) ) + +objectclass ( 1.3.6.1.4.1.7165.2.2.12 NAME 'sambaConfigOption' SUP top STRUCTURAL + DESC 'Samba Configuration Option' + MUST ( sambaOptionName ) + MAY ( sambaBoolOption $ sambaIntegerOption $ sambaStringOption $ + sambaStringListoption $ description ) ) + + +objectclass ( 1.3.6.1.4.1.7165.2.2.13 NAME 'sambaPrivilege' SUP top AUXILIARY + DESC 'Samba Privilege' + MUST ( sambaSID ) + MAY ( sambaPrivilegeList ) ) diff --git a/examples/autofs/auto.a b/examples/autofs/auto.smb similarity index 74% rename from examples/autofs/auto.a rename to examples/autofs/auto.smb index 0fa8f4efc30..eb24cfaab4a 100644 --- a/examples/autofs/auto.a +++ b/examples/autofs/auto.smb @@ -1,13 +1,9 @@ -# automount points below /a +# automount points below /smb # This is an automounter map and it has the following format # key [ -mount-options-separated-by-comma ] location # Details may be found in the autofs(5) manpage -# nfs servers -valepp -fstype=nfs,rsize=8192,wsize=8192 valepp:/ -galaun -fstype=nfs,rsize=8192,wsize=8192 galaun:/ - # smb-servers supra_andreas -fstype=smb,username=andreas,password=foo ://supra/aheinrich supra_cspiel -fstype=smb,username=cspiel ://supra/cspiel diff --git a/packaging/Debian/debian-stable/changelog b/packaging/Debian/debian-stable/changelog index ee4b7200ea0..f27fa2317ed 100644 --- a/packaging/Debian/debian-stable/changelog +++ b/packaging/Debian/debian-stable/changelog @@ -1,3 +1,16 @@ +samba (3.0.6-1) stable; urgency=low + + * samba 3.0.6 release + + -- Simo Sorce Fri, 20 August 2004 10:19:00 +0200 + +samba (3.0.5-1) stable; urgency=low + + * samba 3.0.5 release + * Security Fix Release + + -- Simo Sorce Tue, 27 July 2004 15:15:00 +0200 + samba (3.0.4-1) stable; urgency=low * samba 3.0.4 release diff --git a/packaging/Debian/debian-stable/files b/packaging/Debian/debian-stable/files deleted file mode 100644 index 8821a7e7385..00000000000 --- a/packaging/Debian/debian-stable/files +++ /dev/null @@ -1,11 +0,0 @@ -samba-doc_3.0.2-1_all.deb doc optional -samba_3.0.2-1_i386.deb net optional -samba-common_3.0.2-1_i386.deb net optional -smbclient_3.0.2-1_i386.deb net optional -swat_3.0.2-1_i386.deb net optional -smbfs_3.0.2-1_i386.deb otherosfs optional -libpam-smbpass_3.0.2-1_i386.deb admin extra -libsmbclient_3.0.2-1_i386.deb libs extra -libsmbclient-dev_3.0.2-1_i386.deb libdevel extra -winbind_3.0.2-1_i386.deb net optional -python2.2-samba_3.0.2-1_i386.deb python optional diff --git a/packaging/Debian/debian-stable/patches/documentation.patch b/packaging/Debian/debian-stable/patches/documentation.patch index b82552ef4df..ab64790fc97 100644 --- a/packaging/Debian/debian-stable/patches/documentation.patch +++ b/packaging/Debian/debian-stable/patches/documentation.patch @@ -18,7 +18,7 @@ .TP 3 \(bu --/usr/local/samba/bin/swat +-/usr/local/samba/sbin/swat +/usr/sbin/swat .TP \(bu @@ -48,7 +48,7 @@ +In \fI/etc/inetd\&.conf\fR you should add a line like this (not needed for Debian since the maintainer scripts do it. You need to uncomment the line, though, because it is added commented out for security reasons): .PP --\fBswat stream tcp nowait\&.400 root /usr/local/samba/bin/swat swat\fR +-\fBswat stream tcp nowait\&.400 root /usr/local/samba/sbin/swat swat\fR +\fBswat stream tcp nowait.400 root /usr/sbin/swat swat\fR .PP diff --git a/packaging/Debian/debian-stable/rules b/packaging/Debian/debian-stable/rules index 676162a39f1..91e77e6d0fd 100755 --- a/packaging/Debian/debian-stable/rules +++ b/packaging/Debian/debian-stable/rules @@ -135,9 +135,10 @@ install: build # libsmbclient files are not installed by the standard # 'make install' - do it manually. $(MAKE) -C source installclientlib DESTDIR=$(DESTDIR) - mv $(DESTDIR)/usr/lib/libsmbclient.so $(DESTDIR)/usr/lib/libsmbclient.so.0.1 + mv $(DESTDIR)/usr/lib/samba/libsmbclient.so $(DESTDIR)/usr/lib/libsmbclient.so.0.1 ln -s libsmbclient.so.0.1 $(DESTDIR)/usr/lib/libsmbclient.so.0 ln -s libsmbclient.so.0.1 $(DESTDIR)/usr/lib/libsmbclient.so + mv $(DESTDIR)/usr/lib/samba/libsmbclient.a $(DESTDIR)/usr/lib/libsmbclient.a # Install other stuff not installed by "make install" install -m 0755 debian/mksmbpasswd.awk $(DESTDIR)/usr/sbin/mksmbpasswd diff --git a/packaging/Debian/debian-stable/samba.docs b/packaging/Debian/debian-stable/samba.docs index d38ff256ee0..9a5a9fc6bfc 100644 --- a/packaging/Debian/debian-stable/samba.docs +++ b/packaging/Debian/debian-stable/samba.docs @@ -1,4 +1,3 @@ Manifest README -REVISION WHATSNEW.txt diff --git a/source/Makefile.in b/source/Makefile.in index 0fa46f6f9e0..5d3462913c1 100644 --- a/source/Makefile.in +++ b/source/Makefile.in @@ -34,9 +34,6 @@ PASSDB_LIBS=@PASSDB_LIBS@ IDMAP_LIBS=@IDMAP_LIBS@ KRB5LIBS=@KRB5_LIBS@ LDAP_LIBS=@LDAP_LIBS@ -XML_LIBS=@XML_LIBS@ -MYSQL_LIBS=@MYSQL_LIBS@ -PGSQL_LIBS=@PGSQL_LIBS@ LINK=$(CC) $(FLAGS) $(LDFLAGS) @@ -838,8 +835,7 @@ bin/rpcclient@EXEEXT@: $(RPCCLIENT_OBJ) @BUILD_POPT@ bin/.dummy @echo Linking $@ @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(PASSDB_LIBS) $(RPCCLIENT_OBJ) \ $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ \ - $(KRB5LIBS) $(LDAP_LIBS) \ - $(XML_LIBS) $(MYSQL_LIBS) $(PGSQL_LIBS) + $(KRB5LIBS) $(LDAP_LIBS) bin/smbclient@EXEEXT@: $(CLIENT_OBJ) @BUILD_POPT@ bin/.dummy @echo Linking $@ @@ -1119,12 +1115,12 @@ bin/sam.@SHLIBEXT@: $(AUTH_SAM_OBJ:.o=.@PICSUFFIX@) bin/mysql.@SHLIBEXT@: $(MYSQL_OBJ:.o=.@PICSUFFIX@) @echo "Building plugin $@" - @$(SHLD) $(LDSHFLAGS) -o $@ $(MYSQL_OBJ:.o=.@PICSUFFIX@) $(MYSQL_LIBS) \ + @$(SHLD) $(LDSHFLAGS) -o $@ $(MYSQL_OBJ:.o=.@PICSUFFIX@) @MYSQL_LIBS@ \ @SONAMEFLAG@`basename $@` bin/pgsql.@SHLIBEXT@: $(PGSQL_OBJ:.o=.@PICSUFFIX@) @echo "Building plugin $@" - @$(SHLD) $(LDSHFLAGS) -o $@ $(PGSQL_OBJ:.o=.@PICSUFFIX@) $(PGSQL_LIBS) \ + @$(SHLD) $(LDSHFLAGS) -o $@ $(PGSQL_OBJ:.o=.@PICSUFFIX@) @PGSQL_LIBS@ \ @SONAMEFLAG@`basename $@` bin/ldapsam.@SHLIBEXT@: passdb/pdb_ldap.@PICSUFFIX@ @@ -1164,7 +1160,7 @@ bin/macosxfs.@SHLIBEXT@: $(CHARSET_MACOSXFS_OBJ:.o=.@PICSUFFIX@) bin/xml.@SHLIBEXT@: $(XML_OBJ:.o=.@PICSUFFIX@) @echo "Building plugin $@" - @$(SHLD) $(LDSHFLAGS) -o $@ $(XML_OBJ:.o=.@PICSUFFIX@) $(XML_LIBS) \ + @$(SHLD) $(LDSHFLAGS) -o $@ $(XML_OBJ:.o=.@PICSUFFIX@) @XML_LIBS@ \ @SONAMEFLAG@`basename $@` bin/audit.@SHLIBEXT@: $(VFS_AUDIT_OBJ:.o=.@PICSUFFIX@) diff --git a/source/VERSION b/source/VERSION index 6f2624f0460..ab14d54bdd0 100644 --- a/source/VERSION +++ b/source/VERSION @@ -19,7 +19,7 @@ ######################################################## SAMBA_VERSION_MAJOR=3 SAMBA_VERSION_MINOR=0 -SAMBA_VERSION_RELEASE=6 +SAMBA_VERSION_RELEASE=7 ######################################################## # For 'pre' releases the version will be # diff --git a/source/auth/auth_domain.c b/source/auth/auth_domain.c index fdff0b52f96..6483dc143a0 100644 --- a/source/auth/auth_domain.c +++ b/source/auth/auth_domain.c @@ -205,7 +205,7 @@ static NTSTATUS domain_client_validate(TALLOC_CTX *mem_ctx, } else { nt_status = make_server_info_info3(mem_ctx, user_info->internal_username.str, user_info->smb_name.str, domain, server_info, &info3); - netsamlogon_cache_store( mem_ctx, &info3 ); + netsamlogon_cache_store( mem_ctx, user_info->smb_name.str, &info3 ); } #if 0 diff --git a/source/configure.in b/source/configure.in index 4076f654ef8..a35745c2e45 100644 --- a/source/configure.in +++ b/source/configure.in @@ -8,10 +8,10 @@ AC_CONFIG_HEADER(include/config.h) AC_DISABLE_STATIC AC_ENABLE_SHARED -SMB_VERSION_STRING=`cat include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2` +SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2` echo "SAMBA VERSION: ${SMB_VERSION_STRING}" -SAMBA_VERSION_SVN_REVISION=`cat include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-` +SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-` if test -n "${SAMBA_VERSION_SVN_REVISION}";then echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}" fi @@ -716,7 +716,7 @@ if test x$enable_cups != xno; then CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`" LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`" PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`" - elif test x$enable_cups == xyes; then + elif test x"$enable_cups" == x"yes"; then AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.) fi fi @@ -1206,6 +1206,8 @@ if test "$enable_shared" = "yes"; then fi AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block]) + AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly]) + AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly]) ;; *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX]) SHLIBEXT="sl" @@ -2319,7 +2321,6 @@ if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL]) fi -A ################################################# # check for smbwrapper support AC_MSG_CHECKING(whether to use smbwrapper) diff --git a/source/include/includes.h b/source/include/includes.h index 09731a56653..1d913d3f32a 100644 --- a/source/include/includes.h +++ b/source/include/includes.h @@ -369,12 +369,12 @@ #endif #if defined (HAVE_NETGROUP) -#if defined(HAVE_RPCSVC_YP_PROT_H) -#include -#endif #if defined(HAVE_RPCSVC_YPCLNT_H) #include #endif +#if defined(HAVE_RPCSVC_YP_PROT_H) +#include +#endif #endif /* HAVE_NETGROUP */ #if defined(HAVE_SYS_IPC_H) diff --git a/source/include/ntdomain.h b/source/include/ntdomain.h index a63272fd18f..45d64cf6331 100644 --- a/source/include/ntdomain.h +++ b/source/include/ntdomain.h @@ -4,7 +4,7 @@ Copyright (C) Andrew Tridgell 1992-1997 Copyright (C) Luke Kenneth Casson Leighton 1996-1997 Copyright (C) Paul Ashton 1997 - Copyright (C) Jeremy Allison 200-2004 + Copyright (C) Jeremy Allison 2000-2004 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/source/include/rpc_spoolss.h b/source/include/rpc_spoolss.h index d9fc0c6a6ab..cf7d1ba3412 100755 --- a/source/include/rpc_spoolss.h +++ b/source/include/rpc_spoolss.h @@ -376,6 +376,7 @@ PRINTER_MESSAGE_INFO; #define PRINTER_ATTRIBUTE_SAMBA (PRINTER_ATTRIBUTE_RAW_ONLY|\ PRINTER_ATTRIBUTE_SHARED|\ PRINTER_ATTRIBUTE_LOCAL) +#define PRINTER_ATTRIBUTE_NOT_SAMBA (PRINTER_ATTRIBUTE_NETWORK) #define NO_PRIORITY 0 #define MAX_PRIORITY 99 diff --git a/source/lib/pidfile.c b/source/lib/pidfile.c index 1a462bf1287..20a8e82ce23 100644 --- a/source/lib/pidfile.c +++ b/source/lib/pidfile.c @@ -49,6 +49,13 @@ pid_t pidfile_pid(const char *name) } ret = atoi(pidstr); + + if (ret == 0) { + /* Obviously we had some garbage in the pidfile... */ + DEBUG(1, ("Could not parse contents of pidfile %s\n", + pidFile)); + goto noproc; + } if (!process_exists((pid_t)ret)) { goto noproc; diff --git a/source/lib/util.c b/source/lib/util.c index 554f5ee79da..8d01d9e7c9c 100644 --- a/source/lib/util.c +++ b/source/lib/util.c @@ -46,10 +46,6 @@ #include -#else /* !WITH_NISPLUS_HOME */ - -#include "rpcsvc/ypclnt.h" - #endif /* WITH_NISPLUS_HOME */ #endif /* HAVE_NETGROUP && WITH_AUTOMOUNT */ @@ -1123,7 +1119,7 @@ static void strip_mount_options( pstring *str) *******************************************************************/ #ifdef WITH_NISPLUS_HOME -char *automount_lookup(const char *user_name) +char *automount_lookup( char *user_name) { static fstring last_key = ""; static pstring last_value = ""; @@ -1166,7 +1162,7 @@ char *automount_lookup(const char *user_name) } #else /* WITH_NISPLUS_HOME */ -char *automount_lookup(const char *user_name) +char *automount_lookup( char *user_name) { static fstring last_key = ""; static pstring last_value = ""; diff --git a/source/lib/util_str.c b/source/lib/util_str.c index 1083076edd4..6eee62c14aa 100644 --- a/source/lib/util_str.c +++ b/source/lib/util_str.c @@ -1391,6 +1391,7 @@ char *strstr_m(const char *src, const char *findstr) void strlower_m(char *s) { size_t len; + int errno_save; /* this is quite a common operation, so we want it to be fast. We optimise for the ascii case, knowing that all our @@ -1408,11 +1409,13 @@ void strlower_m(char *s) /* I assume that lowercased string takes the same number of bytes * as source string even in UTF-8 encoding. (VIV) */ len = strlen(s) + 1; + errno_save = errno; errno = 0; unix_strlower(s,len,s,len); /* Catch mb conversion errors that may not terminate. */ if (errno) s[len-1] = '\0'; + errno = errno_save; } /** @@ -1422,6 +1425,7 @@ void strlower_m(char *s) void strupper_m(char *s) { size_t len; + int errno_save; /* this is quite a common operation, so we want it to be fast. We optimise for the ascii case, knowing that all our @@ -1439,11 +1443,13 @@ void strupper_m(char *s) /* I assume that lowercased string takes the same number of bytes * as source string even in multibyte encoding. (VIV) */ len = strlen(s) + 1; + errno_save = errno; errno = 0; unix_strupper(s,len,s,len); /* Catch mb conversion errors that may not terminate. */ if (errno) s[len-1] = '\0'; + errno = errno_save; } /** @@ -1502,7 +1508,7 @@ int fstr_sprintf(fstring s, const char *fmt, ...) } -#ifndef HAVE_STRNDUP +#if !defined(HAVE_STRNDUP) || defined(BROKEN_STRNDUP) /** Some platforms don't have strndup. **/ @@ -1522,7 +1528,7 @@ int fstr_sprintf(fstring s, const char *fmt, ...) } #endif -#ifndef HAVE_STRNLEN +#if !defined(HAVE_STRNLEN) || defined(BROKEN_STRNLEN) /** Some platforms don't have strnlen **/ @@ -1682,6 +1688,7 @@ BOOL str_list_sub_basic( char **list, const char *smb_name ) return False; } + SAFE_FREE(*list); *list = tmpstr; list++; diff --git a/source/libads/ldap.c b/source/libads/ldap.c index 78ea9f1497d..d1539b83da7 100644 --- a/source/libads/ldap.c +++ b/source/libads/ldap.c @@ -2184,13 +2184,19 @@ BOOL ads_pull_sd(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, */ char *ads_pull_username(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, void *msg) { +#if 0 /* JERRY */ char *ret, *p; + /* lookup_name() only works on the sAMAccountName to + returning the username portion of userPrincipalName + breaks winbindd_getpwnam() */ + ret = ads_pull_string(ads, mem_ctx, msg, "userPrincipalName"); if (ret && (p = strchr(ret, '@'))) { *p = 0; return ret; } +#endif return ads_pull_string(ads, mem_ctx, msg, "sAMAccountName"); } diff --git a/source/libsmb/samlogon_cache.c b/source/libsmb/samlogon_cache.c index 4cd642c4e35..0105bc08c3a 100644 --- a/source/libsmb/samlogon_cache.c +++ b/source/libsmb/samlogon_cache.c @@ -106,9 +106,10 @@ void netsamlogon_clear_cached_user(TDB_CONTEXT *tdb, NET_USER_INFO_3 *user) /*********************************************************************** Store a NET_USER_INFO_3 structure in a tdb for later user + username should be in UTF-8 format ***********************************************************************/ -BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, NET_USER_INFO_3 *user) +BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, const char * username, NET_USER_INFO_3 *user) { TDB_DATA data; fstring keystr; @@ -130,6 +131,14 @@ BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, NET_USER_INFO_3 *user) slprintf(keystr, sizeof(keystr), "%s", sid_string_static(&user_sid)); DEBUG(10,("netsamlogon_cache_store: SID [%s]\n", keystr)); + + /* only Samba fills in the username, not sure why NT doesn't */ + /* so we fill it in since winbindd_getpwnam() makes use of it */ + + if ( !user->uni_user_name.buffer ) { + init_unistr2( &user->uni_user_name, username, STR_TERMINATE ); + init_uni_hdr( &user->hdr_user_name, &user->uni_user_name ); + } /* Prepare data */ diff --git a/source/modules/vfs_full_audit.c b/source/modules/vfs_full_audit.c index 993a8ee4cbe..b27c916a2a2 100644 --- a/source/modules/vfs_full_audit.c +++ b/source/modules/vfs_full_audit.c @@ -66,218 +66,218 @@ static int vfs_full_audit_debug_level = DBGC_VFS; /* Function prototypes */ -static int audit_connect(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_connect(vfs_handle_struct *handle, connection_struct *conn, const char *svc, const char *user); -static void audit_disconnect(vfs_handle_struct *handle, +static void smb_full_audit_disconnect(vfs_handle_struct *handle, connection_struct *conn); -static SMB_BIG_UINT audit_disk_free(vfs_handle_struct *handle, +static SMB_BIG_UINT smb_full_audit_disk_free(vfs_handle_struct *handle, connection_struct *conn, const char *path, BOOL small_query, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize); -static int audit_get_quota(struct vfs_handle_struct *handle, +static int smb_full_audit_get_quota(struct vfs_handle_struct *handle, struct connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt); -static int audit_set_quota(struct vfs_handle_struct *handle, +static int smb_full_audit_set_quota(struct vfs_handle_struct *handle, struct connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt); -static DIR *audit_opendir(vfs_handle_struct *handle, connection_struct *conn, +static DIR *smb_full_audit_opendir(vfs_handle_struct *handle, connection_struct *conn, const char *fname); -static struct dirent *audit_readdir(vfs_handle_struct *handle, +static struct dirent *smb_full_audit_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp); -static int audit_mkdir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode); -static int audit_rmdir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_rmdir(vfs_handle_struct *handle, connection_struct *conn, const char *path); -static int audit_closedir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_closedir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp); -static int audit_open(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_open(vfs_handle_struct *handle, connection_struct *conn, const char *fname, int flags, mode_t mode); -static int audit_close(vfs_handle_struct *handle, files_struct *fsp, int fd); -static ssize_t audit_read(vfs_handle_struct *handle, files_struct *fsp, +static int smb_full_audit_close(vfs_handle_struct *handle, files_struct *fsp, int fd); +static ssize_t smb_full_audit_read(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n); -static ssize_t audit_pread(vfs_handle_struct *handle, files_struct *fsp, +static ssize_t smb_full_audit_pread(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n, SMB_OFF_T offset); -static ssize_t audit_write(vfs_handle_struct *handle, files_struct *fsp, +static ssize_t smb_full_audit_write(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n); -static ssize_t audit_pwrite(vfs_handle_struct *handle, files_struct *fsp, +static ssize_t smb_full_audit_pwrite(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n, SMB_OFF_T offset); -static SMB_OFF_T audit_lseek(vfs_handle_struct *handle, files_struct *fsp, +static SMB_OFF_T smb_full_audit_lseek(vfs_handle_struct *handle, files_struct *fsp, int filedes, SMB_OFF_T offset, int whence); -static ssize_t audit_sendfile(vfs_handle_struct *handle, int tofd, +static ssize_t smb_full_audit_sendfile(vfs_handle_struct *handle, int tofd, files_struct *fsp, int fromfd, const DATA_BLOB *hdr, SMB_OFF_T offset, size_t n); -static int audit_rename(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_rename(vfs_handle_struct *handle, connection_struct *conn, const char *old, const char *new); -static int audit_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd); -static int audit_stat(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd); +static int smb_full_audit_stat(vfs_handle_struct *handle, connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf); -static int audit_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd, +static int smb_full_audit_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf); -static int audit_lstat(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_lstat(vfs_handle_struct *handle, connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf); -static int audit_unlink(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_unlink(vfs_handle_struct *handle, connection_struct *conn, const char *path); -static int audit_chmod(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chmod(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode); -static int audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, +static int smb_full_audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode); -static int audit_chown(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chown(vfs_handle_struct *handle, connection_struct *conn, const char *path, uid_t uid, gid_t gid); -static int audit_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, +static int smb_full_audit_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, uid_t uid, gid_t gid); -static int audit_chdir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chdir(vfs_handle_struct *handle, connection_struct *conn, const char *path); -static char *audit_getwd(vfs_handle_struct *handle, connection_struct *conn, +static char *smb_full_audit_getwd(vfs_handle_struct *handle, connection_struct *conn, char *path); -static int audit_utime(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_utime(vfs_handle_struct *handle, connection_struct *conn, const char *path, struct utimbuf *times); -static int audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp, +static int smb_full_audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_OFF_T len); -static BOOL audit_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, +static BOOL smb_full_audit_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type); -static int audit_symlink(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_symlink(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath); -static int audit_readlink(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_readlink(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *buf, size_t bufsiz); -static int audit_link(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_link(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath); -static int audit_mknod(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_mknod(vfs_handle_struct *handle, connection_struct *conn, const char *pathname, mode_t mode, SMB_DEV_T dev); -static char *audit_realpath(vfs_handle_struct *handle, connection_struct *conn, +static char *smb_full_audit_realpath(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *resolved_path); -static size_t audit_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static size_t smb_full_audit_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info, SEC_DESC **ppdesc); -static size_t audit_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static size_t smb_full_audit_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info, SEC_DESC **ppdesc); -static BOOL audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static BOOL smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd); -static BOOL audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static BOOL smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd); -static int audit_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode); -static int audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, +static int smb_full_audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode); -static int audit_sys_acl_get_entry(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p); -static int audit_sys_acl_get_tag_type(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *tag_type_p); -static int audit_sys_acl_get_permset(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p); -static void * audit_sys_acl_get_qualifier(vfs_handle_struct *handle, +static void * smb_full_audit_sys_acl_get_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d); -static SMB_ACL_T audit_sys_acl_get_file(vfs_handle_struct *handle, +static SMB_ACL_T smb_full_audit_sys_acl_get_file(vfs_handle_struct *handle, connection_struct *conn, const char *path_p, SMB_ACL_TYPE_T type); -static SMB_ACL_T audit_sys_acl_get_fd(vfs_handle_struct *handle, +static SMB_ACL_T smb_full_audit_sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, int fd); -static int audit_sys_acl_clear_perms(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_clear_perms(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset); -static int audit_sys_acl_add_perm(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_add_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm); -static char * audit_sys_acl_to_text(vfs_handle_struct *handle, +static char * smb_full_audit_sys_acl_to_text(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, ssize_t *plen); -static SMB_ACL_T audit_sys_acl_init(vfs_handle_struct *handle, +static SMB_ACL_T smb_full_audit_sys_acl_init(vfs_handle_struct *handle, connection_struct *conn, int count); -static int audit_sys_acl_create_entry(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_create_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T *pacl, SMB_ACL_ENTRY_T *pentry); -static int audit_sys_acl_set_tag_type(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_TAG_T tagtype); -static int audit_sys_acl_set_qualifier(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, void *qual); -static int audit_sys_acl_set_permset(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_PERMSET_T permset); -static int audit_sys_acl_valid(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_valid(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl ); -static int audit_sys_acl_set_file(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_file(vfs_handle_struct *handle, connection_struct *conn, const char *name, SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl); -static int audit_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, +static int smb_full_audit_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_ACL_T theacl); -static int audit_sys_acl_delete_def_file(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_delete_def_file(vfs_handle_struct *handle, connection_struct *conn, const char *path); -static int audit_sys_acl_get_perm(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm); -static int audit_sys_acl_free_text(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_free_text(vfs_handle_struct *handle, connection_struct *conn, char *text); -static int audit_sys_acl_free_acl(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_free_acl(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T posix_acl); -static int audit_sys_acl_free_qualifier(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_free_qualifier(vfs_handle_struct *handle, connection_struct *conn, void *qualifier, SMB_ACL_TAG_T tagtype); -static ssize_t audit_getxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_getxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, void *value, size_t size); -static ssize_t audit_lgetxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_lgetxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, void *value, size_t size); -static ssize_t audit_fgetxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_fgetxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const char *name, void *value, size_t size); -static ssize_t audit_listxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_listxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, char *list, size_t size); -static ssize_t audit_llistxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_llistxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, char *list, size_t size); -static ssize_t audit_flistxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_flistxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, char *list, size_t size); -static int audit_removexattr(struct vfs_handle_struct *handle, +static int smb_full_audit_removexattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name); -static int audit_lremovexattr(struct vfs_handle_struct *handle, +static int smb_full_audit_lremovexattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name); -static int audit_fremovexattr(struct vfs_handle_struct *handle, +static int smb_full_audit_fremovexattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const char *name); -static int audit_setxattr(struct vfs_handle_struct *handle, +static int smb_full_audit_setxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, const void *value, size_t size, int flags); -static int audit_lsetxattr(struct vfs_handle_struct *handle, +static int smb_full_audit_lsetxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, const void *value, size_t size, int flags); -static int audit_fsetxattr(struct vfs_handle_struct *handle, +static int smb_full_audit_fsetxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const char *name, const void *value, size_t size, int flags); @@ -287,176 +287,176 @@ static vfs_op_tuple audit_op_tuples[] = { /* Disk operations */ - {SMB_VFS_OP(audit_connect), SMB_VFS_OP_CONNECT, + {SMB_VFS_OP(smb_full_audit_connect), SMB_VFS_OP_CONNECT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_disconnect), SMB_VFS_OP_DISCONNECT, + {SMB_VFS_OP(smb_full_audit_disconnect), SMB_VFS_OP_DISCONNECT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_disk_free), SMB_VFS_OP_DISK_FREE, + {SMB_VFS_OP(smb_full_audit_disk_free), SMB_VFS_OP_DISK_FREE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_get_quota), SMB_VFS_OP_GET_QUOTA, + {SMB_VFS_OP(smb_full_audit_get_quota), SMB_VFS_OP_GET_QUOTA, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_set_quota), SMB_VFS_OP_SET_QUOTA, + {SMB_VFS_OP(smb_full_audit_set_quota), SMB_VFS_OP_SET_QUOTA, SMB_VFS_LAYER_LOGGER}, /* Directory operations */ - {SMB_VFS_OP(audit_opendir), SMB_VFS_OP_OPENDIR, + {SMB_VFS_OP(smb_full_audit_opendir), SMB_VFS_OP_OPENDIR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_readdir), SMB_VFS_OP_READDIR, + {SMB_VFS_OP(smb_full_audit_readdir), SMB_VFS_OP_READDIR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_mkdir), SMB_VFS_OP_MKDIR, + {SMB_VFS_OP(smb_full_audit_mkdir), SMB_VFS_OP_MKDIR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_rmdir), SMB_VFS_OP_RMDIR, + {SMB_VFS_OP(smb_full_audit_rmdir), SMB_VFS_OP_RMDIR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_closedir), SMB_VFS_OP_CLOSEDIR, + {SMB_VFS_OP(smb_full_audit_closedir), SMB_VFS_OP_CLOSEDIR, SMB_VFS_LAYER_LOGGER}, /* File operations */ - {SMB_VFS_OP(audit_open), SMB_VFS_OP_OPEN, + {SMB_VFS_OP(smb_full_audit_open), SMB_VFS_OP_OPEN, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_close), SMB_VFS_OP_CLOSE, + {SMB_VFS_OP(smb_full_audit_close), SMB_VFS_OP_CLOSE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_read), SMB_VFS_OP_READ, + {SMB_VFS_OP(smb_full_audit_read), SMB_VFS_OP_READ, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_pread), SMB_VFS_OP_PREAD, + {SMB_VFS_OP(smb_full_audit_pread), SMB_VFS_OP_PREAD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_write), SMB_VFS_OP_WRITE, + {SMB_VFS_OP(smb_full_audit_write), SMB_VFS_OP_WRITE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_pwrite), SMB_VFS_OP_PWRITE, + {SMB_VFS_OP(smb_full_audit_pwrite), SMB_VFS_OP_PWRITE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_lseek), SMB_VFS_OP_LSEEK, + {SMB_VFS_OP(smb_full_audit_lseek), SMB_VFS_OP_LSEEK, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sendfile), SMB_VFS_OP_SENDFILE, + {SMB_VFS_OP(smb_full_audit_sendfile), SMB_VFS_OP_SENDFILE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_rename), SMB_VFS_OP_RENAME, + {SMB_VFS_OP(smb_full_audit_rename), SMB_VFS_OP_RENAME, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fsync), SMB_VFS_OP_FSYNC, + {SMB_VFS_OP(smb_full_audit_fsync), SMB_VFS_OP_FSYNC, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_stat), SMB_VFS_OP_STAT, + {SMB_VFS_OP(smb_full_audit_stat), SMB_VFS_OP_STAT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fstat), SMB_VFS_OP_FSTAT, + {SMB_VFS_OP(smb_full_audit_fstat), SMB_VFS_OP_FSTAT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_lstat), SMB_VFS_OP_LSTAT, + {SMB_VFS_OP(smb_full_audit_lstat), SMB_VFS_OP_LSTAT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_unlink), SMB_VFS_OP_UNLINK, + {SMB_VFS_OP(smb_full_audit_unlink), SMB_VFS_OP_UNLINK, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_chmod), SMB_VFS_OP_CHMOD, + {SMB_VFS_OP(smb_full_audit_chmod), SMB_VFS_OP_CHMOD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fchmod), SMB_VFS_OP_FCHMOD, + {SMB_VFS_OP(smb_full_audit_fchmod), SMB_VFS_OP_FCHMOD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_chown), SMB_VFS_OP_CHOWN, + {SMB_VFS_OP(smb_full_audit_chown), SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fchown), SMB_VFS_OP_FCHOWN, + {SMB_VFS_OP(smb_full_audit_fchown), SMB_VFS_OP_FCHOWN, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_chdir), SMB_VFS_OP_CHDIR, + {SMB_VFS_OP(smb_full_audit_chdir), SMB_VFS_OP_CHDIR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_getwd), SMB_VFS_OP_GETWD, + {SMB_VFS_OP(smb_full_audit_getwd), SMB_VFS_OP_GETWD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_utime), SMB_VFS_OP_UTIME, + {SMB_VFS_OP(smb_full_audit_utime), SMB_VFS_OP_UTIME, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_ftruncate), SMB_VFS_OP_FTRUNCATE, + {SMB_VFS_OP(smb_full_audit_ftruncate), SMB_VFS_OP_FTRUNCATE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_lock), SMB_VFS_OP_LOCK, + {SMB_VFS_OP(smb_full_audit_lock), SMB_VFS_OP_LOCK, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_symlink), SMB_VFS_OP_SYMLINK, + {SMB_VFS_OP(smb_full_audit_symlink), SMB_VFS_OP_SYMLINK, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_readlink), SMB_VFS_OP_READLINK, + {SMB_VFS_OP(smb_full_audit_readlink), SMB_VFS_OP_READLINK, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_link), SMB_VFS_OP_LINK, + {SMB_VFS_OP(smb_full_audit_link), SMB_VFS_OP_LINK, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_mknod), SMB_VFS_OP_MKNOD, + {SMB_VFS_OP(smb_full_audit_mknod), SMB_VFS_OP_MKNOD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_realpath), SMB_VFS_OP_REALPATH, + {SMB_VFS_OP(smb_full_audit_realpath), SMB_VFS_OP_REALPATH, SMB_VFS_LAYER_LOGGER}, /* NT ACL operations. */ - {SMB_VFS_OP(audit_fget_nt_acl), SMB_VFS_OP_FGET_NT_ACL, + {SMB_VFS_OP(smb_full_audit_fget_nt_acl), SMB_VFS_OP_FGET_NT_ACL, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_get_nt_acl), SMB_VFS_OP_GET_NT_ACL, + {SMB_VFS_OP(smb_full_audit_get_nt_acl), SMB_VFS_OP_GET_NT_ACL, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL, + {SMB_VFS_OP(smb_full_audit_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_set_nt_acl), SMB_VFS_OP_SET_NT_ACL, + {SMB_VFS_OP(smb_full_audit_set_nt_acl), SMB_VFS_OP_SET_NT_ACL, SMB_VFS_LAYER_LOGGER}, /* POSIX ACL operations. */ - {SMB_VFS_OP(audit_chmod_acl), SMB_VFS_OP_CHMOD, + {SMB_VFS_OP(smb_full_audit_chmod_acl), SMB_VFS_OP_CHMOD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fchmod_acl), SMB_VFS_OP_FCHMOD, + {SMB_VFS_OP(smb_full_audit_fchmod_acl), SMB_VFS_OP_FCHMOD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_get_entry), SMB_VFS_OP_SYS_ACL_GET_ENTRY, + {SMB_VFS_OP(smb_full_audit_sys_acl_get_entry), SMB_VFS_OP_SYS_ACL_GET_ENTRY, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_get_tag_type), SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, + {SMB_VFS_OP(smb_full_audit_sys_acl_get_tag_type), SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_get_permset), SMB_VFS_OP_SYS_ACL_GET_PERMSET, + {SMB_VFS_OP(smb_full_audit_sys_acl_get_permset), SMB_VFS_OP_SYS_ACL_GET_PERMSET, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_get_qualifier), SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, + {SMB_VFS_OP(smb_full_audit_sys_acl_get_qualifier), SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_get_file), SMB_VFS_OP_SYS_ACL_GET_FILE, + {SMB_VFS_OP(smb_full_audit_sys_acl_get_file), SMB_VFS_OP_SYS_ACL_GET_FILE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_get_fd), SMB_VFS_OP_SYS_ACL_GET_FD, + {SMB_VFS_OP(smb_full_audit_sys_acl_get_fd), SMB_VFS_OP_SYS_ACL_GET_FD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_clear_perms), SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, + {SMB_VFS_OP(smb_full_audit_sys_acl_clear_perms), SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_add_perm), SMB_VFS_OP_SYS_ACL_ADD_PERM, + {SMB_VFS_OP(smb_full_audit_sys_acl_add_perm), SMB_VFS_OP_SYS_ACL_ADD_PERM, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_to_text), SMB_VFS_OP_SYS_ACL_TO_TEXT, + {SMB_VFS_OP(smb_full_audit_sys_acl_to_text), SMB_VFS_OP_SYS_ACL_TO_TEXT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_init), SMB_VFS_OP_SYS_ACL_INIT, + {SMB_VFS_OP(smb_full_audit_sys_acl_init), SMB_VFS_OP_SYS_ACL_INIT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_create_entry), SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, + {SMB_VFS_OP(smb_full_audit_sys_acl_create_entry), SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_set_tag_type), SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, + {SMB_VFS_OP(smb_full_audit_sys_acl_set_tag_type), SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_set_qualifier), SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, + {SMB_VFS_OP(smb_full_audit_sys_acl_set_qualifier), SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_set_permset), SMB_VFS_OP_SYS_ACL_SET_PERMSET, + {SMB_VFS_OP(smb_full_audit_sys_acl_set_permset), SMB_VFS_OP_SYS_ACL_SET_PERMSET, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_valid), SMB_VFS_OP_SYS_ACL_VALID, + {SMB_VFS_OP(smb_full_audit_sys_acl_valid), SMB_VFS_OP_SYS_ACL_VALID, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_set_file), SMB_VFS_OP_SYS_ACL_SET_FILE, + {SMB_VFS_OP(smb_full_audit_sys_acl_set_file), SMB_VFS_OP_SYS_ACL_SET_FILE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_set_fd), SMB_VFS_OP_SYS_ACL_SET_FD, + {SMB_VFS_OP(smb_full_audit_sys_acl_set_fd), SMB_VFS_OP_SYS_ACL_SET_FD, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_delete_def_file), SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, + {SMB_VFS_OP(smb_full_audit_sys_acl_delete_def_file), SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_get_perm), SMB_VFS_OP_SYS_ACL_GET_PERM, + {SMB_VFS_OP(smb_full_audit_sys_acl_get_perm), SMB_VFS_OP_SYS_ACL_GET_PERM, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_free_text), SMB_VFS_OP_SYS_ACL_FREE_TEXT, + {SMB_VFS_OP(smb_full_audit_sys_acl_free_text), SMB_VFS_OP_SYS_ACL_FREE_TEXT, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_free_acl), SMB_VFS_OP_SYS_ACL_FREE_ACL, + {SMB_VFS_OP(smb_full_audit_sys_acl_free_acl), SMB_VFS_OP_SYS_ACL_FREE_ACL, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_sys_acl_free_qualifier), SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, + {SMB_VFS_OP(smb_full_audit_sys_acl_free_qualifier), SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, SMB_VFS_LAYER_LOGGER}, /* EA operations. */ - {SMB_VFS_OP(audit_getxattr), SMB_VFS_OP_GETXATTR, + {SMB_VFS_OP(smb_full_audit_getxattr), SMB_VFS_OP_GETXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_lgetxattr), SMB_VFS_OP_LGETXATTR, + {SMB_VFS_OP(smb_full_audit_lgetxattr), SMB_VFS_OP_LGETXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fgetxattr), SMB_VFS_OP_FGETXATTR, + {SMB_VFS_OP(smb_full_audit_fgetxattr), SMB_VFS_OP_FGETXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_listxattr), SMB_VFS_OP_LISTXATTR, + {SMB_VFS_OP(smb_full_audit_listxattr), SMB_VFS_OP_LISTXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_llistxattr), SMB_VFS_OP_LLISTXATTR, + {SMB_VFS_OP(smb_full_audit_llistxattr), SMB_VFS_OP_LLISTXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_flistxattr), SMB_VFS_OP_FLISTXATTR, + {SMB_VFS_OP(smb_full_audit_flistxattr), SMB_VFS_OP_FLISTXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_removexattr), SMB_VFS_OP_REMOVEXATTR, + {SMB_VFS_OP(smb_full_audit_removexattr), SMB_VFS_OP_REMOVEXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_lremovexattr), SMB_VFS_OP_LREMOVEXATTR, + {SMB_VFS_OP(smb_full_audit_lremovexattr), SMB_VFS_OP_LREMOVEXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fremovexattr), SMB_VFS_OP_FREMOVEXATTR, + {SMB_VFS_OP(smb_full_audit_fremovexattr), SMB_VFS_OP_FREMOVEXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_setxattr), SMB_VFS_OP_SETXATTR, + {SMB_VFS_OP(smb_full_audit_setxattr), SMB_VFS_OP_SETXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_lsetxattr), SMB_VFS_OP_LSETXATTR, + {SMB_VFS_OP(smb_full_audit_lsetxattr), SMB_VFS_OP_LSETXATTR, SMB_VFS_LAYER_LOGGER}, - {SMB_VFS_OP(audit_fsetxattr), SMB_VFS_OP_FSETXATTR, + {SMB_VFS_OP(smb_full_audit_fsetxattr), SMB_VFS_OP_FSETXATTR, SMB_VFS_LAYER_LOGGER}, /* Finish VFS operations definition */ @@ -689,7 +689,7 @@ static void do_log(vfs_op_type op, BOOL success, vfs_handle_struct *handle, /* Implementation of vfs_ops. Pass everything on to the default operation but log event first. */ -static int audit_connect(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_connect(vfs_handle_struct *handle, connection_struct *conn, const char *svc, const char *user) { int result; @@ -713,7 +713,7 @@ static int audit_connect(vfs_handle_struct *handle, connection_struct *conn, return result; } -static void audit_disconnect(vfs_handle_struct *handle, +static void smb_full_audit_disconnect(vfs_handle_struct *handle, connection_struct *conn) { SMB_VFS_NEXT_DISCONNECT(handle, conn); @@ -730,7 +730,7 @@ static void audit_disconnect(vfs_handle_struct *handle, return; } -static SMB_BIG_UINT audit_disk_free(vfs_handle_struct *handle, +static SMB_BIG_UINT smb_full_audit_disk_free(vfs_handle_struct *handle, connection_struct *conn, const char *path, BOOL small_query, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize) @@ -747,7 +747,7 @@ static SMB_BIG_UINT audit_disk_free(vfs_handle_struct *handle, return result; } -static int audit_get_quota(struct vfs_handle_struct *handle, +static int smb_full_audit_get_quota(struct vfs_handle_struct *handle, struct connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt) @@ -762,7 +762,7 @@ static int audit_get_quota(struct vfs_handle_struct *handle, } -static int audit_set_quota(struct vfs_handle_struct *handle, +static int smb_full_audit_set_quota(struct vfs_handle_struct *handle, struct connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt) @@ -776,7 +776,7 @@ static int audit_set_quota(struct vfs_handle_struct *handle, return result; } -static DIR *audit_opendir(vfs_handle_struct *handle, connection_struct *conn, +static DIR *smb_full_audit_opendir(vfs_handle_struct *handle, connection_struct *conn, const char *fname) { DIR *result; @@ -788,7 +788,7 @@ static DIR *audit_opendir(vfs_handle_struct *handle, connection_struct *conn, return result; } -static struct dirent *audit_readdir(vfs_handle_struct *handle, +static struct dirent *smb_full_audit_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp) { struct dirent *result; @@ -803,7 +803,7 @@ static struct dirent *audit_readdir(vfs_handle_struct *handle, return result; } -static int audit_mkdir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) { int result; @@ -815,7 +815,7 @@ static int audit_mkdir(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_rmdir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_rmdir(vfs_handle_struct *handle, connection_struct *conn, const char *path) { int result; @@ -827,7 +827,7 @@ static int audit_rmdir(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_closedir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_closedir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp) { int result; @@ -839,7 +839,7 @@ static int audit_closedir(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_open(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_open(vfs_handle_struct *handle, connection_struct *conn, const char *fname, int flags, mode_t mode) { int result; @@ -853,7 +853,7 @@ static int audit_open(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_close(vfs_handle_struct *handle, files_struct *fsp, int fd) +static int smb_full_audit_close(vfs_handle_struct *handle, files_struct *fsp, int fd) { int result; @@ -864,7 +864,7 @@ static int audit_close(vfs_handle_struct *handle, files_struct *fsp, int fd) return result; } -static ssize_t audit_read(vfs_handle_struct *handle, files_struct *fsp, +static ssize_t smb_full_audit_read(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n) { ssize_t result; @@ -876,7 +876,7 @@ static ssize_t audit_read(vfs_handle_struct *handle, files_struct *fsp, return result; } -static ssize_t audit_pread(vfs_handle_struct *handle, files_struct *fsp, +static ssize_t smb_full_audit_pread(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n, SMB_OFF_T offset) { ssize_t result; @@ -888,7 +888,7 @@ static ssize_t audit_pread(vfs_handle_struct *handle, files_struct *fsp, return result; } -static ssize_t audit_write(vfs_handle_struct *handle, files_struct *fsp, +static ssize_t smb_full_audit_write(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n) { ssize_t result; @@ -900,7 +900,7 @@ static ssize_t audit_write(vfs_handle_struct *handle, files_struct *fsp, return result; } -static ssize_t audit_pwrite(vfs_handle_struct *handle, files_struct *fsp, +static ssize_t smb_full_audit_pwrite(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n, SMB_OFF_T offset) { @@ -913,7 +913,7 @@ static ssize_t audit_pwrite(vfs_handle_struct *handle, files_struct *fsp, return result; } -static SMB_OFF_T audit_lseek(vfs_handle_struct *handle, files_struct *fsp, +static SMB_OFF_T smb_full_audit_lseek(vfs_handle_struct *handle, files_struct *fsp, int filedes, SMB_OFF_T offset, int whence) { ssize_t result; @@ -926,7 +926,7 @@ static SMB_OFF_T audit_lseek(vfs_handle_struct *handle, files_struct *fsp, return result; } -static ssize_t audit_sendfile(vfs_handle_struct *handle, int tofd, +static ssize_t smb_full_audit_sendfile(vfs_handle_struct *handle, int tofd, files_struct *fsp, int fromfd, const DATA_BLOB *hdr, SMB_OFF_T offset, size_t n) @@ -942,7 +942,7 @@ static ssize_t audit_sendfile(vfs_handle_struct *handle, int tofd, return result; } -static int audit_rename(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_rename(vfs_handle_struct *handle, connection_struct *conn, const char *old, const char *new) { int result; @@ -954,7 +954,7 @@ static int audit_rename(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd) +static int smb_full_audit_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd) { int result; @@ -965,7 +965,7 @@ static int audit_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd) return result; } -static int audit_stat(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_stat(vfs_handle_struct *handle, connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf) { int result; @@ -977,7 +977,7 @@ static int audit_stat(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd, +static int smb_full_audit_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf) { int result; @@ -989,7 +989,7 @@ static int audit_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd, return result; } -static int audit_lstat(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_lstat(vfs_handle_struct *handle, connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf) { int result; @@ -1001,7 +1001,7 @@ static int audit_lstat(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_unlink(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_unlink(vfs_handle_struct *handle, connection_struct *conn, const char *path) { int result; @@ -1013,7 +1013,7 @@ static int audit_unlink(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_chmod(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chmod(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) { int result; @@ -1025,7 +1025,7 @@ static int audit_chmod(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, +static int smb_full_audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode) { int result; @@ -1038,7 +1038,7 @@ static int audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, return result; } -static int audit_chown(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chown(vfs_handle_struct *handle, connection_struct *conn, const char *path, uid_t uid, gid_t gid) { int result; @@ -1051,7 +1051,7 @@ static int audit_chown(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, +static int smb_full_audit_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, uid_t uid, gid_t gid) { int result; @@ -1064,7 +1064,7 @@ static int audit_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, return result; } -static int audit_chdir(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chdir(vfs_handle_struct *handle, connection_struct *conn, const char *path) { int result; @@ -1076,7 +1076,7 @@ static int audit_chdir(vfs_handle_struct *handle, connection_struct *conn, return result; } -static char *audit_getwd(vfs_handle_struct *handle, connection_struct *conn, +static char *smb_full_audit_getwd(vfs_handle_struct *handle, connection_struct *conn, char *path) { char *result; @@ -1088,7 +1088,7 @@ static char *audit_getwd(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_utime(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_utime(vfs_handle_struct *handle, connection_struct *conn, const char *path, struct utimbuf *times) { int result; @@ -1100,7 +1100,7 @@ static int audit_utime(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp, +static int smb_full_audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_OFF_T len) { int result; @@ -1113,7 +1113,7 @@ static int audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp, return result; } -static BOOL audit_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, +static BOOL smb_full_audit_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type) { BOOL result; @@ -1125,7 +1125,7 @@ static BOOL audit_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, return result; } -static int audit_symlink(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_symlink(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath) { int result; @@ -1138,7 +1138,7 @@ static int audit_symlink(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_readlink(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_readlink(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *buf, size_t bufsiz) { int result; @@ -1150,7 +1150,7 @@ static int audit_readlink(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_link(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_link(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath) { int result; @@ -1163,7 +1163,7 @@ static int audit_link(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_mknod(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_mknod(vfs_handle_struct *handle, connection_struct *conn, const char *pathname, mode_t mode, SMB_DEV_T dev) { int result; @@ -1175,7 +1175,7 @@ static int audit_mknod(vfs_handle_struct *handle, connection_struct *conn, return result; } -static char *audit_realpath(vfs_handle_struct *handle, connection_struct *conn, +static char *smb_full_audit_realpath(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *resolved_path) { char *result; @@ -1187,7 +1187,7 @@ static char *audit_realpath(vfs_handle_struct *handle, connection_struct *conn, return result; } -static size_t audit_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static size_t smb_full_audit_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info, SEC_DESC **ppdesc) { @@ -1202,7 +1202,7 @@ static size_t audit_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, return result; } -static size_t audit_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static size_t smb_full_audit_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info, SEC_DESC **ppdesc) { @@ -1217,7 +1217,7 @@ static size_t audit_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, return result; } -static BOOL audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static BOOL smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd) { @@ -1231,7 +1231,7 @@ static BOOL audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, return result; } -static BOOL audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, +static BOOL smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd) { @@ -1245,7 +1245,7 @@ static BOOL audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, return result; } -static int audit_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, +static int smb_full_audit_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) { int result; @@ -1258,7 +1258,7 @@ static int audit_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, return result; } -static int audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, +static int smb_full_audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode) { int result; @@ -1271,7 +1271,7 @@ static int audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, return result; } -static int audit_sys_acl_get_entry(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p) @@ -1287,7 +1287,7 @@ static int audit_sys_acl_get_entry(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_get_tag_type(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *tag_type_p) @@ -1303,7 +1303,7 @@ static int audit_sys_acl_get_tag_type(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_get_permset(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p) @@ -1319,7 +1319,7 @@ static int audit_sys_acl_get_permset(vfs_handle_struct *handle, return result; } -static void * audit_sys_acl_get_qualifier(vfs_handle_struct *handle, +static void * smb_full_audit_sys_acl_get_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d) { @@ -1333,7 +1333,7 @@ static void * audit_sys_acl_get_qualifier(vfs_handle_struct *handle, return result; } -static SMB_ACL_T audit_sys_acl_get_file(vfs_handle_struct *handle, +static SMB_ACL_T smb_full_audit_sys_acl_get_file(vfs_handle_struct *handle, connection_struct *conn, const char *path_p, SMB_ACL_TYPE_T type) @@ -1348,7 +1348,7 @@ static SMB_ACL_T audit_sys_acl_get_file(vfs_handle_struct *handle, return result; } -static SMB_ACL_T audit_sys_acl_get_fd(vfs_handle_struct *handle, +static SMB_ACL_T smb_full_audit_sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, int fd) { SMB_ACL_T result; @@ -1361,7 +1361,7 @@ static SMB_ACL_T audit_sys_acl_get_fd(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_clear_perms(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_clear_perms(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset) { @@ -1375,7 +1375,7 @@ static int audit_sys_acl_clear_perms(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_add_perm(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_add_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm) @@ -1390,7 +1390,7 @@ static int audit_sys_acl_add_perm(vfs_handle_struct *handle, return result; } -static char * audit_sys_acl_to_text(vfs_handle_struct *handle, +static char * smb_full_audit_sys_acl_to_text(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, ssize_t *plen) { @@ -1404,7 +1404,7 @@ static char * audit_sys_acl_to_text(vfs_handle_struct *handle, return result; } -static SMB_ACL_T audit_sys_acl_init(vfs_handle_struct *handle, +static SMB_ACL_T smb_full_audit_sys_acl_init(vfs_handle_struct *handle, connection_struct *conn, int count) { @@ -1418,7 +1418,7 @@ static SMB_ACL_T audit_sys_acl_init(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_create_entry(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_create_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T *pacl, SMB_ACL_ENTRY_T *pentry) { @@ -1432,7 +1432,7 @@ static int audit_sys_acl_create_entry(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_set_tag_type(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_TAG_T tagtype) @@ -1448,7 +1448,7 @@ static int audit_sys_acl_set_tag_type(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_set_qualifier(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, void *qual) @@ -1463,7 +1463,7 @@ static int audit_sys_acl_set_qualifier(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_set_permset(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_PERMSET_T permset) @@ -1478,7 +1478,7 @@ static int audit_sys_acl_set_permset(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_valid(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_valid(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl ) { @@ -1492,7 +1492,7 @@ static int audit_sys_acl_valid(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_set_file(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_set_file(vfs_handle_struct *handle, connection_struct *conn, const char *name, SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl) @@ -1508,7 +1508,7 @@ static int audit_sys_acl_set_file(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, +static int smb_full_audit_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_ACL_T theacl) { int result; @@ -1521,7 +1521,7 @@ static int audit_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, return result; } -static int audit_sys_acl_delete_def_file(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_delete_def_file(vfs_handle_struct *handle, connection_struct *conn, const char *path) { @@ -1535,7 +1535,7 @@ static int audit_sys_acl_delete_def_file(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_get_perm(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_get_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm) @@ -1550,7 +1550,7 @@ static int audit_sys_acl_get_perm(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_free_text(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_free_text(vfs_handle_struct *handle, connection_struct *conn, char *text) { @@ -1564,7 +1564,7 @@ static int audit_sys_acl_free_text(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_free_acl(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_free_acl(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T posix_acl) { @@ -1578,7 +1578,7 @@ static int audit_sys_acl_free_acl(vfs_handle_struct *handle, return result; } -static int audit_sys_acl_free_qualifier(vfs_handle_struct *handle, +static int smb_full_audit_sys_acl_free_qualifier(vfs_handle_struct *handle, connection_struct *conn, void *qualifier, SMB_ACL_TAG_T tagtype) @@ -1594,7 +1594,7 @@ static int audit_sys_acl_free_qualifier(vfs_handle_struct *handle, return result; } -static ssize_t audit_getxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_getxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, void *value, size_t size) { @@ -1608,7 +1608,7 @@ static ssize_t audit_getxattr(struct vfs_handle_struct *handle, return result; } -static ssize_t audit_lgetxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_lgetxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, void *value, size_t size) @@ -1623,7 +1623,7 @@ static ssize_t audit_lgetxattr(struct vfs_handle_struct *handle, return result; } -static ssize_t audit_fgetxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_fgetxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const char *name, void *value, size_t size) { @@ -1637,7 +1637,7 @@ static ssize_t audit_fgetxattr(struct vfs_handle_struct *handle, return result; } -static ssize_t audit_listxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_listxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, char *list, size_t size) { @@ -1650,7 +1650,7 @@ static ssize_t audit_listxattr(struct vfs_handle_struct *handle, return result; } -static ssize_t audit_llistxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_llistxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, char *list, size_t size) { @@ -1663,7 +1663,7 @@ static ssize_t audit_llistxattr(struct vfs_handle_struct *handle, return result; } -static ssize_t audit_flistxattr(struct vfs_handle_struct *handle, +static ssize_t smb_full_audit_flistxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, char *list, size_t size) { @@ -1677,7 +1677,7 @@ static ssize_t audit_flistxattr(struct vfs_handle_struct *handle, return result; } -static int audit_removexattr(struct vfs_handle_struct *handle, +static int smb_full_audit_removexattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name) { @@ -1691,7 +1691,7 @@ static int audit_removexattr(struct vfs_handle_struct *handle, return result; } -static int audit_lremovexattr(struct vfs_handle_struct *handle, +static int smb_full_audit_lremovexattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name) { @@ -1705,7 +1705,7 @@ static int audit_lremovexattr(struct vfs_handle_struct *handle, return result; } -static int audit_fremovexattr(struct vfs_handle_struct *handle, +static int smb_full_audit_fremovexattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const char *name) { @@ -1719,7 +1719,7 @@ static int audit_fremovexattr(struct vfs_handle_struct *handle, return result; } -static int audit_setxattr(struct vfs_handle_struct *handle, +static int smb_full_audit_setxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, const void *value, size_t size, int flags) @@ -1735,7 +1735,7 @@ static int audit_setxattr(struct vfs_handle_struct *handle, return result; } -static int audit_lsetxattr(struct vfs_handle_struct *handle, +static int smb_full_audit_lsetxattr(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, const char *name, const void *value, size_t size, int flags) @@ -1751,7 +1751,7 @@ static int audit_lsetxattr(struct vfs_handle_struct *handle, return result; } -static int audit_fsetxattr(struct vfs_handle_struct *handle, +static int smb_full_audit_fsetxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const char *name, const void *value, size_t size, int flags) { diff --git a/source/nsswitch/winbindd_ads.c b/source/nsswitch/winbindd_ads.c index 2d3a9e760cb..1392c96fb1e 100644 --- a/source/nsswitch/winbindd_ads.c +++ b/source/nsswitch/winbindd_ads.c @@ -44,7 +44,7 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain) /* check for a valid structure */ - DEBUG(7, ("Current tickets expire at %d\n, time is now %d\n", + DEBUG(7, ("Current tickets expire at %d, time is now %d\n", (uint32) ads->auth.expire, (uint32) time(NULL))); if ( ads->config.realm && (ads->auth.expire > time(NULL))) { return ads; diff --git a/source/nsswitch/winbindd_cache.c b/source/nsswitch/winbindd_cache.c index bbd98a620f6..b81f8ecd45a 100644 --- a/source/nsswitch/winbindd_cache.c +++ b/source/nsswitch/winbindd_cache.c @@ -1048,7 +1048,9 @@ do_query: /* and save it */ refresh_sequence_number(domain, False); wcache_save_sid_to_name(domain, status, sid, *domain_name, *name, *type); - wcache_save_name_to_sid(domain, status, *domain_name, *name, sid, *type); + + /* We can't save the name to sid mapping here, as with sid history a + * later name2sid would give the wrong sid. */ return status; } diff --git a/source/nsswitch/winbindd_pam.c b/source/nsswitch/winbindd_pam.c index 03947de8750..08913a35a48 100644 --- a/source/nsswitch/winbindd_pam.c +++ b/source/nsswitch/winbindd_pam.c @@ -283,7 +283,7 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state) } if (NT_STATUS_IS_OK(result)) { - netsamlogon_cache_store( cli->mem_ctx, &info3 ); + netsamlogon_cache_store( cli->mem_ctx, name_user, &info3 ); wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3); /* Check if the user is in the right group */ @@ -538,7 +538,7 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state) } if (NT_STATUS_IS_OK(result)) { - netsamlogon_cache_store( cli->mem_ctx, &info3 ); + netsamlogon_cache_store( cli->mem_ctx, name_user, &info3 ); wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3); if (!NT_STATUS_IS_OK(result = check_info3_in_group(mem_ctx, &info3, state->request.data.auth_crap.required_membership_sid))) { diff --git a/source/param/loadparm.c b/source/param/loadparm.c index 2750cc7edab..71543d1e15b 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -200,7 +200,6 @@ typedef struct int lpqcachetime; int iMaxSmbdProcesses; BOOL bDisableSpoolss; - int iTotalPrintJobs; int syslog; int os_level; int enhanced_browsing; @@ -1199,24 +1198,18 @@ static void init_printer_values(service *pService) case PRINT_LPROS2: string_set(&pService->szLpqcommand, "lpq -P'%p'"); string_set(&pService->szLprmcommand, "lprm -P'%p' %j"); - string_set(&pService->szPrintcommand, - "lpr -r -P'%p' %s"); + string_set(&pService->szPrintcommand, "lpr -r -P'%p' %s"); break; case PRINT_LPRNG: case PRINT_PLP: string_set(&pService->szLpqcommand, "lpq -P'%p'"); string_set(&pService->szLprmcommand, "lprm -P'%p' %j"); - string_set(&pService->szPrintcommand, - "lpr -r -P'%p' %s"); - string_set(&pService->szQueuepausecommand, - "lpc stop '%p'"); - string_set(&pService->szQueueresumecommand, - "lpc start '%p'"); - string_set(&pService->szLppausecommand, - "lpc hold '%p' %j"); - string_set(&pService->szLpresumecommand, - "lpc release '%p' %j"); + string_set(&pService->szPrintcommand, "lpr -r -P'%p' %s"); + string_set(&pService->szQueuepausecommand, "lpc stop '%p'"); + string_set(&pService->szQueueresumecommand, "lpc start '%p'"); + string_set(&pService->szLppausecommand, "lpc hold '%p' %j"); + string_set(&pService->szLpresumecommand, "lpc release '%p' %j"); break; case PRINT_CUPS: @@ -1231,20 +1224,13 @@ static void init_printer_values(service *pService) string_set(&Globals.szPrintcapname, "cups"); #else - string_set(&pService->szLpqcommand, - "/usr/bin/lpstat -o '%p'"); - string_set(&pService->szLprmcommand, - "/usr/bin/cancel '%p-%j'"); - string_set(&pService->szPrintcommand, - "/usr/bin/lp -d '%p' %s; rm %s"); - string_set(&pService->szLppausecommand, - "lp -i '%p-%j' -H hold"); - string_set(&pService->szLpresumecommand, - "lp -i '%p-%j' -H resume"); - string_set(&pService->szQueuepausecommand, - "/usr/bin/disable '%p'"); - string_set(&pService->szQueueresumecommand, - "/usr/bin/enable '%p'"); + string_set(&pService->szLpqcommand, "/usr/bin/lpstat -o '%p'"); + string_set(&pService->szLprmcommand, "/usr/bin/cancel '%p-%j'"); + string_set(&pService->szPrintcommand, "/usr/bin/lp -d '%p' %s; rm %s"); + string_set(&pService->szLppausecommand, "lp -i '%p-%j' -H hold"); + string_set(&pService->szLpresumecommand, "lp -i '%p-%j' -H resume"); + string_set(&pService->szQueuepausecommand, "/usr/bin/disable '%p'"); + string_set(&pService->szQueueresumecommand, "/usr/bin/enable '%p'"); string_set(&Globals.szPrintcapname, "lpstat"); #endif /* HAVE_CUPS */ break; @@ -1253,17 +1239,12 @@ static void init_printer_values(service *pService) case PRINT_HPUX: string_set(&pService->szLpqcommand, "lpstat -o%p"); string_set(&pService->szLprmcommand, "cancel %p-%j"); - string_set(&pService->szPrintcommand, - "lp -c -d%p %s; rm %s"); - string_set(&pService->szQueuepausecommand, - "disable %p"); - string_set(&pService->szQueueresumecommand, - "enable %p"); + string_set(&pService->szPrintcommand, "lp -c -d%p %s; rm %s"); + string_set(&pService->szQueuepausecommand, "disable %p"); + string_set(&pService->szQueueresumecommand, "enable %p"); #ifndef HPUX - string_set(&pService->szLppausecommand, - "lp -i %p-%j -H hold"); - string_set(&pService->szLpresumecommand, - "lp -i %p-%j -H resume"); + string_set(&pService->szLppausecommand, "lp -i %p-%j -H hold"); + string_set(&pService->szLpresumecommand, "lp -i %p-%j -H resume"); #endif /* HPUX */ break; @@ -1317,6 +1298,8 @@ static void init_globals(void) string_set(&sDefault.fstype, FSTYPE_STRING); + init_printer_values(&sDefault); + done_init = True; } @@ -1390,7 +1373,6 @@ static void init_globals(void) Globals.lpqcachetime = 10; Globals.bDisableSpoolss = False; Globals.iMaxSmbdProcesses = 0;/* no limit specified */ - Globals.iTotalPrintJobs = 0; /* no limit specified */ Globals.pwordlevel = 0; Globals.unamelevel = 0; Globals.deadtime = 0; @@ -2305,6 +2287,10 @@ static int add_a_service(const service *pservice, const char *name) copy_service(ServicePtrs[i], &tservice, NULL); if (name) string_set(&ServicePtrs[i]->szService, name); + + DEBUG(8,("add_a_service: Creating snum = %d for %s\n", + i, ServicePtrs[i]->szService)); + return (i); } @@ -2344,7 +2330,7 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, ServicePtrs[i]->autoloaded = True; DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", pszHomename, - user, newHomedir)); + user, ServicePtrs[i]->szPath )); return (True); } @@ -3966,9 +3952,6 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, } init_iconv(); -#if 0 /* JERRY */ - init_printer_values(&sDefault); -#endif return (bRetval); } diff --git a/source/printing/notify.c b/source/printing/notify.c index 8d5be136071..10b5f745287 100644 --- a/source/printing/notify.c +++ b/source/printing/notify.c @@ -243,18 +243,21 @@ static void send_spoolss_notify2_msg(SPOOLSS_NOTIFY_MSG *msg) * as they will just cause flickering updates in the client. */ - if ((num_messages < 100) && (msg->type == JOB_NOTIFY_TYPE) && - (msg->field == JOB_NOTIFY_TOTAL_BYTES || msg->field == JOB_NOTIFY_TOTAL_PAGES)) { + if ((num_messages < 100) && (msg->type == JOB_NOTIFY_TYPE) + && (msg->field == JOB_NOTIFY_TOTAL_BYTES + || msg->field == JOB_NOTIFY_TOTAL_PAGES )) + { - for (tmp_ptr = notify_queue_head; tmp_ptr; tmp_ptr = tmp_ptr->next) { + for (tmp_ptr = notify_queue_head; tmp_ptr; tmp_ptr = tmp_ptr->next) + { if (tmp_ptr->msg->type == msg->type && tmp_ptr->msg->field == msg->field && tmp_ptr->msg->id == msg->id && tmp_ptr->msg->flags == msg->flags && strequal(tmp_ptr->msg->printer, msg->printer)) { - DEBUG(5, ("send_spoolss_notify2_msg: replacing message 0x%02x/0x%02x for printer %s \ -in notify_queue\n", msg->type, msg->field, msg->printer)); + DEBUG(5,("send_spoolss_notify2_msg: replacing message 0x%02x/0x%02x for " + "printer %s in notify_queue\n", msg->type, msg->field, msg->printer)); tmp_ptr->msg = msg; return; diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c index 8c0302b4300..7850924aacb 100644 --- a/source/printing/nt_printing.c +++ b/source/printing/nt_printing.c @@ -3335,7 +3335,8 @@ static WERROR get_a_printer_2(NT_PRINTER_INFO_LEVEL_2 **info_ptr, const char *sh info.parameters); /* Samba has to have shared raw drivers. */ - info.attributes = PRINTER_ATTRIBUTE_SAMBA; + info.attributes |= PRINTER_ATTRIBUTE_SAMBA; + info.attributes &= ~PRINTER_ATTRIBUTE_NOT_SAMBA; /* Restore the stripped strings. */ slprintf(info.servername, sizeof(info.servername)-1, "\\\\%s", get_called_name()); diff --git a/source/printing/printing.c b/source/printing/printing.c index 31cb0faa9b0..8b93a433115 100644 --- a/source/printing/printing.c +++ b/source/printing/printing.c @@ -442,22 +442,30 @@ static void pjob_store_notify(int snum, uint32 jobid, struct printjob *old_data, if (!old_data) new_job = True; - /* Notify the job name first */ - - if (new_job || !strequal(old_data->jobname, new_data->jobname)) - notify_job_name(snum, jobid, new_data->jobname); - /* Job attributes that can't be changed. We only send notification for these on a new job. */ + /* ACHTUNG! Due to a bug in Samba's spoolss parsing of the + NOTIFY_INFO_DATA buffer, we *have* to send the job submission + time first or else we'll end up with potential alignment + errors. I don't think the systemtime should be spooled as + a string, but this gets us around that error. + --jerry (i'll feel dirty for this) */ + if (new_job) { notify_job_submitted(snum, jobid, new_data->starttime); notify_job_username(snum, jobid, new_data->user); } + if (new_job || !strequal(old_data->jobname, new_data->jobname)) + notify_job_name(snum, jobid, new_data->jobname); + /* Job attributes of a new job or attributes that can be modified. */ + if (new_job || !strequal(old_data->jobname, new_data->jobname)) + notify_job_name(snum, jobid, new_data->jobname); + if (new_job || old_data->status != new_data->status) notify_job_status(snum, jobid, map_to_spoolss_status(new_data->status)); @@ -575,26 +583,19 @@ void pjob_delete(int snum, uint32 jobid) return; if (!pjob) { - DEBUG(5, ("pjob_delete(): we were asked to delete nonexistent job %u\n", + DEBUG(5, ("pjob_delete: we were asked to delete nonexistent job %u\n", (unsigned int)jobid)); release_print_db(pdb); return; } - /* Send a notification that a job has been deleted */ - - job_status = map_to_spoolss_status(pjob->status); - /* We must cycle through JOB_STATUS_DELETING and JOB_STATUS_DELETED for the port monitor to delete the job properly. */ - job_status |= JOB_STATUS_DELETING; + job_status = JOB_STATUS_DELETING|JOB_STATUS_DELETED; notify_job_status(snum, jobid, job_status); - job_status |= JOB_STATUS_DELETED; - notify_job_status(snum, jobid, job_status); - /* Remove from printing.tdb */ tdb_delete(pdb->tdb, print_key(jobid)); diff --git a/source/printing/printing_db.c b/source/printing/printing_db.c index 9efb3e8eadf..d45ad1cff79 100644 --- a/source/printing/printing_db.c +++ b/source/printing/printing_db.c @@ -37,6 +37,8 @@ struct tdb_print_db *get_print_db_byname(const char *printername) pstring printdb_path; BOOL done_become_root = False; + SMB_ASSERT(printername != NULL); + for (p = print_db_head, last_entry = print_db_head; p; p = p->next) { /* Ensure the list terminates... JRA. */ SMB_ASSERT(p->next != print_db_head); diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c index ea631d7c851..ce6d9dd37ec 100644 --- a/source/rpc_server/srv_samr_nt.c +++ b/source/rpc_server/srv_samr_nt.c @@ -3245,9 +3245,6 @@ static void add_uid_to_array_unique(uid_t uid, uid_t **uids, int *num) { int i; - if ((*num) >= groups_max()) - return; - for (i=0; i<*num; i++) { if ((*uids)[i] == uid) return; diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index db60855ba09..812939ddf50 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -1026,7 +1026,7 @@ static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx ) sending_msg_count++; - DEBUG(10,("process_notify2_message: Sending message type [%x] field [%x] for printer [%s]\n", + DEBUG(10,("process_notify2_message: Sending message type [0x%x] field [0x%2x] for printer [%s]\n", msg->type, msg->field, p->dev.handlename)); /* @@ -5574,6 +5574,12 @@ WERROR _spoolss_getprinterdriver2(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVER2 *q_ return getprinterdriver2_level3(servername, architecture, clientmajorversion, snum, buffer, offered, needed); case 6: return getprinterdriver2_level6(servername, architecture, clientmajorversion, snum, buffer, offered, needed); +#if 0 /* JERRY */ + case 101: + /* apparently this call is the equivalent of + EnumPrinterDataEx() for the DsDriver key */ + break; +#endif } return WERR_UNKNOWN_LEVEL; @@ -5935,7 +5941,9 @@ static BOOL check_printer_ok(NT_PRINTER_INFO_LEVEL_2 *info, int snum) slprintf(info->printername, sizeof(info->printername)-1, "\\\\%s\\%s", get_called_name(), p ); - info->attributes = PRINTER_ATTRIBUTE_SAMBA; + info->attributes |= PRINTER_ATTRIBUTE_SAMBA; + info->attributes &= ~PRINTER_ATTRIBUTE_NOT_SAMBA; + return True; diff --git a/source/rpcclient/cmd_spoolss.c b/source/rpcclient/cmd_spoolss.c index 38558ec3d47..5fa59e1903b 100644 --- a/source/rpcclient/cmd_spoolss.c +++ b/source/rpcclient/cmd_spoolss.c @@ -434,7 +434,7 @@ static WERROR cmd_spoolss_enum_ports(struct cli_state *cli, WERROR result; uint32 needed, info_level = 1; PORT_INFO_CTR ctr; - int returned; + uint32 returned; if (argc > 2) { printf("Usage: %s [level]\n", argv[0]); @@ -2393,7 +2393,6 @@ struct cmd_set spoolss_commands[] = { { "getdriver", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriver, PI_SPOOLSS, "Get print driver information", "" }, { "getdriverdir", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriverdir, PI_SPOOLSS, "Get print driver upload directory", "" }, { "getprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinter, PI_SPOOLSS, "Get printer info", "" }, - { "getprintprocdir",RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprintprocdir, PI_SPOOLSS, "Get print processor directory", "" }, { "openprinter", RPC_RTYPE_WERROR, NULL, cmd_spoolss_open_printer_ex, PI_SPOOLSS, "Open printer handle", "" }, { "setdriver", RPC_RTYPE_WERROR, NULL, cmd_spoolss_setdriver, PI_SPOOLSS, "Set printer driver", "" }, { "getprintprocdir", RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprintprocdir, PI_SPOOLSS, "Get print processor directory", "" }, diff --git a/source/smbd/chgpasswd.c b/source/smbd/chgpasswd.c index 5c1d66abc44..8ea5b9c60a3 100644 --- a/source/smbd/chgpasswd.c +++ b/source/smbd/chgpasswd.c @@ -328,7 +328,7 @@ static int talktochild(int master, const char *seq) return (count > 0); } -static BOOL chat_with_program(char *passwordprogram, struct passwd *pass, +static BOOL chat_with_program(char *passwordprogram, const struct passwd *pass, char *chatsequence, BOOL as_root) { char *slavedev; diff --git a/source/smbd/filename.c b/source/smbd/filename.c index cc1c0a40b66..c411ef0f79f 100644 --- a/source/smbd/filename.c +++ b/source/smbd/filename.c @@ -418,26 +418,10 @@ BOOL check_name(pstring name,connection_struct *conn) } } - if (!lp_widelinks(SNUM(conn))) { + if (!lp_widelinks(SNUM(conn)) || !lp_symlinks(SNUM(conn))) { ret = reduce_name(conn,name); } - /* Check if we are allowing users to follow symlinks */ - /* Patch from David Clerc - University of Geneva */ - -#ifdef S_ISLNK - if (!lp_symlinks(SNUM(conn))) { - SMB_STRUCT_STAT statbuf; - if ( (SMB_VFS_LSTAT(conn,name,&statbuf) != -1) && - (S_ISLNK(statbuf.st_mode)) ) { - DEBUG(3,("check_name: denied: file path name %s is a symlink\n",name)); - errno = EACCES; - ret = False; - } - } -#endif - if (!ret) { DEBUG(5,("check_name on %s failed\n",name)); } diff --git a/source/smbd/mangle_hash2.c b/source/smbd/mangle_hash2.c index f68873687bd..c6ad1215b09 100644 --- a/source/smbd/mangle_hash2.c +++ b/source/smbd/mangle_hash2.c @@ -119,7 +119,7 @@ static const char *reserved_names[] = this hash needs to be fast with a low collision rate (what hash doesn't?) */ -static u32 mangle_hash(const char *key, unsigned length) +static u32 mangle_hash(const char *key, unsigned int length) { u32 value; u32 i; @@ -129,6 +129,7 @@ static u32 mangle_hash(const char *key, unsigned length) doesn't depend on the case of the long name. Note that this is the only place where we need to use a multi-byte string function */ + length = MIN(length,sizeof(fstring)-1); strncpy(str, key, length); str[length] = 0; strupper_m(str); diff --git a/source/smbd/open.c b/source/smbd/open.c index 65500c65cee..6d559ac8280 100644 --- a/source/smbd/open.c +++ b/source/smbd/open.c @@ -592,7 +592,7 @@ static int open_mode_check(connection_struct *conn, const char *fname, SMB_DEV_T int i; int num_share_modes; int oplock_contention_count = 0; - share_mode_entry *old_shares = 0; + share_mode_entry *old_shares = NULL; BOOL fcbopen = False; BOOL broke_oplock; @@ -601,12 +601,15 @@ static int open_mode_check(connection_struct *conn, const char *fname, SMB_DEV_T num_share_modes = get_share_modes(conn, dev, inode, &old_shares); - if(num_share_modes == 0) + if(num_share_modes == 0) { + SAFE_FREE(old_shares); return 0; + } if (desired_access && ((desired_access & ~(SYNCHRONIZE_ACCESS|FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES))==0) && ((desired_access & (SYNCHRONIZE_ACCESS|FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES)) != 0)) { /* Stat open that doesn't trigger oplock breaks or share mode checks... ! JRA. */ + SAFE_FREE(old_shares); return num_share_modes; } @@ -758,9 +761,6 @@ after break ! For file %s, dev = %x, inode = %.0f. Deleting it to continue...\n" free_broken_entry_list(broken_entry_list); } while(broke_oplock); - if(old_shares != 0) - SAFE_FREE(old_shares); - /* * Refuse to grant an oplock in case the contention limit is * reached when going through the lock list multiple times. @@ -772,6 +772,7 @@ after break ! For file %s, dev = %x, inode = %.0f. Deleting it to continue...\n" oplock_contention_count )); } + SAFE_FREE(old_shares); return num_share_modes; } @@ -1024,7 +1025,7 @@ files_struct *open_file_shared1(connection_struct *conn,char *fname, SMB_STRUCT_ ignored */ if (Access) *Access = DOS_OPEN_WRONLY; - if (action) + if (paction) *paction = FILE_WAS_CREATED; return print_fsp_open(conn, fname); } diff --git a/source/smbd/password.c b/source/smbd/password.c index 3be1516cf04..cf3c3d64d20 100644 --- a/source/smbd/password.c +++ b/source/smbd/password.c @@ -252,27 +252,30 @@ int register_vuid(auth_serversupplied_info *server_info, DATA_BLOB session_key, } /* Register a home dir service for this user iff + (a) This is not a guest connection, (b) we have a home directory defined - If a share exists by this name (autoloaded or not) reuse it so - long as the home directory is the same as the share directory. */ + (c) there s not an existing static share by that name + + If a share exists by this name (autoloaded or not) reuse it . */ + + vuser->homes_snum = -1; - if ( (!vuser->guest) && vuser->unix_homedir && *(vuser->unix_homedir)) { + if ( (!vuser->guest) && vuser->unix_homedir && *(vuser->unix_homedir)) + { int servicenumber = lp_servicenumber(vuser->user.unix_name); + if ( servicenumber == -1 ) { DEBUG(3, ("Adding homes service for user '%s' using home directory: '%s'\n", vuser->user.unix_name, vuser->unix_homedir)); vuser->homes_snum = add_home_service(vuser->user.unix_name, vuser->user.unix_name, vuser->unix_homedir); - } else if (strcmp(lp_pathname(servicenumber),vuser->unix_homedir) == 0) { - DEBUG(3, ("Reusing homes service for user '%s' using home directory: '%s'\n", - vuser->user.unix_name, vuser->unix_homedir)); - + } else { + DEBUG(3, ("Using static (or previously created) service for user '%s'; path = '%s'\n", + vuser->user.unix_name, lp_pathname(servicenumber) )); vuser->homes_snum = servicenumber; } - } else { - vuser->homes_snum = -1; - } + } if (srv_is_signing_negotiated() && !vuser->guest && !srv_signing_started()) { /* Try and turn on server signing on the first non-guest sessionsetup. */ diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 611fb04c19b..30616a66fbf 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -97,26 +97,25 @@ NTSTATUS check_path_syntax(pstring destname, const pstring srcname, BOOL allow_w d--; } s += 3; - } else if ((s[0] == '.') && (IS_DIRECTORY_SEP(s[1]) || (s[1] == '\0'))) { - + } else if ((s[0] == '.') && (s[1] == '\0')) { + if (s == srcname) { + ret = NT_STATUS_OBJECT_NAME_INVALID; + break; + } + *d++ = *s++; + } else if ((s[0] == '.') && IS_DIRECTORY_SEP(s[1])) { /* * No mb char starts with '.' so we're safe checking the directory separator here. */ - /* "./" or ".\\" fails with a different error depending on where it is... */ + /* "./" or ".\\" fails with a different error depending on what is after it... */ - if (s == srcname) { + if (s[2] == '\0') { ret = NT_STATUS_OBJECT_NAME_INVALID; - break; } else { - if (s[1] != '\0' && s[2] == '\0') { - ret = NT_STATUS_INVALID_PARAMETER; - break; - } ret = NT_STATUS_OBJECT_PATH_NOT_FOUND; - break; } - s++; + break; } else { if (!(*s & 0x80)) { if (allow_wcard_names) { @@ -521,7 +520,6 @@ int reply_ioctl(connection_struct *conn, int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize) { int outsize = 0; - int mode; pstring name; BOOL ok = False; BOOL bad_path = False; @@ -544,8 +542,6 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND); } - mode = SVAL(inbuf,smb_vwv0); - if (check_name(name,conn)) { if (VALID_STAT(sbuf) || SMB_VFS_STAT(conn,name,&sbuf) == 0) if (!(ok = S_ISDIR(sbuf.st_mode))) { @@ -578,8 +574,7 @@ int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size } outsize = set_message(outbuf,0,0,True); - - DEBUG(3,("chkpth %s mode=%d\n", name, mode)); + DEBUG(3,("chkpth %s mode=%d\n", name, (int)SVAL(inbuf,smb_vwv0))); END_PROFILE(SMBchkpth); return(outsize); diff --git a/source/smbd/uid.c b/source/smbd/uid.c index de2f96450fc..77dc19b87bf 100644 --- a/source/smbd/uid.c +++ b/source/smbd/uid.c @@ -130,6 +130,7 @@ static BOOL check_user_ok(connection_struct *conn, user_struct *vuser,int snum) /* smb.conf allows r/w, but the security descriptor denies * write. Fall back to looking at readonly. */ readonly_share = True; + DEBUG(5,("falling back to read-only access-evaluation due to security descriptor\n")); } if (!share_access_check(conn, snum, vuser, readonly_share ? FILE_READ_DATA : FILE_WRITE_DATA)) { diff --git a/source/smbd/vfs.c b/source/smbd/vfs.c index a47f040f6a8..0328558fe88 100644 --- a/source/smbd/vfs.c +++ b/source/smbd/vfs.c @@ -909,7 +909,8 @@ BOOL reduce_name(connection_struct *conn, const pstring fname) return False; } - if (strncmp(conn->connectpath, resolved_name, con_path_len) != 0) { + /* Check for widelinks allowed. */ + if (!lp_widelinks(SNUM(conn)) && (strncmp(conn->connectpath, resolved_name, con_path_len) != 0)) { DEBUG(2, ("reduce_name: Bad access attempt: %s is a symlink outside the share path", fname)); if (free_resolved_name) SAFE_FREE(resolved_name); @@ -917,28 +918,23 @@ BOOL reduce_name(connection_struct *conn, const pstring fname) return False; } - /* Move path the connect path to the last part of the filename. */ - p = resolved_name + con_path_len; - if (*p == '/') { - p++; - } - - if (!*p) { - if (fname[0] == '.' && fname[1] == '/' && fname[2] == '\0') { - pstrcpy(resolved_name, "./"); - } else { - pstrcpy(resolved_name, "."); - } - p = resolved_name; - } - - if (!lp_symlinks(SNUM(conn)) && (strcmp(fname, p)!=0)) { - DEBUG(3,("reduce_name: denied: file path name %s is a symlink\n",fname)); - if (free_resolved_name) - SAFE_FREE(resolved_name); - errno = EACCES; - return False; - } + /* Check if we are allowing users to follow symlinks */ + /* Patch from David Clerc + University of Geneva */ + +#ifdef S_ISLNK + if (!lp_symlinks(SNUM(conn))) { + SMB_STRUCT_STAT statbuf; + if ( (SMB_VFS_LSTAT(conn,fname,&statbuf) != -1) && + (S_ISLNK(statbuf.st_mode)) ) { + if (free_resolved_name) + SAFE_FREE(resolved_name); + DEBUG(3,("reduce_name: denied: file path name %s is a symlink\n",resolved_name)); + errno = EACCES; + return False; + } + } +#endif DEBUG(3,("reduce_name: %s reduced to %s\n", fname, p)); if (free_resolved_name) diff --git a/source/tdb/tdb.c b/source/tdb/tdb.c index cda9fc24750..fec0b3094d3 100644 --- a/source/tdb/tdb.c +++ b/source/tdb/tdb.c @@ -489,7 +489,7 @@ static int rec_free_read(TDB_CONTEXT *tdb, tdb_off off, struct list_struct *rec) if (rec->magic == TDB_MAGIC) { /* this happens when a app is showdown while deleting a record - we should not completely fail when this happens */ - TDB_LOG((tdb, 0,"rec_free_read non-free magic at offset=%d - fixing\n", + TDB_LOG((tdb, 0,"rec_free_read non-free magic 0x%x at offset=%d - fixing\n", rec->magic, off)); rec->magic = TDB_FREE_MAGIC; if (tdb_write(tdb, off, rec, sizeof(*rec)) == -1) diff --git a/source/utils/ntlm_auth.c b/source/utils/ntlm_auth.c index 4d369630ab3..609b480406e 100644 --- a/source/utils/ntlm_auth.c +++ b/source/utils/ntlm_auth.c @@ -1765,7 +1765,7 @@ enum { /* Samba client initialisation */ if (!lp_load(dyn_CONFIGFILE, True, False, False)) { - d_fprintf(stderr, "wbinfo: error opening config file %s. Error was %s\n", + d_fprintf(stderr, "ntlm_auth: error opening config file %s. Error was %s\n", dyn_CONFIGFILE, strerror(errno)); exit(1); } -- 2.11.4.GIT