aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--process.c2
-rw-r--r--test/ruby/test_process.rb8
2 files changed, 9 insertions, 1 deletions
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