[ruby-list:50622] [質問] 文字列補完のときに汚染が引き継がれないのは仕様か

From: Yuki Mukasa <info@...>
Date: 2017-12-24 13:27:51 UTC
List: ruby-list #50622
向佐と申します。

汚染された文字列と汚染されていない文字列を連結させた場合,
連結後の文字列に対しても汚染が引き継がれますが、
文字列補完によって生成した文字は、汚染が引き継がれないようです。
どのような文字列生成の方法でも、汚染されている文字列を使用しているのであれば,生成された文字列は汚染されているべきだと考えています。
この挙動は予期されているものなのでしょうか?または、文字列補完による生成のときに、汚染を引き継がないようにした意図などがあるのでしょうか?




$ ruby -v
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]

という環境で、

tainted_str = "bbb"
tainted_str.taint

safe_str = "aaa"

p "string concatenation", (safe_str + tainted_str).tainted?
p "string interpolation", "#safe_str#tainted_str".tainted?

というコードを実行させたときに,

"string concatenation"
true
"string interpolation"
false

を得ました。


お分かりになる方がいらっしゃいましたら、ご教示いただければ幸いです。
よろしくお願いいたします。

In This Thread

Prev Next