Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tdb for openSUSE:Factory checked in at 2023-10-05 20:02:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tdb (Old) and /work/SRC/openSUSE:Factory/.tdb.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tdb" Thu Oct 5 20:02:32 2023 rev:43 rq:1114972 version:1.4.9 Changes: -------- --- /work/SRC/openSUSE:Factory/tdb/tdb.changes 2023-03-25 18:54:49.502497283 +0100 +++ /work/SRC/openSUSE:Factory/.tdb.new.28202/tdb.changes 2023-10-05 20:02:36.577534944 +0200 @@ -1,0 +2,8 @@ +Tue Sep 26 09:40:31 UTC 2023 - Noel Power <nopo...@suse.com> + +- Update to 1.4.9 + * Remove remaining, but broken python2 support + * Spelling fixes + * python: Safely clear structure members + +------------------------------------------------------------------- Old: ---- tdb-1.4.8.tar.asc tdb-1.4.8.tar.gz New: ---- tdb-1.4.9.tar.asc tdb-1.4.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tdb.spec ++++++ --- /var/tmp/diff_new_pack.HqCLJZ/_old 2023-10-05 20:02:37.869581621 +0200 +++ /var/tmp/diff_new_pack.HqCLJZ/_new 2023-10-05 20:02:37.869581621 +0200 @@ -19,7 +19,7 @@ %{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} %{!?py3_soflags: %global py3_soflags cpython-%{python3_version_nodots}m} Name: tdb -Version: 1.4.8 +Version: 1.4.9 Release: 0 Summary: Samba Trivial Database License: LGPL-3.0-or-later ++++++ tdb-1.4.8.tar.gz -> tdb-1.4.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/ABI/tdb-1.4.9.sigs new/tdb-1.4.9/ABI/tdb-1.4.9.sigs --- old/tdb-1.4.8/ABI/tdb-1.4.9.sigs 1970-01-01 01:00:00.000000000 +0100 +++ new/tdb-1.4.9/ABI/tdb-1.4.9.sigs 2023-07-20 12:48:16.091104000 +0200 @@ -0,0 +1,73 @@ +tdb_add_flags: void (struct tdb_context *, unsigned int) +tdb_append: int (struct tdb_context *, TDB_DATA, TDB_DATA) +tdb_chainlock: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_mark: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_nonblock: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_read: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_read_nonblock: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_unmark: int (struct tdb_context *, TDB_DATA) +tdb_chainunlock: int (struct tdb_context *, TDB_DATA) +tdb_chainunlock_read: int (struct tdb_context *, TDB_DATA) +tdb_check: int (struct tdb_context *, int (*)(TDB_DATA, TDB_DATA, void *), void *) +tdb_close: int (struct tdb_context *) +tdb_delete: int (struct tdb_context *, TDB_DATA) +tdb_dump_all: void (struct tdb_context *) +tdb_enable_seqnum: void (struct tdb_context *) +tdb_error: enum TDB_ERROR (struct tdb_context *) +tdb_errorstr: const char *(struct tdb_context *) +tdb_exists: int (struct tdb_context *, TDB_DATA) +tdb_fd: int (struct tdb_context *) +tdb_fetch: TDB_DATA (struct tdb_context *, TDB_DATA) +tdb_firstkey: TDB_DATA (struct tdb_context *) +tdb_freelist_size: int (struct tdb_context *) +tdb_get_flags: int (struct tdb_context *) +tdb_get_logging_private: void *(struct tdb_context *) +tdb_get_seqnum: int (struct tdb_context *) +tdb_hash_size: int (struct tdb_context *) +tdb_increment_seqnum_nonblock: void (struct tdb_context *) +tdb_jenkins_hash: unsigned int (TDB_DATA *) +tdb_lock_nonblock: int (struct tdb_context *, int, int) +tdb_lockall: int (struct tdb_context *) +tdb_lockall_mark: int (struct tdb_context *) +tdb_lockall_nonblock: int (struct tdb_context *) +tdb_lockall_read: int (struct tdb_context *) +tdb_lockall_read_nonblock: int (struct tdb_context *) +tdb_lockall_unmark: int (struct tdb_context *) +tdb_log_fn: tdb_log_func (struct tdb_context *) +tdb_map_size: size_t (struct tdb_context *) +tdb_name: const char *(struct tdb_context *) +tdb_nextkey: TDB_DATA (struct tdb_context *, TDB_DATA) +tdb_null: dptr = 0xXXXX, dsize = 0 +tdb_open: struct tdb_context *(const char *, int, int, int, mode_t) +tdb_open_ex: struct tdb_context *(const char *, int, int, int, mode_t, const struct tdb_logging_context *, tdb_hash_func) +tdb_parse_record: int (struct tdb_context *, TDB_DATA, int (*)(TDB_DATA, TDB_DATA, void *), void *) +tdb_printfreelist: int (struct tdb_context *) +tdb_remove_flags: void (struct tdb_context *, unsigned int) +tdb_reopen: int (struct tdb_context *) +tdb_reopen_all: int (int) +tdb_repack: int (struct tdb_context *) +tdb_rescue: int (struct tdb_context *, void (*)(TDB_DATA, TDB_DATA, void *), void *) +tdb_runtime_check_for_robust_mutexes: bool (void) +tdb_set_logging_function: void (struct tdb_context *, const struct tdb_logging_context *) +tdb_set_max_dead: void (struct tdb_context *, int) +tdb_setalarm_sigptr: void (struct tdb_context *, volatile sig_atomic_t *) +tdb_store: int (struct tdb_context *, TDB_DATA, TDB_DATA, int) +tdb_storev: int (struct tdb_context *, TDB_DATA, const TDB_DATA *, int, int) +tdb_summary: char *(struct tdb_context *) +tdb_transaction_active: bool (struct tdb_context *) +tdb_transaction_cancel: int (struct tdb_context *) +tdb_transaction_commit: int (struct tdb_context *) +tdb_transaction_prepare_commit: int (struct tdb_context *) +tdb_transaction_start: int (struct tdb_context *) +tdb_transaction_start_nonblock: int (struct tdb_context *) +tdb_transaction_write_lock_mark: int (struct tdb_context *) +tdb_transaction_write_lock_unmark: int (struct tdb_context *) +tdb_traverse: int (struct tdb_context *, tdb_traverse_func, void *) +tdb_traverse_chain: int (struct tdb_context *, unsigned int, tdb_traverse_func, void *) +tdb_traverse_key_chain: int (struct tdb_context *, TDB_DATA, tdb_traverse_func, void *) +tdb_traverse_read: int (struct tdb_context *, tdb_traverse_func, void *) +tdb_unlock: int (struct tdb_context *, int, int) +tdb_unlockall: int (struct tdb_context *) +tdb_unlockall_read: int (struct tdb_context *) +tdb_validate_freelist: int (struct tdb_context *, int *) +tdb_wipe_all: int (struct tdb_context *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/Makefile new/tdb-1.4.9/Makefile --- old/tdb-1.4.8/Makefile 2022-03-02 12:26:09.148422700 +0100 +++ new/tdb-1.4.9/Makefile 2023-02-03 11:04:15.024082200 +0100 @@ -60,9 +60,6 @@ ctags: $(WAF) ctags -pydoctor: - $(WAF) pydoctor - bin/%:: FORCE $(WAF) --targets=`basename $@` FORCE: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/examples/run_on_target.py new/tdb-1.4.9/buildtools/examples/run_on_target.py --- old/tdb-1.4.8/buildtools/examples/run_on_target.py 2022-03-02 12:26:08.936421600 +0100 +++ new/tdb-1.4.9/buildtools/examples/run_on_target.py 2023-04-04 16:54:16.532374000 +0200 @@ -38,7 +38,7 @@ import subprocess from optparse import OptionParser -# those are defaults, but can be overidden using command line +# these are defaults, but can be overridden using command line SSH = 'ssh' USER = None HOST = 'localhost' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/configure_file.py new/tdb-1.4.9/buildtools/wafsamba/configure_file.py --- old/tdb-1.4.8/buildtools/wafsamba/configure_file.py 2022-03-02 12:26:08.936421600 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/configure_file.py 2023-01-23 06:37:57.747581200 +0100 @@ -13,10 +13,10 @@ s = task.inputs[0].read() # split on the vars - a = re.split('(@\w+@)', s) + a = re.split(r'(@\w+@)', s) out = [] for v in a: - if re.match('@\w+@', v): + if re.match(r'@\w+@', v): vname = v[1:-1] if not vname in task.env and vname.upper() in task.env: vname = vname.upper() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/pkgconfig.py new/tdb-1.4.9/buildtools/wafsamba/pkgconfig.py --- old/tdb-1.4.8/buildtools/wafsamba/pkgconfig.py 2022-03-02 12:26:08.936421600 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/pkgconfig.py 2023-01-23 06:37:57.751581200 +0100 @@ -9,12 +9,12 @@ s = task.inputs[0].read() # split on the vars - a = re.split('(@\w+@)', s) + a = re.split(r'(@\w+@)', s) out = [] done_var = {} back_sub = [ ('PREFIX', '${prefix}'), ('EXEC_PREFIX', '${exec_prefix}')] for v in a: - if re.match('@\w+@', v): + if re.match(r'@\w+@', v): vname = v[1:-1] if not vname in task.env and vname.upper() in task.env: vname = vname.upper() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_abi.py new/tdb-1.4.9/buildtools/wafsamba/samba_abi.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_abi.py 2022-03-02 13:27:53.318182000 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_abi.py 2023-05-15 12:15:14.013386500 +0200 @@ -21,16 +21,16 @@ def normalise_signature(sig): '''normalise a signature from gdb''' sig = sig.strip() - sig = re.sub('^\$[0-9]+\s=\s\{(.+)\}$', r'\1', sig) - sig = re.sub('^\$[0-9]+\s=\s\{(.+)\}(\s0x[0-9a-f]+\s<\w+>)+$', r'\1', sig) - sig = re.sub('^\$[0-9]+\s=\s(0x[0-9a-f]+)\s?(<\w+>)?$', r'\1', sig) - sig = re.sub('0x[0-9a-f]+', '0xXXXX', sig) + sig = re.sub(r'^\$[0-9]+\s=\s\{(.+)\}$', r'\1', sig) + sig = re.sub(r'^\$[0-9]+\s=\s\{(.+)\}(\s0x[0-9a-f]+\s<\w+>)+$', r'\1', sig) + sig = re.sub(r'^\$[0-9]+\s=\s(0x[0-9a-f]+)\s?(<\w+>)?$', r'\1', sig) + sig = re.sub(r'0x[0-9a-f]+', '0xXXXX', sig) sig = re.sub('", <incomplete sequence (\\\\[a-z0-9]+)>', r'\1"', sig) for t in abi_type_maps: # we need to cope with non-word characters in mapped types m = t - m = m.replace('*', '\*') + m = m.replace('*', r'\*') if m[-1].isalnum() or m[-1] == '_': m += '\\b' if m[0].isalnum() or m[0] == '_': @@ -41,8 +41,9 @@ def normalise_varargs(sig): '''cope with older versions of gdb''' - sig = re.sub(',\s\.\.\.', '', sig) - return sig + sig = re.sub(r',\s\.\.\.', '', sig) + # Make sure we compare bytes and not strings + return bytes(sig, encoding='utf-8').decode('unicode_escape') def parse_sigs(sigs, abi_match): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_autoconf.py new/tdb-1.4.9/buildtools/wafsamba/samba_autoconf.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_autoconf.py 2023-01-18 16:27:05.360657700 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_autoconf.py 2023-05-19 10:55:21.091587500 +0200 @@ -364,7 +364,7 @@ return False @conf -def CHECK_VALUEOF(conf, v, headers=None, define=None): +def CHECK_VALUEOF(conf, v, headers=None, define=None, lib=None): '''check the value of a variable/define''' ret = True v_define = define @@ -376,6 +376,7 @@ execute=True, define_ret=True, quote=False, + lib=lib, headers=headers, local_include=False, msg="Checking value of %s" % v): @@ -830,8 +831,10 @@ if (Options.options.address_sanitizer or Options.options.undefined_sanitizer): conf.ADD_CFLAGS('-g -O1', testflags=True) - if Options.options.address_sanitizer: + if (Options.options.address_sanitizer + or Options.options.memory_sanitizer): conf.ADD_CFLAGS('-fno-omit-frame-pointer', testflags=True) + if Options.options.address_sanitizer: conf.ADD_CFLAGS('-fsanitize=address', testflags=True) conf.ADD_LDFLAGS('-fsanitize=address', testflags=True) conf.env['ADDRESS_SANITIZER'] = True @@ -842,6 +845,13 @@ conf.ADD_LDFLAGS('-fsanitize=undefined', testflags=True) conf.env['UNDEFINED_SANITIZER'] = True + # MemorySanitizer is only available if you build with clang + if Options.options.memory_sanitizer: + conf.ADD_CFLAGS('-g -O2', testflags=True) + conf.ADD_CFLAGS('-fsanitize=memory', testflags=True) + conf.ADD_CFLAGS('-fsanitize-memory-track-origins=2', testflags=True) + conf.ADD_LDFLAGS('-fsanitize=memory') + conf.env['MEMORY_SANITIZER'] = True # Let people pass an additional ADDITIONAL_{CFLAGS,LDFLAGS} # environment variables which are only used the for final build. @@ -883,10 +893,12 @@ conf.env[name] = conf.env['PREFIX'] + default @conf -def ADD_NAMED_CFLAGS(conf, name, flags, testflags=False, prereq_flags=[]): +def ADD_NAMED_CFLAGS(conf, name, flags, testflags=False, prereq_flags=None): '''add some CFLAGS to the command line optionally set testflags to ensure all the flags work ''' + if prereq_flags is None: + prereq_flags = [] prereq_flags = TO_LIST(prereq_flags) if testflags: ok_flags=[] @@ -899,10 +911,12 @@ conf.env[name].extend(TO_LIST(flags)) @conf -def ADD_CFLAGS(conf, flags, testflags=False, prereq_flags=[]): +def ADD_CFLAGS(conf, flags, testflags=False, prereq_flags=None): '''add some CFLAGS to the command line optionally set testflags to ensure all the flags work ''' + if prereq_flags is None: + prereq_flags = [] ADD_NAMED_CFLAGS(conf, 'EXTRA_CFLAGS', flags, testflags=testflags, prereq_flags=prereq_flags) @@ -969,7 +983,7 @@ '''enable/disable cache of configure results''' if enable: # when -C is chosen, we will use a private cache and will - # not look into system includes. This roughtly matches what + # not look into system includes. This roughly matches what # autoconf does with -C cache_path = os.path.join(conf.bldnode.abspath(), '.confcache') mkdir_p(cache_path) @@ -986,7 +1000,9 @@ @conf def SAMBA_CHECK_UNDEFINED_SYMBOL_FLAGS(conf): - if Options.options.address_sanitizer or Options.options.enable_libfuzzer: + if (Options.options.address_sanitizer + or Options.options.memory_sanitizer + or Options.options.enable_libfuzzer): # Sanitizers can rely on symbols undefined at library link time and the # symbols used for fuzzers are only defined by compiler wrappers. return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_bundled.py new/tdb-1.4.9/buildtools/wafsamba/samba_bundled.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_bundled.py 2022-03-02 13:27:53.318182000 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_bundled.py 2023-04-04 16:54:16.532374000 +0200 @@ -57,7 +57,7 @@ def minimum_library_version(conf, libname, default): - '''allow override of mininum system library version''' + '''allow override of minimum system library version''' minlist = Options.options.MINIMUM_LIBRARY_VERSION if not minlist: @@ -104,12 +104,14 @@ @conf def CHECK_BUNDLED_SYSTEM_PKG(conf, libname, minversion='0.0.0', - maxversion=None, version_blacklist=[], + maxversion=None, version_blacklist=None, onlyif=None, implied_deps=None, pkg=None): '''check if a library is available as a system library. This only tries using pkg-config ''' + if version_blacklist is None: + version_blacklist = [] return conf.CHECK_BUNDLED_SYSTEM(libname, minversion=minversion, maxversion=maxversion, @@ -120,7 +122,7 @@ @conf def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0', - maxversion=None, version_blacklist=[], + maxversion=None, version_blacklist=None, checkfunctions=None, headers=None, checkcode=None, onlyif=None, implied_deps=None, require_headers=True, pkg=None, set_target=True): @@ -129,6 +131,8 @@ tries by testing for a specified function in the specified lib ''' # We always do a logic validation of 'onlyif' first + if version_blacklist is None: + version_blacklist = [] missing = [] if onlyif: for l in samba_utils.TO_LIST(onlyif): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_conftests.py new/tdb-1.4.9/buildtools/wafsamba/samba_conftests.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_conftests.py 2022-11-15 16:59:09.743139700 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_conftests.py 2023-04-04 16:54:16.532374000 +0200 @@ -36,7 +36,7 @@ if d: additional_dirs.append(d) - # we add the additional dirs twice: once for the test data, and again if the compilation test suceeds below + # we add the additional dirs twice: once for the test data, and again if the compilation test succeeds below def add_options_dir(dirs, env): for x in dirs: if not x in env.CPPPATH: @@ -398,7 +398,7 @@ if section: man = Utils.readf(os.path.join(bdir,'Makefile')) - m = re.search('MAN%sEXT\s+=\s+(\w+)' % section, man) + m = re.search(r'MAN%sEXT\s+=\s+(\w+)' % section, man) if not m: conf.end_msg('not found', color='YELLOW') return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_git.py new/tdb-1.4.9/buildtools/wafsamba/samba_git.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_git.py 2022-03-02 12:26:08.940421600 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_git.py 2023-05-15 12:15:14.013386500 +0200 @@ -43,6 +43,7 @@ cwd=path) (stdout, stderr) = p.communicate(None) for l in stdout.splitlines(): + l = l.decode('utf-8') l = l.rstrip() status = l[0] l = l[1:] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_headers.py new/tdb-1.4.9/buildtools/wafsamba/samba_headers.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_headers.py 2022-03-02 12:26:08.940421600 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_headers.py 2023-04-04 16:54:16.532374000 +0200 @@ -19,7 +19,7 @@ return '' -re_header = re.compile('^\s*#\s*include[ \t]*"([^"]+)"', re.I | re.M) +re_header = re.compile(r'^\s*#\s*include[ \t]*"([^"]+)"', re.I | re.M) # a dictionary mapping source header paths to public header paths header_map = {} @@ -132,7 +132,7 @@ bld.SET_BUILD_GROUP('final') if not bld.env.build_public_headers: - # in this case no header munging neeeded. Used for tdb, talloc etc + # in this case no header munging needed. Used for tdb, talloc etc public_headers_simple(bld, public_headers, header_path=header_path, public_headers_install=public_headers_install) return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_third_party.py new/tdb-1.4.9/buildtools/wafsamba/samba_third_party.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_third_party.py 2023-01-18 16:27:05.360657700 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_third_party.py 2023-06-30 17:47:25.508677000 +0200 @@ -24,12 +24,12 @@ @conf def CHECK_SOCKET_WRAPPER(conf): - return conf.CHECK_BUNDLED_SYSTEM_PKG('socket_wrapper', minversion='1.3.4') + return conf.CHECK_BUNDLED_SYSTEM_PKG('socket_wrapper', minversion='1.4.2') Build.BuildContext.CHECK_SOCKET_WRAPPER = CHECK_SOCKET_WRAPPER @conf def CHECK_NSS_WRAPPER(conf): - return conf.CHECK_BUNDLED_SYSTEM_PKG('nss_wrapper', minversion='1.1.13') + return conf.CHECK_BUNDLED_SYSTEM_PKG('nss_wrapper', minversion='1.1.15') Build.BuildContext.CHECK_NSS_WRAPPER = CHECK_NSS_WRAPPER @conf @@ -39,7 +39,7 @@ @conf def CHECK_UID_WRAPPER(conf): - return conf.CHECK_BUNDLED_SYSTEM_PKG('uid_wrapper', minversion='1.2.7') + return conf.CHECK_BUNDLED_SYSTEM_PKG('uid_wrapper', minversion='1.3.0') Build.BuildContext.CHECK_UID_WRAPPER = CHECK_UID_WRAPPER @conf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_utils.py new/tdb-1.4.9/buildtools/wafsamba/samba_utils.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_utils.py 2022-03-02 14:24:35.089488300 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_utils.py 2023-04-04 16:54:16.532374000 +0200 @@ -237,10 +237,10 @@ def subst_vars_error(string, env): '''substitute vars, throw an error if a variable is not defined''' - lst = re.split('(\$\{\w+\})', string) + lst = re.split(r'(\$\{\w+\})', string) out = [] for v in lst: - if re.match('\$\{\w+\}', v): + if re.match(r'\$\{\w+\}', v): vname = v[2:-1] if not vname in env: raise KeyError("Failed to find variable %s in %s in env %s <%s>" % (vname, string, env.__class__, str(env))) @@ -327,7 +327,7 @@ env = ConfigSet.ConfigSet() ret = varstr - # substitute on user supplied dict if avaiilable + # substitute on user supplied dict if available if vars is not None: for v in vars.keys(): env[v] = vars[v] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_version.py new/tdb-1.4.9/buildtools/wafsamba/samba_version.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_version.py 2022-03-02 12:26:08.940421600 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_version.py 2023-04-04 16:54:16.532374000 +0200 @@ -235,22 +235,22 @@ def samba_version_file(version_file, path, env=None, is_install=True): '''Parse the version information from a VERSION file''' - f = open(version_file, 'r') - version_dict = {} - for line in f: - line = line.strip() - if line == '': - continue - if line.startswith("#"): - continue - try: - split_line = line.split("=") - if split_line[1] != "": - value = split_line[1].strip('"') - version_dict[split_line[0]] = value - except: - print("Failed to parse line %s from %s" % (line, version_file)) - raise + with open(version_file, 'r') as f: + version_dict = {} + for line in f: + line = line.strip() + if line == '': + continue + if line.startswith("#"): + continue + try: + split_line = line.split("=") + if split_line[1] != "": + value = split_line[1].strip('"') + version_dict[split_line[0]] = value + except: + print("Failed to parse line %s from %s" % (line, version_file)) + raise return SambaVersion(version_dict, path, env=env, is_install=is_install) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/samba_waf18.py new/tdb-1.4.9/buildtools/wafsamba/samba_waf18.py --- old/tdb-1.4.8/buildtools/wafsamba/samba_waf18.py 2023-01-18 16:27:05.360657700 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/samba_waf18.py 2023-04-04 16:54:16.532374000 +0200 @@ -148,7 +148,7 @@ def check(self, *k, **kw): '''Override the waf defaults to inject --with-directory options''' - # match the configuration test with speficic options, for example: + # match the configuration test with specific options, for example: # --with-libiconv -> Options.options.iconv_open -> "Checking for library iconv" self.validate_c(kw) @@ -161,7 +161,7 @@ if d: additional_dirs.append(d) - # we add the additional dirs twice: once for the test data, and again if the compilation test suceeds below + # we add the additional dirs twice: once for the test data, and again if the compilation test succeeds below def add_options_dir(dirs, env): for x in dirs: if not x in env.CPPPATH: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/symbols.py new/tdb-1.4.9/buildtools/wafsamba/symbols.py --- old/tdb-1.4.8/buildtools/wafsamba/symbols.py 2022-03-02 13:27:53.322182200 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/symbols.py 2023-04-04 16:54:16.532374000 +0200 @@ -119,9 +119,9 @@ # some regular expressions for parsing readelf output -re_sharedlib = re.compile(b'Shared library: \[(.*)\]') +re_sharedlib = re.compile(rb'Shared library: \[(.*)\]') # output from readelf could be `Library rpath` or `Libray runpath` -re_rpath = re.compile(b'Library (rpath|runpath): \[(.*)\]') +re_rpath = re.compile(rb'Library (rpath|runpath): \[(.*)\]') def get_libs(bld, binname): '''find the list of linked libraries for any binary or library @@ -436,7 +436,7 @@ def check_dependencies(bld, t): - '''check for depenencies that should be changed''' + '''check for dependencies that should be changed''' if bld.get_tgen_by_name(t.sname + ".objlist"): return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/wafsamba.py new/tdb-1.4.9/buildtools/wafsamba/wafsamba.py --- old/tdb-1.4.8/buildtools/wafsamba/wafsamba.py 2023-01-18 16:27:05.360657700 +0100 +++ new/tdb-1.4.9/buildtools/wafsamba/wafsamba.py 2023-04-04 16:54:16.532374000 +0200 @@ -899,10 +899,12 @@ private_headers=None, header_path=None, vars=None, - dep_vars=[], + dep_vars=None, always=False): '''A generic source generator target''' + if dep_vars is None: + dep_vars = [] if not SET_TARGET_TYPE(bld, name, 'GENERATOR'): return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/buildtools/wafsamba/wscript new/tdb-1.4.9/buildtools/wafsamba/wscript --- old/tdb-1.4.8/buildtools/wafsamba/wscript 2022-04-25 09:21:25.953240600 +0200 +++ new/tdb-1.4.9/buildtools/wafsamba/wscript 2023-04-04 16:54:16.532374000 +0200 @@ -118,7 +118,7 @@ action="store_true", dest='disable_rpath_private_install', default=False) gr.add_option('--nonshared-binary', help=( -f'''Disable use of shared libaries internal to {Context.g_module.APPNAME} for the listed binaries. +f'''Disable use of shared libraries internal to {Context.g_module.APPNAME} for the listed binaries. The resulting binaries are 'statically linked' with regard to components provided by {Context.g_module.APPNAME}, but remain dynamically linked to (eg) libc.so and libgnutls.so @@ -189,6 +189,11 @@ action="store_true", dest='undefined_sanitizer', default=False) + gr.add_option('--memory-sanitizer', + help=("Enable memory behaviour sanitizer compile and linker flags"), + action="store_true", + dest='memory_sanitizer', + default=False) gr.add_option('--enable-libfuzzer', help=("Build fuzzing binaries (use ADDITIONAL_CFLAGS to specify compiler options for libFuzzer or use CC=honggfuzz/hfuzz-cc)"), action="store_true", dest='enable_libfuzzer', default=False) @@ -373,7 +378,7 @@ conf.CHECK_CODE('printf("hello world")', define='HAVE_SIMPLE_C_PROG', mandatory=True, - execute=True, + execute=not conf.env.CROSS_COMPILE, headers='stdio.h', msg='Checking simple C program') @@ -523,7 +528,8 @@ strict=True, msg='Checking for __attribute__') - # Solaris by defauls uses draft versions of some functions unless you set _POSIX_PTHREAD_SEMANTICS + # Solaris by default uses draft versions of some functions unless you set + # _POSIX_PTHREAD_SEMANTICS if sys.platform.startswith('sunos'): conf.DEFINE('_POSIX_PTHREAD_SEMANTICS', 1) @@ -705,11 +711,6 @@ define="HAVE_VA_COPY", msg="Checking for va_copy") - conf.CHECK_CODE(''' - #define eprintf(...) fprintf(stderr, __VA_ARGS__) - eprintf("bla", "bar") - ''', define='HAVE__VA_ARGS__MACRO') - conf.env.enable_fuzzing = False conf.env.enable_libfuzzer = Options.options.enable_libfuzzer @@ -719,11 +720,6 @@ conf.DEFINE('FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION', 1) conf.env.FUZZ_TARGET_LDFLAGS = Options.options.FUZZ_TARGET_LDFLAGS - # Create a symlink of the compile db for clangd - symlink(os.path.join(conf.bldnode.abspath(), 'default/compile_commands.json'), - os.path.join(conf.srcnode.abspath(), 'compile_commands.json'), - force=True) - conf.SAMBA_BUILD_ENV() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/common/lock.c new/tdb-1.4.9/common/lock.c --- old/tdb-1.4.8/common/lock.c 2022-03-02 12:26:09.148422700 +0100 +++ new/tdb-1.4.9/common/lock.c 2023-04-21 10:29:11.360781200 +0200 @@ -812,7 +812,7 @@ return tdb_allrecord_unlock(tdb, F_WRLCK, true); } -/* lock entire database with write lock - nonblocking varient */ +/* lock entire database with write lock - nonblocking variant */ _PUBLIC_ int tdb_lockall_nonblock(struct tdb_context *tdb) { int ret = tdb_allrecord_lock(tdb, F_WRLCK, TDB_LOCK_NOWAIT, false); @@ -834,7 +834,7 @@ return tdb_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_WAIT, false); } -/* lock entire database with read lock - nonblock varient */ +/* lock entire database with read lock - nonblock variant */ _PUBLIC_ int tdb_lockall_read_nonblock(struct tdb_context *tdb) { int ret = tdb_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_NOWAIT, false); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/common/mutex.c new/tdb-1.4.9/common/mutex.c --- old/tdb-1.4.8/common/mutex.c 2022-03-02 12:26:09.148422700 +0100 +++ new/tdb-1.4.9/common/mutex.c 2023-04-21 10:29:11.360781200 +0200 @@ -454,7 +454,7 @@ /* * Our only caller tdb_allrecord_upgrade() - * garantees that we already own the allrecord lock. + * guarantees that we already own the allrecord lock. * * Which means m->allrecord_mutex is still locked by us. */ @@ -502,7 +502,7 @@ /* * Our only caller tdb_allrecord_upgrade() (in the error case) - * garantees that we already own the allrecord lock. + * guarantees that we already own the allrecord lock. * * Which means m->allrecord_mutex is still locked by us. */ @@ -531,7 +531,7 @@ /* * Our only callers tdb_allrecord_unlock() and * tdb_allrecord_lock() (in the error path) - * garantee that we already own the allrecord lock. + * guarantee that we already own the allrecord lock. * * Which means m->allrecord_mutex is still locked by us. */ @@ -982,7 +982,7 @@ * tdb_robust_mutex_pid to -1. This is ok as this code path is only * called once per process. * - * Leaving our signal handler avoids races with other threads potentialy + * Leaving our signal handler avoids races with other threads potentially * setting up their SIGCHLD handlers. * * The worst thing that can happen is that the other newer signal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/common/open.c new/tdb-1.4.9/common/open.c --- old/tdb-1.4.8/common/open.c 2022-03-02 12:26:09.148422700 +0100 +++ new/tdb-1.4.9/common/open.c 2023-04-21 10:29:11.360781200 +0200 @@ -94,7 +94,7 @@ } /* - * It's required for some following code pathes + * It's required for some following code paths * to have the fields on 'tdb' up-to-date. * * E.g. tdb_mutex_size() requires it @@ -826,7 +826,7 @@ return ret; } -/* register a loging function */ +/* register a logging function */ _PUBLIC_ void tdb_set_logging_function(struct tdb_context *tdb, const struct tdb_logging_context *log_ctx) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/common/transaction.c new/tdb-1.4.9/common/transaction.c --- old/tdb-1.4.8/common/transaction.c 2022-03-02 12:26:09.152422700 +0100 +++ new/tdb-1.4.9/common/transaction.c 2023-04-21 10:29:11.360781200 +0200 @@ -68,7 +68,7 @@ although once a transaction is started then an exclusive lock is gained until the transaction is committed or cancelled - - the commit stategy involves first saving away all modified data + - the commit strategy involves first saving away all modified data into a linearised buffer in the transaction recovery area, then marking the transaction recovery area with a magic value to indicate a valid recovery record. In total 4 fsync/msync calls are diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/common/traverse.c new/tdb-1.4.9/common/traverse.c --- old/tdb-1.4.8/common/traverse.c 2022-03-02 12:26:09.152422700 +0100 +++ new/tdb-1.4.9/common/traverse.c 2023-04-21 10:29:11.360781200 +0200 @@ -58,7 +58,7 @@ that we have done at least one fcntl lock at the start of a search to guarantee that memory is coherent on SMP systems. If records are added by - others during the search then thats OK, and we + others during the search then that's OK, and we could possibly miss those with this trick, but we could miss them anyway without this trick, so the semantics don't change. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/docs/mutex.txt new/tdb-1.4.9/docs/mutex.txt --- old/tdb-1.4.8/docs/mutex.txt 2022-03-02 12:26:09.152422700 +0100 +++ new/tdb-1.4.9/docs/mutex.txt 2023-04-21 10:29:11.360781200 +0200 @@ -15,7 +15,7 @@ The external locking API of tdb also allows one to lock the complete database, and ctdb uses this facility to freeze databases during a recovery. While the so-called allrecord lock is held, all linked lists and all individual records -are frozen alltogether. Tdb achieves this by locking the complete file range +are frozen altogether. Tdb achieves this by locking the complete file range with a single fcntl lock. Individual 1-byte locks for the linked lists conflict with this. Access to records is prevented by the one large fnctl byte range lock. @@ -73,7 +73,7 @@ shared between processes in a common shared memory area. The process shared posix mutexes have the potential to replace fcntl locking -to coordinate mmap access for tdbs. However, they are missing the criticial +to coordinate mmap access for tdbs. However, they are missing the critical auto-cleanup property that fcntl provides when a process dies. A process that dies hard while holding a shared mutex has no chance to clean up the protected data structures and unlock the shared mutex. Thus with a pure process shared diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/inet_ntop.c new/tdb-1.4.9/lib/replace/inet_ntop.c --- old/tdb-1.4.8/lib/replace/inet_ntop.c 2022-03-02 12:26:09.136422600 +0100 +++ new/tdb-1.4.9/lib/replace/inet_ntop.c 2023-04-12 16:52:20.881123800 +0200 @@ -65,20 +65,22 @@ * format an IPv4 address * return: * `dst' (as a const) - * notes: - * (1) uses no statics - * (2) takes a unsigned char* not an in_addr as input * author: * Paul Vixie, 1996. */ static const char * inet_ntop4(const unsigned char *src, char *dst, socklen_t size) { - static const char *fmt = "%u.%u.%u.%u"; - char tmp[sizeof "255.255.255.255"]; + char tmp[sizeof("255.255.255.255")]; size_t len; - len = snprintf(tmp, sizeof tmp, fmt, src[0], src[1], src[2], src[3]); + len = snprintf(tmp, + sizeof(tmp), + "%hhu.%hhu.%hhu.%hhu", + src[0], + src[1], + src[2], + src[3]); if (len >= size) { errno = ENOSPC; return (NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/replace.h new/tdb-1.4.9/lib/replace/replace.h --- old/tdb-1.4.8/lib/replace/replace.h 2023-01-18 16:27:05.368657800 +0100 +++ new/tdb-1.4.9/lib/replace/replace.h 2023-04-04 16:54:16.552373600 +0200 @@ -886,6 +886,21 @@ if((i)<((n)-1)){memmove(&((a)[(i)]),&((a)[(i)+1]),(sizeof(*(a))*((n)-(i)-1)));} /** + * Insert an array element by moving the rest one up + * + */ +#define ARRAY_INSERT_ELEMENT(__array,__old_last_idx,__new_elem,__new_idx) do { \ + if ((__new_idx) < (__old_last_idx)) { \ + const void *__src = &((__array)[(__new_idx)]); \ + void *__dst = &((__array)[(__new_idx)+1]); \ + size_t __num = (__old_last_idx)-(__new_idx); \ + size_t __len = sizeof(*(__array)) * __num; \ + memmove(__dst, __src, __len); \ + } \ + (__array)[(__new_idx)] = (__new_elem); \ +} while(0) + +/** * Pointer difference macro */ #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/snprintf.c new/tdb-1.4.9/lib/replace/snprintf.c --- old/tdb-1.4.8/lib/replace/snprintf.c 2022-11-15 16:59:09.747140000 +0100 +++ new/tdb-1.4.9/lib/replace/snprintf.c 2023-04-12 16:52:20.881123800 +0200 @@ -20,7 +20,7 @@ * for string length. This covers a nasty loophole. * * The other functions are there to prevent NULL pointers from - * causing nast effects. + * causing nasty effects. * * More Recently: * Brandon Long <bl...@fiction.net> 9/15/96 for mutt 0.43 @@ -77,7 +77,7 @@ * Fix incorrect zpadlen handling in fmtfp. * Thanks to Ollie Oldham <ollie.old...@metro-optix.com> for spotting it. * few mods to make it easier to compile the tests. - * addedd the "Ollie" test to the floating point ones. + * added the "Ollie" test to the floating point ones. * * Martin Pool (m...@samba.org) April 2003 * Remove NO_CONFIG_H so that the test case can be built within a source @@ -550,7 +550,7 @@ } for (i = 1; i < clist[pnum].num; i++) { if (clist[pnum].chunks[0]->type != clist[pnum].chunks[i]->type) { - /* nooo noo no! + /* nooo no no! * all the references to a parameter * must be of the same type */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/strptime.c new/tdb-1.4.9/lib/replace/strptime.c --- old/tdb-1.4.8/lib/replace/strptime.c 2022-03-02 12:26:09.136422600 +0100 +++ new/tdb-1.4.9/lib/replace/strptime.c 2023-04-12 16:52:20.881123800 +0200 @@ -287,7 +287,7 @@ } /* Any character but `%' must be matched by the same character - in the iput string. */ + in the input string. */ if (*fmt != '%') { match_char (*fmt++, *rp++); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/system/network.h new/tdb-1.4.9/lib/replace/system/network.h --- old/tdb-1.4.8/lib/replace/system/network.h 2022-03-02 12:26:09.136422600 +0100 +++ new/tdb-1.4.9/lib/replace/system/network.h 2023-02-02 09:26:34.277398800 +0100 @@ -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 @@ # 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/system/select.h new/tdb-1.4.9/lib/replace/system/select.h --- old/tdb-1.4.8/lib/replace/system/select.h 2022-03-02 12:26:09.136422600 +0100 +++ new/tdb-1.4.9/lib/replace/system/select.h 2023-02-02 09:26:34.309399100 +0100 @@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/system/wscript_configure new/tdb-1.4.9/lib/replace/system/wscript_configure --- old/tdb-1.4.8/lib/replace/system/wscript_configure 2022-03-02 12:26:09.136422600 +0100 +++ new/tdb-1.4.9/lib/replace/system/wscript_configure 2023-04-12 16:52:20.885124000 +0200 @@ -1,6 +1,6 @@ #!/usr/bin/env python -# solaris varients of getXXent_r +# solaris variants of getXXent_r conf.CHECK_C_PROTOTYPE('getpwent_r', 'struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)', define='SOLARIS_GETPWENT_R', headers='pwd.h') @@ -8,7 +8,7 @@ 'struct group *getgrent_r(struct group *src, char *buf, int buflen)', define='SOLARIS_GETGRENT_R', headers='grp.h') -# the irix varients +# the irix variants conf.CHECK_C_PROTOTYPE('getpwent_r', 'struct passwd *getpwent_r(struct passwd *src, char *buf, size_t buflen)', define='SOLARIS_GETPWENT_R', headers='pwd.h') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/wscript new/tdb-1.4.9/lib/replace/wscript --- old/tdb-1.4.8/lib/replace/wscript 2023-01-18 16:27:05.368657800 +0100 +++ new/tdb-1.4.9/lib/replace/wscript 2023-07-20 12:46:15.122290600 +0200 @@ -44,7 +44,6 @@ 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') @@ -115,7 +114,7 @@ conf.CHECK_HEADERS('xfs/libxfs.h netgroup.h') conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h') - conf.CHECK_HEADERS('valgrind/memcheck.h valgrind/helgrind.h') + conf.CHECK_HEADERS('valgrind/memcheck.h valgrind/helgrind.h valgrind/callgrind.h') conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h') conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h') conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h') @@ -132,6 +131,9 @@ if conf.CHECK_CFLAGS('-Wno-strict-overflow'): conf.define('HAVE_WNO_STRICT_OVERFLOW', '1') + if conf.CHECK_CFLAGS('-Wno-unused-but-set-variable'): + conf.define('HAVE_WNO_UNUSED_BUT_SET_VARIABLE', '1') + if conf.CHECK_CFLAGS('-Wuse-after-free=1'): conf.define('HAVE_WUSE_AFTER_FREE_1', '1') @@ -182,6 +184,10 @@ conf.CHECK_TYPE('blkcnt_t', 'long', headers='sys/types.h sys/stat.h unistd.h') conf.CHECK_SIZEOF('bool char int "long long" long short size_t ssize_t') + sizeof_int = conf.env["SIZEOF_INT"] + if sizeof_int < 4: + conf.fatal(f"Samba won't work with int of size {sizeof_int} (requires >= 4)") + conf.CHECK_SIZEOF('int8_t uint8_t int16_t uint16_t int32_t uint32_t int64_t uint64_t') conf.CHECK_SIZEOF('void*', define='SIZEOF_VOID_P') conf.CHECK_SIZEOF('off_t dev_t ino_t time_t') @@ -482,7 +488,6 @@ 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 +713,6 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/lib/replace/xattr.c new/tdb-1.4.9/lib/replace/xattr.c --- old/tdb-1.4.8/lib/replace/xattr.c 2023-01-18 16:27:05.372657800 +0100 +++ new/tdb-1.4.9/lib/replace/xattr.c 2023-04-21 10:29:11.356781200 +0200 @@ -1,4 +1,4 @@ -/* +/* Unix SMB/CIFS implementation. replacement routines for xattr implementations Copyright (C) Jeremy Allison 1998-2005 @@ -10,7 +10,7 @@ ** NOTE! The following LGPL license applies to the replace ** library. This does NOT imply that all of Samba is released ** under the LGPL - + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either @@ -42,7 +42,7 @@ #endif /************************************************************************** - Wrappers for extented attribute calls. Based on the Linux package with + Wrappers for extended attribute calls. Based on the Linux package with support for IRIX and (Net|Free)BSD also. Expand as other systems have them. ****************************************************************************/ @@ -196,7 +196,7 @@ int space; const char *name; size_t len; -} +} extattr[] = { { EXTATTR_NAMESPACE_SYSTEM, EXTATTR_PREFIX("system.") }, { EXTATTR_NAMESPACE_USER, EXTATTR_PREFIX("user.") }, @@ -233,7 +233,7 @@ errno = ENOSYS; return -1; } - /* Some error happend. Errno should be set by the previous call */ + /* Some error happened. Errno should be set by the previous call */ if(list_size < 0) return -1; /* No attributes */ @@ -245,7 +245,7 @@ problem with the emulation. */ if(list == NULL) { - /* Take the worse case of one char attribute names - + /* Take the worse case of one char attribute names - two bytes per name plus one more for sanity. */ total_size += list_size + (list_size/2 + 1)*extattr[t].len; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/pytdb.c new/tdb-1.4.9/pytdb.c --- old/tdb-1.4.8/pytdb.c 2022-03-02 13:27:53.362182400 +0100 +++ new/tdb-1.4.9/pytdb.c 2023-05-19 10:55:21.095587700 +0200 @@ -31,10 +31,6 @@ /* Include tdb headers */ #include <tdb.h> -#if PY_MAJOR_VERSION >= 3 -#define Py_TPFLAGS_HAVE_ITER 0 -#endif - /* discard signature of 'func' in favour of 'target_sig' */ #define PY_DISCARD_FUNC_SIG(target_sig, func) (target_sig)(void(*)(void))func @@ -337,26 +333,6 @@ return 0; } -#if PY_MAJOR_VERSION < 3 -static PyObject *obj_has_key(PyTdbObject *self, PyObject *args) -{ - int ret; - PyObject *py_key; - PyErr_TDB_RAISE_IF_CLOSED(self); - - if (!PyArg_ParseTuple(args, "O", &py_key)) - return NULL; - - ret = obj_contains(self, py_key); - if (ret == -1) - return NULL; - if (ret) - Py_RETURN_TRUE; - Py_RETURN_FALSE; - -} -#endif - static PyObject *obj_store(PyTdbObject *self, PyObject *args) { TDB_DATA key, value; @@ -474,7 +450,7 @@ static void tdb_iter_dealloc(PyTdbIteratorObject *self) { - Py_DECREF(self->iteratee); + Py_CLEAR(self->iteratee); PyObject_Del(self); } @@ -566,21 +542,13 @@ "Return the next key in this database." }, { "delete", (PyCFunction)obj_delete, METH_VARARGS, "S.delete(key) -> None\n" "Delete an entry." }, -#if PY_MAJOR_VERSION < 3 - { "has_key", (PyCFunction)obj_has_key, METH_VARARGS, "S.has_key(key) -> None\n" - "Check whether key exists in this database." }, -#endif { "store", (PyCFunction)obj_store, METH_VARARGS, "S.store(key, data, flag=REPLACE) -> None" "Store data." }, { "storev", (PyCFunction)obj_storev, METH_VARARGS, "S.storev(key, data, flag=REPLACE) -> None" "Store several data." }, { "add_flags", (PyCFunction)obj_add_flags, METH_VARARGS, "S.add_flags(flags) -> None" }, { "remove_flags", (PyCFunction)obj_remove_flags, METH_VARARGS, "S.remove_flags(flags) -> None" }, -#if PY_MAJOR_VERSION >= 3 { "keys", (PyCFunction)tdb_object_iter, METH_NOARGS, "S.keys() -> iterator" }, -#else - { "iterkeys", (PyCFunction)tdb_object_iter, METH_NOARGS, "S.iterkeys() -> iterator" }, -#endif { "clear", (PyCFunction)obj_clear, METH_NOARGS, "S.clear() -> None\n" "Wipe the entire database." }, { "repack", (PyCFunction)obj_repack, METH_NOARGS, "S.repack() -> None\n" @@ -784,7 +752,7 @@ .tp_dealloc = (destructor)tdb_object_dealloc, .tp_as_mapping = &tdb_object_mapping, .tp_as_sequence = &tdb_object_seq, - .tp_flags = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_ITER, + .tp_flags = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, .tp_iter = PY_DISCARD_FUNC_SIG(getiterfunc,tdb_object_iter), }; @@ -801,7 +769,6 @@ #define MODULE_DOC "simple key-value database that supports multiple writers." -#if PY_MAJOR_VERSION >= 3 static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, .m_name = "tdb", @@ -809,7 +776,6 @@ .m_size = -1, .m_methods = tdb_methods, }; -#endif PyObject* module_init(void); PyObject* module_init(void) @@ -822,11 +788,7 @@ if (PyType_Ready(&PyTdbIterator) < 0) return NULL; -#if PY_MAJOR_VERSION >= 3 m = PyModule_Create(&moduledef); -#else - m = Py_InitModule3("tdb", tdb_methods, MODULE_DOC); -#endif if (m == NULL) return NULL; @@ -861,16 +823,8 @@ } -#if PY_MAJOR_VERSION >= 3 PyMODINIT_FUNC PyInit_tdb(void); PyMODINIT_FUNC PyInit_tdb(void) { return module_init(); } -#else -void inittdb(void); -void inittdb(void) -{ - module_init(); -} -#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/test/lock-tracking.c new/tdb-1.4.9/test/lock-tracking.c --- old/tdb-1.4.8/test/lock-tracking.c 2022-03-02 12:26:09.152422700 +0100 +++ new/tdb-1.4.9/test/lock-tracking.c 2023-04-21 10:29:11.360781200 +0200 @@ -1,4 +1,4 @@ -/* We save the locks so we can reaquire them. */ +/* We save the locks so we can reacquire them. */ #include "../common/tdb_private.h" #include <unistd.h> #include <fcntl.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.8/wscript new/tdb-1.4.9/wscript --- old/tdb-1.4.8/wscript 2023-01-18 18:37:29.303779800 +0100 +++ new/tdb-1.4.9/wscript 2023-07-20 12:48:16.091104000 +0200 @@ -1,7 +1,7 @@ #!/usr/bin/env python APPNAME = 'tdb' -VERSION = '1.4.8' +VERSION = '1.4.9' import sys, os