According tohttps://www.sqlite.org/versionnumbers.htmlmajor versions of sqlite remain ABI and file format backwardscompatible. It means we could graft without trouble, 3.32.3 fixes all CVEs, however3.32 introduces a test failure in Python 3.8.2 which is an errorneoustest testing internal sqlite implementation detail (but grafting wontactually re-run this test suite). See: https://bugs.python.org/issue40784 Otherwise I am still trying to run GNU Guix's own test suite on thisbut it turns out unnecessarily complicated, see https://issues.guix.gnu.org/47230for suggestions on improving thatprocess. Attached WIP patch. Thank you! Léo
From b0f9566e9ff9a5f409a3fd4293c048ec58bc770d Mon Sep 17 00:00:00 2001From: =?UTF-8?q?L=C3=A9o=20Le=20Bouter?= <firstname.lastname@example.org>Date: Thu, 18 Mar 2021 07:09:10 +0100Subject: [PATCH] gnu: sqlite: Update to 3.32.3 [security fixes]. * gnu/packages/sqlite.scm (sqlite/fixed): New variable.(sqlite)[replacement]: Graft.--- gnu/packages/sqlite.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
Toggle diff (41 lines)diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scmindex eeb77749d8..cc378b359a 100644--- a/gnu/packages/sqlite.scm+++ b/gnu/packages/sqlite.scm@@ -65,6 +65,7 @@ (sha256 (base32 "1bj936svd8i5g25xd1bj52hj4zca01fgl3sqkj86z9q5pkz4wa32"))))+ (replacement sqlite/fixed) (build-system gnu-build-system) (inputs `(("readline" ,readline))) (native-inputs (if (hurd-target?)@@ -122,6 +123,26 @@ widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.") (license license:public-domain)))+(define-public sqlite/fixed+ (package/inherit sqlite+ (version "3.32.3")+ (source (origin+ (method url-fetch)+ (uri (let ((numeric-version+ (match (string-split version #\.)+ ((first-digit other-digits ...)+ (string-append first-digit+ (string-pad-right+ (string-concatenate+ (map (cut string-pad <> 2 #\0)+ other-digits))+ 6 #\0))))))+ (string-append "https://sqlite.org/2020/sqlite-autoconf-"+ numeric-version ".tar.gz")))+ (sha256+ (base32+ "0rlbaq177gcgk5dswd3akbhv2nvvzljrbhgy18hklbhw7h90f5d3"))))))+ ;; Column metadata support was added to the regular 'sqlite' package with ;; commit fad5b1a6d8d9c36bea5785ae4fbc1beb37e644d7. (define-public sqlite-with-column-metadata-- 2.31.0
One more: CVE-2021-20227 23.03.21 18:15A flaw was found in SQLite's SELECT query functionality (src/select.c).This flaw allows an attacker who is capable of running SQL querieslocally on the SQLite database to cause a denial of service or possiblecode execution by triggering a use-after-free. The highest threat fromthis vulnerability is to system availability.
I could test the graft with GNU Guix's test suite by manually replacingthe sqlite input with sqlite/fixed like so:
Toggle diff (22 lines)diff --git a/gnu/packages/package-management.scmb/gnu/packages/package-management.scmindex 888f54322d..70f5c2dad3 100644--- a/gnu/packages/package-management.scm+++ b/gnu/packages/package-management.scm@@ -389,7 +389,7 @@ $(prefix)/etc/init.d\n"))) (inputs `(("bzip2" ,bzip2) ("gzip" ,gzip)- ("sqlite" ,sqlite)+ ("sqlite" ,sqlite/fixed) ("libgcrypt" ,libgcrypt) ("guile" ,guile-3.0-latest) It worked fine. Is that enough of a test to graft in master? Let me know and I will push. Léo
Thanks! I'm currently rebuilding IceCat with this change as an extra precaution, but that shouldn't take long. If that doesn't cause problems this LGTM for master. Ludo', do you think the Guix test described here is a good one? Kind regards, T G-R
Léo Le Bouter via Bug reports for GNU Guix <email@example.com> writes:
Toggle quote (30 lines)> From b0f9566e9ff9a5f409a3fd4293c048ec58bc770d Mon Sep 17 00:00:00 2001> From: =?UTF-8?q?L=C3=A9o=20Le=20Bouter?= <firstname.lastname@example.org>> Date: Thu, 18 Mar 2021 07:09:10 +0100> Subject: [PATCH] gnu: sqlite: Update to 3.32.3 [security fixes].>> * gnu/packages/sqlite.scm (sqlite/fixed): New variable.> (sqlite)[replacement]: Graft.> ---> gnu/packages/sqlite.scm | 21 +++++++++++++++++++++> 1 file changed, 21 insertions(+)>> diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm> index eeb77749d8..cc378b359a 100644> --- a/gnu/packages/sqlite.scm> +++ b/gnu/packages/sqlite.scm> @@ -65,6 +65,7 @@> (sha256> (base32> "1bj936svd8i5g25xd1bj52hj4zca01fgl3sqkj86z9q5pkz4wa32"))))> + (replacement sqlite/fixed)> (build-system gnu-build-system)> (inputs `(("readline" ,readline)))> (native-inputs (if (hurd-target?)> @@ -122,6 +123,26 @@ widely deployed SQL database engine in the world. The source code for SQLite> is in the public domain.")> (license license:public-domain)))> > +(define-public sqlite/fixed> + (package/inherit sqlite
Just a reminder that, just as with 'mysql/fixed', 'sqlite/fixed' should*not* use 'package/inherit', since the package you're defining is thereplacement for the package you're inheriting from. Otherwise, it looks good to me! Thanks, Mark
On Thu, 2021-03-25 at 21:23 -0400, Mark H Weaver wrote:
Toggle quote (11 lines)> > Just a reminder that, just as with 'mysql/fixed', 'sqlite/fixed'> should> *not* use 'package/inherit', since the package you're defining is the> replacement for the package you're inheriting from.> > Otherwise, it looks good to me!> > Thanks,> Mark
Adapted, wasnt sure what package/inherit was for exactly. Tobias Geerinckx-Rice via Bug reports for GNU Guix writes:
Toggle quote (10 lines)> > I'm currently rebuilding IceCat with this change as an extra> > precaution, but that shouldn't take long. If that doesn't cause > > problems this LGTM for master.> > OK, it worked, old IceCat writes new SQlite files.> > Kind regards,> > T G-R
Thank you both for the review! Pushed as 6e7ba45357078b31a369b23f8a9f38302dfcbb10!