svn commit: r477163 - in head/net: samba46 samba47 samba47/files samba48 samba48/files
Timur I. Bakeyev
timur at FreeBSD.org
Tue Aug 14 15:09:39 UTC 2018
Author: timur
Date: Tue Aug 14 15:09:36 2018
New Revision: 477163
URL: https://svnweb.freebsd.org/changeset/ports/477163
Log:
Update Samba ports to address multiple CVE vulnerabilities
Security: CVE-2018-1139
CVE-2018-1140
CVE-2018-10858
CVE-2018-10918
CVE-2018-10919
Sponsored by: iXsystems Inc.
Added:
head/net/samba47/files/0001-audit.patch (contents, props changed)
head/net/samba47/files/0001-bug-13351.patch (contents, props changed)
head/net/samba47/files/0001-bug-228462.patch (contents, props changed)
head/net/samba48/files/patch-lib__ldb__ldb_cache.c (contents, props changed)
head/net/samba48/files/patch-lib__talloc__talloc.c (contents, props changed)
head/net/samba48/files/patch-lib__talloc__wscript (contents, props changed)
Deleted:
head/net/samba47/files/patch-source3__client__dnsbrowse.c
head/net/samba47/files/patch-source3__libads__kerberos_keytab.c
head/net/samba48/files/patch-libgpo__wscript_build
head/net/samba48/files/patch-quickfix__in__progress
head/net/samba48/files/patch-source3__client__dnsbrowse.c
head/net/samba48/files/patch-source3__libads__kerberos_keytab.c
Modified:
head/net/samba46/Makefile
head/net/samba46/distinfo
head/net/samba47/Makefile
head/net/samba47/distinfo
head/net/samba47/files/0001-Freenas-master-mdns-fixes-22.patch
head/net/samba47/files/0001-Zfs-provision-1.patch
head/net/samba47/files/patch-source3__modules__vfs_streams_xattr.c
head/net/samba47/files/patch-vfs_freebsd.c
head/net/samba48/Makefile
head/net/samba48/distinfo
head/net/samba48/files/0001-Freenas-master-mdns-fixes-22.patch
head/net/samba48/files/0001-bug-13441.patch
head/net/samba48/files/patch-source3__modules__vfs_streams_xattr.c
head/net/samba48/pkg-plist
Modified: head/net/samba46/Makefile
==============================================================================
--- head/net/samba46/Makefile Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba46/Makefile Tue Aug 14 15:09:36 2018 (r477163)
@@ -3,7 +3,7 @@
PORTNAME?= ${SAMBA4_BASENAME}46
PORTVERSION?= ${SAMBA4_VERSION}
-PORTREVISION?= 1
+PORTREVISION?= 0
CATEGORIES?= net
MASTER_SITES= SAMBA/samba/stable SAMBA/samba/rc
DISTNAME= ${SAMBA4_DISTNAME}
@@ -19,11 +19,9 @@ IGNORE_NONTHREAD_PYTHON= needs port lang/python${PYTHO
CONFLICTS_INSTALL?= samba4-4.0.* samba4[1-57-9]-4.* p5-Parse-Pidl-4.*
-#EXTRA_PATCHES= ${PATCHDIR}/extra-patch-security:-p1
-
SAMBA4_BASENAME= samba
SAMBA4_PORTNAME= ${SAMBA4_BASENAME}4
-SAMBA4_VERSION= 4.6.15
+SAMBA4_VERSION= 4.6.16
SAMBA4_DISTNAME= ${SAMBA4_BASENAME}-${SAMBA4_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
WRKSRC?= ${WRKDIR}/${DISTNAME}
Modified: head/net/samba46/distinfo
==============================================================================
--- head/net/samba46/distinfo Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba46/distinfo Tue Aug 14 15:09:36 2018 (r477163)
@@ -1,3 +1,3 @@
-TIMESTAMP = 1526084366
-SHA256 (samba-4.6.15.tar.gz) = 72f66dbefd08807d2f1bacdbbb1398a03536c3fc640deec6a3b91e7308b30772
-SIZE (samba-4.6.15.tar.gz) = 21175479
+TIMESTAMP = 1534257386
+SHA256 (samba-4.6.16.tar.gz) = 62987da35d88c7c7c20c26c57fe98e3e0de2bdb3aae5f9c8b1f6925b5d844067
+SIZE (samba-4.6.16.tar.gz) = 21184221
Modified: head/net/samba47/Makefile
==============================================================================
--- head/net/samba47/Makefile Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba47/Makefile Tue Aug 14 15:09:36 2018 (r477163)
@@ -3,7 +3,7 @@
PORTNAME= ${SAMBA4_BASENAME}47
PORTVERSION= ${SAMBA4_VERSION}
-PORTREVISION= 1
+PORTREVISION= 0
CATEGORIES?= net
MASTER_SITES= SAMBA/samba/stable SAMBA/samba/rc
DISTNAME= ${SAMBA4_DISTNAME}
@@ -19,10 +19,13 @@ CONFLICTS_INSTALL?= samba4-4.0.* samba4[1-689]-4.* p5
EXTRA_PATCHES+= ${PATCHDIR}/0001-Zfs-provision-1.patch:-p1
EXTRA_PATCHES+= ${PATCHDIR}/0001-Freenas-master-mdns-fixes-22.patch:-p1
+EXTRA_PATCHES+= ${PATCHDIR}/0001-audit.patch:-p1
+EXTRA_PATCHES+= ${PATCHDIR}/0001-bug-13351.patch:-p1
+EXTRA_PATCHES+= ${PATCHDIR}/0001-bug-228462.patch:-p1
SAMBA4_BASENAME= samba
SAMBA4_PORTNAME= ${SAMBA4_BASENAME}4
-SAMBA4_VERSION= 4.7.7
+SAMBA4_VERSION= 4.7.9
SAMBA4_DISTNAME= ${SAMBA4_BASENAME}-${SAMBA4_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
WRKSRC?= ${WRKDIR}/${DISTNAME}
@@ -119,7 +122,11 @@ UTMP_DESC= UTMP accounting
BIND911_DESC= Use Bind 9.11 as AD DC DNS server frontend
NSUPDATE_DESC= Use samba NSUPDATE utility for AD DC
##############################################################################
-# XXX: Unconditional dependencies which can't be switched off(if present in the system)
+# XXX: Unconditional dependencies which can't be switched off(if present in
+# the system)
+# Readline(sponsored by Python)
+# XXX: USES=readline pollutes CPPFLAGS, so we explicitly put dependency
+LIB_DEPENDS+= libreadline.so.7:devel/readline
# popt
LIB_DEPENDS+= libpopt.so:devel/popt
# inotify
@@ -143,7 +150,7 @@ RUN_DEPENDS+= libarchive>=3.1.2:archivers/libarchive
#SAMBA4_BUNDLED_TALLOC= yes
#SAMBA4_BUNDLED_TEVENT= yes
#SAMBA4_BUNDLED_TDB= yes
-#SAMBA4_BUNDLED_LDB= yes
+SAMBA4_BUNDLED_LDB= yes
SAMBA4_LDB= 12
# cmocka
.if defined(SAMBA4_BUNDLED_CMOCKA)
@@ -206,8 +213,8 @@ PLIST_SUB+= SAMBA4_BUNDLED_LDB=""
SUB_LIST+= SAMBA4_BUNDLED_LDB=""
.else
. if ${SAMBA4_LDB} == 13
-BUILD_DEPENDS+= ldb13>=1.3.2:databases/ldb13
-RUN_DEPENDS+= ldb13>=1.3.2:databases/ldb13
+BUILD_DEPENDS+= ldb13>=1.3.3:databases/ldb13
+RUN_DEPENDS+= ldb13>=1.3.3:databases/ldb13
. elif ${SAMBA4_LDB} == 12
BUILD_DEPENDS+= ldb12>=1.2.3:databases/ldb12
RUN_DEPENDS+= ldb12>=1.2.3:databases/ldb12
@@ -358,7 +365,7 @@ SAMBA4_MODULES+= idmap_ad idmap_rfc2307 nss-info_temp
.if ${PORT_OPTIONS:MDEVELOPER}
SAMBA4_MODULES+= auth_skel pdb_test gpext_security gpext_registry gpext_scripts perfcount_test \
vfs_fake_dfq vfs_skel_opaque vfs_skel_transparent vfs_shadow_copy_test vfs_fake_acls \
- vfs_nfs4acl_xattr
+ vfs_nfs4acl_xattr vfs_error_inject
.endif
.if defined(WANT_EXP_MODULES) && !empty(WANT_EXP_MODULES)
@@ -409,9 +416,9 @@ RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}iso8601>=0.1.11
# XXX: This is a gross hack to make port use both Python 2.7+ and 3.3+
# This is not officially supported, use at your own risk
.if defined(WITH_SAMBA4_PYTHON3) && ${WITH_SAMBA4_PYTHON3:M3\.[0-9]}
-SAMBA4_PYTHON3_VERSION= ${WITH_SAMBA4_PYTHON3}
-SAMBA4_PYTHON3= python${SAMBA4_PYTHON3_VERSION}
-SAMBA4_PYTHON3_VER= ${SAMBA4_PYTHON3_VERSION:C/\.//}
+SAMBA4_PYTHON3_VERSION= ${WITH_SAMBA4_PYTHON3}
+SAMBA4_PYTHON3= python${SAMBA4_PYTHON3_VERSION}
+SAMBA4_PYTHON3_VER= ${SAMBA4_PYTHON3_VERSION:C/\.//}
.if !exists(${PORTSDIR}/lang/python${SAMBA4_PYTHON3_VER})
.error unsupported or unknown Python version ${SAMBA4_PYTHON3_VERSION}
.endif
@@ -461,7 +468,7 @@ MAKE_ENV+= NOCOLOR=yes WAF_LOG_FORMAT='%(c1)s%(zone)
CFLAGS+= -fno-color-diagnostics
.endif
#.if ${readline_ARGS} == port
-#CFLAGS+= -D_FUNCTION_DEF
+CFLAGS+= -D_FUNCTION_DEF
#.endif
# Make sure that the right version of Python is used by the tools
# https://bugzilla.samba.org/show_bug.cgi?id=7305
@@ -551,6 +558,10 @@ post-install-rm-junk:
.for f in vfs_aio_linux.8 vfs_btrfs.8 vfs_ceph.8 vfs_gpfs.8
${RM} ${STAGEDIR}${PREFIX}/man/man8/${f}
.endfor
+.if defined(NO_PYTHON)
+ ${RM} -r ${STAGEDIR}${PYTHON_SITELIBDIR}/samba/third_party/dns \
+ ${STAGEDIR}${PYTHON_SITELIBDIR}/samba/third_party/iso8601
+.endif
post-install: post-install-rm-junk
${LN} -sf smb.conf.5.gz ${STAGEDIR}${PREFIX}/man/man5/smb4.conf.5.gz
Modified: head/net/samba47/distinfo
==============================================================================
--- head/net/samba47/distinfo Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba47/distinfo Tue Aug 14 15:09:36 2018 (r477163)
@@ -1,3 +1,3 @@
-TIMESTAMP = 1525222693
-SHA256 (samba-4.7.7.tar.gz) = 29fad16fa70c1342c300d28d1b474b04c01a2a650149e94cace36fcbace80131
-SIZE (samba-4.7.7.tar.gz) = 16875059
+TIMESTAMP = 1534254234
+SHA256 (samba-4.7.9.tar.gz) = ec9852b2efb974f2b92e9e7f7e6f559867e4a37ce58df51766bfb94ca66817ec
+SIZE (samba-4.7.9.tar.gz) = 16907301
Modified: head/net/samba47/files/0001-Freenas-master-mdns-fixes-22.patch
==============================================================================
--- head/net/samba47/files/0001-Freenas-master-mdns-fixes-22.patch Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba47/files/0001-Freenas-master-mdns-fixes-22.patch Tue Aug 14 15:09:36 2018 (r477163)
@@ -36,6 +36,15 @@ index efd57d42d88..83aef966d2a 100644
err = DNSServiceResolve(&mdns_conn_sdref, 0 /* flags */,
browsesrv->ifIndex,
+@@ -91,7 +91,7 @@ static void do_smb_resolve(struct mdns_s
+ }
+ }
+
+- TALLOC_FREE(fdset);
++ TALLOC_FREE(ctx);
+ DNSServiceRefDeallocate(mdns_conn_sdref);
+ }
+
@@ -124,18 +125,19 @@ do_smb_browse_reply(DNSServiceRef sdRef, DNSServiceFlags flags,
return;
}
Modified: head/net/samba47/files/0001-Zfs-provision-1.patch
==============================================================================
--- head/net/samba47/files/0001-Zfs-provision-1.patch Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba47/files/0001-Zfs-provision-1.patch Tue Aug 14 15:09:36 2018 (r477163)
@@ -120,11 +120,13 @@ diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysm
index 63fc5d68c33..f5a536ee186 100644
--- a/source3/smbd/pysmbd.c
+++ b/source3/smbd/pysmbd.c
-@@ -335,6 +335,18 @@ static SMB_ACL_T make_simple_acl(gid_t gid, mode_t chmod_mode)
+@@ -368,6 +368,20 @@ static SMB_ACL_T make_simple_acl(TALLOC_
return acl;
}
-+static SMB_ACL_T make_simple_nfsv4_acl(gid_t gid, mode_t chmod_mode)
++static SMB_ACL_T make_simple_nfsv4_acl(TALLOC_CTX *mem_ctx,
++ gid_t gid,
++ mode_t chmod_mode)
+{
+ /*
+ * This function needs to create an NFSv4 ACL. Currently, the only way
@@ -139,25 +141,10 @@ index 63fc5d68c33..f5a536ee186 100644
/*
set a simple ACL on a file, as a test
*/
-@@ -363,6 +375,53 @@ static PyObject *py_smbd_set_simple_acl(PyObject *self, PyObject *args, PyObject
- }
+@@ -413,6 +427,53 @@ static PyObject *py_smbd_set_simple_acl(
+ }
- ret = set_sys_acl_conn(fname, SMB_ACL_TYPE_ACCESS, acl, conn);
-+
-+ TALLOC_FREE(acl);
-+
-+ if (ret != 0) {
-+ TALLOC_FREE(frame);
-+ errno = ret;
-+ return PyErr_SetFromErrno(PyExc_OSError);
-+ }
-+
-+ TALLOC_FREE(frame);
-+
-+ Py_RETURN_NONE;
-+}
-+
-+/*
+ /*
+ set a simple NFSv4 ACL on a file, as a test
+ */
+static PyObject *py_smbd_set_simple_nfsv4_acl(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -175,10 +162,14 @@ index 63fc5d68c33..f5a536ee186 100644
+ &fname, &mode, &gid, &service))
+ return NULL;
+
-+ acl = make_simple_nfsv4_acl(gid, mode);
-+
+ frame = talloc_stackframe();
+
++ acl = make_simple_nfsv4_acl(frame, gid, mode);
++ if (acl == NULL) {
++ TALLOC_FREE(frame);
++ return NULL;
++ }
++
+ conn = get_conn(frame, service);
+ if (!conn) {
+ return NULL;
@@ -187,13 +178,24 @@ index 63fc5d68c33..f5a536ee186 100644
+ /*
+ * SMB_ACL_TYPE_ACCESS -> ACL_TYPE_ACCESS -> Not valid for NFSv4 ACL
+ */
-+ //ret = set_sys_acl_conn(fname, SMB_ACL_TYPE_ACCESS, acl, conn);
+ ret = 0;
+
- TALLOC_FREE(acl);
-
- if (ret != 0) {
-@@ -483,7 +542,7 @@ static PyObject *py_smbd_unlink(PyObject *self, PyObject *args, PyObject *kwargs
++ if (ret != 0) {
++ TALLOC_FREE(frame);
++ errno = ret;
++ return PyErr_SetFromErrno(PyExc_OSError);
++ }
++
++ TALLOC_FREE(frame);
++
++ Py_RETURN_NONE;
++}
++
++/*
+ chown a file
+ */
+ static PyObject *py_smbd_chown(PyObject *self, PyObject *args, PyObject *kwargs)
+@@ -519,7 +580,7 @@ static PyObject *py_smbd_unlink(PyObject
}
/*
@@ -202,7 +204,7 @@ index 63fc5d68c33..f5a536ee186 100644
*/
static PyObject *py_smbd_have_posix_acls(PyObject *self)
{
-@@ -494,6 +553,86 @@ static PyObject *py_smbd_have_posix_acls(PyObject *self)
+@@ -530,6 +591,86 @@ static PyObject *py_smbd_have_posix_acls
#endif
}
@@ -289,7 +291,7 @@ index 63fc5d68c33..f5a536ee186 100644
/*
set the NT ACL on a file
*/
-@@ -681,9 +820,24 @@ static PyMethodDef py_smbd_methods[] = {
+@@ -717,9 +858,24 @@ static PyMethodDef py_smbd_methods[] = {
{ "have_posix_acls",
(PyCFunction)py_smbd_have_posix_acls, METH_NOARGS,
NULL },
Added: head/net/samba47/files/0001-audit.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/samba47/files/0001-audit.patch Tue Aug 14 15:09:36 2018 (r477163)
@@ -0,0 +1,247 @@
+From 7d1bcfc99c393367093c903f95a5e365881b7989 Mon Sep 17 00:00:00 2001
+From: "Timur I. Bakeyev" <timur at iXsystems.com>
+Date: Fri, 22 Jun 2018 12:15:30 +0800
+Subject: [PATCH 1/3] Make sure that vfs*audit modules recognize and accept all
+ the syslog facilities.
+
+---
+ source3/modules/vfs_audit.c | 34 +++++++++++++++++++++++-----------
+ source3/modules/vfs_extd_audit.c | 34 +++++++++++++++++++++++-----------
+ source3/modules/vfs_full_audit.c | 34 +++++++++++++++++++++++-----------
+ 3 files changed, 69 insertions(+), 33 deletions(-)
+
+diff --git a/source3/modules/vfs_audit.c b/source3/modules/vfs_audit.c
+index 12477d5b01f..4f9d16c452e 100644
+--- a/source3/modules/vfs_audit.c
++++ b/source3/modules/vfs_audit.c
+@@ -33,16 +33,28 @@
+ static int audit_syslog_facility(vfs_handle_struct *handle)
+ {
+ static const struct enum_list enum_log_facilities[] = {
+- { LOG_USER, "USER" },
+- { LOG_LOCAL0, "LOCAL0" },
+- { LOG_LOCAL1, "LOCAL1" },
+- { LOG_LOCAL2, "LOCAL2" },
+- { LOG_LOCAL3, "LOCAL3" },
+- { LOG_LOCAL4, "LOCAL4" },
+- { LOG_LOCAL5, "LOCAL5" },
+- { LOG_LOCAL6, "LOCAL6" },
+- { LOG_LOCAL7, "LOCAL7" },
+- { -1, NULL}
++ { LOG_AUTH, "AUTH" },
++ { LOG_CRON, "CRON" },
++ { LOG_DAEMON, "DAEMON" },
++ { LOG_FTP, "FTP" },
++ { LOG_KERN, "KERN" },
++ { LOG_LPR, "LPR" },
++ { LOG_MAIL, "MAIL" },
++ { LOG_NEWS, "NEWS" },
++ { LOG_NTP, "NTP" },
++ { LOG_SECURITY, "SECURITY" },
++ { LOG_SYSLOG, "SYSLOG" },
++ { LOG_USER, "USER" },
++ { LOG_UUCP, "UUCP" },
++ { LOG_LOCAL0, "LOCAL0" },
++ { LOG_LOCAL1, "LOCAL1" },
++ { LOG_LOCAL2, "LOCAL2" },
++ { LOG_LOCAL3, "LOCAL3" },
++ { LOG_LOCAL4, "LOCAL4" },
++ { LOG_LOCAL5, "LOCAL5" },
++ { LOG_LOCAL6, "LOCAL6" },
++ { LOG_LOCAL7, "LOCAL7" },
++ { -1, NULL }
+ };
+
+ int facility;
+@@ -64,7 +76,7 @@ static int audit_syslog_priority(vfs_handle_struct *handle)
+ { LOG_NOTICE, "NOTICE" },
+ { LOG_INFO, "INFO" },
+ { LOG_DEBUG, "DEBUG" },
+- { -1, NULL}
++ { -1, NULL }
+ };
+
+ int priority;
+diff --git a/source3/modules/vfs_extd_audit.c b/source3/modules/vfs_extd_audit.c
+index 7d1fe273978..5307569a010 100644
+--- a/source3/modules/vfs_extd_audit.c
++++ b/source3/modules/vfs_extd_audit.c
+@@ -36,16 +36,28 @@ static int vfs_extd_audit_debug_level = DBGC_VFS;
+ static int audit_syslog_facility(vfs_handle_struct *handle)
+ {
+ static const struct enum_list enum_log_facilities[] = {
+- { LOG_USER, "USER" },
+- { LOG_LOCAL0, "LOCAL0" },
+- { LOG_LOCAL1, "LOCAL1" },
+- { LOG_LOCAL2, "LOCAL2" },
+- { LOG_LOCAL3, "LOCAL3" },
+- { LOG_LOCAL4, "LOCAL4" },
+- { LOG_LOCAL5, "LOCAL5" },
+- { LOG_LOCAL6, "LOCAL6" },
+- { LOG_LOCAL7, "LOCAL7" },
+- { -1, NULL}
++ { LOG_AUTH, "AUTH" },
++ { LOG_CRON, "CRON" },
++ { LOG_DAEMON, "DAEMON" },
++ { LOG_FTP, "FTP" },
++ { LOG_KERN, "KERN" },
++ { LOG_LPR, "LPR" },
++ { LOG_MAIL, "MAIL" },
++ { LOG_NEWS, "NEWS" },
++ { LOG_NTP, "NTP" },
++ { LOG_SECURITY, "SECURITY" },
++ { LOG_SYSLOG, "SYSLOG" },
++ { LOG_USER, "USER" },
++ { LOG_UUCP, "UUCP" },
++ { LOG_LOCAL0, "LOCAL0" },
++ { LOG_LOCAL1, "LOCAL1" },
++ { LOG_LOCAL2, "LOCAL2" },
++ { LOG_LOCAL3, "LOCAL3" },
++ { LOG_LOCAL4, "LOCAL4" },
++ { LOG_LOCAL5, "LOCAL5" },
++ { LOG_LOCAL6, "LOCAL6" },
++ { LOG_LOCAL7, "LOCAL7" },
++ { -1, NULL }
+ };
+
+ int facility;
+@@ -67,7 +79,7 @@ static int audit_syslog_priority(vfs_handle_struct *handle)
+ { LOG_NOTICE, "NOTICE" },
+ { LOG_INFO, "INFO" },
+ { LOG_DEBUG, "DEBUG" },
+- { -1, NULL}
++ { -1, NULL }
+ };
+
+ int priority;
+diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
+index a205007f46f..a52af4b5740 100644
+--- a/source3/modules/vfs_full_audit.c
++++ b/source3/modules/vfs_full_audit.c
+@@ -357,16 +357,28 @@ static struct {
+ static int audit_syslog_facility(vfs_handle_struct *handle)
+ {
+ static const struct enum_list enum_log_facilities[] = {
+- { LOG_USER, "USER" },
+- { LOG_LOCAL0, "LOCAL0" },
+- { LOG_LOCAL1, "LOCAL1" },
+- { LOG_LOCAL2, "LOCAL2" },
+- { LOG_LOCAL3, "LOCAL3" },
+- { LOG_LOCAL4, "LOCAL4" },
+- { LOG_LOCAL5, "LOCAL5" },
+- { LOG_LOCAL6, "LOCAL6" },
+- { LOG_LOCAL7, "LOCAL7" },
+- { -1, NULL}
++ { LOG_AUTH, "AUTH" },
++ { LOG_CRON, "CRON" },
++ { LOG_DAEMON, "DAEMON" },
++ { LOG_FTP, "FTP" },
++ { LOG_KERN, "KERN" },
++ { LOG_LPR, "LPR" },
++ { LOG_MAIL, "MAIL" },
++ { LOG_NEWS, "NEWS" },
++ { LOG_NTP, "NTP" },
++ { LOG_SECURITY, "SECURITY" },
++ { LOG_SYSLOG, "SYSLOG" },
++ { LOG_USER, "USER" },
++ { LOG_UUCP, "UUCP" },
++ { LOG_LOCAL0, "LOCAL0" },
++ { LOG_LOCAL1, "LOCAL1" },
++ { LOG_LOCAL2, "LOCAL2" },
++ { LOG_LOCAL3, "LOCAL3" },
++ { LOG_LOCAL4, "LOCAL4" },
++ { LOG_LOCAL5, "LOCAL5" },
++ { LOG_LOCAL6, "LOCAL6" },
++ { LOG_LOCAL7, "LOCAL7" },
++ { -1, NULL }
+ };
+
+ int facility;
+@@ -387,7 +399,7 @@ static int audit_syslog_priority(vfs_handle_struct *handle)
+ { LOG_NOTICE, "NOTICE" },
+ { LOG_INFO, "INFO" },
+ { LOG_DEBUG, "DEBUG" },
+- { -1, NULL}
++ { -1, NULL }
+ };
+
+ int priority;
+--
+2.16.3
+
+
+From b98fc517251ad25b695ef64453ffe3eaaffed5d8 Mon Sep 17 00:00:00 2001
+From: "Timur I. Bakeyev" <timur at iXsystems.com>
+Date: Fri, 22 Jun 2018 12:19:42 +0800
+Subject: [PATCH 2/3] Make "none" is the default setting for the successful and
+ failed operations in the vfs_full_audit, so you don't blow up your server by
+ just adding this module to the configuration.
+
+---
+ source3/modules/vfs_full_audit.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
+index a52af4b5740..bc40c8137dc 100644
+--- a/source3/modules/vfs_full_audit.c
++++ b/source3/modules/vfs_full_audit.c
+@@ -624,6 +624,7 @@ static int smb_full_audit_connect(vfs_handle_struct *handle,
+ const char *svc, const char *user)
+ {
+ int result;
++ const char *none[] = { "none" };
+ struct vfs_full_audit_private_data *pd = NULL;
+
+ result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
+@@ -663,10 +664,10 @@ static int smb_full_audit_connect(vfs_handle_struct *handle,
+
+ pd->success_ops = init_bitmap(
+ pd, lp_parm_string_list(SNUM(handle->conn), "full_audit",
+- "success", NULL));
++ "success", none));
+ pd->failure_ops = init_bitmap(
+ pd, lp_parm_string_list(SNUM(handle->conn), "full_audit",
+- "failure", NULL));
++ "failure", none));
+
+ /* Store the private data. */
+ SMB_VFS_HANDLE_SET_DATA(handle, pd, NULL,
+--
+2.16.3
+
+
+From e25f3a6cfc284737d8df941686f6629568763103 Mon Sep 17 00:00:00 2001
+From: "Timur I. Bakeyev" <timur at iXsystems.com>
+Date: Fri, 22 Jun 2018 12:36:07 +0800
+Subject: [PATCH 3/3] Document that vfs_full_audit defaults are "none" for the
+ successful and failed operations.
+
+---
+ docs-xml/manpages/vfs_full_audit.8.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/docs-xml/manpages/vfs_full_audit.8.xml b/docs-xml/manpages/vfs_full_audit.8.xml
+index cefe66d8b6f..ac8473f9990 100644
+--- a/docs-xml/manpages/vfs_full_audit.8.xml
++++ b/docs-xml/manpages/vfs_full_audit.8.xml
+@@ -164,7 +164,7 @@
+ <para>LIST is a list of VFS operations that should be
+ recorded if they succeed. Operations are specified using
+ the names listed above. Operations can be unset by prefixing
+- the names with "!". The default is all operations.
++ the names with "!". The default is none operations.
+ </para>
+
+ </listitem>
+@@ -176,7 +176,7 @@
+ <para>LIST is a list of VFS operations that should be
+ recorded if they failed. Operations are specified using
+ the names listed above. Operations can be unset by prefixing
+- the names with "!". The default is all operations.
++ the names with "!". The default is none operations.
+ </para>
+
+ </listitem>
+--
+2.16.3
+
Added: head/net/samba47/files/0001-bug-13351.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/samba47/files/0001-bug-13351.patch Tue Aug 14 15:09:36 2018 (r477163)
@@ -0,0 +1,50 @@
+From 1598b78bf791b5a2b8ff52745563ebfcc2a5a0cb Mon Sep 17 00:00:00 2001
+From: Ralph Boehme <slow at samba.org>
+Date: Thu, 22 Mar 2018 08:03:58 +0100
+Subject: [PATCH] s3: smbd: always set vuid in check_user_ok()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+A SMB session reauth will have invalidated conn->vuid via
+conn_clear_vuid_caches().
+
+Ensure conn->vuid always has the vuid of the current user in
+check_user_ok().
+
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=13351
+
+Signed-off-by: Ralph Boehme <slow at samba.org>
+Reviewed-by: Stefan Metzmacher <metze at samba.org>
+
+Autobuild-User(master): Ralph Böhme <slow at samba.org>
+Autobuild-Date(master): Thu Mar 22 18:26:04 CET 2018 on sn-devel-144
+
+(cherry picked from commit 42d6dd2f30b6c3b3176bd1f378422a2eb62b1008)
+---
+ source3/smbd/uid.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c
+index 6eb53920abf..b24ae3cc3b0 100644
+--- a/source3/smbd/uid.c
++++ b/source3/smbd/uid.c
+@@ -202,6 +202,7 @@ static bool check_user_ok(connection_struct *conn,
+ conn->session_info = ent->session_info;
+ conn->read_only = ent->read_only;
+ conn->share_access = ent->share_access;
++ conn->vuid = ent->vuid;
+ return(True);
+ }
+ }
+@@ -250,6 +251,7 @@ static bool check_user_ok(connection_struct *conn,
+ ent->share_access = share_access;
+ free_conn_session_info_if_unused(conn);
+ conn->session_info = ent->session_info;
++ conn->vuid = ent->vuid;
+ if (vuid == UID_FIELD_INVALID) {
+ /*
+ * Not strictly needed, just make it really
+--
+2.13.6
+
Added: head/net/samba47/files/0001-bug-228462.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/samba47/files/0001-bug-228462.patch Tue Aug 14 15:09:36 2018 (r477163)
@@ -0,0 +1,182 @@
+From d9b748869a8f4018ebee302aae8246bf29f60309 Mon Sep 17 00:00:00 2001
+From: "Timur I. Bakeyev" <timur at iXsystems.com>
+Date: Fri, 1 Jun 2018 01:35:08 +0800
+Subject: [PATCH 1/2] vfs_fruit: allow broken AFP_Signature where the first
+ byte is 0
+
+FreeBSD bug ... caused the first byte of the AFP_AfpInfo xattr to be 0
+instead of 'A'. This hack allows such broken AFP_AfpInfo blobs to be
+parsed by afpinfo_unpack().
+
+FreeBSD Bug: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228462
+
+Signed-off-by: Ralph Boehme <slow at samba.org>
+---
+ source3/modules/vfs_fruit.c | 32 ++++++++++++++++++++++++--------
+ 1 file changed, 24 insertions(+), 8 deletions(-)
+
+diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
+index df3cd0c899e..d84e6991036 100644
+--- a/source3/modules/vfs_fruit.c
++++ b/source3/modules/vfs_fruit.c
+@@ -485,8 +485,9 @@ static int adouble_path(TALLOC_CTX *ctx,
+ struct smb_filename **ppsmb_fname_out);
+ static AfpInfo *afpinfo_new(TALLOC_CTX *ctx);
+ static ssize_t afpinfo_pack(const AfpInfo *ai, char *buf);
+-static AfpInfo *afpinfo_unpack(TALLOC_CTX *ctx, const void *data);
+-
++static AfpInfo *afpinfo_unpack(TALLOC_CTX *ctx,
++ const void *data,
++ const struct smb_filename *smb_fname);
+
+ /**
+ * Return a pointer to an AppleDouble entry
+@@ -2073,13 +2074,17 @@ static ssize_t afpinfo_pack(const AfpInfo *ai, char *buf)
+ return AFP_INFO_SIZE;
+ }
+
++#define BROKEN_FREEBSD_AFP_Signature 0x00465000
++
+ /**
+ * Unpack a buffer into a AfpInfo structure
+ *
+ * Buffer size must be at least AFP_INFO_SIZE
+ * Returns allocated AfpInfo struct
+ **/
+-static AfpInfo *afpinfo_unpack(TALLOC_CTX *ctx, const void *data)
++static AfpInfo *afpinfo_unpack(TALLOC_CTX *ctx,
++ const void *data,
++ const struct smb_filename *smb_fname)
+ {
+ AfpInfo *ai = talloc_zero(ctx, AfpInfo);
+ if (ai == NULL) {
+@@ -2092,10 +2097,21 @@ static AfpInfo *afpinfo_unpack(TALLOC_CTX *ctx, const void *data)
+ memcpy(ai->afpi_FinderInfo, (const char *)data + 16,
+ sizeof(ai->afpi_FinderInfo));
+
+- if (ai->afpi_Signature != AFP_Signature
+- || ai->afpi_Version != AFP_Version) {
+- DEBUG(1, ("Bad AfpInfo signature or version\n"));
++ if (ai->afpi_Signature != AFP_Signature) {
++ DBG_WARNING("Bad signature [%x] on [%s]\n",
++ ai->afpi_Signature, smb_fname_str_dbg(smb_fname));
++
++ if (ai->afpi_Signature != BROKEN_FREEBSD_AFP_Signature) {
++ DBG_ERR("Bad AfpInfo signature\n");
++ TALLOC_FREE(ai);
++ return NULL;
++ }
++ }
++
++ if (ai->afpi_Version != AFP_Version) {
++ DBG_ERR("Bad AfpInfo version\n");
+ TALLOC_FREE(ai);
++ return NULL;
+ }
+
+ return ai;
+@@ -4222,7 +4238,7 @@ static ssize_t fruit_pwrite_meta_stream(vfs_handle_struct *handle,
+ size_t nwritten;
+ bool ok;
+
+- ai = afpinfo_unpack(talloc_tos(), data);
++ ai = afpinfo_unpack(talloc_tos(), data, fsp->fsp_name);
+ if (ai == NULL) {
+ return -1;
+ }
+@@ -4260,7 +4276,7 @@ static ssize_t fruit_pwrite_meta_netatalk(vfs_handle_struct *handle,
+ int ret;
+ bool ok;
+
+- ai = afpinfo_unpack(talloc_tos(), data);
++ ai = afpinfo_unpack(talloc_tos(), data, fsp->fsp_name);
+ if (ai == NULL) {
+ return -1;
+ }
+--
+2.16.3
+
+
+From 83ce03a278ec9d15b595f4daf8da1641d27ebdd6 Mon Sep 17 00:00:00 2001
+From: "Timur I. Bakeyev" <timur at iXsystems.com>
+Date: Fri, 1 Jun 2018 01:35:58 +0800
+Subject: [PATCH 2/2] vfs_streams_xattr: don't append 0 byte when creating
+ xattr
+
+Upstream Samba always appends an internal 0-byte to xattrs to cope
+with filesytems or systems that don't support 0-byte sized xattrs.
+
+An older patch already remove this behaviour from the read and write
+code paths, but didn't remove it from the create codepath.
+
+FreeBSD Bug: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228462
+
+Signed-off-by: Ralph Boehme <slow at samba.org>
+---
+ source3/modules/vfs_streams_xattr.c | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c
+index 8714007cb8d..5f3dfb30beb 100644
+--- a/source3/modules/vfs_streams_xattr.c
++++ b/source3/modules/vfs_streams_xattr.c
+@@ -476,19 +476,13 @@ static int streams_xattr_open(vfs_handle_struct *handle,
+ /*
+ * The attribute does not exist or needs to be truncated
+ */
+-
+- /*
+- * Darn, xattrs need at least 1 byte
+- */
+- char null = '\0';
+-
+ DEBUG(10, ("creating or truncating attribute %s on file %s\n",
+ xattr_name, smb_fname->base_name));
+
+ ret = SMB_VFS_SETXATTR(fsp->conn,
+ smb_fname,
+ xattr_name,
+- &null, sizeof(null),
++ NULL, 0,
+ flags & O_EXCL ? XATTR_CREATE : 0);
+ if (ret != 0) {
+ goto fail;
+--
+2.16.3
+
+From daa9930fc10459f0567931622e2ffbb636e365f0 Mon Sep 17 00:00:00 2001
+From: Ralph Boehme <slow at samba.org>
+Date: Sat, 19 May 2018 01:35:45 +0200
+Subject: [PATCH] vfs_fruit: fixup broken AFP_Signatures
+
+FreeBSD Bug: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228462
+
+Signed-off-by: Ralph Boehme <slow at samba.org>
+---
+ source3/modules/vfs_fruit.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
+index d92049cc899..0594fd7a538 100644
+--- a/source3/modules/vfs_fruit.c
++++ b/source3/modules/vfs_fruit.c
+@@ -3935,10 +3935,16 @@ static ssize_t fruit_pread_meta_stream(vfs_handle_struct *handle,
+ {
+ ssize_t nread;
+ int ret;
++ char *p = (char *)data;
+
+ nread = SMB_VFS_NEXT_PREAD(handle, fsp, data, n, offset);
+
+ if (nread == n) {
++ if (offset == 0 && nread > 3 && p[0] == 0 && p[1] == 'F' && p[2] == 'P') {
++ DBG_NOTICE("Fixing AFP_Info of [%s]\n",
++ fsp_str_dbg(fsp));
++ p[0] = 'A';
++ }
+ return nread;
+ }
+
+--
+2.17.0
+
Modified: head/net/samba47/files/patch-source3__modules__vfs_streams_xattr.c
==============================================================================
--- head/net/samba47/files/patch-source3__modules__vfs_streams_xattr.c Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba47/files/patch-source3__modules__vfs_streams_xattr.c Tue Aug 14 15:09:36 2018 (r477163)
@@ -1,4 +1,4 @@
---- source3/modules/vfs_streams_xattr.c.orig 2017-09-17 22:15:34 UTC
+--- source3/modules/vfs_streams_xattr.c.orig 2018-08-11 23:00:01 UTC
+++ source3/modules/vfs_streams_xattr.c
@@ -1,10 +1,10 @@
/*
@@ -30,7 +30,6 @@
- xattr_name, &ea);
+ result = SMB_VFS_GETXATTR(conn, smb_fname, xattr_name, NULL, 0);
+ // ? -1
-+// result = result-1;
+ return result;
+}
@@ -54,6 +53,7 @@
- TALLOC_FREE(ea.value.data);
- return result;
+ pea->value = data_blob_talloc(mem_ctx, NULL, attr_size);
++ /* We may have xattr of a 0 size */
+ if(pea->value.data == NULL && attr_size) {
+ DEBUG(5,
+ ("get_xattr_value: for EA '%s' failed to allocate %lu bytes\n",
@@ -141,7 +141,7 @@
if (sbuf->st_ex_size == -1) {
TALLOC_FREE(smb_fname_base);
SET_STAT_INVALID(*sbuf);
-@@ -451,10 +506,10 @@ static int streams_xattr_open(vfs_handle
+@@ -453,10 +508,10 @@ static int streams_xattr_open(vfs_handle
pipe_fds[1] = -1;
fakefd = pipe_fds[0];
@@ -155,7 +155,7 @@
if (!NT_STATUS_IS_OK(status)
&& !NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
-@@ -631,8 +686,8 @@ static int streams_xattr_rename(vfs_hand
+@@ -625,8 +680,8 @@ static int streams_xattr_rename(vfs_hand
}
/* read the old stream */
@@ -166,7 +166,7 @@
if (!NT_STATUS_IS_OK(status)) {
errno = ENOENT;
goto fail;
-@@ -719,14 +774,13 @@ static NTSTATUS walk_xattr_streams(vfs_h
+@@ -713,14 +768,13 @@ static NTSTATUS walk_xattr_streams(vfs_h
continue;
}
@@ -183,7 +183,7 @@
names[i],
smb_fname->base_name,
nt_errstr(status)));
-@@ -788,16 +842,17 @@ struct streaminfo_state {
+@@ -782,16 +836,17 @@ struct streaminfo_state {
NTSTATUS status;
};
@@ -204,7 +204,7 @@
state->status = NT_STATUS_NO_MEMORY;
return false;
}
-@@ -917,14 +972,17 @@ static ssize_t streams_xattr_pwrite(vfs_
+@@ -911,14 +966,17 @@ static ssize_t streams_xattr_pwrite(vfs_
files_struct *fsp, const void *data,
size_t n, off_t offset)
{
@@ -225,7 +225,7 @@
if (sio == NULL) {
return SMB_VFS_NEXT_PWRITE(handle, fsp, data, n, offset);
-@@ -934,6 +992,8 @@ static ssize_t streams_xattr_pwrite(vfs_
+@@ -928,6 +986,8 @@ static ssize_t streams_xattr_pwrite(vfs_
return -1;
}
@@ -234,25 +234,39 @@
/* Create an smb_filename with stream_name == NULL. */
smb_fname_base = synthetic_smb_fname(talloc_tos(),
sio->base,
-@@ -945,35 +1005,28 @@ static ssize_t streams_xattr_pwrite(vfs_
+@@ -935,39 +995,55 @@ static ssize_t streams_xattr_pwrite(vfs_
+ NULL,
+ fsp->fsp_name->flags);
+ if (smb_fname_base == NULL) {
++ TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
- status = get_ea_value(talloc_tos(), handle->conn, NULL,
- smb_fname_base, sio->xattr_name, &ea);
-+ status = get_xattr_value(talloc_tos(), handle->conn,
-+ smb_fname_base, sio->xattr_name, &ea);
- if (!NT_STATUS_IS_OK(status)) {
-+ TALLOC_FREE(frame);
- return -1;
- }
+- if (!NT_STATUS_IS_OK(status)) {
+- return -1;
+- }
-
- if ((offset + n) > ea.value.length-1) {
- uint8_t *tmp;
--
++ status = get_xattr_value(talloc_tos(), handle->conn,
++ smb_fname_base, sio->xattr_name, &ea);
+
- tmp = talloc_realloc(talloc_tos(), ea.value.data, uint8_t,
- offset + n + 1);
--
++ if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
++ /*
++ * This can happen if we sit behind vfs_fruit:
++ * fruit_ftruncate calls UNLINK on an attribute
++ * truncating the "file" to zero length. A later
++ * pwrite faces a non-existing attribute, we need to
++ * cope with that here.
++ *
++ * This might be not the last word on this.
++ */
+
- if (tmp == NULL) {
- TALLOC_FREE(ea.value.data);
- errno = ENOMEM;
@@ -262,8 +276,21 @@
- ea.value.length = offset + n + 1;
- ea.value.data[offset+n] = 0;
- }
--
++ ea = (struct ea_struct) {0};
++ ea.name = talloc_strdup(talloc_tos(), sio->xattr_name);
++ if (ea.name == NULL) {
++ TALLOC_FREE(frame);
++ errno = ENOMEM;
++ return -1;
++ }
++ status = NT_STATUS_OK;
++ }
+
- memcpy(ea.value.data + offset, data, n);
++ if (!NT_STATUS_IS_OK(status)) {
++ TALLOC_FREE(frame);
++ return -1;
++ }
+ // ? -1
+ if ((offset + n) > ea.value.length) {
+ if(!data_blob_realloc(talloc_tos(), &ea.value, offset + n)) {
@@ -284,7 +311,7 @@
if (ret == -1) {
return -1;
-@@ -986,15 +1039,17 @@ static ssize_t streams_xattr_pread(vfs_h
+@@ -980,15 +1056,17 @@ static ssize_t streams_xattr_pread(vfs_h
files_struct *fsp, void *data,
size_t n, off_t offset)
{
@@ -307,7 +334,7 @@
if (sio == NULL) {
return SMB_VFS_NEXT_PREAD(handle, fsp, data, n, offset);
-@@ -1004,6 +1059,8 @@ static ssize_t streams_xattr_pread(vfs_h
+@@ -998,6 +1076,8 @@ static ssize_t streams_xattr_pread(vfs_h
return -1;
}
@@ -316,7 +343,7 @@
/* Create an smb_filename with stream_name == NULL. */
smb_fname_base = synthetic_smb_fname(talloc_tos(),
sio->base,
-@@ -1011,31 +1068,35 @@ static ssize_t streams_xattr_pread(vfs_h
+@@ -1005,31 +1085,35 @@ static ssize_t streams_xattr_pread(vfs_h
NULL,
fsp->fsp_name->flags);
if (smb_fname_base == NULL) {
@@ -365,7 +392,7 @@
}
struct streams_xattr_pread_state {
-@@ -1202,16 +1263,18 @@ static int streams_xattr_ftruncate(struc
+@@ -1196,16 +1280,18 @@ static int streams_xattr_ftruncate(struc
struct files_struct *fsp,
off_t offset)
{
@@ -391,7 +418,7 @@
if (sio == NULL) {
return SMB_VFS_NEXT_FTRUNCATE(handle, fsp, offset);
-@@ -1221,6 +1284,8 @@ static int streams_xattr_ftruncate(struc
+@@ -1215,6 +1301,8 @@ static int streams_xattr_ftruncate(struc
return -1;
}
@@ -400,7 +427,7 @@
/* Create an smb_filename with stream_name == NULL. */
smb_fname_base = synthetic_smb_fname(talloc_tos(),
sio->base,
-@@ -1228,40 +1293,46 @@ static int streams_xattr_ftruncate(struc
+@@ -1222,40 +1310,46 @@ static int streams_xattr_ftruncate(struc
NULL,
fsp->fsp_name->flags);
if (smb_fname_base == NULL) {
@@ -463,7 +490,7 @@
if (ret == -1) {
return -1;
-@@ -1279,9 +1350,9 @@ static int streams_xattr_fallocate(struc
+@@ -1273,9 +1367,9 @@ static int streams_xattr_fallocate(struc
struct stream_io *sio =
(struct stream_io *)VFS_FETCH_FSP_EXTENSION(handle, fsp);
Modified: head/net/samba47/files/patch-vfs_freebsd.c
==============================================================================
--- head/net/samba47/files/patch-vfs_freebsd.c Tue Aug 14 15:06:38 2018 (r477162)
+++ head/net/samba47/files/patch-vfs_freebsd.c Tue Aug 14 15:09:36 2018 (r477163)
@@ -67,7 +67,7 @@
+
+typedef struct {
+ enum {
-+ FILE, LINK, FDES
++ EXTATTR_FILE, EXTATTR_LINK, EXTATTR_FDES
+ } method;
+ union {
+ const char *path;
@@ -173,17 +173,17 @@
+
+ switch(arg.method) {
+#if defined(HAVE_EXTATTR_GET_FILE)
-+ case FILE:
++ case EXTATTR_FILE:
+ result = extattr_get_file(arg.param.path, attr->namespace, attr->name, NULL, 0);
+ break;
+#endif
+#if defined(HAVE_EXTATTR_GET_LINK)
-+ case LINK:
++ case EXTATTR_LINK:
+ result = extattr_get_link(arg.param.path, attr->namespace, attr->name, NULL, 0);
+ break;
+#endif
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-ports-all
mailing list