[ruby-core:93236] [Ruby trunk Bug#15937] Segmentation fault when String#initialize given same string with capacity field
From:
luke.gru@...
Date:
2019-06-19 01:45:52 UTC
List:
ruby-core #93236
Issue #15937 has been updated by luke-gru (Luke Gruber). This is fixed if in `rb_str_init`, you return `str` right after existing check of `(orig == str)`, but then capacity won't change. ---------------------------------------- Bug #15937: Segmentation fault when String#initialize given same string with capacity field https://bugs.ruby-lang.org/issues/15937#change-78686 * Author: luke-gru (Luke Gruber) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- Reproduction steps: string buffer corruption: ```ruby s = "mystring" s.__send__(:initialize, s, capacity: 1000) puts s ``` segfault: ```ruby s = "mystring that can't be embedded because it's too long and therefore must be allocated" s.__send__(:initialize, s, capacity: 1000) ``` Thanks for your time :) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>