diff --git a/process.c b/process.c index 2d842176bd..97ba885fca 100644 --- a/process.c +++ b/process.c @@ -5948,7 +5948,7 @@ proc_setgroups(VALUE obj, VALUE ary) static VALUE proc_initgroups(VALUE obj, VALUE uname, VALUE base_grp) { - if (initgroups(StringValuePtr(uname), OBJ2GID(base_grp)) != 0) { + if (initgroups(StringValueCStr(uname), OBJ2GID(base_grp)) != 0) { rb_sys_fail(0); } return proc_getgroups(obj); diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index 7bd38c8fed..f300444ecc 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -2339,4 +2339,12 @@ EOS assert_equal pid, Timeout.timeout(30) { Process.wait(pid) } end; end + + if Process.respond_to?(:initgroups) + def test_initgroups + assert_raise(ArgumentError) do + Process.initgroups("\0", 0) + end + end + end end