summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-13 02:06:35 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-13 02:06:35 +0000
commit7dbb035ba85215a39725d8a4922bff06a35cab3e (patch)
tree352888fcc4baa6f57c2f990737afb75085b92c4d
parent9003572081d67126782efccf5467d60f935af13b (diff)
* ext/nkf/nkf-utf8/nkf.c (numchar_getc): get rid of buffer
overflow. [ruby-dev:40606] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@26903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--ext/nkf/nkf-utf8/nkf.c2
-rw-r--r--test/nkf/test_nkf.rb5
3 files changed, 11 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9b00eb4710..d4e82ef2c7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Mar 13 11:06:30 2010 Nobuyoshi Nakada <[email protected]>
+
+ * ext/nkf/nkf-utf8/nkf.c (numchar_getc): get rid of buffer
+ overflow. [ruby-dev:40606]
+
Sat Mar 13 10:03:52 2010 Hidetoshi NAGAI <[email protected]>
* ext/tk/extconf.rb: fix [Bug #2840] Tk doesn't built in mingw.
diff --git a/ext/nkf/nkf-utf8/nkf.c b/ext/nkf/nkf-utf8/nkf.c
index 173cef84e4..f497fce63d 100644
--- a/ext/nkf/nkf-utf8/nkf.c
+++ b/ext/nkf/nkf-utf8/nkf.c
@@ -5004,7 +5004,7 @@ nkf_char numchar_getc(FILE *f)
nkf_char (*g)(FILE *) = i_ngetc;
nkf_char (*u)(nkf_char c ,FILE *f) = i_nungetc;
int i = 0, j;
- nkf_char buf[8];
+ nkf_char buf[10];
long c = -1;
buf[i] = (*g)(f);
diff --git a/test/nkf/test_nkf.rb b/test/nkf/test_nkf.rb
index 279ad59e1a..496bb1da0f 100644
--- a/test/nkf/test_nkf.rb
+++ b/test/nkf/test_nkf.rb
@@ -13,4 +13,9 @@ Ruby"
assert_equal(::NKF::EUC, NKF.guess(str_euc))
end
+ def test_numchar_input
+ bug2953 = '[ruby-dev:40606]'
+ assert_equal("A", NKF.nkf("-w --numchar-input", "&#x000041;"), bug2953)
+ assert_equal("B", NKF.nkf("-w --numchar-input", "&#0000066;"), bug2953)
+ end
end