Project

General

Profile

Actions

Bug #22531

open

String#% with %s format string runs arbitrary code that can invalidate the argument array

Bug #22531: String#% with %s format string runs arbitrary code that can invalidate the argument array

Added by tekknolagi (Maxwell Bernstein) 29 minutes ago.

Status:
Open
Assignee:
-
Target version:
[ruby-core:127405]

Description

For example,

$a = Array.new(20) { "x" * 100 }
o = Object.new
def o.to_s = ($a.clear; GC.start; "o")
$a[0] = o
puts "%s %s %s" % $a

This crashes for me with a segfault.

String#% calls rb_str_format_ary with the array ptr and length of $a but that changes out from underneath it when to_s gets called and invalidates the pointer.

No data to display

Actions

Also available in: PDF Atom