Update to Ruby 2.0.0-p195 (rhbz#917374).

Fix object taint bypassing in DL and Fiddle (CVE-2013-2065).
This commit is contained in:
Vít Ondruch 2013-05-17 14:16:09 +02:00
parent ec047534c7
commit e1890f92f2
11 changed files with 52 additions and 129 deletions

1
.gitignore vendored
View File

@ -18,3 +18,4 @@ ruby-rev415a3ef9ab82c65a7abc-ext_tk.tar.gz
/ruby-1.9.3-p385.tar.gz
/ruby-2.0.0-r39387.tar.gz
/ruby-2.0.0-p0.tar.gz
/ruby-2.0.0-p195.tar.bz2

View File

@ -11,7 +11,7 @@ diff --git a/configure.in b/configure.in
index 418b0cb..d26fe5b 100644
--- a/configure.in
+++ b/configure.in
@@ -3362,6 +3362,8 @@ AC_SUBST(vendorarchdir)dnl
@@ -3419,6 +3419,8 @@ AC_SUBST(vendorarchdir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl

View File

@ -14,7 +14,7 @@ diff --git a/configure.in b/configure.in
index 1627d12..e064b2b 100644
--- a/configure.in
+++ b/configure.in
@@ -3292,6 +3292,13 @@ AC_ARG_WITH(vendorarchdir,
@@ -3349,6 +3349,13 @@ AC_ARG_WITH(vendorarchdir,
[vendorarchdir=$withval],
[vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
@ -28,7 +28,7 @@ index 1627d12..e064b2b 100644
unexpand_shvar rubylibprefix exec_prefix libdir RUBY_BASE_NAME
unexpand_shvar rubyarchprefix exec_prefix libdir arch RUBY_BASE_NAME archlibdir rubylibprefix
unexpand_shvar rubysitearchprefix exec_prefix libdir sitearch arch RUBY_BASE_NAME archlibdir sitearchlibdir rubylibprefix
@@ -3358,6 +3365,7 @@ AC_SUBST(sitearchdir)dnl
@@ -3415,6 +3422,7 @@ AC_SUBST(sitearchdir)dnl
AC_SUBST(vendordir)dnl
AC_SUBST(vendorlibdir)dnl
AC_SUBST(vendorarchdir)dnl

View File

@ -13,7 +13,7 @@ diff --git a/configure.in b/configure.in
index 5850bbf..7604bb8 100644
--- a/configure.in
+++ b/configure.in
@@ -3306,6 +3306,9 @@ unexpand_shvar exec_prefix prefix
@@ -3367,6 +3367,9 @@ unexpand_shvar exec_prefix prefix
if test ${RUBY_LIB_VERSION_STYLE+set}; then
AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION_STYLE, $RUBY_LIB_VERSION_STYLE !<verconf>!)
else

View File

@ -1,49 +0,0 @@
Index: ChangeLog
===================================================================
--- ChangeLog (revision 39727)
+++ ChangeLog (revision 39728)
@@ -1,3 +1,15 @@
+Tue Mar 12 00:56:19 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/thread/test_queue.rb (TestQueue#test_thr_kill): reduce
+ iterations from 2000 to 250. When running on uniprocessor
+ systems, every th.kill needs TIME_QUANTUM_USEC time (i.e.
+ 100msec on posix systems). Because, "r.read 1" is 3 steps
+ operations that 1) release GVL 2) read 3) acquire gvl and
+ (1) invoke context switch to main thread. and then, main
+ thread's th.kill resume (1), but not (2). Thus read interrupt
+ need TIME_QUANTUM_USEC. Then maximum iteration is 30sec/100msec
+ = 300.
+
Sun Feb 24 15:16:00 2013 Eric Hodel <drbrain@segment7.net>
* lib/net/http.rb: Removed duplicate Accept-Encoding in Net::HTTP#get.
Index: test/thread/test_queue.rb
===================================================================
--- test/thread/test_queue.rb (revision 39727)
+++ test/thread/test_queue.rb (revision 39728)
@@ -85,7 +85,7 @@
bug5343 = '[ruby-core:39634]'
Dir.mktmpdir {|d|
timeout = 30
- total_count = 2000
+ total_count = 250
begin
assert_normal_exit(<<-"_eom", bug5343, {:timeout => timeout, :chdir=>d})
require "thread"
@@ -98,7 +98,8 @@
r.read 1
}
queue.pop
- th.kill.join
+ th.kill
+ th.join
end
_eom
rescue Timeout::Error
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
Merged /trunk:r39688

View File

@ -3,7 +3,7 @@ diff --git a/configure.in b/configure.in
index be7d4fe..2d511e5 100644
--- a/configure.in
+++ b/configure.in
@@ -2597,14 +2597,9 @@ AS_CASE(["$target_os"],
@@ -2574,14 +2574,9 @@ AS_CASE(["$target_os"],
AC_SUBST(setup)
@ -21,23 +21,23 @@ index be7d4fe..2d511e5 100644
BTESTRUBY='$(MINIRUBY)'
if test x"$cross_compiling" = xyes; then
@@ -3244,9 +3239,6 @@ AS_CASE(["$target_os"],
@@ -3211,9 +3216,6 @@ AS_CASE(["$target_os"],
shvar_to_cpp() {
local var="$1" val="$2"
- local exec_prefix_pat="`echo \"${exec_prefix}\" | sed 's/\\./\\\\./g'`"
- local arch_pat="`echo \"${arch}\" | sed 's/\\./\\\\./g'`"
- local sitearch_pat="`echo \"${sitearch}\" | sed 's/\\./\\\\./g'`"
val="`echo '"'"${val}"'"' |
var="$1" val="$2"
- exec_prefix_pat="`echo \"${exec_prefix}\" | sed 's/\\./\\\\./g'`"
- arch_pat="`echo \"${arch}\" | sed 's/\\./\\\\./g'`"
- sitearch_pat="`echo \"${sitearch}\" | sed 's/\\./\\\\./g'`"
val="`echo '\"'\"${val}\"'\"' |
sed \
-e 's/\${\([[A-Z][A-Z_]]*\)}/"\1"/g' \
@@ -3269,9 +3261,6 @@ shvar_to_cpp() {
-e 's/\${rubyarchprefix}/"RUBY_ARCH_PREFIX_FOR(arch)"/g' \
-e 's/\${rubysitearchprefix}/"RUBY_SITEARCH_PREFIX_FOR(arch)"/g' \
-e 's/\${exec_prefix}/"RUBY_EXEC_PREFIX"/g' \
- -e "s|${exec_prefix_pat}/|"'"RUBY_EXEC_PREFIX"/|g' \
- -e "s|${arch_pat}|"'"arch"|g' \
- -e "s|${sitearch_pat}|"'"sitearch"|g' \
-e 's|^\"NONE/|RUBY_EXEC_PREFIX\"/|' \
-e 's|^\"NONE\"|\"'"${prefix}"'\"|' \
-e 's/^\"\"\(.\)/\1/;s/\(.\)\"\"$/\1/'
-e 's/\${\([[A-Z][A-Z_]]*\)}/\"\1\"/g' \
@@ -3236,9 +3238,6 @@ shvar_to_cpp() {
-e 's/\${rubyarchprefix}/\"RUBY_ARCH_PREFIX_FOR(arch)\"/g' \
-e 's/\${rubysitearchprefix}/\"RUBY_SITEARCH_PREFIX_FOR(arch)\"/g' \
-e 's/\${exec_prefix}/\"RUBY_EXEC_PREFIX\"/g' \
- -e \"s|${exec_prefix_pat}/|\"'\"RUBY_EXEC_PREFIX\"/|g' \
- -e \"s|${arch_pat}|\"'\"arch\"|g' \
- -e \"s|${sitearch_pat}|\"'\"sitearch\"|g' \
-e 's|^\\\"NONE/|RUBY_EXEC_PREFIX\\\"/|' \
-e 's|^\\\"NONE\\\"|\\\"'\"${prefix}\"'\\\"|' \
-e 's/^\\\"\\\"\(.\)/\1/;s/\(.\)\\\"\\\"$/\1/'

View File

@ -1,7 +1,7 @@
%global major_version 2
%global minor_version 0
%global teeny_version 0
%global patch_level 0
%global patch_level 195
%global major_minor_version %{major_version}.%{minor_version}
@ -26,10 +26,10 @@
%endif
%global release 7
%global release 8
%{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
%global rubygems_version 2.0.0
%global rubygems_version 2.0.2
# The RubyGems library has to stay out of Ruby directory three, since the
# RubyGems should be share by all Ruby implementations.
@ -66,7 +66,7 @@ Group: Development/Languages
# Public Domain for example for: include/ruby/st.h, strftime.c, ...
License: (Ruby or BSD) and Public Domain
URL: http://ruby-lang.org/
Source0: ftp://ftp.ruby-lang.org/pub/%{name}/%{major_minor_version}/%{ruby_archive}.tar.gz
Source0: ftp://ftp.ruby-lang.org/pub/%{name}/%{major_minor_version}/%{ruby_archive}.tar.bz2
Source1: operating_system.rb
# TODO: Try to push SystemTap support upstream.
Source2: libruby.stp
@ -137,10 +137,8 @@ Patch13: rubygems-2.0.0-Do-not-modify-global-Specification.dirs-during-insta.pat
Patch14: rubygems-2.0.0-Fixes-for-empty-ruby-version.patch
# Fixes issues with wrong value of Rubygem's shebang introduced in r39267.
# https://bugs.ruby-lang.org/issues/7915
# TODO:
Patch15: ruby-2.0.0-revert-unexpand-exec-prefix.patch
# Fixes test_thr_kill(TestQueue) random test failure.
# https://bugs.ruby-lang.org/issues/7521
Patch16: ruby-2.0.0-p57-test_thr_kill.patch
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: ruby(rubygems) >= %{rubygems_version}
@ -405,7 +403,6 @@ Tcl/Tk interface for the object-oriented scripting language Ruby.
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p0
# Provide an example of usage of the tapset:
cp -a %{SOURCE3} .
@ -849,6 +846,10 @@ make check TESTS="-v $DISABLE_TESTS"
%{ruby_libdir}/tkextlib
%changelog
* Fri May 17 2013 Vít Ondruch <vondruch@redhat.com> - 2.0.0.195-8
- Update to Ruby 2.0.0-p195 (rhbz#917374).
- Fix object taint bypassing in DL and Fiddle (CVE-2013-2065).
* Fri Apr 19 2013 Vít Ondruch <vondruch@redhat.com> - 2.0.0.0-7
- Macro definition moved into macros.ruby and macros.rubygems files.
- Added filtering macros.

View File

@ -13,7 +13,7 @@ diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_inst
index d811f62..dffa8df 100644
--- a/lib/rubygems/dependency_installer.rb
+++ b/lib/rubygems/dependency_installer.rb
@@ -319,9 +319,6 @@ class Gem::DependencyInstaller
@@ -330,9 +330,6 @@ class Gem::DependencyInstaller
last = @gems_to_install.size - 1
@gems_to_install.each_with_index do |spec, index|
@ -64,7 +64,7 @@ index dffa8df..841f26a 100644
@bin_dir = options[:bin_dir]
@dev_shallow = options[:dev_shallow]
@development = options[:development]
@@ -91,7 +88,7 @@ class Gem::DependencyInstaller
@@ -92,7 +89,7 @@ class Gem::DependencyInstaller
@installed_gems = []
@toplevel_specs = nil
@ -73,7 +73,7 @@ index dffa8df..841f26a 100644
# Set with any errors that SpecFetcher finds while search through
# gemspecs for a dep
@@ -185,7 +182,7 @@ class Gem::DependencyInstaller
@@ -202,7 +199,7 @@ class Gem::DependencyInstaller
# that this isn't dependent only on the currently installed gems
dependency_list.specs.reject! { |spec|
not keep_names.include?(spec.full_name) and
@ -82,7 +82,7 @@ index dffa8df..841f26a 100644
}
unless dependency_list.ok? or @ignore_dependencies or @force then
@@ -237,7 +234,7 @@ class Gem::DependencyInstaller
@@ -254,7 +251,7 @@ class Gem::DependencyInstaller
to_do.push t.spec
end
@ -91,7 +91,7 @@ index dffa8df..841f26a 100644
@available << results
results.inject_into_list dependency_list
@@ -349,7 +346,7 @@ class Gem::DependencyInstaller
@@ -360,7 +357,7 @@ class Gem::DependencyInstaller
:force => @force,
:format_executable => @format_executable,
:ignore_dependencies => @ignore_dependencies,
@ -118,7 +118,7 @@ diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_inst
index 841f26a..abcfa0f 100644
--- a/lib/rubygems/dependency_installer.rb
+++ b/lib/rubygems/dependency_installer.rb
@@ -346,7 +346,7 @@ class Gem::DependencyInstaller
@@ -357,7 +357,7 @@ class Gem::DependencyInstaller
:force => @force,
:format_executable => @format_executable,
:ignore_dependencies => @ignore_dependencies,
@ -131,7 +131,7 @@ diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 780a88b..6543130 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -536,13 +536,13 @@ class Gem::Installer
@@ -537,13 +537,13 @@ class Gem::Installer
:bin_dir => nil,
:env_shebang => false,
:force => false,

View File

@ -63,7 +63,7 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index bf77009..9ee78f7 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -1186,8 +1186,10 @@ class TestGem < Gem::TestCase
@@ -1198,8 +1198,10 @@ class TestGem < Gem::TestCase
end
def test_self_user_dir

View File

@ -1,7 +1,7 @@
From ec90622235ae19b28a327cb50a10e0311e8f3d71 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 3 Nov 2011 16:43:05 +0100
Subject: [PATCH 1/9] Add dedicate extensions folder into $LOAD_PATH.
Subject: [PATCH 1/8] Add dedicate extensions folder into $LOAD_PATH.
---
lib/rubygems/specification.rb | 32 ++++++++++++++++++++++++++++++--
@ -74,7 +74,7 @@ index cabdf8d..87b14d2 100644
From e42819f32fc5d935f7e7189ec4be8bdab0a2cf3f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 16 Nov 2011 13:26:48 +0100
Subject: [PATCH 2/9] Use spec's ext dir for extension installation.
Subject: [PATCH 2/8] Use spec's ext dir for extension installation.
---
lib/rubygems/installer.rb | 2 +-
@ -85,7 +85,7 @@ diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 780a88b..854c177 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -645,7 +645,7 @@ TEXT
@@ -646,7 +646,7 @@ TEXT
say "This could take a while..."
end
@ -167,7 +167,7 @@ index 492ddbe..c703827 100644
From 9a8556c609e800d0dbd24af416d613f2e82f323c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 9 Dec 2011 16:31:04 +0100
Subject: [PATCH 4/9] Fix the binary extension search path construction.
Subject: [PATCH 4/8] Fix the binary extension search path construction.
---
lib/rubygems/installer.rb | 2 +-
@ -178,7 +178,7 @@ diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 854c177..f1f2ad7 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -645,7 +645,7 @@ TEXT
@@ -646,7 +646,7 @@ TEXT
say "This could take a while..."
end
@ -216,7 +216,7 @@ index c703827..fa9ea6e 100644
From 476c2f90cc6f5f490858f253a9b23eb19d53d2fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 13 Dec 2011 12:14:54 +0100
Subject: [PATCH 5/9] Remove binary extensions during uninstall.
Subject: [PATCH 5/8] Remove binary extensions during uninstall.
---
lib/rubygems/uninstaller.rb | 1 +
@ -241,7 +241,7 @@ index d672b9d..5c31a0c 100644
From 35dc17e86f701fe1be80d98ace79735c535fd570 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 13 Dec 2011 14:27:14 +0100
Subject: [PATCH 6/9] Avoid dependency on customized operating_system.rb.
Subject: [PATCH 6/8] Avoid dependency on customized operating_system.rb.
---
lib/rubygems/defaults.rb | 11 +++++++++++
@ -293,7 +293,7 @@ index fa9ea6e..2b10499 100644
From 0937c0b0a3c2ed08ab5b0875f7f95e24157525c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 7 Feb 2013 13:07:34 +0100
Subject: [PATCH 7/9] Fix binary extensions installation when --install-dir is
Subject: [PATCH 7/8] Fix binary extensions installation when --install-dir is
specified.
---
@ -304,7 +304,7 @@ diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index f1f2ad7..e1577fc 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -645,7 +645,7 @@ TEXT
@@ -646,7 +646,7 @@ TEXT
say "This could take a while..."
end
@ -317,40 +317,10 @@ index f1f2ad7..e1577fc 100644
1.8.1.2
From 4d9675cab5decaef3c9f7f91b2f9c9abd2a19cea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 15 Feb 2013 16:24:29 +0100
Subject: [PATCH 8/9] mkmf does not create folder for binary extensions
anymore.
This was dropped in Ruby r37016 for some reasons :/
---
lib/rubygems/ext/builder.rb | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/rubygems/ext/builder.rb b/lib/rubygems/ext/builder.rb
index d7d953f..812c20c 100644
--- a/lib/rubygems/ext/builder.rb
+++ b/lib/rubygems/ext/builder.rb
@@ -21,6 +21,10 @@ class Gem::Ext::Builder
mf = mf.gsub(/^RUBYLIBDIR\s*=\s*\$[^$]*/, "RUBYLIBDIR = #{dest_path}")
mf = mf.gsub(/\s*\S+\.time$/, "")
+ # Folder creation was dropped in r37016 for some reasons :/
+ target_prefix = mf[/^target_prefix\s*=[^\S\n]*(.*)$/, 1]
+ FileUtils.mkdir_p File.join(dest_path, target_prefix) rescue nil # in case of perms issues -- lame
+
File.open('Makefile', 'wb') {|f| f.print mf}
# try to find make program from Ruby configure arguments first
--
1.8.1.2
From 062a11c59731f5875d5a8821a212c8a41cb84577 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 15 Feb 2013 17:07:07 +0100
Subject: [PATCH 9/9] Use correct option.
Subject: [PATCH 8/8] Use correct option.
---
lib/rubygems/installer.rb | 2 +-
@ -360,7 +330,7 @@ diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index e1577fc..1492c68 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -645,7 +645,7 @@ TEXT
@@ -646,7 +646,7 @@ TEXT
say "This could take a while..."
end

View File

@ -1 +1 @@
50d307c4dc9297ae59952527be4e755d ruby-2.0.0-p0.tar.gz
2f54faea6ee1ca500632ec3c0cb59cb6 ruby-2.0.0-p195.tar.bz2