Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rtorrent for openSUSE:Factory checked in at 2025-06-23 15:04:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rtorrent (Old) and /work/SRC/openSUSE:Factory/.rtorrent.new.7067 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rtorrent" Mon Jun 23 15:04:48 2025 rev:18 rq:1287756 version:0.15.5 Changes: -------- --- /work/SRC/openSUSE:Factory/rtorrent/rtorrent.changes 2025-06-02 22:00:56.898185987 +0200 +++ /work/SRC/openSUSE:Factory/.rtorrent.new.7067/rtorrent.changes 2025-06-23 15:06:00.971594473 +0200 @@ -1,0 +2,7 @@ +Sun Jun 22 20:26:01 UTC 2025 - Jan Engelhardt <jeng...@inai.de> + +- Update to release 0.15.5 + * Fixed corrupted stack in curl stack due to wrong argument type. + * Fix file descriptor leak in session file saving. + +------------------------------------------------------------------- Old: ---- rtorrent-0.15.4.tar.gz New: ---- rtorrent-0.15.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rtorrent.spec ++++++ --- /var/tmp/diff_new_pack.KgYOfG/_old 2025-06-23 15:06:03.323692601 +0200 +++ /var/tmp/diff_new_pack.KgYOfG/_new 2025-06-23 15:06:03.339693268 +0200 @@ -17,7 +17,7 @@ Name: rtorrent -Version: 0.15.4 +Version: 0.15.5 Release: 0 Summary: Console-based BitTorrent client License: SUSE-GPL-2.0+-with-openssl-exception @@ -40,7 +40,7 @@ BuildRequires: update-desktop-files BuildRequires: pkgconfig(cppunit) >= 1.9.6 BuildRequires: pkgconfig(libcurl) >= 7.15.4 -BuildRequires: pkgconfig(libtorrent) >= 0.15.4 +BuildRequires: pkgconfig(libtorrent) >= %version BuildRequires: sysuser-tools Provides: bundled(tinyxml2) = 10.0.0 %sysusers_requires ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.KgYOfG/_old 2025-06-23 15:06:03.711708788 +0200 +++ /var/tmp/diff_new_pack.KgYOfG/_new 2025-06-23 15:06:03.743710123 +0200 @@ -1,5 +1,5 @@ -mtime: 1748854700 -commit: cc7eb3f9b4de255eb48e122df6b1db1e9fdf9f002f888e0fc96c8ec6f3daf413 +mtime: 1750624182 +commit: 6f7f5705345badbf4f44fdab8316ddbf5488a0a40687f9d1c2b3f9fcadcc36ed url: https://src.opensuse.org/jengelh/rtorrent revision: master ++++++ build.specials.obscpio ++++++ ++++++ rtorrent-0.15.4.tar.gz -> rtorrent-0.15.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rtorrent-0.15.4/configure new/rtorrent-0.15.5/configure --- old/rtorrent-0.15.4/configure 2025-06-01 15:41:08.000000000 +0200 +++ new/rtorrent-0.15.5/configure 2025-06-22 18:25:49.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for rtorrent 0.15.4. +# Generated by GNU Autoconf 2.72 for rtorrent 0.15.5. # # Report bugs to <sundell.softw...@gmail.com>. # @@ -614,8 +614,8 @@ # Identity of this package. PACKAGE_NAME='rtorrent' PACKAGE_TARNAME='rtorrent' -PACKAGE_VERSION='0.15.4' -PACKAGE_STRING='rtorrent 0.15.4' +PACKAGE_VERSION='0.15.5' +PACKAGE_STRING='rtorrent 0.15.5' PACKAGE_BUGREPORT='sundell.softw...@gmail.com' PACKAGE_URL='' @@ -1422,7 +1422,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 rtorrent 0.15.4 to adapt to many kinds of systems. +'configure' configures rtorrent 0.15.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1493,7 +1493,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of rtorrent 0.15.4:";; + short | recursive ) echo "Configuration of rtorrent 0.15.5:";; esac cat <<\_ACEOF @@ -1651,7 +1651,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -rtorrent configure 0.15.4 +rtorrent configure 0.15.5 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2334,7 +2334,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by rtorrent $as_me 0.15.4, which was +It was created by rtorrent $as_me 0.15.5, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -4027,7 +4027,7 @@ # Define the identity of the package. PACKAGE='rtorrent' - VERSION='0.15.4' + VERSION='0.15.5' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -23070,19 +23070,19 @@ fi pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 0.15.4" >&5 -printf %s "checking for libtorrent >= 0.15.4... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 0.15.5" >&5 +printf %s "checking for libtorrent >= 0.15.5... " >&6; } if test -n "$DEPENDENCIES_CFLAGS"; then pkg_cv_DEPENDENCIES_CFLAGS="$DEPENDENCIES_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent >= 0.15.4\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.4") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent >= 0.15.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.5") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "libtorrent >= 0.15.4" 2>/dev/null` + pkg_cv_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "libtorrent >= 0.15.5" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -23094,12 +23094,12 @@ pkg_cv_DEPENDENCIES_LIBS="$DEPENDENCIES_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent >= 0.15.4\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.4") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent >= 0.15.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.5") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "libtorrent >= 0.15.4" 2>/dev/null` + pkg_cv_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "libtorrent >= 0.15.5" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -23120,14 +23120,14 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent >= 0.15.4" 2>&1` + DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent >= 0.15.5" 2>&1` else - DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent >= 0.15.4" 2>&1` + DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent >= 0.15.5" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DEPENDENCIES_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (libtorrent >= 0.15.4) were not met: + as_fn_error $? "Package requirements (libtorrent >= 0.15.5) were not met: $DEPENDENCIES_PKG_ERRORS @@ -24762,7 +24762,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by rtorrent $as_me 0.15.4, which was +This file was extended by rtorrent $as_me 0.15.5, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24830,7 +24830,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -rtorrent config.status 0.15.4 +rtorrent config.status 0.15.5 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rtorrent-0.15.4/configure.ac new/rtorrent-0.15.5/configure.ac --- old/rtorrent-0.15.4/configure.ac 2025-06-01 15:40:42.000000000 +0200 +++ new/rtorrent-0.15.5/configure.ac 2025-06-22 18:25:31.000000000 +0200 @@ -1,6 +1,6 @@ m4_pattern_allow([PKG_CHECK_EXISTS]) -AC_INIT([rtorrent],[0.15.4],[sundell.softw...@gmail.com]) +AC_INIT([rtorrent],[0.15.5],[sundell.softw...@gmail.com]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIRS([scripts]) @@ -54,7 +54,7 @@ PKG_CHECK_MODULES([LIBCURL], [libcurl],, [LIBCURL_CHECK_CONFIG]) PKG_CHECK_MODULES([CPPUNIT], [cppunit],, [no_cppunit="yes"]) -PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.15.4]) +PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.15.5]) AC_LANG_PUSH(C++) TORRENT_WITH_XMLRPC_C diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rtorrent-0.15.4/src/core/curl_stack.cc new/rtorrent-0.15.5/src/core/curl_stack.cc --- old/rtorrent-0.15.4/src/core/curl_stack.cc 2025-06-01 15:40:42.000000000 +0200 +++ new/rtorrent-0.15.5/src/core/curl_stack.cc 2025-06-22 18:25:31.000000000 +0200 @@ -233,10 +233,14 @@ // TODO: Is this function supposed to set a per-handle timeout, or is // it the shortest timeout amongst all handles? int -CurlStack::set_timeout([[maybe_unused]] void* handle, std::chrono::microseconds timeout, void* userp) { +CurlStack::set_timeout(void*, long timeout_ms, void* userp) { CurlStack* stack = (CurlStack*)userp; - torrent::this_thread::scheduler()->update_wait_for_ceil_seconds(&stack->m_task_timeout, timeout); + if (timeout_ms == -1) + torrent::this_thread::scheduler()->erase(&stack->m_task_timeout); + else + torrent::this_thread::scheduler()->update_wait_for_ceil_seconds(&stack->m_task_timeout, std::chrono::milliseconds(timeout_ms)); + return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rtorrent-0.15.4/src/core/curl_stack.h new/rtorrent-0.15.5/src/core/curl_stack.h --- old/rtorrent-0.15.4/src/core/curl_stack.h 2025-06-01 15:40:42.000000000 +0200 +++ new/rtorrent-0.15.5/src/core/curl_stack.h 2025-06-22 18:25:31.000000000 +0200 @@ -79,7 +79,7 @@ void receive_action(CurlSocket* socket, int type); - static int set_timeout(void* handle, std::chrono::microseconds timeout, void* userp); + static int set_timeout(void*, long timeout_ms, void* userp); void transfer_done(void* handle, const char* msg); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rtorrent-0.15.4/src/core/download_store.cc new/rtorrent-0.15.5/src/core/download_store.cc --- old/rtorrent-0.15.4/src/core/download_store.cc 2025-06-01 15:40:43.000000000 +0200 +++ new/rtorrent-0.15.5/src/core/download_store.cc 2025-06-22 18:25:31.000000000 +0200 @@ -100,9 +100,10 @@ #else fdatasync(fd); #endif - ::close(fd); } + ::close(fd); + return true; download_store_save_error: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rtorrent-0.15.4/src/rpc/exec_file.cc new/rtorrent-0.15.5/src/rpc/exec_file.cc --- old/rtorrent-0.15.4/src/rpc/exec_file.cc 2025-06-01 15:40:43.000000000 +0200 +++ new/rtorrent-0.15.5/src/rpc/exec_file.cc 2025-06-22 18:25:31.000000000 +0200 @@ -1,6 +1,7 @@ #include "config.h" #include <cerrno> +#include <cstring> #include <fcntl.h> #include <string> #include <unistd.h> @@ -18,7 +19,7 @@ int ExecFile::execute(const char* file, char* const* argv, int flags) { - // Write the execued command and its parameters to the log fd. + // Write the executed command and its parameters to the log fd. [[maybe_unused]] int result; if (m_log_fd != -1) { @@ -117,18 +118,23 @@ } int status; - int wpid; - do { - wpid = waitpid(childPid, &status, 0); - } while (wpid == -1 && WIFEXITED(status) == 0); - - if (wpid != childPid) - throw torrent::internal_error("ExecFile::execute(...) waitpid failed."); + while (waitpid(childPid, &status, 0) == -1) { + switch (errno) { + case EINTR: + continue; + case ECHILD: + throw torrent::internal_error("ExecFile::execute(...) waitpid failed with ECHILD, child process not found."); + case EINVAL: + throw torrent::internal_error("ExecFile::execute(...) waitpid failed with EINVAL."); + default: + throw torrent::internal_error("ExecFile::execute(...) waitpid failed with unexpected error: " + std::string(std::strerror(errno))); + } + }; // Check return value? if (m_log_fd != -1) { - if (status == 0) + if (WIFEXITED(status) && WEXITSTATUS(status) == 0) result = write(m_log_fd, "\n--- Success ---\n", sizeof("\n--- Success ---\n")); else result = write(m_log_fd, "\n--- Error ---\n", sizeof("\n--- Error ---\n"));