fe2c89f5ec
Resolves: RHEL-67029 Resolve gating test results for valgrind-3.24.0 rhel9
38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
From 2cb0bee2d7722b57956f66a0795b5b9106f88afc Mon Sep 17 00:00:00 2001
|
|
From: Mark Wielaard <mark@klomp.org>
|
|
Date: Tue, 12 Nov 2024 13:23:03 +0100
|
|
Subject: [PATCH 02/11] vgdb.c (fork_and_exec_valgrind): Fix off-by-one error
|
|
write
|
|
|
|
commit 646978d9adc5 ("vgdb: Handle EINTR and EAGAIN more
|
|
consistently") introduced an off-by-one issue trying to write back the
|
|
error from child to parent.
|
|
|
|
Instead of +1 it should have been +written (which initially is zero).
|
|
|
|
This is in an "should never happen" path, so hopefully didn't really
|
|
cause issues. But if it did happen the parent would have gotten the
|
|
wrong error code.
|
|
|
|
(cherry picked from commit f4fe5faf3d0f45b3824bbb9070232682df52a582)
|
|
---
|
|
coregrind/vgdb.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/coregrind/vgdb.c b/coregrind/vgdb.c
|
|
index 786ead160d34..112f23fe6ba1 100644
|
|
--- a/coregrind/vgdb.c
|
|
+++ b/coregrind/vgdb.c
|
|
@@ -1368,7 +1368,7 @@ int fork_and_exec_valgrind (int argc, char **argv, const char *working_dir,
|
|
// We try to write the result to the parent, but always exit.
|
|
size_t written = 0;
|
|
while (written < sizeof (int)) {
|
|
- ssize_t nrw = write (pipefd[1], ((char *) &err) + 1,
|
|
+ ssize_t nrw = write (pipefd[1], ((char *) &err) + written,
|
|
sizeof (int) - written);
|
|
if (nrw == -1) {
|
|
if (errno == EINTR || errno == EAGAIN)
|
|
--
|
|
2.47.0
|
|
|