diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2023-09-04 23:29:56 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2023-09-05 12:28:42 +0200 |
commit | 91dcc76fc13d2ebbac9aa326f8c6d453a93a05bb (patch) | |
tree | 1ffa3d2d46f3d74c516776dda82bbb545b6f18b6 | |
parent | ce47799de69812681b6be0b9d3d6d5c5e980bafb (diff) |
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<QProcessPrivate::UnixExtras*, std::default_delete<QProcessPrivate::UnixExtras> > >::type const& std::get<0ul, QProcessPrivate::UnixExtras*, std::default_delete<QProcessPrivate::UnixExtras> >(std::tuple<QProcessPrivate::UnixExtras*, std::default_delete<QProcessPrivate::UnixExtras> > 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
Pick-to: 6.6 6.5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/io/qprocess_unix.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 91a745d522..41fb08ad05 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -141,6 +141,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); } |