Upgrade to pg 1.5.4.
This commit is contained in:
parent
50f0ea33e8
commit
fe6ee364f2
2
.rubygem-pg.metadata
Normal file
2
.rubygem-pg.metadata
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
b4ff1dfd1a5b2c269d402d1c21380074c25afa6a pg-1.5.4.gem
|
||||||
|
9802fe4e66ed86f5881692181a48d48ec137eb93 pg-1.5.4-spec.tar.gz
|
@ -1,17 +1,17 @@
|
|||||||
diff --git a/ext/extconf.rb b/ext/extconf.rb
|
diff --git a/ext/extconf.rb b/ext/extconf.rb
|
||||||
--- a/ext/extconf.rb
|
--- a/ext/extconf.rb
|
||||||
+++ b/ext/extconf.rb
|
+++ b/ext/extconf.rb
|
||||||
@@ -54,13 +54,6 @@
|
@@ -54,13 +54,6 @@ else
|
||||||
else
|
|
||||||
incdir, libdir = dir_config 'pg'
|
|
||||||
dlldir = libdir
|
dlldir = libdir
|
||||||
- end
|
end
|
||||||
-
|
|
||||||
- # Try to use runtime path linker option, even if RbConfig doesn't know about it.
|
- # 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
|
- # The rpath option is usually set implicit by dir_config(), but so far not
|
||||||
- # on MacOS-X.
|
- # on MacOS-X.
|
||||||
- if dlldir && RbConfig::CONFIG["RPATHFLAG"].to_s.empty?
|
- if dlldir && RbConfig::CONFIG["RPATHFLAG"].to_s.empty?
|
||||||
- append_ldflags "-Wl,-rpath,#{dlldir.quote}"
|
- append_ldflags "-Wl,-rpath,#{dlldir.quote}"
|
||||||
|
- end
|
||||||
|
-
|
||||||
|
if /mswin/ =~ RUBY_PLATFORM
|
||||||
|
$libs = append_library($libs, 'ws2_32')
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
From 110665fa55292027e835f9d6bdfb3ed608b0a6ca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jarek Prokop <jprokop@redhat.com>
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,75 @@
|
|||||||
|
From fb3fba9eac65291b20f22eb956f02490d62de3ec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lars Kanis <kanis@comcard.de>
|
||||||
|
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
|
||||||
|
|
@ -2,23 +2,31 @@
|
|||||||
%global gem_name pg
|
%global gem_name pg
|
||||||
|
|
||||||
Name: rubygem-%{gem_name}
|
Name: rubygem-%{gem_name}
|
||||||
Version: 1.3.5
|
Version: 1.5.4
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: A Ruby interface to the PostgreSQL RDBMS
|
Summary: A Ruby interface to the PostgreSQL RDBMS
|
||||||
# Upstream license clarification (https://bitbucket.org/ged/ruby-pg/issue/72/)
|
License: (BSD-2-Clause OR Ruby) AND PostgreSQL
|
||||||
#
|
|
||||||
# The portions of the code that are BSD-licensed are licensed under
|
|
||||||
# the BSD 3-Clause license; the contents of the BSD file are incorrect.
|
|
||||||
#
|
|
||||||
License: (BSD or Ruby) and PostgreSQL
|
|
||||||
URL: https://github.com/ged/ruby-pg
|
URL: https://github.com/ged/ruby-pg
|
||||||
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
||||||
# git clone --no-checkout https://github.com/ged/ruby-pg.git
|
# git clone --no-checkout https://github.com/ged/ruby-pg.git
|
||||||
# git -C ruby-pg archive -v -o pg-1.3.5-spec.tar.gz v1.3.5 spec/
|
# 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
|
Source1: %{gem_name}-%{version}-spec.tar.gz
|
||||||
# Disable RPATH.
|
# Disable RPATH.
|
||||||
# https://github.com/ged/ruby-pg/issues/183
|
# https://github.com/ged/ruby-pg/issues/183
|
||||||
Patch0: rubygem-pg-1.3.0-remove-rpath.patch
|
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
|
# ext/pg_text_decoder.c
|
||||||
Requires: rubygem(bigdecimal)
|
Requires: rubygem(bigdecimal)
|
||||||
# lib/pg/text_{de,en}coder.rb
|
# lib/pg/text_{de,en}coder.rb
|
||||||
@ -50,7 +58,9 @@ Documentation for %{name}.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n %{gem_name}-%{version} -b 1
|
%setup -q -n %{gem_name}-%{version} -b 1
|
||||||
|
|
||||||
%patch0 -p1
|
%patch -P 0 -p1
|
||||||
|
%patch -P 1 -p1
|
||||||
|
%patch -P 2 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# Create the gem as gem install only works on a gem file
|
# Create the gem as gem install only works on a gem file
|
||||||
@ -76,14 +86,6 @@ rm -rf %{buildroot}%{gem_instdir}/ext/
|
|||||||
pushd .%{gem_instdir}
|
pushd .%{gem_instdir}
|
||||||
ln -s %{_builddir}/spec .
|
ln -s %{_builddir}/spec .
|
||||||
|
|
||||||
# Test failures with disabled netwrok.
|
|
||||||
# https://github.com/ged/ruby-pg/issues/421
|
|
||||||
sed -i -r 's|\\d\+\\\.\\d\+\\\.\\d\+\\\.\\d\+|(\0)?|' spec/pg/connection_spec.rb
|
|
||||||
|
|
||||||
# Disable flaky test. This is problematic on most architectures.
|
|
||||||
# https://github.com/ged/ruby-pg/issues/424
|
|
||||||
sed -i -e '/it "needs to flush data after send_query" do/a\ skip' spec/pg/connection_spec.rb
|
|
||||||
|
|
||||||
# Set --verbose to show detail log by $VERBOSE.
|
# Set --verbose to show detail log by $VERBOSE.
|
||||||
# See https://github.com/ged/ruby-pg/blob/master/spec/helpers.rb $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.
|
# Assign a random port to consider a case of multi builds in parallel in a host.
|
||||||
@ -102,8 +104,8 @@ popd
|
|||||||
%{gem_extdir_mri}
|
%{gem_extdir_mri}
|
||||||
%exclude %{gem_instdir}/.*
|
%exclude %{gem_instdir}/.*
|
||||||
%license %{gem_instdir}/BSDL
|
%license %{gem_instdir}/BSDL
|
||||||
%license %{gem_instdir}/POSTGRES
|
|
||||||
%license %{gem_instdir}/LICENSE
|
%license %{gem_instdir}/LICENSE
|
||||||
|
%license %{gem_instdir}/POSTGRES
|
||||||
%{gem_libdir}
|
%{gem_libdir}
|
||||||
%exclude %{gem_cache}
|
%exclude %{gem_cache}
|
||||||
%{gem_spec}
|
%{gem_spec}
|
||||||
@ -112,20 +114,29 @@ popd
|
|||||||
%doc %{gem_docdir}
|
%doc %{gem_docdir}
|
||||||
%doc %{gem_instdir}/Contributors.rdoc
|
%doc %{gem_instdir}/Contributors.rdoc
|
||||||
%{gem_instdir}/Gemfile
|
%{gem_instdir}/Gemfile
|
||||||
%doc %{gem_instdir}/History.rdoc
|
%doc %{gem_instdir}/History.md
|
||||||
%doc %{gem_instdir}/Manifest.txt
|
%doc %{gem_instdir}/Manifest.txt
|
||||||
%doc %{gem_instdir}/README-OS_X.rdoc
|
%doc %{gem_instdir}/README-OS_X.rdoc
|
||||||
%doc %{gem_instdir}/README-Windows.rdoc
|
%doc %{gem_instdir}/README-Windows.rdoc
|
||||||
%lang(ja) %doc %{gem_instdir}/README.ja.rdoc
|
%lang(ja) %doc %{gem_instdir}/README.ja.md
|
||||||
%doc %{gem_instdir}/README.rdoc
|
%doc %{gem_instdir}/README.md
|
||||||
%{gem_instdir}/Rakefile*
|
%{gem_instdir}/Rakefile*
|
||||||
%{gem_instdir}/rakelib/*
|
%{gem_instdir}/rakelib/*
|
||||||
%{gem_instdir}/certs
|
%{gem_instdir}/certs
|
||||||
%{gem_instdir}/misc
|
%{gem_instdir}/misc
|
||||||
%{gem_instdir}/pg.gemspec
|
%{gem_instdir}/pg.gemspec
|
||||||
%{gem_instdir}/sample
|
%{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
|
%changelog
|
||||||
|
* Fri Jan 19 2024 Jarek Prokop <jprokop@redhat.com> - 1.5.4-1
|
||||||
|
- Upgrade to pg 1.5.4.
|
||||||
|
Related: RHEL-17089
|
||||||
|
|
||||||
* Thu May 26 2022 Jarek Prokop - 1.3.5-1
|
* Thu May 26 2022 Jarek Prokop - 1.3.5-1
|
||||||
- Update to pg 1.3.5
|
- Update to pg 1.3.5
|
||||||
Related: rhbz#2063773
|
Related: rhbz#2063773
|
||||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (pg-1.3.5.gem) = e603e0b8dceb710d1ad01352589a7aa1af3aa002379a0fa05d6183f99572ae5e4b3be5704d7910abdd450ee225ba84e699487571499c4640afdae2d4f809631a
|
SHA512 (pg-1.5.4.gem) = 77d68e06dd26eeec932741875543cb9e02d8e4925f5483914bc1acdda0c792896ca2bb205366245745c24aae512d90a482f4a45a3e174c5ed0dbfd983762cd61
|
||||||
SHA512 (pg-1.3.5-spec.tar.gz) = 97f5203ff8ba5391c50913f4c08ca31b4b9571eb982d405e7e7408d512e4555c3a5a241282ea3ae26911a77bfa6c096ac7e9e7141529674225c85804c2dd7480
|
SHA512 (pg-1.5.4-spec.tar.gz) = 4db24cd730b0363f05a4ef9d293fba370f8f937b06774f242e163d1139266bbee5ff2eab55c75ea735457dc9142d95f16353d6c4b7a7863408f8ff929f50bc41
|
||||||
|
Loading…
Reference in New Issue
Block a user