mirror of
https://github.com/ruby/ruby.git
synced 2025-09-17 17:43:59 +02:00
merge revision(s) 43853: [Backport #9157]
* file.c (rb_readlink): fix buffer overflow on a long symlink. since rb_str_modify_expand() expands from its length but not its capacity, need to set the length properly for each expansion. [ruby-core:58592] [Bug #9157] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@43959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dd7ec71b12
commit
83c337f29a
4 changed files with 30 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
|||
Mon Dec 2 22:53:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* file.c (rb_readlink): fix buffer overflow on a long symlink. since
|
||||
rb_str_modify_expand() expands from its length but not its capacity,
|
||||
need to set the length properly for each expansion.
|
||||
[ruby-core:58592] [Bug #9157]
|
||||
|
||||
Fri Nov 29 00:31:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* common.mk (Doxyfile): tool/file2lastrev.rb needs running with
|
||||
|
|
1
file.c
1
file.c
|
@ -2531,6 +2531,7 @@ rb_readlink(VALUE path)
|
|||
) {
|
||||
rb_str_modify_expand(v, size);
|
||||
size *= 2;
|
||||
rb_str_set_len(v, size);
|
||||
}
|
||||
if (rv < 0) {
|
||||
rb_str_resize(v, 0);
|
||||
|
|
|
@ -391,6 +391,24 @@ class TestFileExhaustive < Test::Unit::TestCase
|
|||
rescue NotImplementedError
|
||||
end
|
||||
|
||||
def test_readlink_long_path
|
||||
return unless @symlinkfile
|
||||
bug9157 = '[ruby-core:58592] [Bug #9157]'
|
||||
assert_separately(["-", @symlinkfile, bug9157], <<-"end;")
|
||||
symlinkfile, bug9157 = *ARGV
|
||||
100.step(1000, 100) do |n|
|
||||
File.unlink(symlinkfile)
|
||||
link = "foo"*n
|
||||
begin
|
||||
File.symlink(link, symlinkfile)
|
||||
rescue Errno::ENAMETOOLONG
|
||||
break
|
||||
end
|
||||
assert_equal(link, File.readlink(symlinkfile), bug9157)
|
||||
end
|
||||
end;
|
||||
end
|
||||
|
||||
def test_unlink
|
||||
assert_equal(1, File.unlink(@file))
|
||||
make_file("foo", @file)
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#define RUBY_VERSION "2.0.0"
|
||||
#define RUBY_RELEASE_DATE "2013-11-29"
|
||||
#define RUBY_PATCHLEVEL 354
|
||||
#define RUBY_RELEASE_DATE "2013-12-02"
|
||||
#define RUBY_PATCHLEVEL 355
|
||||
|
||||
#define RUBY_RELEASE_YEAR 2013
|
||||
#define RUBY_RELEASE_MONTH 11
|
||||
#define RUBY_RELEASE_DAY 29
|
||||
#define RUBY_RELEASE_MONTH 12
|
||||
#define RUBY_RELEASE_DAY 2
|
||||
|
||||
#include "ruby/version.h"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue