gio/gsubprocess.c · 2.84.1 · GNOME / GLib · GitLab (original) (raw)
gio/subprocess: Initialize pid variable to 0 · 14909ffe
The documentation for g_spawn_async_with_pipes_and_fds() states:If an error occurs, child_pid, stdin_pipe_out, stdout_pipe_out, and
stderr_pipe_out will not be filled with valid values.
Before 2dc3a6f0, thechild_pid
argument wasself->pid
, and GObject zero-initializes structs. So
the pid field was properly initialized to zero.
After 2dc3a6f0, however, the out
variable is now declared inside initable_init(), and it's unitialized.
So if g_spawn_async_with_pipes_and_fds() errors out,pid
will have
trash value in it, and the following assertion will fail:
g_assert (success == (pid != 0));
Fix that by initializing the pid
variable to zero. Add a test to
exercise the fail code path, and prevent errors like this in the
future.
gio/subprocess: Initialize pid variable to 0
The documentation for g_spawn_async_with_pipes_and_fds() states:
If an error occurs, child_pid, stdin_pipe_out, stdout_pipe_out, and
stderr_pipe_out will not be filled with valid values.
Before 2dc3a6f0, thechild_pid
argument wasself->pid
, and GObject zero-initializes structs. So
the pid field was properly initialized to zero.
After 2dc3a6f0, however, the out
variable is now declared inside initable_init(), and it's unitialized.
So if g_spawn_async_with_pipes_and_fds() errors out,pid
will have
trash value in it, and the following assertion will fail:
g_assert (success == (pid != 0));
Fix that by initializing the pid
variable to zero. Add a test to
exercise the fail code path, and prevent errors like this in the
future.