diff --git a/src/unix/process.c b/src/unix/process.c index 850a531d..26fdd5b5 100644 --- a/src/unix/process.c +++ b/src/unix/process.c @@ -402,10 +402,8 @@ static void uv__process_child_init(const uv_process_options_t* options, } } - if ((options->flags & UV_PROCESS_SETGID) && setgid(options->gid)) { - uv__write_int(error_fd, -errno); - _exit(127); - } + if ((options->flags & UV_PROCESS_SETGID) && setgid(options->gid)) + uv__write_errno(error_fd); if ((options->flags & UV_PROCESS_SETUID) && setuid(options->uid)) uv__write_errno(error_fd); @@ -908,13 +906,6 @@ static int uv__spawn_and_init_child( int exec_errorno; ssize_t r; - assert(options->file != NULL); - assert(!(options->flags & ~(UV_PROCESS_DETACHED | - UV_PROCESS_SETGID | - UV_PROCESS_SETUID | - UV_PROCESS_SETGROUPS | - UV_PROCESS_WINDOWS_HIDE | - UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS))); #if defined(__APPLE__) uv_once(&posix_spawn_init_once, uv__spawn_init_posix_spawn); @@ -1038,6 +1029,7 @@ int uv_spawn(uv_loop_t* loop, assert(!(options->flags & ~(UV_PROCESS_DETACHED | UV_PROCESS_SETGID | UV_PROCESS_SETUID | + UV_PROCESS_SETGROUPS | UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME | UV_PROCESS_WINDOWS_HIDE | UV_PROCESS_WINDOWS_HIDE_CONSOLE | diff --git a/src/win/process.c b/src/win/process.c index 215a2509..2f107321 100644 --- a/src/win/process.c +++ b/src/win/process.c @@ -920,11 +920,8 @@ int uv_spawn(uv_loop_t* loop, assert(!(options->flags & ~(UV_PROCESS_DETACHED | UV_PROCESS_SETGID | UV_PROCESS_SETUID | -<<<<<<< HEAD - UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME | -======= UV_PROCESS_SETGROUPS | ->>>>>>> 20a263fd (unix: Support setting supplementary process groups) + UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME | UV_PROCESS_WINDOWS_HIDE | UV_PROCESS_WINDOWS_HIDE_CONSOLE | UV_PROCESS_WINDOWS_HIDE_GUI | diff --git a/test/test-list.h b/test/test-list.h index c70b956c..e1735df1 100644 --- a/test/test-list.h +++ b/test/test-list.h @@ -341,12 +341,9 @@ TEST_DECLARE (spawn_preserve_env) TEST_DECLARE (spawn_same_stdout_stderr) TEST_DECLARE (spawn_setuid_fails) TEST_DECLARE (spawn_setgid_fails) -<<<<<<< HEAD TEST_DECLARE (spawn_affinity) TEST_DECLARE (spawn_affinity_invalid_mask) -======= TEST_DECLARE (spawn_setgids_fails) ->>>>>>> 20a263fd (unix: Support setting supplementary process groups) TEST_DECLARE (spawn_stdout_to_file) TEST_DECLARE (spawn_stdout_and_stderr_to_file) TEST_DECLARE (spawn_stdout_and_stderr_to_file2) @@ -1042,12 +1039,9 @@ TASK_LIST_START TEST_ENTRY (spawn_same_stdout_stderr) TEST_ENTRY (spawn_setuid_fails) TEST_ENTRY (spawn_setgid_fails) -<<<<<<< HEAD TEST_ENTRY (spawn_affinity) TEST_ENTRY (spawn_affinity_invalid_mask) -======= TEST_ENTRY (spawn_setgids_fails) ->>>>>>> 20a263fd (unix: Support setting supplementary process groups) TEST_ENTRY (spawn_stdout_to_file) TEST_ENTRY (spawn_stdout_and_stderr_to_file) TEST_ENTRY (spawn_stdout_and_stderr_to_file2) diff --git a/test/test-spawn.c b/test/test-spawn.c index d972c53c..d31826ba 100644 --- a/test/test-spawn.c +++ b/test/test-spawn.c @@ -1515,7 +1515,7 @@ TEST_IMPL(spawn_setgids) { ASSERT(pw != NULL); gids[0] = pw->pw_gid; options.gids = gids; - options.num_gids = 1; + options.gids_size = 1; options.flags = UV_PROCESS_SETGROUPS; @@ -1531,7 +1531,7 @@ TEST_IMPL(spawn_setgids) { ASSERT(exit_cb_called == 1); ASSERT(close_cb_called == 1); - MAKE_VALGRIND_HAPPY(); + MAKE_VALGRIND_HAPPY(uv_default_loop()); return 0; } #endif @@ -1652,7 +1652,7 @@ TEST_IMPL(spawn_setgids_fails) { options.flags |= UV_PROCESS_SETGROUPS; options.gids = gids; - options.num_gids = 1; + options.gids_size = 1; r = uv_spawn(uv_default_loop(), &process, &options); ASSERT(r == UV_EPERM); @@ -1662,7 +1662,7 @@ TEST_IMPL(spawn_setgids_fails) { ASSERT(close_cb_called == 0); - MAKE_VALGRIND_HAPPY(); + MAKE_VALGRIND_HAPPY(uv_default_loop()); return 0; } #endif