diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-10-01 15:56:05 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-10-01 15:56:05 +0000 |
commit | 1b4d97ddba6b3190a4aecad2c6159e6ecd63604e (patch) | |
tree | bc13d8db7a8b41ff261c473ce6501751bf98cf8b /file.c | |
parent | 8e292f628567bad4b7e67d0fea28138785775651 (diff) | |
download | ruby-1b4d97ddba6b3190a4aecad2c6159e6ecd63604e.tar.gz |
* 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
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -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; } } |