summaryrefslogtreecommitdiff
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
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
-rw-r--r--ChangeLog5
-rw-r--r--parse.y4
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e828ad75b1..fd6eb46e54 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jul 22 19:05:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): get rid of potential out-of-bound
+ access.
+
Fri Jul 22 13:55:59 2011 Eric Hodel <drbrain@segment7.net>
* lib/net/http.rb: Net::HTTP#finish is used to manually close
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;
}