Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rr for openSUSE:Factory checked in at 2022-11-01 13:42:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rr (Old) and /work/SRC/openSUSE:Factory/.rr.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rr" Tue Nov 1 13:42:34 2022 rev:4 rq:1032539 version:5.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/rr/rr.changes 2022-08-16 17:08:06.235942733 +0200 +++ /work/SRC/openSUSE:Factory/.rr.new.2275/rr.changes 2022-11-01 13:42:41.735936738 +0100 @@ -1,0 +2,6 @@ +Mon Oct 31 14:09:34 UTC 2022 - Dominique Leuenberger <dims...@opensuse.org> + +- Add 2979c60e.patch: Avoid creating a struct with elements after + ethtool_sset_info's variable-length-array. + +------------------------------------------------------------------- New: ---- 2979c60e.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rr.spec ++++++ --- /var/tmp/diff_new_pack.Wc96V8/_old 2022-11-01 13:42:42.115938759 +0100 +++ /var/tmp/diff_new_pack.Wc96V8/_new 2022-11-01 13:42:42.119938780 +0100 @@ -24,6 +24,7 @@ Group: Development/Languages/C and C++ URL: https://rr-project.org/ Source: https://github.com/mozilla/%{name}/archive/%{version}.tar.gz +Patch0: https://github.com/rr-debugger/rr/commit/2979c60e.patch BuildRequires: capnproto BuildRequires: cmake BuildRequires: gcc-c++ @@ -46,7 +47,7 @@ data watchpoints and quickly reverse-execute to where they were hit. %prep -%setup -q +%autosetup -p1 %build # Fix incorrect path to bash ++++++ 2979c60e.patch ++++++ >From 2979c60ef8bbf7c940afd90172ddc5d8863f766e Mon Sep 17 00:00:00 2001 From: Robert O'Callahan <rob...@ocallahan.org> Date: Thu, 25 Aug 2022 20:40:59 +1200 Subject: [PATCH] Avoid creating a struct with elements after ethtool_sset_info's variable-length-array. Resolves #3369 --- src/record_syscall.cc | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/record_syscall.cc b/src/record_syscall.cc index 2e4cdec35..48544e1df 100644 --- a/src/record_syscall.cc +++ b/src/record_syscall.cc @@ -1450,17 +1450,17 @@ template <typename Arch> void get_ethtool_gstrings_arch(RecordTask* t) { AutoRemoteSyscalls remote(t); // Do a ETHTOOL_GSSET_INFO to get the number of strings - struct SingleStringSet { - ethtool_sset_info et; - uint32_t data; - }; - SingleStringSet sss; - sss.et.cmd = ETHTOOL_GSSET_INFO; - sss.et.reserved = 0; - sss.et.sset_mask = 1 << et_gstrings.string_set; - AutoRestoreMem sss_mem(remote, &sss, sizeof(sss)); - - ifreq.ifr_ifru.ifru_data = sss_mem.get(); + ethtool_sset_info et; + et.cmd = ETHTOOL_GSSET_INFO; + et.reserved = 0; + et.sset_mask = 1 << et_gstrings.string_set; + std::vector<uint8_t> buffer; + buffer.resize(sizeof(et) + sizeof(uint32_t)); + memcpy(buffer.data(), &et, sizeof(et)); + memset(buffer.data() + sizeof(et), 0, sizeof(uint32_t)); + AutoRestoreMem et_mem(remote, buffer.data(), buffer.size()); + + ifreq.ifr_ifru.ifru_data = et_mem.get(); AutoRestoreMem ifr_mem(remote, &ifreq, sizeof(ifreq)); long ret = remote.syscall(regs.original_syscallno(), regs.arg1(), @@ -1470,8 +1470,7 @@ template <typename Arch> void get_ethtool_gstrings_arch(RecordTask* t) { return; } - sss = t->read_mem(sss_mem.get().cast<SingleStringSet>()); - + uint32_t data = t->read_mem((et_mem.get() + sizeof(et)).cast<uint32_t>()); // Now do the ETHTOOL_GSTRINGS call ret = remote.syscall(regs.original_syscallno(), regs.arg1(), SIOCETHTOOL, regs.arg3()); @@ -1479,7 +1478,7 @@ template <typename Arch> void get_ethtool_gstrings_arch(RecordTask* t) { if (ret < 0) { return; } - t->record_remote(orig_gstrings, sizeof(ethtool_gstrings) + ETH_GSTRING_LEN*sss.data); + t->record_remote(orig_gstrings, sizeof(ethtool_gstrings) + ETH_GSTRING_LEN*data); } static void get_ethtool_gstrings(RecordTask* t) {