diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-31 07:34:46 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-31 07:34:46 +0000 |
commit | cdaf6db096348b792bd6a7f2f52d35fd3df1da64 (patch) | |
tree | 5f461f47df34c3841e73ecb38278c30894107203 | |
parent | 5c9cd965bec9393e2c5e6594763a8a3efd0ad771 (diff) |
debug.c: check codepage value [ci skip]
* debug.c (set_debug_option): check garbage and overflow.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | debug.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -135,11 +135,15 @@ set_debug_option(const char *str, int len, void *arg) # if RUBY_MSVCRT_VERSION >= 80 SET_WHEN("rtc_error", ruby_w32_rtc_error, 1); # endif - if (NAME_MATCH_VALUE("codepage")) { + { int ov; size_t retlen; - ruby_w32_codepage = - ruby_scan_digits(str, len, 10, &retlen, &ov); + unsigned long n; + if (NAME_MATCH_VALUE("codepage") && + (n = ruby_scan_digits(str, len, 10, &retlen, &ov), + (size_t)len == retlen && !ov)) { + ruby_w32_codepage = (UINT)n; + } return; } #endif |