Issue #13995 has been reported by tommy (Masahiro Tomita).

----------------------------------------
Bug #13995: Process.initgroups がNUL終端文字列を期待している
https://bugs.ruby-lang.org/issues/13995

* Author: tommy (Masahiro Tomita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.0dev (2017-10-10 trunk 60154) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Process.initgroups がNUL終端文字列を期待していて、SHARABLE_MIDDLE_SUBSTRING=1 時におかしくなります。
こんなに長いユーザー名は実際には使われないと思うので実害はないかもしれません。

```
# grep abcdefg /etc/group
test:x:999:abcdefghijklmnopqrstuvwxyz

# ruby -e 'p Process.initgroups("abcdefghijklmnopqrstuvwxyz!".chop, 123)'
[123]
```

パッチ適用後は正しく動きます。

```
# ruby -e 'p Process.initgroups("abcdefghijklmnopqrstuvwxyz!".chop, 123)'
[123, 999]
```

パッチ:

```diff
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);
```



-- 
https://bugs.ruby-lang.org/