From 3dd98b2446271f8ad2837bc4b63c459c131c579f Mon Sep 17 00:00:00 2001 From: duerst Date: Thu, 2 Jun 2016 01:24:52 +0000 Subject: * string.c: Raise ArgumentError when invalid string is detected in case mapping methods. * enc/unicode.c: Check for invalid string and signal with negative length value. * test/ruby/enc/test_case_mapping.rb: Add tests for above. * test/ruby/test_m17n_comb.rb: Add a message to clarify test failure. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enc/unicode.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'enc') diff --git a/enc/unicode.c b/enc/unicode.c index 5a9aea0fa7..39d1e7a31f 100644 --- a/enc/unicode.c +++ b/enc/unicode.c @@ -669,14 +669,20 @@ onigenc_unicode_case_map(OnigCaseFoldType* flagP, OnigCodePoint code; OnigUChar *to_start = to; OnigCaseFoldType flags = *flagP; + int codepoint_length; + to_end -= CASE_MAPPING_SLACK; /* copy flags ONIGENC_CASE_UPCASE and ONIGENC_CASE_DOWNCASE over to * ONIGENC_CASE_UP_SPECIAL and ONIGENC_CASE_DOWN_SPECIAL */ flags |= (flags&(ONIGENC_CASE_UPCASE|ONIGENC_CASE_DOWNCASE))<='a' && code<='z') { if (flags&ONIGENC_CASE_UPCASE) { -- cgit v1.2.3