From: nagachika00@... Date: 2017-12-24T20:06:41+00:00 Subject: [ruby-dev:50385] [Ruby trunk Bug#13953] gdbm が SHARABLE_MIDDLE_SUBSTRING=1 を考慮していない Issue #13953 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 2.3: REQUIRED, 2.4: REQUIRED to 2.3: REQUIRED, 2.4: DONE ruby_2_4 r61456 merged revision(s) 60071. ---------------------------------------- Bug #13953: gdbm が SHARABLE_MIDDLE_SUBSTRING=1 を考慮していない https://bugs.ruby-lang.org/issues/13953#change-68628 * Author: tommy (Masahiro Tomita) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-09-29 trunk 60062) [x86_64-linux] * Backport: 2.3: REQUIRED, 2.4: DONE ---------------------------------------- SHARABLE_MIDDLE_SUBSTRING=1 でコンパイルしたRubyで、GDBM.new が指定した文字列ではなく共有元の文字列終端までファイル名として使用してしまいます。 ~~~ % ruby -rgdbm -e 'GDBM.new(("0123456789"*10)[0,24])' % ls 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 ~~~ 次のパッチで直ると思います。 ~~~ diff diff --git a/ext/gdbm/gdbm.c b/ext/gdbm/gdbm.c index 709f466cd8..cbf96c29f9 100644 --- a/ext/gdbm/gdbm.c +++ b/ext/gdbm/gdbm.c @@ -228,7 +228,7 @@ fgdbm_initialize(int argc, VALUE *argv, VALUE obj) if (!NIL_P(vflags)) flags = NUM2INT(vflags); - SafeStringValue(file); + FilePathValue(file); #ifdef GDBM_CLOEXEC /* GDBM_CLOEXEC is available since gdbm 1.10. */ ~~~ -- https://bugs.ruby-lang.org/