From c3026b723c4af4be56e3297a29d5a21b5d64eecc Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 19 Dec 2012 10:34:13 +0000 Subject: object.c: nul in const name * object.c (rb_mod_const_get): nul byte is invalid as constant name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- object.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'object.c') diff --git a/object.c b/object.c index b4e67bab5b..b05b41be25 100644 --- a/object.c +++ b/object.c @@ -1920,7 +1920,7 @@ rb_mod_const_get(int argc, VALUE *argv, VALUE mod) { VALUE name, recur; rb_encoding *enc; - const char *pbeg, *p, *path; + const char *pbeg, *p, *path, *pend; ID id; if (argc == 1) { @@ -1946,6 +1946,7 @@ rb_mod_const_get(int argc, VALUE *argv, VALUE mod) } pbeg = p = path; + pend = path + RSTRING_LEN(name); if (!*p) { rb_raise(rb_eNameError, "wrong constant name %s", path); @@ -1957,10 +1958,10 @@ rb_mod_const_get(int argc, VALUE *argv, VALUE mod) pbeg = p; } - while (*p) { + while (p < pend) { VALUE part; - while (*p && *p != ':') p++; + while (p < pend && *p != ':') p++; if (pbeg == p) { rb_raise(rb_eNameError, "wrong constant name %s", path); -- cgit v1.2.3