From 84de99fabeb7451cf0822dcf43eb0812e89eddd3 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Tue, 2 Apr 2024 21:26:35 +0300 Subject: [PATCH] import rubygem-pg-1.5.4-1.module+el9.4.0+21222+faeeed2f --- .gitignore | 2 + .rubygem-pg.metadata | 2 + SOURCES/rubygem-pg-1.3.0-remove-rpath.patch | 17 ++ ...ly-retype-timespec-fields-to-int64_t.patch | 33 +++ ...e-buffer-overflows-on-32-bit-systems.patch | 75 +++++ SPECS/rubygem-pg.spec | 259 ++++++++++++++++++ 6 files changed, 388 insertions(+) create mode 100644 .gitignore create mode 100644 .rubygem-pg.metadata create mode 100644 SOURCES/rubygem-pg-1.3.0-remove-rpath.patch create mode 100644 SOURCES/rubygem-pg-1.5.4-Explicitly-retype-timespec-fields-to-int64_t.patch create mode 100644 SOURCES/rubygem-pg-1.5.4-Fix-possible-buffer-overflows-on-32-bit-systems.patch create mode 100644 SPECS/rubygem-pg.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b76c9f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/pg-1.5.4-spec.tar.gz +SOURCES/pg-1.5.4.gem diff --git a/.rubygem-pg.metadata b/.rubygem-pg.metadata new file mode 100644 index 0000000..99a747c --- /dev/null +++ b/.rubygem-pg.metadata @@ -0,0 +1,2 @@ +9802fe4e66ed86f5881692181a48d48ec137eb93 SOURCES/pg-1.5.4-spec.tar.gz +b4ff1dfd1a5b2c269d402d1c21380074c25afa6a SOURCES/pg-1.5.4.gem diff --git a/SOURCES/rubygem-pg-1.3.0-remove-rpath.patch b/SOURCES/rubygem-pg-1.3.0-remove-rpath.patch new file mode 100644 index 0000000..4a21c71 --- /dev/null +++ b/SOURCES/rubygem-pg-1.3.0-remove-rpath.patch @@ -0,0 +1,17 @@ +diff --git a/ext/extconf.rb b/ext/extconf.rb +--- a/ext/extconf.rb ++++ b/ext/extconf.rb +@@ -54,13 +54,6 @@ else + dlldir = libdir + end + +- # Try to use runtime path linker option, even if RbConfig doesn't know about it. +- # The rpath option is usually set implicit by dir_config(), but so far not +- # on MacOS-X. +- if dlldir && RbConfig::CONFIG["RPATHFLAG"].to_s.empty? +- append_ldflags "-Wl,-rpath,#{dlldir.quote}" +- end +- + if /mswin/ =~ RUBY_PLATFORM + $libs = append_library($libs, 'ws2_32') + end diff --git a/SOURCES/rubygem-pg-1.5.4-Explicitly-retype-timespec-fields-to-int64_t.patch b/SOURCES/rubygem-pg-1.5.4-Explicitly-retype-timespec-fields-to-int64_t.patch new file mode 100644 index 0000000..4f1f4d3 --- /dev/null +++ b/SOURCES/rubygem-pg-1.5.4-Explicitly-retype-timespec-fields-to-int64_t.patch @@ -0,0 +1,33 @@ +From 110665fa55292027e835f9d6bdfb3ed608b0a6ca Mon Sep 17 00:00:00 2001 +From: Jarek Prokop +Date: Fri, 20 Oct 2023 17:52:11 +0200 +Subject: [PATCH] Explicitly retype timespec fields to int64_t to fix + compatibility with 32bit arches. + +Timespec fields' time_t type is not guaranteed to be any particular integer. +Tests with binary timestamp conversion are failing on 32bit arches (e.g. intel x86) +until they are retyped into int64_t, which fixes the issue with encoding the Time instances. + +Decoder doesn't need adjusting. It returns the correct time from the encoded binary representation. + +Resolves: https://github.com/ged/ruby-pg/issues/545 +--- + ext/pg_binary_encoder.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ext/pg_binary_encoder.c b/ext/pg_binary_encoder.c +index e074a85..df45676 100644 +--- a/ext/pg_binary_encoder.c ++++ b/ext/pg_binary_encoder.c +@@ -185,7 +185,7 @@ pg_bin_enc_timestamp(t_pg_coder *this, VALUE value, char *out, VALUE *intermedia + ts = rb_time_timespec(*intermediate); + /* PostgreSQL's timestamp is based on year 2000 and Ruby's time is based on 1970. + * Adjust the 30 years difference. */ +- timestamp = (ts.tv_sec - 10957L * 24L * 3600L) * 1000000 + (ts.tv_nsec / 1000); ++ timestamp = ((int64_t)ts.tv_sec - 10957L * 24L * 3600L) * 1000000 + ((int64_t)ts.tv_nsec / 1000); + + if( this->flags & PG_CODER_TIMESTAMP_DB_LOCAL ) { + /* send as local time */ +-- +2.42.0 + diff --git a/SOURCES/rubygem-pg-1.5.4-Fix-possible-buffer-overflows-on-32-bit-systems.patch b/SOURCES/rubygem-pg-1.5.4-Fix-possible-buffer-overflows-on-32-bit-systems.patch new file mode 100644 index 0000000..8ceb03e --- /dev/null +++ b/SOURCES/rubygem-pg-1.5.4-Fix-possible-buffer-overflows-on-32-bit-systems.patch @@ -0,0 +1,75 @@ +From fb3fba9eac65291b20f22eb956f02490d62de3ec Mon Sep 17 00:00:00 2001 +From: Lars Kanis +Date: Thu, 19 Oct 2023 18:32:31 +0200 +Subject: [PATCH] Fix possible buffer overflows on 32 bit systems + +Comparing pointers after adding lengths is dangerous, since the length can overflow the pointer, so that the comparison leads to wrong results. +Comparing lengths only fixes this issue. + +This lead to segfault in the following spec on x86: + + it "should raise an error at grabage COPY format" do + expect{ decoder.decode("123\t \0\\\t\\") } + .to raise_error(ArgumentError, /premature.*at position: 7$/) + end +--- + ext/pg_copy_coder.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/ext/pg_copy_coder.c b/ext/pg_copy_coder.c +index 16d5c15..f2fe029 100644 +--- a/ext/pg_copy_coder.c ++++ b/ext/pg_copy_coder.c +@@ -795,26 +795,26 @@ pg_bin_dec_copy_row(t_pg_coder *conv, const char *input_line, int len, int _tupl + cur_ptr = input_line; + line_end_ptr = input_line + len; + +- if (cur_ptr + 11 <= line_end_ptr && memcmp(cur_ptr, BinarySignature, 11) == 0){ ++ if (line_end_ptr - cur_ptr >= 11 && memcmp(cur_ptr, BinarySignature, 11) == 0){ + /* binary COPY header signature detected -> just drop it */ + int ext_bytes; + cur_ptr += 11; + + /* read flags */ +- if (cur_ptr + 4 > line_end_ptr) goto length_error; ++ if (line_end_ptr - cur_ptr < 4 ) goto length_error; + cur_ptr += 4; + + /* read header extensions */ +- if (cur_ptr + 4 > line_end_ptr) goto length_error; ++ if (line_end_ptr - cur_ptr < 4 ) goto length_error; + ext_bytes = read_nbo32(cur_ptr); + if (ext_bytes < 0) goto length_error; + cur_ptr += 4; +- if (cur_ptr + ext_bytes > line_end_ptr) goto length_error; ++ if (line_end_ptr - cur_ptr < ext_bytes ) goto length_error; + cur_ptr += ext_bytes; + } + + /* read row header */ +- if (cur_ptr + 2 > line_end_ptr) goto length_error; ++ if (line_end_ptr - cur_ptr < 2 ) goto length_error; + nfields = read_nbo16(cur_ptr); + cur_ptr += 2; + +@@ -830,7 +830,7 @@ pg_bin_dec_copy_row(t_pg_coder *conv, const char *input_line, int len, int _tupl + VALUE field_value; + + /* read field size */ +- if (cur_ptr + 4 > line_end_ptr) goto length_error; ++ if (line_end_ptr - cur_ptr < 4 ) goto length_error; + input_len = read_nbo32(cur_ptr); + cur_ptr += 4; + +@@ -839,7 +839,7 @@ pg_bin_dec_copy_row(t_pg_coder *conv, const char *input_line, int len, int _tupl + /* NULL indicator */ + rb_ary_push(array, Qnil); + } else { +- if (cur_ptr + input_len > line_end_ptr) goto length_error; ++ if (line_end_ptr - cur_ptr < input_len ) goto length_error; + + /* copy input data to field_str */ + PG_RB_STR_ENSURE_CAPA( field_str, input_len, output_ptr, end_capa_ptr ); +-- +2.42.0 + diff --git a/SPECS/rubygem-pg.spec b/SPECS/rubygem-pg.spec new file mode 100644 index 0000000..60ef027 --- /dev/null +++ b/SPECS/rubygem-pg.spec @@ -0,0 +1,259 @@ +# Generated from pg-0.11.0.gem by gem2rpm -*- rpm-spec -*- +%global gem_name pg + +Name: rubygem-%{gem_name} +Version: 1.5.4 +Release: 1%{?dist} +Summary: A Ruby interface to the PostgreSQL RDBMS +License: (BSD-2-Clause OR Ruby) AND PostgreSQL +URL: https://github.com/ged/ruby-pg +Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem +# git clone --no-checkout https://github.com/ged/ruby-pg.git +# git -C ruby-pg archive -v -o pg-1.5.4-spec.tar.gz v1.5.4 spec/ +Source1: %{gem_name}-%{version}-spec.tar.gz +# Disable RPATH. +# https://github.com/ged/ruby-pg/issues/183 +Patch0: rubygem-pg-1.3.0-remove-rpath.patch +# Fix integer arithmetic on timespec struct fields on 32bit systems. +# The time_t type that is the type of timespec struct fields is not guaranteed +# to be any particular size or type. Therefore we need to explicitly retype +# to avoid buffer {over,under}flow. +# See `man 3 timespec` and `man 3 time_t` for further reference. +# https://github.com/ged/ruby-pg/issues/545 +# https://github.com/ged/ruby-pg/pull/547 +Patch1: rubygem-pg-1.5.4-Explicitly-retype-timespec-fields-to-int64_t.patch +# Fix possible buffer overflows. +# Found when upstream was investigating the following issue: +# https://github.com/ged/ruby-pg/issues/545 +# https://github.com/ged/ruby-pg/pull/548 +Patch2: rubygem-pg-1.5.4-Fix-possible-buffer-overflows-on-32-bit-systems.patch +# ext/pg_text_decoder.c +Requires: rubygem(bigdecimal) +# lib/pg/text_{de,en}coder.rb +Requires: rubygem(json) +BuildRequires: ruby(release) +BuildRequires: rubygems-devel +BuildRequires: ruby-devel +# Compiler is required for build of gem binary extension. +# https://fedoraproject.org/wiki/Packaging:C_and_C++#BuildRequires_and_Requires +BuildRequires: gcc + +BuildRequires: postgresql-server libpq-devel +BuildRequires: rubygem(bigdecimal) +BuildRequires: rubygem(rspec) + +%description +This is the extension library to access a PostgreSQL database from Ruby. +This library works with PostgreSQL 9.3 and later. + + +%package doc +Summary: Documentation for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch + +%description doc +Documentation for %{name}. + +%prep +%setup -q -n %{gem_name}-%{version} -b 1 + +%patch -P 0 -p1 +%patch -P 1 -p1 +%patch -P 2 -p1 + +%build +# Create the gem as gem install only works on a gem file +gem build ../%{gem_name}-%{version}.gemspec + +# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir +# by default, so that we can move it into the buildroot in %%install +%gem_install + +%install +mkdir -p %{buildroot}%{gem_dir} +cp -a .%{gem_dir}/* \ + %{buildroot}%{gem_dir}/ + +mkdir -p %{buildroot}%{gem_extdir_mri} +cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/ + +# Prevent dangling symlink in -debuginfo (rhbz#878863). +rm -rf %{buildroot}%{gem_instdir}/ext/ + + +%check +pushd .%{gem_instdir} +ln -s %{_builddir}/spec . + +# Set --verbose to show detail log by $VERBOSE. +# See https://github.com/ged/ruby-pg/blob/master/spec/helpers.rb $VERBOSE +# Assign a random port to consider a case of multi builds in parallel in a host. +# https://github.com/ged/ruby-pg/pull/39 +if ! PGPORT="$((54321 + ${RANDOM} % 1000))" ruby -S --verbose \ + rspec -I$(dirs +1)%{gem_extdir_mri} -f d spec; then + echo "==== [setup.log start ] ====" + cat tmp_test_specs/setup.log + echo "==== [setup.log end ] ====" + false +fi +popd + +%files +%dir %{gem_instdir} +%{gem_extdir_mri} +%exclude %{gem_instdir}/.* +%license %{gem_instdir}/BSDL +%license %{gem_instdir}/LICENSE +%license %{gem_instdir}/POSTGRES +%{gem_libdir} +%exclude %{gem_cache} +%{gem_spec} + +%files doc +%doc %{gem_docdir} +%doc %{gem_instdir}/Contributors.rdoc +%{gem_instdir}/Gemfile +%doc %{gem_instdir}/History.md +%doc %{gem_instdir}/Manifest.txt +%doc %{gem_instdir}/README-OS_X.rdoc +%doc %{gem_instdir}/README-Windows.rdoc +%lang(ja) %doc %{gem_instdir}/README.ja.md +%doc %{gem_instdir}/README.md +%{gem_instdir}/Rakefile* +%{gem_instdir}/rakelib/* +%{gem_instdir}/certs +%{gem_instdir}/misc +%{gem_instdir}/pg.gemspec +%{gem_instdir}/sample +# The translations are only related to README and the readme is already in +# japanese (AFAICT) when we build an RPM from the gem, so we shouldn't need +# this directory at all. +# https://github.com/ged/ruby-pg/pull/549 +%exclude %{gem_instdir}/translation + +%changelog +* Tue Apr 02 2024 MSVSphere Packaging Team - 1.5.4-1 +- Rebuilt for MSVSphere 9.4 beta + +* Fri Jan 19 2024 Jarek Prokop - 1.5.4-1 +- Upgrade to pg 1.5.4. + Related: RHEL-17089 + +* Thu May 26 2022 Jarek Prokop - 1.3.5-1 +- Update to pg 1.3.5 + Related: rhbz#2063773 + +* Fri May 29 2020 Jun Aruga - 1.2.3-1 +- Update to pg 1.2.3 by merging Fedora master branch (commit: 5db4d26) + Resolves: rhbz#1817135 + +* Wed Jun 12 2019 Jun Aruga - 1.1.4-1 +- Update to pg 1.1.4 by merging Fedora master branch (commit: 397796e) + * BuildRequires: s/postgresql-devel/libpq-devel/ + * Add marking lines at the start and end of the setup.log + Resolves: rhbz#1672575 + +* Thu May 23 2019 Jun Aruga - 1.0.0-2 +- Assign a random testing port. + +* Tue Feb 13 2018 Vít Ondruch - 1.0.0-1 +- Update to pg 1.0.0. + +* Fri Feb 09 2018 Fedora Release Engineering - 0.21.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Jan 20 2018 Björn Esser - 0.21.0-4 +- Rebuilt for switch to libxcrypt + +* Thu Jan 04 2018 Vít Ondruch - 0.21.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.5 + +* Fri Dec 08 2017 Jun Aruga - 0.21.0-2 +- Fix failed tests for PostgreSQL-10. + +* Thu Aug 17 2017 Vít Ondruch - 0.21.0-1 +- Update to pg 0.21.0. + +* Thu Aug 03 2017 Fedora Release Engineering - 0.20.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 0.20.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 29 2017 Vít Ondruch - 0.20.0-1 +- Update to pg 0.20.0. + +* Sat Feb 11 2017 Fedora Release Engineering - 0.18.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sun Jan 15 2017 Mamoru TASAKA - 0.18.4-3 +- F-26: rebuild for ruby24 +- Patch from the upstream for test failure with integer unification + +* Thu Feb 04 2016 Fedora Release Engineering - 0.18.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jan 06 2016 Vít Ondruch - 0.18.4-1 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.3 +- Update to pg 0.18.4. + +* Wed Aug 26 2015 Vít Ondruch - 0.18.2-1 +- Update to pg 0.18.2. + +* Thu Jun 18 2015 Fedora Release Engineering - 0.18.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Jan 16 2015 Vít Ondruch - 0.18.1-1 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.2 +- Update to pg 0.18.1. + +* Mon Aug 18 2014 Fedora Release Engineering - 0.17.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 0.17.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Apr 15 2014 Vít Ondruch - 0.17.1-1 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.1 +- Update to pg 0.17.1. + +* Sun Aug 04 2013 Fedora Release Engineering - 0.14.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Mar 07 2013 Vít Ondruch - 0.14.1-1 +- Rebuild for https://fedoraproject.org/wiki/Features/Ruby_2.0.0 +- Update to pg 0.14.1. + +* Thu Feb 14 2013 Fedora Release Engineering - 0.12.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Jul 21 2012 Fedora Release Engineering - 0.12.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Feb 07 2012 Vít Ondruch - 0.12.2-2 +- Obsolete ruby-postgress, which was retired. + +* Tue Jan 24 2012 Vít Ondruch - 0.12.2-1 +- Rebuilt for Ruby 1.9.3. +- Upgrade to pg 0.12.2. + +* Sat Jan 14 2012 Fedora Release Engineering - 0.11.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Jun 03 2011 Vít Ondruch - 0.11.0-5 +- Pass CFLAGS to extconf.rb. + +* Fri Jun 03 2011 Vít Ondruch - 0.11.0-4 +- Binary extension moved into ruby_sitearch dir. +- -doc subpackage made architecture independent. + +* Wed Jun 01 2011 Vít Ondruch - 0.11.0-3 +- Quoted upstream license clarification. + +* Mon May 30 2011 Vít Ondruch - 0.11.0-2 +- Removed/fixed shebang in non-executables. +- Removed sources. + +* Thu May 26 2011 Vít Ondruch - 0.11.0-1 +- Initial package