sqlite3 1.5.0.rc1-aarch64-linux → 1.5.1-aarch64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -3
- data/README.md +4 -2
- data/ext/sqlite3/aggregator.c +3 -2
- data/ext/sqlite3/database.c +2 -2
- data/ext/sqlite3/extconf.rb +106 -13
- data/ext/sqlite3/sqlite3_ruby.h +5 -2
- data/lib/sqlite3/2.6/sqlite3_native.so +0 -0
- data/lib/sqlite3/2.7/sqlite3_native.so +0 -0
- data/lib/sqlite3/3.0/sqlite3_native.so +0 -0
- data/lib/sqlite3/3.1/sqlite3_native.so +0 -0
- data/lib/sqlite3/version.rb +3 -5
- data/test/test_database.rb +7 -0
- data/test/test_sqlite3.rb +5 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec6ba8d6b161f216edd0670910278cf7e1e36b141cf5976c65fc618dce804d85
|
4
|
+
data.tar.gz: 5f577a747c5e88c7dd6078523ce27c087b10cf21d9b249e3324b41c3e263803d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e01e50b63084fb8f12832b68210b8c71edfcdcbc688b56be80b338ef14c7bfb5207338046ac4081efe6a8ec9c92b77f3e308c690456b88a759649c0a9d051a55
|
7
|
+
data.tar.gz: 40f6e6ea0544c5722515d68107a14700d8679cf17b7aae175d9e9fb7c2f2e582f1bdf810a64d40ae445b817e378ceb8049b7742e64d35b080ca23bdf1854f771
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,27 @@
|
|
1
1
|
# sqlite3-ruby Changelog
|
2
2
|
|
3
|
-
## 1.5.
|
3
|
+
## 1.5.1 / 2022-09-29
|
4
|
+
|
5
|
+
### Dependencies
|
6
|
+
|
7
|
+
* Vendored sqlite is updated to [v3.39.4](https://sqlite.org/releaselog/3_39_4.html).
|
8
|
+
|
9
|
+
### Security
|
10
|
+
|
11
|
+
The vendored version of sqlite, v3.39.4, should be considered to be a security release. From the release notes:
|
12
|
+
|
13
|
+
> Version 3.39.4 is a minimal patch against the prior release that addresses issues found since the
|
14
|
+
> prior release. In particular, a potential vulnerability in the FTS3 extension has been fixed, so
|
15
|
+
> this should be considered a security update.
|
16
|
+
>
|
17
|
+
> In order to exploit the vulnerability, an attacker must have full SQL access and must be able to
|
18
|
+
> construct a corrupt database with over 2GB of FTS3 content. The problem arises from a 32-bit
|
19
|
+
> signed integer overflow.
|
20
|
+
|
21
|
+
For more information please see [GHSA-mgvv-5mxp-xq67](https://github.com/sparklemotion/sqlite3-ruby/security/advisories/GHSA-mgvv-5mxp-xq67).
|
22
|
+
|
23
|
+
|
24
|
+
## 1.5.0 / 2022-09-08
|
4
25
|
|
5
26
|
### Packaging
|
6
27
|
|
@@ -23,19 +44,20 @@ See [the README](https://github.com/sparklemotion/sqlite3-ruby#native-gems-recom
|
|
23
44
|
|
24
45
|
#### More consistent developer experience
|
25
46
|
|
26
|
-
Both the native (precompiled) gems and the vanilla "ruby platform" (source) gem include sqlite v3.39.
|
47
|
+
Both the native (precompiled) gems and the vanilla "ruby platform" (source) gem include sqlite v3.39.3 by default.
|
27
48
|
|
28
49
|
Defaulting to a consistent version of sqlite across all systems means that your development environment behaves exactly like your production environment, and you have access to the latest and greatest features of sqlite.
|
29
50
|
|
30
51
|
You can opt-out of the packaged version of sqlite (and use your system-installed library as in versions < 1.5.0). See [the README](https://github.com/sparklemotion/sqlite3-ruby#avoiding-the-precompiled-native-gem) for more information.
|
31
52
|
|
32
|
-
[Release notes for this version of sqlite](https://sqlite.org/releaselog/
|
53
|
+
[Release notes for this version of sqlite](https://sqlite.org/releaselog/3_39_3.html)
|
33
54
|
|
34
55
|
|
35
56
|
### Rubies and Platforms
|
36
57
|
|
37
58
|
* TruffleRuby is supported.
|
38
59
|
* Apple Silicon is supported (M1, arm64-darwin).
|
60
|
+
* vcpkg system libraries supported. [#332] (Thanks, @MSP-Greg!)
|
39
61
|
|
40
62
|
|
41
63
|
### Added
|
@@ -43,6 +65,11 @@ You can opt-out of the packaged version of sqlite (and use your system-installed
|
|
43
65
|
* `SQLite3::SQLITE_LOADED_VERSION` contains the version string of the sqlite3 library that is dynamically loaded (compare to `SQLite3::SQLITE_VERSION` which is the version at compile-time).
|
44
66
|
|
45
67
|
|
68
|
+
### Fixed
|
69
|
+
|
70
|
+
* `SQLite3::Database#load_extensions` now raises a `TypeError` unless a String is passed as the file path. Previously it was possible to pass a non-string and cause a segfault. [#339]
|
71
|
+
|
72
|
+
|
46
73
|
## 1.4.4 / 2022-06-14
|
47
74
|
|
48
75
|
### Fixes
|
data/README.md
CHANGED
@@ -107,7 +107,8 @@ If you're on a platform that supports a native gem but you want to avoid using i
|
|
107
107
|
|
108
108
|
- If you're not using Bundler, then run `gem install sqlite3 --platform=ruby`
|
109
109
|
- If you are using Bundler
|
110
|
-
- version 2.
|
110
|
+
- version 2.3.18 or later, you can specify [`gem "sqlite3", force_ruby_platform: true`](https://bundler.io/v2.3/man/gemfile.5.html#FORCE_RUBY_PLATFORM)
|
111
|
+
- version 2.1 or later, then you'll need to run `bundle config set force_ruby_platform true`
|
111
112
|
- version 2.0 or earlier, then you'll need to run `bundle config force_ruby_platform true`
|
112
113
|
|
113
114
|
|
@@ -118,7 +119,7 @@ If you are on a platform or version of Ruby that is not covered by the Native Ge
|
|
118
119
|
|
119
120
|
#### Packaged libsqlite3
|
120
121
|
|
121
|
-
By default, as of v1.5.0 of this library, libsqlite3
|
122
|
+
By default, as of v1.5.0 of this library, the latest available version of libsqlite3 is packaged with the gem and will be compiled and used automatically. This takes a bit longer than the native gem, but will provide a modern, well-supported version of libsqlite3.
|
122
123
|
|
123
124
|
For example, on a linux system running Ruby 2.5:
|
124
125
|
|
@@ -143,6 +144,7 @@ If you would prefer to build the sqlite3-ruby gem against your system libsqlite3
|
|
143
144
|
|
144
145
|
PLEASE NOTE:
|
145
146
|
|
147
|
+
- you must avoid installing a precompiled native gem (see [previous section](#avoiding-the-precompiled-native-gem))
|
146
148
|
- only versions of libsqlite3 `>= 3.5.0` are supported,
|
147
149
|
- and some library features may depend on how your libsqlite3 was compiled.
|
148
150
|
|
data/ext/sqlite3/aggregator.c
CHANGED
@@ -265,9 +265,10 @@ rb_sqlite3_define_aggregator2(VALUE self, VALUE aggregator, VALUE ruby_name)
|
|
265
265
|
void
|
266
266
|
rb_sqlite3_aggregator_init(void)
|
267
267
|
{
|
268
|
-
rb_gc_register_address(&cAggregatorWrapper);
|
269
|
-
rb_gc_register_address(&cAggregatorInstance);
|
270
268
|
/* rb_class_new generatos class with undefined allocator in ruby 1.9 */
|
271
269
|
cAggregatorWrapper = rb_funcall(rb_cClass, rb_intern("new"), 0);
|
270
|
+
rb_gc_register_mark_object(cAggregatorWrapper);
|
271
|
+
|
272
272
|
cAggregatorInstance = rb_funcall(rb_cClass, rb_intern("new"), 0);
|
273
|
+
rb_gc_register_mark_object(cAggregatorInstance);
|
273
274
|
}
|
data/ext/sqlite3/database.c
CHANGED
@@ -31,7 +31,7 @@ static char *
|
|
31
31
|
utf16_string_value_ptr(VALUE str)
|
32
32
|
{
|
33
33
|
StringValue(str);
|
34
|
-
rb_str_buf_cat(str, "\x00",
|
34
|
+
rb_str_buf_cat(str, "\x00\x00", 2L);
|
35
35
|
return RSTRING_PTR(str);
|
36
36
|
}
|
37
37
|
|
@@ -603,7 +603,7 @@ static VALUE load_extension(VALUE self, VALUE file)
|
|
603
603
|
Data_Get_Struct(self, sqlite3Ruby, ctx);
|
604
604
|
REQUIRE_OPEN_DB(ctx);
|
605
605
|
|
606
|
-
status = sqlite3_load_extension(ctx->db,
|
606
|
+
status = sqlite3_load_extension(ctx->db, StringValuePtr(file), 0, &errMsg);
|
607
607
|
if (status != SQLITE_OK)
|
608
608
|
{
|
609
609
|
errexp = rb_exc_new2(rb_eRuntimeError, errMsg);
|
data/ext/sqlite3/extconf.rb
CHANGED
@@ -36,19 +36,26 @@ module Sqlite3
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def sqlcipher?
|
39
|
-
with_config("sqlcipher")
|
39
|
+
with_config("sqlcipher") ||
|
40
|
+
with_config("sqlcipher-dir") ||
|
41
|
+
with_config("sqlcipher-include") ||
|
42
|
+
with_config("sqlcipher-lib")
|
40
43
|
end
|
41
44
|
|
42
45
|
def configure_system_libraries
|
43
46
|
pkg_config(libname)
|
44
|
-
|
47
|
+
append_cppflags("-DUSING_SQLCIPHER") if sqlcipher?
|
45
48
|
end
|
46
49
|
|
47
50
|
def configure_packaged_libraries
|
48
51
|
minimal_recipe.tap do |recipe|
|
49
52
|
recipe.configure_options += ["--enable-shared=no", "--enable-static=yes"]
|
50
53
|
ENV.to_h.tap do |env|
|
51
|
-
|
54
|
+
additional_cflags = [
|
55
|
+
"-fPIC", # needed for linking the static library into a shared library
|
56
|
+
"-O2", # see https://github.com/sparklemotion/sqlite3-ruby/issues/335 for some benchmarks
|
57
|
+
]
|
58
|
+
env["CFLAGS"] = [env["CFLAGS"], additional_cflags].flatten.join(" ")
|
52
59
|
recipe.configure_options += env.select { |k,v| ENV_ALLOWLIST.include?(k) }
|
53
60
|
.map { |key, value| "#{key}=#{value.strip}" }
|
54
61
|
end
|
@@ -72,10 +79,17 @@ module Sqlite3
|
|
72
79
|
|
73
80
|
def configure_extension
|
74
81
|
if Gem::Requirement.new("< 2.7").satisfied_by?(Gem::Version.new(RUBY_VERSION))
|
75
|
-
|
82
|
+
append_cppflags("-DTAINTING_SUPPORT")
|
83
|
+
end
|
84
|
+
|
85
|
+
if find_header("sqlite3.h")
|
86
|
+
# noop
|
87
|
+
elsif sqlcipher? && find_header("sqlcipher/sqlite3.h")
|
88
|
+
append_cppflags("-DUSING_SQLCIPHER_INC_SUBDIR")
|
89
|
+
else
|
90
|
+
abort_could_not_find("sqlite3.h")
|
76
91
|
end
|
77
92
|
|
78
|
-
abort_could_not_find("sqlite3.h") unless find_header("sqlite3.h")
|
79
93
|
abort_could_not_find(libname) unless find_library(libname, "sqlite3_libversion_number", "sqlite3.h")
|
80
94
|
|
81
95
|
# Functions defined in 1.9 but not 1.8
|
@@ -119,18 +133,18 @@ module Sqlite3
|
|
119
133
|
def mini_portile_config
|
120
134
|
{
|
121
135
|
sqlite3: {
|
122
|
-
# checksum verified by first checking the published sha3(256) checksum:
|
136
|
+
# checksum verified by first checking the published sha3(256) checksum against https://sqlite.org/download.html:
|
123
137
|
#
|
124
|
-
#
|
125
|
-
#
|
138
|
+
# $ sha3sum -a 256 ports/archives/sqlite-autoconf-3390400.tar.gz
|
139
|
+
# 431328e30d12c551da9ba7ef2122b269076058512014afa799caaf62ca567090 ports/archives/sqlite-autoconf-3390400.tar.gz
|
126
140
|
#
|
127
|
-
#
|
128
|
-
#
|
141
|
+
# $ sha256sum ports/archives/sqlite-autoconf-3390400.tar.gz
|
142
|
+
# f31d445b48e67e284cf206717cc170ab63cbe4fd7f79a82793b772285e78fdbb ports/archives/sqlite-autoconf-3390400.tar.gz
|
129
143
|
#
|
130
|
-
version: "3.39.
|
144
|
+
version: "3.39.4",
|
131
145
|
files: [{
|
132
|
-
url: "https://
|
133
|
-
sha256: "
|
146
|
+
url: "https://sqlite.org/2022/sqlite-autoconf-3390400.tar.gz",
|
147
|
+
sha256: "f31d445b48e67e284cf206717cc170ab63cbe4fd7f79a82793b772285e78fdbb",
|
134
148
|
}],
|
135
149
|
}
|
136
150
|
}
|
@@ -147,10 +161,89 @@ module Sqlite3
|
|
147
161
|
def download
|
148
162
|
minimal_recipe.download
|
149
163
|
end
|
164
|
+
|
165
|
+
def print_help
|
166
|
+
print(<<~TEXT)
|
167
|
+
USAGE: ruby #{$PROGRAM_NAME} [options]
|
168
|
+
|
169
|
+
Flags that are always valid:
|
170
|
+
|
171
|
+
--disable-system-libraries
|
172
|
+
Use the packaged libraries, and ignore the system libraries.
|
173
|
+
(This is the default behavior.)
|
174
|
+
|
175
|
+
--enable-system-libraries
|
176
|
+
Use system libraries instead of building and using the packaged libraries.
|
177
|
+
|
178
|
+
--with-sqlcipher
|
179
|
+
Use libsqlcipher instead of libsqlite3.
|
180
|
+
(Implies `--enable-system-libraries`.)
|
181
|
+
|
182
|
+
--help
|
183
|
+
Display this message.
|
184
|
+
|
185
|
+
|
186
|
+
Flags only used when using system libraries:
|
187
|
+
|
188
|
+
General (applying to all system libraries):
|
189
|
+
|
190
|
+
--with-opt-dir=DIRECTORY
|
191
|
+
Look for headers and libraries in DIRECTORY.
|
192
|
+
|
193
|
+
--with-opt-lib=DIRECTORY
|
194
|
+
Look for libraries in DIRECTORY.
|
195
|
+
|
196
|
+
--with-opt-include=DIRECTORY
|
197
|
+
Look for headers in DIRECTORY.
|
198
|
+
|
199
|
+
Related to sqlcipher:
|
200
|
+
|
201
|
+
--with-sqlcipher-dir=DIRECTORY
|
202
|
+
Look for sqlcipher headers and library in DIRECTORY.
|
203
|
+
(Implies `--with-sqlcipher` and `--enable-system-libraries`.)
|
204
|
+
|
205
|
+
--with-sqlcipher-lib=DIRECTORY
|
206
|
+
Look for sqlcipher library in DIRECTORY.
|
207
|
+
(Implies `--with-sqlcipher` and `--enable-system-libraries`.)
|
208
|
+
|
209
|
+
--with-sqlcipher-include=DIRECTORY
|
210
|
+
Look for sqlcipher headers in DIRECTORY.
|
211
|
+
(Implies `--with-sqlcipher` and `--enable-system-libraries`.)
|
212
|
+
|
213
|
+
|
214
|
+
Flags only used when building and using the packaged libraries:
|
215
|
+
|
216
|
+
--enable-cross-build
|
217
|
+
Enable cross-build mode. (You probably do not want to set this manually.)
|
218
|
+
|
219
|
+
|
220
|
+
Environment variables used for compiling the C extension:
|
221
|
+
|
222
|
+
CC
|
223
|
+
Use this path to invoke the compiler instead of `RbConfig::CONFIG['CC']`
|
224
|
+
|
225
|
+
|
226
|
+
Environment variables passed through to the compilation of packaged libraries:
|
227
|
+
|
228
|
+
CC
|
229
|
+
CPPFLAGS
|
230
|
+
CFLAGS
|
231
|
+
LDFLAGS
|
232
|
+
LIBS
|
233
|
+
LT_SYS_LIBRARY_PATH
|
234
|
+
CPP
|
235
|
+
|
236
|
+
TEXT
|
237
|
+
end
|
150
238
|
end
|
151
239
|
end
|
152
240
|
end
|
153
241
|
|
242
|
+
if arg_config("--help")
|
243
|
+
Sqlite3::ExtConf.print_help
|
244
|
+
exit!(0)
|
245
|
+
end
|
246
|
+
|
154
247
|
if arg_config("--download-dependencies")
|
155
248
|
Sqlite3::ExtConf.download
|
156
249
|
exit!(0)
|
data/ext/sqlite3/sqlite3_ruby.h
CHANGED
@@ -21,8 +21,11 @@
|
|
21
21
|
#define SQLITE3_UTF8_STR_NEW2(_obj) \
|
22
22
|
(rb_enc_associate_index(rb_str_new2(_obj), rb_utf8_encindex()))
|
23
23
|
|
24
|
-
|
25
|
-
#include <sqlite3.h>
|
24
|
+
#ifdef USING_SQLCIPHER_INC_SUBDIR
|
25
|
+
# include <sqlcipher/sqlite3.h>
|
26
|
+
#else
|
27
|
+
# include <sqlite3.h>
|
28
|
+
#endif
|
26
29
|
|
27
30
|
#ifndef HAVE_TYPE_SQLITE3_INT64
|
28
31
|
typedef sqlite_int64 sqlite3_int64;
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/sqlite3/version.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
module SQLite3
|
2
2
|
|
3
|
-
VERSION = "1.5.
|
3
|
+
VERSION = "1.5.1"
|
4
4
|
|
5
5
|
module VersionProxy
|
6
|
-
|
7
6
|
MAJOR = 1
|
8
7
|
MINOR = 5
|
9
|
-
TINY =
|
10
|
-
BUILD =
|
8
|
+
TINY = 1
|
9
|
+
BUILD = nil
|
11
10
|
|
12
11
|
STRING = [ MAJOR, MINOR, TINY, BUILD ].compact.join( "." )
|
13
|
-
#:beta-tag:
|
14
12
|
|
15
13
|
VERSION = ::SQLite3::VERSION
|
16
14
|
end
|
data/test/test_database.rb
CHANGED
@@ -534,5 +534,12 @@ module SQLite3
|
|
534
534
|
end
|
535
535
|
assert_includes error.message, "no such column: nope"
|
536
536
|
end
|
537
|
+
|
538
|
+
def test_load_extension_with_nonstring_argument
|
539
|
+
db = SQLite3::Database.new(':memory:')
|
540
|
+
skip("extensions are not enabled") unless db.respond_to?(:load_extension)
|
541
|
+
assert_raises(TypeError) { db.load_extension(1) }
|
542
|
+
assert_raises(TypeError) { db.load_extension(Pathname.new("foo.so")) }
|
543
|
+
end
|
537
544
|
end
|
538
545
|
end
|
data/test/test_sqlite3.rb
CHANGED
@@ -19,7 +19,12 @@ module SQLite3
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_version_strings
|
22
|
+
skip if SQLite3::VERSION.include?("test") # see set-version-to-timestamp rake task
|
22
23
|
assert_equal(SQLite3::VERSION, SQLite3::VersionProxy::STRING)
|
23
24
|
end
|
25
|
+
|
26
|
+
def test_compiled_version_and_loaded_version
|
27
|
+
assert_equal(SQLite3::SQLITE_VERSION, SQLite3::SQLITE_LOADED_VERSION)
|
28
|
+
end
|
24
29
|
end
|
25
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sqlite3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: aarch64-linux
|
6
6
|
authors:
|
7
7
|
- Jamis Buck
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-09-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: minitest
|
@@ -178,9 +178,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
178
|
version: 3.2.dev
|
179
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
180
|
requirements:
|
181
|
-
- - "
|
181
|
+
- - ">="
|
182
182
|
- !ruby/object:Gem::Version
|
183
|
-
version:
|
183
|
+
version: '0'
|
184
184
|
requirements: []
|
185
185
|
rubygems_version: 3.3.4
|
186
186
|
signing_key:
|