Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libfilezilla for openSUSE:Factory checked in at 2022-05-12 23:00:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libfilezilla (Old) and /work/SRC/openSUSE:Factory/.libfilezilla.new.1538 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libfilezilla" Thu May 12 23:00:55 2022 rev:45 rq:976595 version:0.37.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libfilezilla/libfilezilla.changes 2022-04-08 22:46:52.670367238 +0200 +++ /work/SRC/openSUSE:Factory/.libfilezilla.new.1538/libfilezilla.changes 2022-05-12 23:01:54.716921796 +0200 @@ -1,0 +2,13 @@ +Thu May 12 10:24:54 UTC 2022 - ecsos <ec...@opensuse.org> + +- Update to 0.37.2 + * New features: + - Added a null_logger that doesn't do anything + * Bugfixes and minor changes: + - MSW: fz::mkdir with restricted permissions now uses + inheritable ACLs + - MSW: Minor performance improvements reading from fz::process + and explicit cancellation of pending I/O when killing child + processes. + +------------------------------------------------------------------- Old: ---- libfilezilla-0.37.1.tar.bz2 New: ---- libfilezilla-0.37.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libfilezilla.spec ++++++ --- /var/tmp/diff_new_pack.7PfTIX/_old 2022-05-12 23:01:55.316922601 +0200 +++ /var/tmp/diff_new_pack.7PfTIX/_new 2022-05-12 23:01:55.320922606 +0200 @@ -20,7 +20,7 @@ %define libname %{name}%{major} %define develname %{name}-devel Name: libfilezilla -Version: 0.37.1 +Version: 0.37.2 Release: 0 Summary: C++ library for filezilla License: GPL-2.0-or-later @@ -80,7 +80,10 @@ + + # Need %%lang_package expanded for an extra conflict with an old library package + %package lang # FIXME: consider using %%lang_package macro Summary: Translations for package %{name} ++++++ libfilezilla-0.37.1.tar.bz2 -> libfilezilla-0.37.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/NEWS new/libfilezilla-0.37.2/NEWS --- old/libfilezilla-0.37.1/NEWS 2022-04-08 16:41:03.000000000 +0200 +++ new/libfilezilla-0.37.2/NEWS 2022-04-29 15:57:33.000000000 +0200 @@ -1,3 +1,9 @@ +0.37.2 (2022-04-29) + ++ Added a null_logger that doesn't do anything +- MSW: fz::mkdir with restricted permissions now uses inheritable ACLs +- MSW: Minor performance improvements reading from fz::process and explicit cancellation of pending I/O when killing child processes. + 0.37.1 (2022-04-08) + Added convenience functions ot fz::json diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/configure new/libfilezilla-0.37.2/configure --- old/libfilezilla-0.37.1/configure 2022-04-08 16:41:14.000000000 +0200 +++ new/libfilezilla-0.37.2/configure 2022-04-29 15:57:37.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libfilezilla 0.37.1. +# Generated by GNU Autoconf 2.69 for libfilezilla 0.37.2. # # Report bugs to <tim.ko...@filezilla-project.org>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='libfilezilla' PACKAGE_TARNAME='libfilezilla' -PACKAGE_VERSION='0.37.1' -PACKAGE_STRING='libfilezilla 0.37.1' +PACKAGE_VERSION='0.37.2' +PACKAGE_STRING='libfilezilla 0.37.2' PACKAGE_BUGREPORT='tim.ko...@filezilla-project.org' PACKAGE_URL='https://lib.filezilla-project.org/' @@ -1451,7 +1451,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libfilezilla 0.37.1 to adapt to many kinds of systems. +\`configure' configures libfilezilla 0.37.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1522,7 +1522,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libfilezilla 0.37.1:";; + short | recursive ) echo "Configuration of libfilezilla 0.37.2:";; esac cat <<\_ACEOF @@ -1678,7 +1678,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libfilezilla configure 0.37.1 +libfilezilla configure 0.37.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2123,7 +2123,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libfilezilla $as_me 0.37.1, which was +It was created by libfilezilla $as_me 0.37.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2478,7 +2478,7 @@ # If any interfaces have been added since the last public release, then increment age. # If any interfaces have been removed or changed since the last public release, then set age to 0. # CURRENT:REVISION:AGE -LIBRARY_VERSION=26:0:1 +LIBRARY_VERSION=27:0:2 ac_config_headers="$ac_config_headers config/config.hpp" @@ -2994,7 +2994,7 @@ # Define the identity of the package. PACKAGE='libfilezilla' - VERSION='0.37.1' + VERSION='0.37.2' cat >>confdefs.h <<_ACEOF @@ -22456,7 +22456,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libfilezilla $as_me 0.37.1, which was +This file was extended by libfilezilla $as_me 0.37.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22523,7 +22523,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libfilezilla config.status 0.37.1 +libfilezilla config.status 0.37.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/configure.ac new/libfilezilla-0.37.2/configure.ac --- old/libfilezilla-0.37.1/configure.ac 2022-04-08 16:41:03.000000000 +0200 +++ new/libfilezilla-0.37.2/configure.ac 2022-04-29 15:57:33.000000000 +0200 @@ -1,4 +1,4 @@ -???AC_INIT([libfilezilla],[0.37.1],[tim.ko...@filezilla-project.org],[],[https://lib.filezilla-project.org/]) +???AC_INIT([libfilezilla],[0.37.2],[tim.ko...@filezilla-project.org],[],[https://lib.filezilla-project.org/]) # Update the version information only immediately before a public release of your software # If the library source code has changed at all since the last update, then increment revision (???c:r:a??? becomes ???c:r+1:a???). @@ -6,7 +6,7 @@ # If any interfaces have been added since the last public release, then increment age. # If any interfaces have been removed or changed since the last public release, then set age to 0. # CURRENT:REVISION:AGE -LIBRARY_VERSION=26:0:1 +LIBRARY_VERSION=27:0:2 AC_CONFIG_HEADERS([config/config.hpp]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/Makefile.am new/libfilezilla-0.37.2/lib/Makefile.am --- old/libfilezilla-0.37.1/lib/Makefile.am 2022-04-01 14:35:07.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/Makefile.am 2022-04-29 15:57:33.000000000 +0200 @@ -16,6 +16,7 @@ json.cpp \ jws.cpp \ local_filesys.cpp \ + logger.cpp \ mutex.cpp \ nonowning_buffer.cpp \ process.cpp \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/Makefile.in new/libfilezilla-0.37.2/lib/Makefile.in --- old/libfilezilla-0.37.1/lib/Makefile.in 2022-04-08 16:41:14.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/Makefile.in 2022-04-29 15:57:37.000000000 +0200 @@ -179,14 +179,15 @@ encryption.cpp event.cpp event_handler.cpp event_loop.cpp \ file.cpp hash.cpp hostname_lookup.cpp impersonation.cpp \ invoker.cpp iputils.cpp json.cpp jws.cpp local_filesys.cpp \ - mutex.cpp nonowning_buffer.cpp process.cpp rate_limiter.cpp \ - rate_limited_layer.cpp recursive_remove.cpp signature.cpp \ - socket.cpp socket_errors.cpp string.cpp thread.cpp \ - thread_pool.cpp tls_info.cpp tls_layer.cpp tls_layer_impl.cpp \ - tls_system_trust_store.cpp time.cpp translate.cpp uri.cpp \ - util.cpp version.cpp windows/dll.cpp windows/poller.cpp \ - windows/registry.cpp windows/security_descriptor_builder.cpp \ - glue/unix.cpp unix/poller.cpp + logger.cpp mutex.cpp nonowning_buffer.cpp process.cpp \ + rate_limiter.cpp rate_limited_layer.cpp recursive_remove.cpp \ + signature.cpp socket.cpp socket_errors.cpp string.cpp \ + thread.cpp thread_pool.cpp tls_info.cpp tls_layer.cpp \ + tls_layer_impl.cpp tls_system_trust_store.cpp time.cpp \ + translate.cpp uri.cpp util.cpp version.cpp windows/dll.cpp \ + windows/poller.cpp windows/registry.cpp \ + windows/security_descriptor_builder.cpp glue/unix.cpp \ + unix/poller.cpp am__dirstamp = $(am__leading_dot)dirstamp @FZ_WINDOWS_TRUE@am__objects_1 = windows/libfilezilla_la-dll.lo \ @FZ_WINDOWS_TRUE@ windows/libfilezilla_la-poller.lo \ @@ -202,8 +203,9 @@ libfilezilla_la-impersonation.lo libfilezilla_la-invoker.lo \ libfilezilla_la-iputils.lo libfilezilla_la-json.lo \ libfilezilla_la-jws.lo libfilezilla_la-local_filesys.lo \ - libfilezilla_la-mutex.lo libfilezilla_la-nonowning_buffer.lo \ - libfilezilla_la-process.lo libfilezilla_la-rate_limiter.lo \ + libfilezilla_la-logger.lo libfilezilla_la-mutex.lo \ + libfilezilla_la-nonowning_buffer.lo libfilezilla_la-process.lo \ + libfilezilla_la-rate_limiter.lo \ libfilezilla_la-rate_limited_layer.lo \ libfilezilla_la-recursive_remove.lo \ libfilezilla_la-signature.lo libfilezilla_la-socket.lo \ @@ -254,6 +256,7 @@ ./$(DEPDIR)/libfilezilla_la-json.Plo \ ./$(DEPDIR)/libfilezilla_la-jws.Plo \ ./$(DEPDIR)/libfilezilla_la-local_filesys.Plo \ + ./$(DEPDIR)/libfilezilla_la-logger.Plo \ ./$(DEPDIR)/libfilezilla_la-mutex.Plo \ ./$(DEPDIR)/libfilezilla_la-nonowning_buffer.Plo \ ./$(DEPDIR)/libfilezilla_la-process.Plo \ @@ -539,7 +542,7 @@ libfilezilla_la_SOURCES = buffer.cpp encode.cpp encryption.cpp \ event.cpp event_handler.cpp event_loop.cpp file.cpp hash.cpp \ hostname_lookup.cpp impersonation.cpp invoker.cpp iputils.cpp \ - json.cpp jws.cpp local_filesys.cpp mutex.cpp \ + json.cpp jws.cpp local_filesys.cpp logger.cpp mutex.cpp \ nonowning_buffer.cpp process.cpp rate_limiter.cpp \ rate_limited_layer.cpp recursive_remove.cpp signature.cpp \ socket.cpp socket_errors.cpp string.cpp thread.cpp \ @@ -733,6 +736,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilezilla_la-json.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilezilla_la-jws.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilezilla_la-local_filesys.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilezilla_la-logger.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilezilla_la-mutex.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilezilla_la-nonowning_buffer.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilezilla_la-process.Plo@am__quote@ # am--include-marker @@ -896,6 +900,13 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilezilla_la_CPPFLAGS) $(CPPFLAGS) $(libfilezilla_la_CXXFLAGS) $(CXXFLAGS) -c -o libfilezilla_la-local_filesys.lo `test -f 'local_filesys.cpp' || echo '$(srcdir)/'`local_filesys.cpp +libfilezilla_la-logger.lo: logger.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilezilla_la_CPPFLAGS) $(CPPFLAGS) $(libfilezilla_la_CXXFLAGS) $(CXXFLAGS) -MT libfilezilla_la-logger.lo -MD -MP -MF $(DEPDIR)/libfilezilla_la-logger.Tpo -c -o libfilezilla_la-logger.lo `test -f 'logger.cpp' || echo '$(srcdir)/'`logger.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilezilla_la-logger.Tpo $(DEPDIR)/libfilezilla_la-logger.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='logger.cpp' object='libfilezilla_la-logger.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilezilla_la_CPPFLAGS) $(CPPFLAGS) $(libfilezilla_la_CXXFLAGS) $(CXXFLAGS) -c -o libfilezilla_la-logger.lo `test -f 'logger.cpp' || echo '$(srcdir)/'`logger.cpp + libfilezilla_la-mutex.lo: mutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilezilla_la_CPPFLAGS) $(CPPFLAGS) $(libfilezilla_la_CXXFLAGS) $(CXXFLAGS) -MT libfilezilla_la-mutex.lo -MD -MP -MF $(DEPDIR)/libfilezilla_la-mutex.Tpo -c -o libfilezilla_la-mutex.lo `test -f 'mutex.cpp' || echo '$(srcdir)/'`mutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilezilla_la-mutex.Tpo $(DEPDIR)/libfilezilla_la-mutex.Plo @@ -1314,6 +1325,7 @@ -rm -f ./$(DEPDIR)/libfilezilla_la-json.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-jws.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-local_filesys.Plo + -rm -f ./$(DEPDIR)/libfilezilla_la-logger.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-mutex.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-nonowning_buffer.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-process.Plo @@ -1402,6 +1414,7 @@ -rm -f ./$(DEPDIR)/libfilezilla_la-json.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-jws.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-local_filesys.Plo + -rm -f ./$(DEPDIR)/libfilezilla_la-logger.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-mutex.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-nonowning_buffer.Plo -rm -f ./$(DEPDIR)/libfilezilla_la-process.Plo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/file.cpp new/libfilezilla-0.37.2/lib/file.cpp --- old/libfilezilla-0.37.1/lib/file.cpp 2022-04-01 14:35:07.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/file.cpp 2022-04-29 15:57:33.000000000 +0200 @@ -81,7 +81,7 @@ sdb.add(security_descriptor_builder::administrators); } - auto sd = sdb.get_sd(); + auto sd = sdb.get_sd(sdb_flags::none); if (!sd) { return {result::other}; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/libfilezilla/logger.hpp new/libfilezilla-0.37.2/lib/libfilezilla/logger.hpp --- old/libfilezilla-0.37.1/lib/libfilezilla/logger.hpp 2022-04-01 14:35:07.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/libfilezilla/logger.hpp 2022-04-29 15:57:33.000000000 +0200 @@ -50,7 +50,7 @@ class logger_interface { public: - logger_interface() = default; + logger_interface() noexcept = default; virtual ~logger_interface() = default; logger_interface(logger_interface const&) = delete; @@ -152,6 +152,23 @@ return arg; } }; + +/// A logger that does not log anything. +class FZ_PUBLIC_SYMBOL null_logger final : public logger_interface +{ +public: + null_logger() noexcept + { + disable(levels()); + } + + virtual void do_log(logmsg::type, std::wstring &&) override {} + virtual void set_all(logmsg::type) override {} + virtual void enable(logmsg::type) override {} +}; + +null_logger FZ_PUBLIC_SYMBOL & get_null_logger(); + } #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/libfilezilla.vcxproj new/libfilezilla-0.37.2/lib/libfilezilla.vcxproj --- old/libfilezilla-0.37.1/lib/libfilezilla.vcxproj 2022-04-01 14:35:07.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/libfilezilla.vcxproj 2022-04-29 15:57:34.000000000 +0200 @@ -87,6 +87,7 @@ <ClCompile Include="invoker.cpp" /> <ClCompile Include="iputils.cpp" /> <ClCompile Include="local_filesys.cpp" /> + <ClCompile Include="logger.cpp" /> <ClCompile Include="mutex.cpp" /> <ClCompile Include="nonowning_buffer.cpp" /> <ClCompile Include="process.cpp" /> @@ -162,4 +163,4 @@ <ClInclude Include="windows\security_descriptor_builder.hpp" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> -</Project> \ No newline at end of file +</Project> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/local_filesys.cpp new/libfilezilla-0.37.2/lib/local_filesys.cpp --- old/libfilezilla-0.37.1/lib/local_filesys.cpp 2021-11-02 15:59:45.000000000 +0100 +++ new/libfilezilla-0.37.2/lib/local_filesys.cpp 2022-04-29 15:57:34.000000000 +0200 @@ -917,7 +917,6 @@ #ifdef FZ_WINDOWS SECURITY_ATTRIBUTES attr{}; - attr.bInheritHandle = false; attr.nLength = sizeof(SECURITY_ATTRIBUTES); security_descriptor_builder sdb; @@ -926,7 +925,7 @@ if (permissions == mkdir_permissions::cur_user_and_admins) { sdb.add(security_descriptor_builder::administrators); } - auto sd = sdb.get_sd(); + auto sd = sdb.get_sd(sdb_flags::inheritable); if (!sd) { return {result::other}; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/logger.cpp new/libfilezilla-0.37.2/lib/logger.cpp --- old/libfilezilla-0.37.1/lib/logger.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libfilezilla-0.37.2/lib/logger.cpp 2022-04-29 15:57:34.000000000 +0200 @@ -0,0 +1,12 @@ +#include "libfilezilla/logger.hpp" + +namespace fz { + +null_logger& get_null_logger() +{ + static null_logger log; + return log; +} + +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/process.cpp new/libfilezilla-0.37.2/lib/process.cpp --- old/libfilezilla-0.37.1/lib/process.cpp 2022-04-08 16:41:03.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/process.cpp 2022-04-29 15:57:34.000000000 +0200 @@ -60,7 +60,7 @@ // Restrict pipe to self security_descriptor_builder sdb; sdb.add(security_descriptor_builder::self); - auto sd = sdb.get_sd(); + auto sd = sdb.get_sd(sdb_flags::none); if (!sd) { return false; } @@ -395,6 +395,21 @@ task_.join(); quit_ = false; + if (out_.read_ != INVALID_HANDLE_VALUE) { + CancelIo(out_.read_); + DWORD read{}; + while (!GetOverlappedResult(out_.read_, &ol_read_, &read, false) && GetLastError() == ERROR_IO_PENDING) { + yield(); + } + } + if (in_.write_ != INVALID_HANDLE_VALUE) { + CancelIo(in_.write_); + DWORD written{}; + while (!GetOverlappedResult(in_.write_, &ol_write_, &written, false) && GetLastError() == ERROR_IO_PENDING) { + yield(); + } + } + remove_pending_events(); } @@ -460,7 +475,7 @@ rwresult read(void* buffer, size_t len) { - if (!len) { + if (!len || out_.read_ == INVALID_HANDLE_VALUE) { return rwresult{rwresult::invalid, 0}; } @@ -475,11 +490,13 @@ if (read_buffer_.empty()) { DWORD res = ReadFile(out_.read_, read_buffer_.get(64 * 1024), 64 * 1024, nullptr, &ol_read_); DWORD err = GetLastError(); - if (!res && err != ERROR_IO_PENDING) { - return rwresult{ rwresult::other, err }; + if (!res) { + if (err != ERROR_IO_PENDING) { + return rwresult{ rwresult::other, err }; + } + waiting_read_ = true; + SetEvent(sync_); } - waiting_read_ = true; - SetEvent(sync_); } return rwresult(len); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/string.cpp new/libfilezilla-0.37.2/lib/string.cpp --- old/libfilezilla-0.37.1/lib/string.cpp 2021-08-09 11:27:24.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/string.cpp 2022-04-29 15:57:34.000000000 +0200 @@ -338,11 +338,11 @@ #if FZ_WINDOWS wchar_t const* const in_p = in.data(); BOOL usedDefault = FALSE; - int const len = WideCharToMultiByte(CP_ACP, 0, in_p, static_cast<int>(in.size()), nullptr, 0, nullptr, &usedDefault); + int const len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, in_p, static_cast<int>(in.size()), nullptr, 0, nullptr, &usedDefault); if (len > 0 && !usedDefault) { ret.resize(len); char* out_p = ret.data(); - WideCharToMultiByte(CP_ACP, 0, in_p, static_cast<int>(in.size()), out_p, len, nullptr, nullptr); + WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, in_p, static_cast<int>(in.size()), out_p, len, nullptr, nullptr); } #else size_t start = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/tls_layer_impl.cpp new/libfilezilla-0.37.2/lib/tls_layer_impl.cpp --- old/libfilezilla-0.37.1/lib/tls_layer_impl.cpp 2022-04-01 14:35:07.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/tls_layer_impl.cpp 2022-04-29 15:57:34.000000000 +0200 @@ -1671,12 +1671,10 @@ logger_.log(logmsg::error, fztranslate("The server's hostname does not match the certificate's hostname")); status &= ~GNUTLS_CERT_UNEXPECTED_OWNER; } -#ifdef GNUTLS_CERT_MISSING_OCSP_STATUS if (status & GNUTLS_CERT_MISSING_OCSP_STATUS) { logger_.log(logmsg::error, fztranslate("The certificate requires the server to include an OCSP status in its response, but the OCSP status is missing.")); status &= ~GNUTLS_CERT_MISSING_OCSP_STATUS; } -#endif if (status) { if (status == GNUTLS_CERT_INVALID) { logger_.log(logmsg::error, fztranslate("Received certificate chain could not be verified.")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/windows/security_descriptor_builder.cpp new/libfilezilla-0.37.2/lib/windows/security_descriptor_builder.cpp --- old/libfilezilla-0.37.1/lib/windows/security_descriptor_builder.cpp 2021-09-29 14:07:07.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/windows/security_descriptor_builder.cpp 2022-04-29 15:57:34.000000000 +0200 @@ -99,7 +99,7 @@ impl_->rights_[e] = rights; } -ACL* security_descriptor_builder::get_acl() +ACL* security_descriptor_builder::get_acl(sdb_flags f) { if (impl_->acl_) { return impl_->acl_.get(); @@ -115,7 +115,8 @@ if (InitializeAcl(acl.get(), needed, ACL_REVISION)) { for (auto it = impl_->rights_.cbegin(); acl && it != impl_->rights_.cend(); ++it) { auto sid = impl_->get_sid(it->first); - if (!sid || !AddAccessAllowedAce(acl.get(), ACL_REVISION, it->second, sid.get())) { + DWORD flags = (f & sdb_flags::inheritable) ? (CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE) : 0; + if (!sid || !AddAccessAllowedAceEx(acl.get(), ACL_REVISION, flags, it->second, sid.get())) { return {}; } } @@ -124,6 +125,7 @@ if (impl_->acl_) { InitializeSecurityDescriptor(&impl_->sd_, SECURITY_DESCRIPTOR_REVISION); + SetSecurityDescriptorControl(&impl_->sd_, SE_DACL_PROTECTED, (f & sdb_flags::inherit_from_parent) ? 0 : SE_DACL_PROTECTED); SetSecurityDescriptorDacl(&impl_->sd_, TRUE, impl_->acl_.get(), FALSE); SetSecurityDescriptorOwner(&impl_->sd_, impl_->user_->User.Sid, FALSE); SetSecurityDescriptorGroup(&impl_->sd_, NULL, FALSE); @@ -133,9 +135,9 @@ return impl_->acl_.get(); } -SECURITY_DESCRIPTOR* security_descriptor_builder::get_sd() +SECURITY_DESCRIPTOR* security_descriptor_builder::get_sd(sdb_flags f) { - if (!get_acl()) { + if (!get_acl(f)) { return nullptr; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libfilezilla-0.37.1/lib/windows/security_descriptor_builder.hpp new/libfilezilla-0.37.2/lib/windows/security_descriptor_builder.hpp --- old/libfilezilla-0.37.1/lib/windows/security_descriptor_builder.hpp 2021-09-29 14:07:07.000000000 +0200 +++ new/libfilezilla-0.37.2/lib/windows/security_descriptor_builder.hpp 2022-04-29 15:57:34.000000000 +0200 @@ -9,6 +9,25 @@ #include <memory> namespace fz { +enum class sdb_flags : unsigned +{ + none = 0, + inherit_from_parent = 0x1, // ACLs from parent can be inherited + inheritable = 0x2, // Allos ACLs to be inherited by children +}; +inline bool operator&(sdb_flags lhs, sdb_flags rhs) { + return (static_cast<std::underlying_type_t<sdb_flags>>(lhs) & static_cast<std::underlying_type_t<sdb_flags>>(rhs)) != 0; +} +inline sdb_flags operator|(sdb_flags lhs, sdb_flags rhs) +{ + return static_cast<sdb_flags>(static_cast<std::underlying_type_t<sdb_flags>>(lhs) | static_cast<std::underlying_type_t<sdb_flags>>(rhs)); +} +inline sdb_flags& operator|=(sdb_flags& lhs, sdb_flags rhs) +{ + lhs = lhs | rhs; + return lhs; +} + class security_descriptor_builder final { public: @@ -25,8 +44,8 @@ void add(entity e, DWORD rights = GENERIC_ALL | STANDARD_RIGHTS_ALL | SPECIFIC_RIGHTS_ALL); - ACL* get_acl(); - SECURITY_DESCRIPTOR* get_sd(); + ACL* get_acl(sdb_flags f); + SECURITY_DESCRIPTOR* get_sd(sdb_flags f); private: struct impl;