summaryrefslogtreecommitdiff
path: root/debug.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-31 07:34:46 (GMT)
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-31 07:34:46 (GMT)
commitcdaf6db096348b792bd6a7f2f52d35fd3df1da64 (patch)
tree5f461f47df34c3841e73ecb38278c30894107203 /debug.c
parent5c9cd965bec9393e2c5e6594763a8a3efd0ad771 (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
Diffstat (limited to 'debug.c')
-rw-r--r--debug.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/debug.c b/debug.c
index e785af9..b289969 100644
--- a/debug.c
+++ b/debug.c
@@ -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