Bug #11386 » 0002-tests-for-fstring-taintedness.patch
| ext/-test-/string/fstring.c | ||
|---|---|---|
|
#include "ruby.h"
|
||
|
VALUE rb_fstring(VALUE str);
|
||
|
VALUE
|
||
|
bug_s_fstring(VALUE self, VALUE str)
|
||
|
{
|
||
|
return rb_fstring(str);
|
||
|
}
|
||
|
void
|
||
|
Init_fstring(VALUE klass)
|
||
|
{
|
||
|
rb_define_singleton_method(klass, "fstring", bug_s_fstring, 1);
|
||
|
}
|
||
| string.c | ||
|---|---|---|
|
}
|
||
|
}
|
||
|
RUBY_FUNC_EXPORTED
|
||
|
VALUE
|
||
|
rb_fstring(VALUE str)
|
||
|
{
|
||
| test/-ext-/string/test_fstring.rb | ||
|---|---|---|
|
require 'test/unit'
|
||
|
require '-test-/string'
|
||
|
class Test_String_Fstring < Test::Unit::TestCase
|
||
|
def test_taint_shared_string
|
||
|
str = __method__.to_s.dup
|
||
|
str.taint
|
||
|
fstr = Bug::String.fstring(str)
|
||
|
assert_predicate(str, :tainted?)
|
||
|
assert_predicate(fstr, :tainted?)
|
||
|
end
|
||
|
def test_taint_normal_string
|
||
|
str = __method__.to_s.capitalize
|
||
|
str.taint
|
||
|
fstr = Bug::String.fstring(str)
|
||
|
assert_predicate(str, :tainted?)
|
||
|
assert_predicate(fstr, :tainted?)
|
||
|
end
|
||
|
def test_taint_registered_tainted
|
||
|
str = __method__.to_s.capitalize
|
||
|
str.taint
|
||
|
fstr = Bug::String.fstring(str)
|
||
|
assert_predicate(str, :tainted?)
|
||
|
assert_predicate(fstr, :tainted?)
|
||
|
str = __method__.to_s.capitalize
|
||
|
fstr = Bug::String.fstring(str)
|
||
|
assert_not_predicate(str, :tainted?)
|
||
|
assert_not_predicate(fstr, :tainted?)
|
||
|
end
|
||
|
def test_taint_registered_untainted
|
||
|
str = __method__.to_s.capitalize
|
||
|
fstr = Bug::String.fstring(str)
|
||
|
assert_not_predicate(str, :tainted?)
|
||
|
assert_not_predicate(fstr, :tainted?)
|
||
|
str = __method__.to_s.capitalize
|
||
|
str.taint
|
||
|
fstr = Bug::String.fstring(str)
|
||
|
assert_predicate(str, :tainted?)
|
||
|
assert_predicate(fstr, :tainted?)
|
||
|
end
|
||
|
end
|
||