From 1b4d97ddba6b3190a4aecad2c6159e6ecd63604e Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 1 Oct 2004 15:56:05 +0000 Subject: * string.c (rb_str_sum): string may be altered. [ruby-dev:24381] * eval.c (rb_f_eval): defer pointer retrieval to prevent unsafe sourcefile string modification. [ruby-dev:24373] * io.c (io_read): block string buffer modification during rb_io_fread() by freezing it temporarily. [ruby-dev:24366] * io.c (rb_io_s_popen): mode argument may be altered. [ruby-dev:24375] * file.c (rb_file_s_basename): ext argument may be altered. [ruby-dev:24377] * enum.c (enum_sort_by): use NODE instead of 2 element arrays. [ruby-dev:24378] * string.c (rb_str_chomp_bang): StringValue() may change the receiver. [ruby-dev:24371] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- file.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'file.c') diff --git a/file.c b/file.c index 578274c6ce..36cb34a8cc 100644 --- a/file.c +++ b/file.c @@ -1729,8 +1729,7 @@ rb_file_s_lchmod(argc, argv) { VALUE vmode; VALUE rest; - int mode; - long n; + long mode, n; rb_secure(2); rb_scan_args(argc, argv, "1*", &vmode, &rest); @@ -2654,11 +2653,11 @@ rb_file_s_basename(argc, argv) VALUE *argv; { VALUE fname, fext, basename; - char *name, *p, *ext = NULL; + char *name, *p; int f; if (rb_scan_args(argc, argv, "11", &fname, &fext) == 2) { - ext = StringValueCStr(fext); + StringValue(fext); } StringValue(fname); if (RSTRING(fname)->len == 0 || !*(name = RSTRING(fname)->ptr)) @@ -2674,7 +2673,7 @@ rb_file_s_basename(argc, argv) #endif } else if (!(p = strrdirsep(name))) { - if (NIL_P(fext) || !(f = rmext(name, ext))) { + if (NIL_P(fext) || !(f = rmext(name, StringValueCStr(fext)))) { f = chompdirsep(name) - name; if (f == RSTRING(fname)->len) return fname; } @@ -2682,7 +2681,7 @@ rb_file_s_basename(argc, argv) } else { while (isdirsep(*p)) p++; /* skip last / */ - if (NIL_P(fext) || !(f = rmext(p, ext))) { + if (NIL_P(fext) || !(f = rmext(p, StringValueCStr(fext)))) { f = chompdirsep(p) - p; } } -- cgit v1.2.3