summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-07-22 10:05:49 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-07-22 10:05:49 +0000
commit58a6a679230a78314bd33181729c5e6435f8cd60 (patch)
treeb5b91d14de226991a98d9dd3fc6f0d1563e53e07 /parse.y
parent05d7a284f17adcb805b6ef5a3176ebad71d8d7dc (diff)
* parse.y (rb_enc_symname2_p): get rid of potential out-of-bound
access. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y4
1 files changed, 2 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index aca2b6ac3e..f822bac773 100644
--- a/parse.y
+++ b/parse.y
@@ -9685,7 +9685,7 @@ rb_enc_symname2_p(const char *name, long len, rb_encoding *enc)
const char *e = m + len;
int localid = FALSE;
- if (!m) return FALSE;
+ if (!m || len <= 0) return FALSE;
switch (*m) {
case '\0':
return FALSE;
@@ -9738,8 +9738,8 @@ rb_enc_symname2_p(const char *name, long len, rb_encoding *enc)
break;
case '!':
+ if (len == 1) return FALSE;
switch (*++m) {
- case '\0': return TRUE;
case '=': case '~': ++m; break;
default: return FALSE;
}