* dir.c (rb_push_glob): fix overrun. [ruby-dev:24886]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2004-11-17 04:05:18 +00:00
parent 46a9555860
commit 9c1e33fc45
2 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,7 @@
Wed Nov 17 13:05:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* dir.c (rb_push_glob): fix overrun. [ruby-dev:24886]
Wed Nov 17 09:38:18 2004 Johan Holmberg <holmberg@iar.se> Wed Nov 17 09:38:18 2004 Johan Holmberg <holmberg@iar.se>
* re.c (rb_reg_initialize_m): should raise exception instead of * re.c (rb_reg_initialize_m): should raise exception instead of

9
dir.c
View File

@ -1500,9 +1500,14 @@ rb_push_glob(str, flags) /* '\0' is delimiter */
while (offset < RSTRING(str)->len) { while (offset < RSTRING(str)->len) {
int status = push_glob(ary, str, offset, flags); int status = push_glob(ary, str, offset, flags);
char *p, *pend;
if (status) rb_jump_tag(status); if (status) rb_jump_tag(status);
offset += strlen(RSTRING(str)->ptr+offset) + 1; p = RSTRING(str)->ptr + offset;
while (!RSTRING(str)->ptr[offset]) offset++; p += strlen(p) + 1;
pend = RSTRING(str)->ptr + RSTRING(str)->len;
while (p < pend && !*p)
p++;
offset = p - RSTRING(str)->ptr;
} }
if (rb_block_given_p()) { if (rb_block_given_p()) {