commit:     474d50f3b47170abab3a8f1c742a03387696ccb2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 12 06:54:44 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Oct 12 06:54:44 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=474d50f3

app-benchmarks/httperf: fix memcpy UB

I meant to include this in 5507c2df5d98f518edd20ca590e7a33e5c75f0ec.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../httperf-0.9.1_p20201206-memcpy-overlap.patch   | 36 ++++++++++++++++++++++
 ...06.ebuild => httperf-0.9.1_p20201206-r1.ebuild} |  1 +
 2 files changed, 37 insertions(+)

diff --git 
a/app-benchmarks/httperf/files/httperf-0.9.1_p20201206-memcpy-overlap.patch 
b/app-benchmarks/httperf/files/httperf-0.9.1_p20201206-memcpy-overlap.patch
new file mode 100644
index 000000000000..ca78e98cbc69
--- /dev/null
+++ b/app-benchmarks/httperf/files/httperf-0.9.1_p20201206-memcpy-overlap.patch
@@ -0,0 +1,36 @@
+https://github.com/httperf/httperf/pull/81
+
+From c0e7d018ec0f5d10029e07e6eababb8dc86b4603 Mon Sep 17 00:00:00 2001
+From: Raphael Isemann <[email protected]>
+Date: Wed, 20 Apr 2022 13:30:05 +0200
+Subject: [PATCH] Fix UB when memcpy'ing overlapping buffers
+
+memcpy doesn't allow overlapping src/dst so instead using memmove here to fix
+that the buffer gets corrupted.
+---
+ src/gen/wsesspage.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gen/wsesspage.c b/src/gen/wsesspage.c
+index 46b697d..267188a 100755
+--- a/src/gen/wsesspage.c
++++ b/src/gen/wsesspage.c
+@@ -369,7 +369,7 @@ call_recv_data (Event_Type et, Object *obj, Any_Type 
regarg, Any_Type callarg)
+                   }
+                 else
+                   {
+-                    memcpy (cpriv->buf, cpriv->buf + 1, 3);
++                    memmove (cpriv->buf, cpriv->buf + 1, 3);
+                     cpriv->buf_len = 3;
+                   }
+               }
+@@ -391,7 +391,7 @@ call_recv_data (Event_Type et, Object *obj, Any_Type 
regarg, Any_Type callarg)
+                   }
+                 else
+                   {
+-                    memcpy (cpriv->buf, cpriv->buf + 1, 4);
++                    memmove (cpriv->buf, cpriv->buf + 1, 4);
+                     cpriv->buf_len = 4;
+                   }
+               }
+

diff --git a/app-benchmarks/httperf/httperf-0.9.1_p20201206.ebuild 
b/app-benchmarks/httperf/httperf-0.9.1_p20201206-r1.ebuild
similarity index 93%
rename from app-benchmarks/httperf/httperf-0.9.1_p20201206.ebuild
rename to app-benchmarks/httperf/httperf-0.9.1_p20201206-r1.ebuild
index 1a2bedf385b5..54927299dd48 100644
--- a/app-benchmarks/httperf/httperf-0.9.1_p20201206.ebuild
+++ b/app-benchmarks/httperf/httperf-0.9.1_p20201206-r1.ebuild
@@ -24,6 +24,7 @@ RDEPEND="${DEPEND}"
 
 PATCHES=(
        "${FILESDIR}"/${PN}-0.9.1_p20201206-c23.patch
+       "${FILESDIR}"/${PN}-0.9.1_p20201206-memcpy-overlap.patch
 )
 
 src_prepare() {

Reply via email to