summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-16 16:26:04 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-16 16:26:04 +0000
commit4f78e7fff4949f5c94d35bce6b610d1188fd7c27 (patch)
tree71b824f19970d48f1af8718d703ef14fb4103227 /parse.y
parent0b6a0045aaf8de72b4ce39fe117b2ba88ccdcc15 (diff)
* parse.y (rb_intern3): prohibit Symbol with an invalid encoding.
[ruby-core:24621] * test/ruby/test_m17n_comb.rb: modify a test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y4
1 files changed, 4 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index e338c6fa38..6a0e431083 100644
--- a/parse.y
+++ b/parse.y
@@ -9505,6 +9505,10 @@ rb_intern3(const char *name, long len, rb_encoding *enc)
str = (VALUE)&fake_str;
rb_enc_associate(str, enc);
+ if (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN) {
+ rb_raise(rb_eEncodingError, "invalid encoding symbol");
+ }
+
if (st_lookup(global_symbols.sym_id, str, (st_data_t *)&id))
return id;