From 3c9cf6c1bd70862ba33add3e5a2c19c1e3c0a358 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Wed, 25 Jun 2008 08:32:24 +0000 Subject: [PATCH] - Fix a segfault issue. (#452810) --- ruby-1.8.6.230-string-str_buf_cat.patch | 28 +++++++++++++++++++++++++ ruby.spec | 7 ++++++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 ruby-1.8.6.230-string-str_buf_cat.patch diff --git a/ruby-1.8.6.230-string-str_buf_cat.patch b/ruby-1.8.6.230-string-str_buf_cat.patch new file mode 100644 index 0000000..287ddc9 --- /dev/null +++ b/ruby-1.8.6.230-string-str_buf_cat.patch @@ -0,0 +1,28 @@ +diff -pruN ruby-1.8.6-p230.orig/string.c ruby-1.8.6-p230/string.c +--- ruby-1.8.6-p230.orig/string.c 2008-06-20 18:24:53.000000000 +0900 ++++ ruby-1.8.6-p230/string.c 2008-06-25 16:10:17.000000000 +0900 +@@ -693,9 +693,13 @@ str_buf_cat(str, ptr, len) + const char *ptr; + long len; + { +- long capa, total; ++ long capa, total, off = -1; + + rb_str_modify(str); ++ if (ptr >= RSTRING(str)->ptr && ptr <= RSTRING(str)->ptr + RSTRING(str)->len) { ++ off = ptr - RSTRING(str)->ptr; ++ } ++ if (len == 0) return 0; + if (FL_TEST(str, STR_ASSOC)) { + FL_UNSET(str, STR_ASSOC); + capa = RSTRING(str)->aux.capa = RSTRING(str)->len; +@@ -717,6 +721,9 @@ str_buf_cat(str, ptr, len) + } + RESIZE_CAPA(str, capa); + } ++ if (off != -1) { ++ ptr = RSTRING(str)->ptr + off; ++ } + memcpy(RSTRING(str)->ptr + RSTRING(str)->len, ptr, len); + RSTRING(str)->len = total; + RSTRING(str)->ptr[total] = '\0'; /* sentinel */ diff --git a/ruby.spec b/ruby.spec index 656c16b..77dc6a2 100644 --- a/ruby.spec +++ b/ruby.spec @@ -12,7 +12,7 @@ Name: ruby Version: %{rubyver}%{?dotpatchlevel} -Release: 1%{?dist} +Release: 2%{?dist} License: Ruby or GPLv2 URL: http://www.ruby-lang.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -34,6 +34,7 @@ Patch21: ruby-deprecated-sitelib-search-path.patch Patch22: ruby-deprecated-search-path.patch Patch23: ruby-multilib.patch Patch25: ruby-1.8.6.111-gcc43.patch +Patch26: ruby-1.8.6.230-string-str_buf_cat.patch Summary: An interpreter of object-oriented scripting language Group: Development/Languages @@ -152,6 +153,7 @@ pushd %{name}-%{arcver} %patch23 -p1 %endif %patch25 -p1 +%patch26 -p1 popd %build @@ -502,6 +504,9 @@ rm -rf tmp-ruby-docs %{_datadir}/emacs/site-lisp/site-start.d/ruby-mode-init.el %changelog +* Wed Jun 25 2008 Akira TAGOH - 1.8.6.230-2 +- Fix a segfault issue. (#452810) + * Tue Jun 24 2008 Akira TAGOH - 1.8.6.230-1 - New upstream release. - Security fixes. (#452295)