Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package iperf for openSUSE:Factory checked in at 2023-09-25 20:02:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/iperf (Old) and /work/SRC/openSUSE:Factory/.iperf.new.1770 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iperf" Mon Sep 25 20:02:38 2023 rev:35 rq:1113223 version:3.15 Changes: -------- --- /work/SRC/openSUSE:Factory/iperf/iperf.changes 2023-07-24 18:25:44.994073806 +0200 +++ /work/SRC/openSUSE:Factory/.iperf.new.1770/iperf.changes 2023-09-25 20:48:29.152304347 +0200 @@ -1,0 +2,12 @@ +Sat Sep 23 11:06:51 UTC 2023 - Dirk Müller <[email protected]> + +- update to 3.15: + * Several bugs that could allow the iperf3 server to hang waiting + for input on the control connection has been fixed + (ESnet Software Security Advisory ESNET-SECADV-2023-0002) + * A bug that caused garbled output with UDP tests on 32-bit hosts + has been fixed (PR #1554, PR #1556). This bug was introduced in + iperf-3.14. + * A bug in counting UDP messages has been fixed + +------------------------------------------------------------------- Old: ---- iperf-3.14.tar.gz iperf-3.14.tar.gz.sha256 New: ---- iperf-3.15.tar.gz iperf-3.15.tar.gz.sha256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ iperf.spec ++++++ --- /var/tmp/diff_new_pack.yMIWNF/_old 2023-09-25 20:48:30.396349289 +0200 +++ /var/tmp/diff_new_pack.yMIWNF/_new 2023-09-25 20:48:30.396349289 +0200 @@ -18,7 +18,7 @@ %define soname 0 Name: iperf -Version: 3.14 +Version: 3.15 Release: 0 Summary: A tool to measure network performance License: BSD-3-Clause ++++++ iperf-3.14.tar.gz -> iperf-3.15.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/README.md new/iperf-3.15/README.md --- old/iperf-3.14/README.md 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/README.md 2023-09-14 20:38:11.000000000 +0200 @@ -78,8 +78,8 @@ -Z, --zerocopy use a 'zero copy' sendfile() method of sending data -A, --affinity n/n,m set CPU affinity -Bug Reports ------------ +Bug and Security Reports +------------------------ Before submitting a bug report, please make sure you're running the latest version of the code, and confirm that your issue has not @@ -99,6 +99,11 @@ If you have a question about usage or about the code, please do *not* submit an issue. Please use one of the mailing lists for that. +If you suspect there is a potential security issue, please contact the +developers at: + [email protected] + Relation to iperf 2.x --------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/RELNOTES.md new/iperf-3.15/RELNOTES.md --- old/iperf-3.14/RELNOTES.md 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/RELNOTES.md 2023-09-14 20:38:11.000000000 +0200 @@ -1,6 +1,24 @@ iperf3 Release Notes ==================== +iperf-3.15 2023-09-14 +--------------------- + +* Notable user-visible changes + + * Several bugs that could allow the iperf3 server to hang waiting + for input on the control connection has been fixed. ESnet thanks + Jorge Sancho Larraz from Canonical for reporting this issue. For + more information, see: + https://downloads.es.net/pub/iperf/esnet-secadv-2023-0002.txt.asc + + * A bug that caused garbled output with UDP tests on 32-bit hosts + has been fixed (PR #1554, PR #1556). This bug was introduced in + iperf-3.14. + + * A bug in counting UDP messages has been fixed (PR #1367, PR + #1380). + iperf-3.14 2023-07-07 --------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/configure new/iperf-3.15/configure --- old/iperf-3.14/configure 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/configure 2023-09-14 20:38:11.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for iperf 3.14. +# Generated by GNU Autoconf 2.71 for iperf 3.15. # # Report bugs to <https://github.com/esnet/iperf>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='iperf' PACKAGE_TARNAME='iperf' -PACKAGE_VERSION='3.14' -PACKAGE_STRING='iperf 3.14' +PACKAGE_VERSION='3.15' +PACKAGE_STRING='iperf 3.15' PACKAGE_BUGREPORT='https://github.com/esnet/iperf' PACKAGE_URL='https://software.es.net/iperf/' @@ -1366,7 +1366,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 iperf 3.14 to adapt to many kinds of systems. +\`configure' configures iperf 3.15 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1437,7 +1437,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of iperf 3.14:";; + short | recursive ) echo "Configuration of iperf 3.15:";; esac cat <<\_ACEOF @@ -1555,7 +1555,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -iperf configure 3.14 +iperf configure 3.15 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1833,7 +1833,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by iperf $as_me 3.14, which was +It was created by iperf $as_me 3.15, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3200,7 +3200,7 @@ # Define the identity of the package. PACKAGE='iperf' - VERSION='3.14' + VERSION='3.15' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -15579,7 +15579,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by iperf $as_me 3.14, which was +This file was extended by iperf $as_me 3.15, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15648,7 +15648,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -iperf config.status 3.14 +iperf config.status 3.15 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/configure.ac new/iperf-3.15/configure.ac --- old/iperf-3.14/configure.ac 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/configure.ac 2023-09-14 20:38:11.000000000 +0200 @@ -25,7 +25,7 @@ # Initialize the autoconf system for the specified tool, version and mailing list AC_PREREQ([2.71]) -AC_INIT([iperf],[3.14],[https://github.com/esnet/iperf],[iperf],[https://software.es.net/iperf/]) +AC_INIT([iperf],[3.15],[https://github.com/esnet/iperf],[iperf],[https://software.es.net/iperf/]) m4_include([config/ax_check_openssl.m4]) m4_include([config/iperf_config_static_bin.m4]) AC_LANG(C) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/docs/_esnet/templates/navbar.html new/iperf-3.15/docs/_esnet/templates/navbar.html --- old/iperf-3.14/docs/_esnet/templates/navbar.html 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/docs/_esnet/templates/navbar.html 2023-09-14 20:38:11.000000000 +0200 @@ -9,8 +9,6 @@ </button> <a class="navbar-brand" href="{{ pathto(master_doc) }}"> {%- block sidebarlogo %} - <!-- LOGO: {{ logo }} {{ pathto('_static/' + logo, 1) }} --> - {%- if logo %}<img src="{{ pathto('_static/' + logo, 1) }}">{%- endif %} {%- endblock %} {% if theme_navbar_title -%}{{ theme_navbar_title|e }}{%- else -%}{{ project|e }}{%- endif -%} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/docs/conf.py new/iperf-3.15/docs/conf.py --- old/iperf-3.14/docs/conf.py 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/docs/conf.py 2023-09-14 20:38:11.000000000 +0200 @@ -52,10 +52,10 @@ # built documents. # # The short X.Y version. -version = '3.13' +version = '3.14' # The full version, including alpha/beta/rc tags. -release = '3.13' +release = '3.14' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -128,7 +128,8 @@ # The name of an image file (relative to this directory) to place at the top # of the sidebar. -html_logo = "_esnet/static/ESnet_Final_Logos_All_Blue_Circle_Stamp_RGB.png" +html_logo = "_static/esnet/ESnet_Final_Logos_All_Blue_Circle_Stamp_RGB.png" + # The name of an image file (within the static path) to use as favicon of the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/docs/news.rst new/iperf-3.15/docs/news.rst --- old/iperf-3.14/docs/news.rst 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/docs/news.rst 2023-09-14 20:38:11.000000000 +0200 @@ -1,6 +1,21 @@ iperf3 Project News =================== +2023-07-07: iperf-3.14 released +-------------------------------- +| URL: https://downloads.es.net/pub/iperf/iperf-3.14.tar.gz +| SHA256: ``723fcc430a027bc6952628fa2a3ac77584a1d0bd328275e573fc9b206c155004`` + +iperf 3.14 fixes a memory allocation hazard that allowed a remote user +to crash an iperf3 process (server or client). + +More information on this specific fix can be found at: + +https://downloads.es.net/pub/iperf/esnet-secadv-2023-0001.txt.asc + +This version of iperf3 also includes a number of minor bug fixes, +which are summarized in the release notes. + 2023-02-16: iperf-3.13 released ---------------------------------- | URL: https://downloads.es.net/pub/iperf/iperf-3.13.tar.gz diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/docs/obtaining.rst new/iperf-3.15/docs/obtaining.rst --- old/iperf-3.14/docs/obtaining.rst 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/docs/obtaining.rst 2023-09-14 20:38:11.000000000 +0200 @@ -16,7 +16,7 @@ * Fedora / RedHat Linux / CentOS / Rocky: `iperf3 <https://packages.fedoraproject.org/pkgs/iperf3/iperf3/>`_ and `iperf3-devel - <https://packages.fedoraproject.org/pkgs/iperf3/iperf3-devel/`_ in Fedora + <https://packages.fedoraproject.org/pkgs/iperf3/iperf3-devel/>`_ in Fedora 19 and 20 and in Fedora EPEL 5, 6, and 7. iperf3 is included as a part of RedHat Enterprise Linux 7.4 and later (as well as CentOS 7.4 and later, and all versions of Rocky Linux), and can generally be @@ -31,6 +31,8 @@ locations, including `<https://files.budman.pw/>`_ (`discussion thread <https://www.neowin.net/forum/topic/1234695-iperf/>`_). +* Android: iperf3 binaries for Android can be found in several + locations, including `<https://github.com/davidBar-On/android-iperf3/>`_. Source Distributions -------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/src/iperf3.1 new/iperf-3.15/src/iperf3.1 --- old/iperf-3.14/src/iperf3.1 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/src/iperf3.1 2023-09-14 20:38:11.000000000 +0200 @@ -363,8 +363,7 @@ .TP .BR "--dscp " \fIdscp\fR set the IP DSCP bits. Both numeric and symbolic values are accepted. Numeric -values can be specified in decimal, octal and hex (see --tos above). To set -both the DSCP bits and the ECN bits, use --tos. +values can be specified in decimal, octal and hex (see --tos above). .TP .BR -L ", " --flowlabel " \fIn\fR" set the IPv6 flow label (currently only supported on Linux) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/src/iperf_api.c new/iperf-3.15/src/iperf_api.c --- old/iperf-3.14/src/iperf_api.c 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/src/iperf_api.c 2023-09-14 20:38:11.000000000 +0200 @@ -593,6 +593,30 @@ ipt->mapped_v4 = val; } +void +iperf_set_on_new_stream_callback(struct iperf_test* ipt, void (*callback)()) +{ + ipt->on_new_stream = callback; +} + +void +iperf_set_on_test_start_callback(struct iperf_test* ipt, void (*callback)()) +{ + ipt->on_test_start = callback; +} + +void +iperf_set_on_test_connect_callback(struct iperf_test* ipt, void (*callback)()) +{ + ipt->on_connect = callback; +} + +void +iperf_set_on_test_finish_callback(struct iperf_test* ipt, void (*callback)()) +{ + ipt->on_test_finish = callback; +} + static void check_sender_has_retransmits(struct iperf_test *ipt) { @@ -3816,7 +3840,7 @@ iperf_printf(test, report_sender_not_available_format, sp->socket); } else { - iperf_printf(test, report_bw_udp_format, sp->socket, mbuf, start_time, sender_time, ubuf, nbuf, 0.0, 0, (sender_packet_count - sender_omitted_packet_count), (double) 0, report_sender); + iperf_printf(test, report_bw_udp_format, sp->socket, mbuf, start_time, sender_time, ubuf, nbuf, 0.0, (int64_t) 0, (sender_packet_count - sender_omitted_packet_count), (double) 0, report_sender); } if ((sp->outoforder_packets - sp->omitted_outoforder_packets) > 0) iperf_printf(test, report_sum_outoforder, mbuf, start_time, sender_time, (sp->outoforder_packets - sp->omitted_outoforder_packets)); @@ -4005,7 +4029,7 @@ */ if (! (test->role == 's' && !stream_must_be_sender) ) { unit_snprintf(ubuf, UNIT_LEN, (double) total_sent, 'A'); - iperf_printf(test, report_sum_bw_udp_format, mbuf, start_time, sender_time, ubuf, nbuf, 0.0, 0, sender_total_packets, 0.0, report_sender); + iperf_printf(test, report_sum_bw_udp_format, mbuf, start_time, sender_time, ubuf, nbuf, 0.0, (int64_t) 0, sender_total_packets, 0.0, report_sender); } if (! (test->role == 's' && stream_must_be_sender) ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/src/iperf_api.h new/iperf-3.15/src/iperf_api.h --- old/iperf-3.14/src/iperf_api.h 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/src/iperf_api.h 2023-09-14 20:38:11.000000000 +0200 @@ -200,6 +200,10 @@ void iperf_set_test_congestion_control(struct iperf_test* ipt, char* cc); void iperf_set_test_mss(struct iperf_test* ipt, int mss); void iperf_set_mapped_v4(struct iperf_test* ipt, const int val); +void iperf_set_on_new_stream_callback(struct iperf_test* ipt, void (*callback)()); +void iperf_set_on_test_start_callback(struct iperf_test* ipt, void (*callback)()); +void iperf_set_on_test_connect_callback(struct iperf_test* ipt, void (*callback)()); +void iperf_set_on_test_finish_callback(struct iperf_test* ipt, void (*callback)()); #if defined(HAVE_SSL) void iperf_set_test_client_username(struct iperf_test *ipt, const char *client_username); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/src/iperf_server_api.c new/iperf-3.15/src/iperf_server_api.c --- old/iperf-3.14/src/iperf_server_api.c 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/src/iperf_server_api.c 2023-09-14 20:38:11.000000000 +0200 @@ -140,7 +140,12 @@ } #endif /* HAVE_TCP_USER_TIMEOUT */ - if (Nread(test->ctrl_sck, test->cookie, COOKIE_SIZE, Ptcp) < 0) { + if (Nread(test->ctrl_sck, test->cookie, COOKIE_SIZE, Ptcp) != COOKIE_SIZE) { + /* + * Note this error covers both the case of a system error + * or the inability to read the correct amount of data + * (i.e. timed out). + */ i_errno = IERECVCOOKIE; return -1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/src/iperf_udp.c new/iperf-3.15/src/iperf_udp.c --- old/iperf-3.14/src/iperf_udp.c 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/src/iperf_udp.c 2023-09-14 20:38:11.000000000 +0200 @@ -250,8 +250,15 @@ r = Nwrite(sp->socket, sp->buffer, size, Pudp); - if (r < 0) - return r; + if (r <= 0) { + --sp->packet_count; /* Don't count messages that no data was sent from them. + * Allows "resending" a massage with the same numbering */ + if (r < 0) { + if (r == NET_SOFTERROR && sp->test->debug_level >= DEBUG_LEVEL_INFO) + printf("UDP send failed on NET_SOFTERROR. errno=%s\n", strerror(errno)); + return r; + } + } sp->result->bytes_sent += r; sp->result->bytes_sent_this_interval += r; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.14/src/net.c new/iperf-3.15/src/net.c --- old/iperf-3.14/src/net.c 2023-07-07 23:47:41.000000000 +0200 +++ new/iperf-3.15/src/net.c 2023-09-14 20:38:11.000000000 +0200 @@ -65,6 +65,9 @@ #include "net.h" #include "timer.h" +static int nread_read_timeout = 10; +static int nread_overall_timeout = 30; + /* * Declaration of gerror in iperf_error.c. Most other files in iperf3 can get this * by including "iperf.h", but net.c lives "below" this layer. Clearly the @@ -372,6 +375,32 @@ { register ssize_t r; register size_t nleft = count; + struct iperf_time ftimeout = { 0, 0 }; + + fd_set rfdset; + struct timeval timeout = { nread_read_timeout, 0 }; + + /* + * fd might not be ready for reading on entry. Check for this + * (with timeout) first. + * + * This check could go inside the while() loop below, except we're + * currently considering whether it might make sense to support a + * codepath that bypassese this check, for situations where we + * already know that fd has data on it (for example if we'd gotten + * to here as the result of a select() call. + */ + { + FD_ZERO(&rfdset); + FD_SET(fd, &rfdset); + r = select(fd + 1, &rfdset, NULL, NULL, &timeout); + if (r < 0) { + return NET_HARDERROR; + } + if (r == 0) { + return 0; + } + } while (nleft > 0) { r = read(fd, buf, nleft); @@ -385,6 +414,39 @@ nleft -= r; buf += r; + + /* + * We need some more bytes but don't want to wait around + * forever for them. In the case of partial results, we need + * to be able to read some bytes every nread_timeout seconds. + */ + if (nleft > 0) { + struct iperf_time now; + + /* + * Also, we have an approximate upper limit for the total time + * that a Nread call is supposed to take. We trade off accuracy + * of this timeout for a hopefully lower performance impact. + */ + iperf_time_now(&now); + if (ftimeout.secs == 0) { + ftimeout = now; + iperf_time_add_usecs(&ftimeout, nread_overall_timeout * 1000000L); + } + if (iperf_time_compare(&ftimeout, &now) < 0) { + break; + } + + FD_ZERO(&rfdset); + FD_SET(fd, &rfdset); + r = select(fd + 1, &rfdset, NULL, NULL, &timeout); + if (r < 0) { + return NET_HARDERROR; + } + if (r == 0) { + break; + } + } } return count - nleft; } ++++++ iperf-3.14.tar.gz.sha256 -> iperf-3.15.tar.gz.sha256 ++++++ --- /work/SRC/openSUSE:Factory/iperf/iperf-3.14.tar.gz.sha256 2023-07-24 18:25:44.970073665 +0200 +++ /work/SRC/openSUSE:Factory/.iperf.new.1770/iperf-3.15.tar.gz.sha256 2023-09-25 20:48:29.140303914 +0200 @@ -1 +1 @@ -723fcc430a027bc6952628fa2a3ac77584a1d0bd328275e573fc9b206c155004 iperf-3.14.tar.gz +bdb77c11f72bce90214883159577fa24412013e62b2083cf5f54391d79b1d8ff iperf-3.15.tar.gz
