[SCM] Samba Shared Repository - branch v4-18-stable updated
Jule Anger
janger at samba.org
Wed Feb 15 15:18:37 UTC 2023
The branch, v4-18-stable has been updated
via 4c48a250c04 VERSION: Disable GIT_SNAPSHOT for the 4.18.0rc3 release.
via 4480a638407 WHATSNEW: Add release notes for Samba 4.18.0rc3.
via 82d7b2a142e vfs_ceph: use fsp_get_pathref_fd in ceph fstatat and close vfs calls
via c714e369507 s3:lib: Change file_modtime() to return an error code and a struct timespec.
via 9a3fb55870d selftest: Only run samba.tests.smb3unix in developer mode
via a19e32ef2cb python:tests: Avoid exceptions in cleanup code if a test fails in smb3unix.py
via f6bbd277dcb param: Use a higher time resolution for lp_file_list_changed()
via 0853cda5d92 lib:param: Remove trailing whitespaces from loadparm.c
via aa4c0c5ffa4 lib:util: Print data in ISO 8601 format
via 897a183c7b2 lib:util: Remove trailing whitespaces from time.c
via 8816c1b6e31 mdssvc: fix kMDScopeArray parsing
via 3a5190b80b8 selftest: Update devel_env.sh for SAMBA_DCERPCD_DONT_LOG_STDOUT=1
via fd2cb3197ba s3:tests: Add support for SMBD_DONT_LOG_STDOUT=1 in test_chdir_cache.sh
via 550faa99fc8 ldb: version 2.7.1
via 74f6ca2ca90 tevent: version 0.14.1
via 2d07ab93e55 tevent: remove the already removed tevent_port.c also from the build
via d14e1c8bef5 replace: remove unused configure checks for port_create()
via 9fbff9d422a replace: provide PIPE_BUF on GNU/Hurd
via c98812ce65e WHATSNEW: fix typo
via ad669874981 VERSION: Bump version up to Samba 4.18.0rc3...
from 71fa86a3fbb VERSION: Disable GIT_SNAPSHOT for the 4.18.0rc2 release.
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-18-stable
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
VERSION | 2 +-
WHATSNEW.txt | 26 ++++++++++++--
lib/ldb/ABI/{ldb-2.6.1.sigs => ldb-2.7.1.sigs} | 0
...pyldb-util-2.1.0.sigs => pyldb-util-2.7.1.sigs} | 0
lib/ldb/wscript | 2 +-
lib/param/loadparm.c | 22 ++++++------
lib/param/loadparm.h | 2 +-
lib/replace/system/network.h | 12 +++++++
lib/replace/system/select.h | 4 ---
lib/replace/wscript | 5 ---
lib/smbconf/smbconf_txt.c | 18 ++++++++--
.../ABI/{tevent-0.14.0.sigs => tevent-0.14.1.sigs} | 0
lib/tevent/wscript | 5 +--
lib/util/samba_util.h | 12 +++++--
lib/util/time.c | 42 +++++++++++-----------
lib/util/util.c | 25 ++++++++-----
python/samba/tests/smb3unix.py | 12 ++++---
selftest/devel_env.sh | 1 +
source3/modules/vfs_ceph.c | 7 ++--
source3/param/loadparm.c | 38 +++++++++++++++-----
source3/rpc_server/mdssvc/mdssvc.c | 6 ++++
source3/script/tests/test_chdir_cache.sh | 16 +++++++--
source3/selftest/tests.py | 9 +++--
source3/wscript | 1 +
24 files changed, 181 insertions(+), 86 deletions(-)
copy lib/ldb/ABI/{ldb-2.6.1.sigs => ldb-2.7.1.sigs} (100%)
copy lib/ldb/ABI/{pyldb-util-2.1.0.sigs => pyldb-util-2.7.1.sigs} (100%)
copy lib/tevent/ABI/{tevent-0.14.0.sigs => tevent-0.14.1.sigs} (100%)
Changeset truncated at 500 lines:
diff --git a/VERSION b/VERSION
index d8f3b790191..82827931d07 100644
--- a/VERSION
+++ b/VERSION
@@ -87,7 +87,7 @@ SAMBA_VERSION_PRE_RELEASE=
# e.g. SAMBA_VERSION_RC_RELEASE=1 #
# -> "3.0.0rc1" #
########################################################
-SAMBA_VERSION_RC_RELEASE=2
+SAMBA_VERSION_RC_RELEASE=3
########################################################
# To mark SVN snapshots this should be set to 'yes' #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 66a7a80e963..a035daeef79 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,12 +1,12 @@
Release Announcements
=====================
-This is the second release candidate of Samba 4.18. This is *not*
+This is the third release candidate of Samba 4.18. This is *not*
intended for production environments and is designed for testing
purposes only. Please report any defects via the Samba bug reporting
system at https://bugzilla.samba.org/.
-Samba 4.18 will be the next version of the Samba suite...
+Samba 4.18 will be the next version of the Samba suite.
UPGRADING
@@ -125,6 +125,28 @@ smb.conf changes
acl_xattr:security_acl_name New security.NTACL
+CHANGES SINCE 4.18.0rc2
+=======================
+
+o Jeremy Allison <jra at samba.org>
+ * BUG 15301: Improve file_modtime() and issues around smb3 unix test.
+
+o Ralph Boehme <slow at samba.org>
+ * BUG 15299: Spotlight doesn't work with latest macOS Ventura.
+
+o Stefan Metzmacher <metze at samba.org>
+ * BUG 15298: Build failure on solaris with tevent 0.14.0 (and ldb 2.7.0).
+ (tevent 0.14.1 and ldb 2.7.1 are already released...)
+
+o John Mulligan <jmulligan at redhat.com>
+ * BUG 15307: vfs_ceph incorrectly uses fsp_get_io_fd() instead of
+ fsp_get_pathref_fd() in close and fstat.
+
+o Andreas Schneider <asn at samba.org>
+ * BUG 15291: test_chdir_cache.sh doesn't work with SMBD_DONT_LOG_STDOUT=1.
+ * BUG 15301: Improve file_modtime() and issues around smb3 unix test.
+
+
CHANGES SINCE 4.18.0rc1
=======================
diff --git a/lib/ldb/ABI/ldb-2.6.1.sigs b/lib/ldb/ABI/ldb-2.7.1.sigs
similarity index 100%
copy from lib/ldb/ABI/ldb-2.6.1.sigs
copy to lib/ldb/ABI/ldb-2.7.1.sigs
diff --git a/lib/ldb/ABI/pyldb-util-2.1.0.sigs b/lib/ldb/ABI/pyldb-util-2.7.1.sigs
similarity index 100%
copy from lib/ldb/ABI/pyldb-util-2.1.0.sigs
copy to lib/ldb/ABI/pyldb-util-2.7.1.sigs
diff --git a/lib/ldb/wscript b/lib/ldb/wscript
index 95aee9be6d3..03076e6cccc 100644
--- a/lib/ldb/wscript
+++ b/lib/ldb/wscript
@@ -2,7 +2,7 @@
APPNAME = 'ldb'
# For Samba 4.18.x !
-VERSION = '2.7.0'
+VERSION = '2.7.1'
import sys, os
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index fc0dc4df83f..6ab7fa89db7 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -1,4 +1,4 @@
-/*
+/*
Unix SMB/CIFS implementation.
Parameter loading functions
Copyright (C) Karl Auer 1993-1998
@@ -1017,7 +1017,7 @@ void add_to_file_list(TALLOC_CTX *mem_ctx, struct file_lists **list,
}
if (!f) {
- f = talloc(mem_ctx, struct file_lists);
+ f = talloc_zero(mem_ctx, struct file_lists);
if (!f)
goto fail;
f->next = *list;
@@ -1032,12 +1032,10 @@ void add_to_file_list(TALLOC_CTX *mem_ctx, struct file_lists **list,
goto fail;
}
*list = f;
- f->modtime = file_modtime(subfname);
- } else {
- time_t t = file_modtime(subfname);
- if (t)
- f->modtime = t;
}
+
+ /* If file_modtime() fails it leaves f->modtime as zero. */
+ (void)file_modtime(subfname, &f->modtime);
return;
fail:
@@ -2146,7 +2144,7 @@ void lpcfg_print_parameter(struct parm_struct *p, void *ptr, FILE * f)
break;
case P_OCTAL: {
- int val = *(int *)ptr;
+ int val = *(int *)ptr;
if (val == -1) {
fprintf(f, "-1");
} else {
@@ -3199,7 +3197,7 @@ struct loadparm_context *loadparm_init_global(bool load_default)
/**
* Initialise the global parameter structure.
*/
-struct loadparm_context *loadparm_init_s3(TALLOC_CTX *mem_ctx,
+struct loadparm_context *loadparm_init_s3(TALLOC_CTX *mem_ctx,
const struct loadparm_s3_helpers *s3_fns)
{
struct loadparm_context *loadparm_context = talloc_zero(mem_ctx, struct loadparm_context);
@@ -3227,7 +3225,7 @@ const char *lp_default_path(void)
}
/**
- * Update the internal state of a loadparm context after settings
+ * Update the internal state of a loadparm context after settings
* have changed.
*/
static bool lpcfg_update(struct loadparm_context *lp_ctx)
@@ -3273,7 +3271,7 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
lp_ctx->globals->syslog,
lp_ctx->globals->syslog_only);
- /* FIXME: This is a bit of a hack, but we can't use a global, since
+ /* FIXME: This is a bit of a hack, but we can't use a global, since
* not everything that uses lp also uses the socket library */
if (lpcfg_parm_bool(lp_ctx, NULL, "socket", "testnonblock", false)) {
setenv("SOCKET_TESTNONBLOCK", "1", 1);
@@ -3305,7 +3303,7 @@ bool lpcfg_load_default(struct loadparm_context *lp_ctx)
path = lp_default_path();
if (!file_exist(path)) {
- /* We allow the default smb.conf file to not exist,
+ /* We allow the default smb.conf file to not exist,
* basically the equivalent of an empty file. */
return lpcfg_update(lp_ctx);
}
diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h
index 98263f0e62b..af6b530366a 100644
--- a/lib/param/loadparm.h
+++ b/lib/param/loadparm.h
@@ -102,7 +102,7 @@ struct file_lists {
struct file_lists *next;
char *name;
char *subfname;
- time_t modtime;
+ struct timespec modtime;
};
#define DEFAULT_NAME_RESOLVE_ORDER "lmhosts wins host bcast"
diff --git a/lib/replace/system/network.h b/lib/replace/system/network.h
index a84bfd453b1..1721d65a51a 100644
--- a/lib/replace/system/network.h
+++ b/lib/replace/system/network.h
@@ -91,6 +91,8 @@
#include <stropts.h>
#endif
+#include <limits.h>
+
#ifndef HAVE_SOCKLEN_T
#define HAVE_SOCKLEN_T
typedef int socklen_t;
@@ -342,6 +344,16 @@ typedef unsigned short int sa_family_t;
# endif
#endif
+#ifndef PIPE_BUF
+# ifdef __GNU__
+ /*
+ * GNU/Hurd does not have such hardcoded limitations. But it has to support
+ * the minimum POSIX value anyway.
+ */
+# define PIPE_BUF 512
+# endif
+#endif
+
#ifndef HAVE_STRUCT_ADDRINFO
#define HAVE_STRUCT_ADDRINFO
struct addrinfo {
diff --git a/lib/replace/system/select.h b/lib/replace/system/select.h
index 9e945c3ccfa..11c5390d901 100644
--- a/lib/replace/system/select.h
+++ b/lib/replace/system/select.h
@@ -34,10 +34,6 @@
#include <sys/epoll.h>
#endif
-#ifdef HAVE_SOLARIS_PORTS
-#include <port.h>
-#endif
-
#ifndef SELECT_CAST
#define SELECT_CAST
#endif
diff --git a/lib/replace/wscript b/lib/replace/wscript
index 82c5a8a477b..5c2b750832b 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -44,7 +44,6 @@ def configure(conf):
conf.CHECK_HEADERS('locale.h ndir.h pwd.h')
conf.CHECK_HEADERS('shadow.h sys/acl.h')
conf.CHECK_HEADERS('sys/attributes.h attr/attributes.h sys/capability.h sys/dir.h sys/epoll.h')
- conf.CHECK_HEADERS('port.h')
conf.CHECK_HEADERS('sys/fcntl.h sys/filio.h sys/filsys.h sys/fs/s5param.h')
conf.CHECK_HEADERS('sys/id.h sys/ioctl.h sys/ipc.h sys/mman.h sys/mode.h sys/ndir.h sys/priv.h')
conf.CHECK_HEADERS('sys/resource.h sys/security.h sys/shm.h sys/statfs.h sys/statvfs.h sys/termio.h')
@@ -482,7 +481,6 @@ def configure(conf):
conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups syscall setsid')
conf.CHECK_FUNCS('getgrent_r getgrgid_r getgrnam_r getgrouplist getpagesize')
conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create')
- conf.CHECK_FUNCS('port_create')
conf.CHECK_FUNCS('getprogname')
if not conf.CHECK_FUNCS('copy_file_range'):
conf.CHECK_CODE('''
@@ -708,9 +706,6 @@ syscall(SYS_copy_file_range,0,NULL,0,NULL,0,0);
if conf.CONFIG_SET('HAVE_EPOLL_CREATE') and conf.CONFIG_SET('HAVE_SYS_EPOLL_H'):
conf.DEFINE('HAVE_EPOLL', 1)
- if conf.CONFIG_SET('HAVE_PORT_CREATE') and conf.CONFIG_SET('HAVE_PORT_H'):
- conf.DEFINE('HAVE_SOLARIS_PORTS', 1)
-
if conf.CHECK_FUNCS('eventfd', headers='sys/eventfd.h'):
conf.DEFINE('HAVE_EVENTFD', 1)
diff --git a/lib/smbconf/smbconf_txt.c b/lib/smbconf/smbconf_txt.c
index 5c4bd27b9df..70a35ec4304 100644
--- a/lib/smbconf/smbconf_txt.c
+++ b/lib/smbconf/smbconf_txt.c
@@ -184,12 +184,23 @@ static sbcErr smbconf_txt_load_file(struct smbconf_ctx *ctx)
{
sbcErr err;
uint64_t new_csn;
+ int rc;
+ struct timespec mt = {0};
if (!file_exist(ctx->path)) {
return SBC_ERR_BADFILE;
}
- new_csn = (uint64_t)file_modtime(ctx->path);
+ rc = file_modtime(ctx->path, &mt);
+ if (rc != 0) {
+ /*
+ * Not worth mapping errno returned
+ * in rc to SBC_ERR_XXX. Just assume
+ * access denied.
+ */
+ return SBC_ERR_ACCESS_DENIED;
+ }
+ new_csn = (uint64_t)mt.tv_sec;
if (new_csn == pd(ctx)->csn) {
return SBC_ERR_OK;
}
@@ -275,11 +286,14 @@ static void smbconf_txt_get_csn(struct smbconf_ctx *ctx,
struct smbconf_csn *csn,
const char *service, const char *param)
{
+ struct timespec mt = {0};
+
if (csn == NULL) {
return;
}
- csn->csn = (uint64_t)file_modtime(ctx->path);
+ (void)file_modtime(ctx->path, &mt);
+ csn->csn = (uint64_t)mt.tv_sec;
}
/**
diff --git a/lib/tevent/ABI/tevent-0.14.0.sigs b/lib/tevent/ABI/tevent-0.14.1.sigs
similarity index 100%
copy from lib/tevent/ABI/tevent-0.14.0.sigs
copy to lib/tevent/ABI/tevent-0.14.1.sigs
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index df1c69127ab..0f6e92f93e8 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -1,7 +1,7 @@
#!/usr/bin/env python
APPNAME = 'tevent'
-VERSION = '0.14.0'
+VERSION = '0.14.1'
import sys, os
@@ -93,9 +93,6 @@ def build(bld):
if bld.CONFIG_SET('HAVE_EPOLL'):
SRC += ' tevent_epoll.c'
- if bld.CONFIG_SET('HAVE_SOLARIS_PORTS'):
- SRC += ' tevent_port.c'
-
if bld.env.standalone_tevent:
bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
private_library = False
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index 4eecfb8a583..f7e13bc8884 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -441,9 +441,15 @@ _PUBLIC_ int create_unlink_tmp(const char *dir);
_PUBLIC_ bool file_exist(const char *fname);
/**
- Check a files mod time.
-**/
-_PUBLIC_ time_t file_modtime(const char *fname);
+ * @brief Return a files modification time.
+ *
+ * @param fname The name of the file.
+ *
+ * @param mt A pointer to store the modification time.
+ *
+ * @return 0 on success, errno otherwise.
+ */
+_PUBLIC_ int file_modtime(const char *fname, struct timespec *mt);
/**
Check if a directory exists.
diff --git a/lib/util/time.c b/lib/util/time.c
index f1d6b566618..773fd611a33 100644
--- a/lib/util/time.c
+++ b/lib/util/time.c
@@ -1,9 +1,9 @@
-/*
+/*
Unix SMB/CIFS implementation.
time handling functions
Copyright (C) Andrew Tridgell 1992-2004
- Copyright (C) Stefan (metze) Metzmacher 2002
+ Copyright (C) Stefan (metze) Metzmacher 2002
Copyright (C) Jeremy Allison 2007
Copyright (C) Andrew Bartlett 2011
@@ -11,12 +11,12 @@
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@@ -137,12 +137,12 @@ This takes GMT as input
**/
_PUBLIC_ void unix_to_nt_time(NTTIME *nt, time_t t)
{
- uint64_t t2;
+ uint64_t t2;
if (t == (time_t)-1) {
*nt = (NTTIME)-1LL;
return;
- }
+ }
if (t == TIME_T_MAX || t == INT64_MAX) {
*nt = 0x7fffffffffffffffLL;
@@ -152,7 +152,7 @@ _PUBLIC_ void unix_to_nt_time(NTTIME *nt, time_t t)
if (t == 0) {
*nt = 0;
return;
- }
+ }
t2 = t;
t2 += TIME_FIXUP_CONSTANT_INT;
@@ -167,8 +167,8 @@ check if it's a null unix time
**/
_PUBLIC_ bool null_time(time_t t)
{
- return t == 0 ||
- t == (time_t)0xFFFFFFFF ||
+ return t == 0 ||
+ t == (time_t)0xFFFFFFFF ||
t == (time_t)-1;
}
@@ -271,7 +271,7 @@ void interpret_dos_date(uint32_t date,int *year,int *month,int *day,int *hour,in
{
uint32_t p0,p1,p2,p3;
- p0=date&0xFF; p1=((date&0xFF00)>>8)&0xFF;
+ p0=date&0xFF; p1=((date&0xFF00)>>8)&0xFF;
p2=((date&0xFF0000)>>16)&0xFF; p3=((date&0xFF000000)>>24)&0xFF;
*second = 2*(p0 & 0x1F);
@@ -295,11 +295,11 @@ _PUBLIC_ time_t pull_dos_date(const uint8_t *date_ptr, int zone_offset)
dos_date = IVAL(date_ptr,0);
if (dos_date == 0) return (time_t)0;
-
+
interpret_dos_date(dos_date,&t.tm_year,&t.tm_mon,
&t.tm_mday,&t.tm_hour,&t.tm_min,&t.tm_sec);
t.tm_isdst = -1;
-
+
ret = timegm(&t);
ret += zone_offset;
@@ -397,7 +397,7 @@ const char *timespec_string_buf(const struct timespec *tp,
}
} else if (!hires) {
len = snprintf(buf->buf, sizeof(buf->buf),
- "%04d/%02d/%02d %02d:%02d:%02d",
+ "%04d-%02d-%02d %02d:%02d:%02d",
1900 + tm->tm_year,
tm->tm_mon + 1,
tm->tm_mday,
@@ -406,7 +406,7 @@ const char *timespec_string_buf(const struct timespec *tp,
tm->tm_sec);
} else {
len = snprintf(buf->buf, sizeof(buf->buf),
- "%04d/%02d/%02d %02d:%02d:%02d.%09ld",
+ "%04d-%02d-%02d %02d:%02d:%02d.%09ld",
1900 + tm->tm_year,
tm->tm_mon + 1,
tm->tm_mday,
@@ -693,7 +693,7 @@ _PUBLIC_ struct timeval timeval_current_ofs_usec(uint32_t usecs)
}
/**
- compare two timeval structures.
+ compare two timeval structures.
Return -1 if tv1 < tv2
Return 0 if tv1 == tv2
Return 1 if tv1 > tv2
@@ -723,7 +723,7 @@ _PUBLIC_ bool timeval_expired(const struct timeval *tv)
*/
_PUBLIC_ double timeval_elapsed2(const struct timeval *tv1, const struct timeval *tv2)
{
- return (tv2->tv_sec - tv1->tv_sec) +
+ return (tv2->tv_sec - tv1->tv_sec) +
(tv2->tv_usec - tv1->tv_usec)*1.0e-6;
}
@@ -806,7 +806,7 @@ _PUBLIC_ struct timeval timeval_until(const struct timeval *tv1,
*/
_PUBLIC_ NTTIME timeval_to_nttime(const struct timeval *tv)
{
- return 10*(tv->tv_usec +
+ return 10*(tv->tv_usec +
((TIME_FIXUP_CONSTANT + (uint64_t)tv->tv_sec) * 1000000));
}
@@ -828,7 +828,7 @@ _PUBLIC_ void nttime_to_timeval(struct timeval *tv, NTTIME t)
tv->tv_usec = 0;
return;
}
-
+
tv->tv_usec = t - tv->tv_sec*1000000;
}
@@ -938,8 +938,8 @@ bool nt_time_equal(NTTIME *t1, NTTIME *t2)
bool null_timespec(struct timespec ts)
{
- return ts.tv_sec == 0 ||
- ts.tv_sec == (time_t)0xFFFFFFFF ||
+ return ts.tv_sec == 0 ||
+ ts.tv_sec == (time_t)0xFFFFFFFF ||
ts.tv_sec == (time_t)-1;
}
@@ -992,7 +992,7 @@ struct timespec timespec_min(const struct timespec *ts1,
--
Samba Shared Repository
More information about the samba-cvs
mailing list