From df1f97a5b287d4338cc25a0eb23887076b164e09 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 4 Sep 2023 23:29:56 +0200 Subject: [PATCH] QProcess: zero-fill a struct sigaction Otherwise valgrind (rightfully) complains: ==75693== Syscall param rt_sigaction(act->sa_flags) points to uninitialised byte(s) ==75693== at 0x597E5F3: __libc_sigaction (libc_sigaction.c:58) ==75693== by 0x5105CE4: QtVforkSafe::change_sigpipe(void (*)(int)) (qprocess_unix.cpp:145) ==75693== by 0x51083AA: (anonymous namespace)::QChildProcess::startProcess() const (qprocess_unix.cpp:911) ==75693== by 0x5106442: (anonymous namespace)::QChildProcess::startProcess(void*) (qprocess_unix.cpp:330) ==75693== by 0x5A61BB3: clone (clone.S:100) ==75693== by 0x1FFEFFE3DF: ??? ==75693== by 0x857E86F: ??? ==75693== by 0x1FFEFFE3EF: ??? ==75693== by 0x5102C09: std::tuple_element<0ul, std::tuple > >::type const& std::get<0ul, QProcessPrivate::UnixExtras*, std::default_delete >(std::tuple > const&) (tuple:1796) ==75693== Address 0x1ffeffe148 is on thread 1's stack ==75693== in frame #0, created by __libc_sigaction (libc_sigaction.c:43) ==75693== Change-Id: Ib5a18fb76f2b7c2c1604e73ff64a251a0418c63c Reviewed-by: Thiago Macieira (cherry picked from commit 91dcc76fc13d2ebbac9aa326f8c6d453a93a05bb) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/io/qprocess_unix.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 65836966897..c1f381e7855 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -154,6 +154,7 @@ DECLARE_FUNCTIONS(sigaction) static void change_sigpipe(decltype(SIG_DFL) new_handler) { struct sigaction sa; + memset(&sa, 0, sizeof(sa)); sa.sa_handler = new_handler; sigaction(SIGPIPE, &sa, nullptr); }