From 84c191715546f413d0066bd90ab721b76e920936 Mon Sep 17 00:00:00 2001 From: Ondrej Dubaj Date: Mon, 7 Oct 2019 11:55:36 +0200 Subject: [PATCH] Updated to version 3.30.0 --- sources | 6 +- sqlite-3.19.3-CVE-2017-10989.patch | 46 -------- sqlite-3.22.0-corrupt-schema.patch | 51 --------- sqlite-3.22.0-fts3rank-big-endian.patch | 40 ------- sqlite-3.22.0-int-float-compare.patch | 40 ------- sqlite-3.22.0-walro2-filesize.patch | 68 ------------ sqlite-3.8.10.1-tcl-regress-tests.patch | 137 ------------------------ sqlite.spec | 26 +++-- 8 files changed, 18 insertions(+), 396 deletions(-) delete mode 100644 sqlite-3.19.3-CVE-2017-10989.patch delete mode 100644 sqlite-3.22.0-corrupt-schema.patch delete mode 100644 sqlite-3.22.0-fts3rank-big-endian.patch delete mode 100644 sqlite-3.22.0-int-float-compare.patch delete mode 100644 sqlite-3.22.0-walro2-filesize.patch delete mode 100644 sqlite-3.8.10.1-tcl-regress-tests.patch diff --git a/sources b/sources index e10d14d..80bb465 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (sqlite-src-3290000.zip) = 575398fbe20c6471ee2abcbde170b8d48efbb3cb2716a65f42f05c52429a45d14e8046e50c59bbf75bfe2d8f151c34abd50b440c50af571f19e19f3290b230df -SHA512 (sqlite-doc-3290000.zip) = ca856cf250e395d9c7e9817337adb5a16b1d96a20548a4010f5137188d35bb9d49a4a6da47bf2a696deffa68d2976dbb35a036adce19b8320e0e286876ac094f -SHA512 (sqlite-autoconf-3290000.tar.gz) = 85dcaa72cc2476c628e801d4ce46cf10ed8997f56cb0334062df5553f18c29d607883a1049bf75258204f2f53a29a02a01f014dcca383b05dfac1e2123778024 +SHA512 (sqlite-doc-3300000.zip) = 11bc9910fa0b4740b19bb6c533a329f29520f68951e6e24c9957cd2ac3dc6708640d6e535a8be5af173eb0b273ab3bdee6f81724d5b5560054fccddf7d454f78 +SHA512 (sqlite-src-3300000.zip) = 43dbe38eae0b14ecba962e418a7a717ef5a0b7aa8610a973daea3f538564fea9440c0053dccabbf1f6652ced180bf44de1a122609564fe357f0f8c7a34078dd7 +SHA512 (sqlite-autoconf-3300000.tar.gz) = d1b0d4c6874e600f4e0f8c3eae8a5d754f8a25b3ab68b058ea657641acbae7e4f517d075dd103a87544ccf62a706990e3db909de18cf649ac5a1a459d123926a diff --git a/sqlite-3.19.3-CVE-2017-10989.patch b/sqlite-3.19.3-CVE-2017-10989.patch deleted file mode 100644 index 5bb9c76..0000000 --- a/sqlite-3.19.3-CVE-2017-10989.patch +++ /dev/null @@ -1,46 +0,0 @@ -Index: ext/rtree/rtree.c -================================================================== ---- ext/rtree/rtree.c -+++ ext/rtree/rtree.c -@@ -3435,10 +3435,14 @@ - pRtree->zDb, pRtree->zName - ); - rc = getIntFromStmt(db, zSql, &pRtree->iNodeSize); - if( rc!=SQLITE_OK ){ - *pzErr = sqlite3_mprintf("%s", sqlite3_errmsg(db)); -+ }else if( pRtree->iNodeSize<(512-64) ){ -+ rc = SQLITE_CORRUPT; -+ *pzErr = sqlite3_mprintf("undersize RTree blobs in \"%q_node\"", -+ pRtree->zName); - } - } - - sqlite3_free(zSql); - return rc; - -Index: ext/rtree/rtreeA.test -================================================================== ---- ext/rtree/rtreeA.test -+++ ext/rtree/rtreeA.test -@@ -213,8 +213,21 @@ - } {} - do_corruption_tests rtreeA-6.1 { - 1 "DELETE FROM t1 WHERE rowid = 5" - 2 "UPDATE t1 SET x1=x1+1, x2=x2+1" - } -+ -+#------------------------------------------------------------------------- -+# Truncated blobs in the _node table. -+# -+create_t1 -+populate_t1 -+sqlite3 db test.db -+do_execsql_test rtreeA-7.100 { -+ UPDATE t1_node SET data=x'' WHERE rowid=1; -+} {} -+do_catchsql_test rtreeA-7.110 { -+ SELECT * FROM t1 WHERE x1>0 AND x1<100 AND x2>0 AND x2<100; -+} {1 {undersize RTree blobs in "t1_node"}} - - - finish_test diff --git a/sqlite-3.22.0-corrupt-schema.patch b/sqlite-3.22.0-corrupt-schema.patch deleted file mode 100644 index b418eb5..0000000 --- a/sqlite-3.22.0-corrupt-schema.patch +++ /dev/null @@ -1,51 +0,0 @@ -Index: src/build.c -================================================================== ---- src/build.c -+++ src/build.c -@@ -1868,12 +1868,10 @@ - } - assert( !db->mallocFailed ); - p = pParse->pNewTable; - if( p==0 ) return; - -- assert( !db->init.busy || !pSelect ); -- - /* If the db->init.busy is 1 it means we are reading the SQL off the - ** "sqlite_master" or "sqlite_temp_master" table on the disk. - ** So do not write to the disk again. Extract the root page number - ** for the table from the db->init.newTnum field. (The page number - ** should have been put there by the sqliteOpenCb routine.) -@@ -1880,10 +1878,14 @@ - ** - ** If the root page number is 1, that means this is the sqlite_master - ** table itself. So mark it read-only. - */ - if( db->init.busy ){ -+ if( pSelect ){ -+ sqlite3ErrorMsg(pParse, ""); -+ return; -+ } - p->tnum = db->init.newTnum; - if( p->tnum==1 ) p->tabFlags |= TF_Readonly; - } - - /* Special processing for WITHOUT ROWID Tables */ - -Index: src/prepare.c -================================================================== ---- src/prepare.c -+++ src/prepare.c -@@ -27,11 +27,11 @@ - sqlite3 *db = pData->db; - if( !db->mallocFailed && (db->flags & SQLITE_WriteSchema)==0 ){ - char *z; - if( zObj==0 ) zObj = "?"; - z = sqlite3MPrintf(db, "malformed database schema (%s)", zObj); -- if( zExtra ) z = sqlite3MPrintf(db, "%z - %s", z, zExtra); -+ if( zExtra && zExtra[0] ) z = sqlite3MPrintf(db, "%z - %s", z, zExtra); - sqlite3DbFree(db, *pData->pzErrMsg); - *pData->pzErrMsg = z; - } - pData->rc = db->mallocFailed ? SQLITE_NOMEM_BKPT : SQLITE_CORRUPT_BKPT; - } - diff --git a/sqlite-3.22.0-fts3rank-big-endian.patch b/sqlite-3.22.0-fts3rank-big-endian.patch deleted file mode 100644 index 4b376a1..0000000 --- a/sqlite-3.22.0-fts3rank-big-endian.patch +++ /dev/null @@ -1,40 +0,0 @@ -Index: test/fts3rank.test -================================================================== ---- test/fts3rank.test -+++ test/fts3rank.test -@@ -12,11 +12,11 @@ - # focus of this script is testing the FTS3 module. - # - - set testdir [file dirname $argv0] - source $testdir/tester.tcl --set testprefix fts3expr5 -+set testprefix fts3rank - - # If SQLITE_ENABLE_FTS3 is defined, omit this file. - ifcapable !fts3 { - finish_test - return -@@ -54,11 +54,16 @@ - - do_catchsql_test 1.4 { - SELECT * FROM t1 ORDER BY rank(x'0000000000000000') DESC, rowid - } {0 {{one two} one {one two} three {one two} two}} - --do_catchsql_test 1.5 { -- SELECT * FROM t1 ORDER BY rank(x'0100000001000000') DESC, rowid --} {1 {invalid matchinfo blob passed to function rank()}} -+if {$tcl_platform(byteOrder)=="littleEndian"} { -+ do_catchsql_test 1.5le { -+ SELECT * FROM t1 ORDER BY rank(x'0100000001000000') DESC, rowid -+ } {1 {invalid matchinfo blob passed to function rank()}} -+} else { -+ do_catchsql_test 1.5be { -+ SELECT * FROM t1 ORDER BY rank(x'0000000100000001') DESC, rowid -+ } {1 {invalid matchinfo blob passed to function rank()}} -+} - - finish_test -- - - diff --git a/sqlite-3.22.0-int-float-compare.patch b/sqlite-3.22.0-int-float-compare.patch deleted file mode 100644 index ec7341f..0000000 --- a/sqlite-3.22.0-int-float-compare.patch +++ /dev/null @@ -1,40 +0,0 @@ -Index: src/vdbemem.c -================================================================== ---- src/vdbemem.c -+++ src/vdbemem.c -@@ -579,10 +579,22 @@ - - pMem->u.r = sqlite3VdbeRealValue(pMem); - MemSetTypeFlag(pMem, MEM_Real); - return SQLITE_OK; - } -+ -+/* Compare a floating point value to an integer. Return true if the two -+** values are the same within the precision of the floating point value. -+** -+** For some versions of GCC on 32-bit machines, if you do the more obvious -+** comparison of "r1==(double)i" you sometimes get an answer of false even -+** though the r1 and (double)i values are bit-for-bit the same. -+*/ -+static int sqlite3RealSameAsInt(double r1, sqlite3_int64 i){ -+ double r2 = (double)i; -+ return memcmp(&r1, &r2, sizeof(r1))==0; -+} - - /* - ** Convert pMem so that it has types MEM_Real or MEM_Int or both. - ** Invalidate any prior representations. - ** -@@ -599,11 +611,11 @@ - if( rc==0 ){ - MemSetTypeFlag(pMem, MEM_Int); - }else{ - i64 i = pMem->u.i; - sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc); -- if( rc==1 && pMem->u.r==(double)i ){ -+ if( rc==1 && sqlite3RealSameAsInt(pMem->u.r, i) ){ - pMem->u.i = i; - MemSetTypeFlag(pMem, MEM_Int); - }else{ - MemSetTypeFlag(pMem, MEM_Real); - } diff --git a/sqlite-3.22.0-walro2-filesize.patch b/sqlite-3.22.0-walro2-filesize.patch deleted file mode 100644 index 1a43ba1..0000000 --- a/sqlite-3.22.0-walro2-filesize.patch +++ /dev/null @@ -1,68 +0,0 @@ -Index: test/walro2.test -================================================================== ---- test/walro2.test -+++ test/walro2.test -@@ -37,10 +37,22 @@ - } else { - forcecopy test.db-shm test.db2-shm - } - } - -+# Most systems allocate the *-shm file in 32KB trunks. But on UNIX systems -+# for which the getpagesize() call returns greater than 32K, the *-shm -+# file is allocated in page-sized units (since you cannot mmap part of -+# a page). The following code sets variable $MINSHMSZ to the smallest -+# possible *-shm file (i.e. the greater of 32KB and the system page-size). -+# -+do_execsql_test 0.0 { -+ PRAGMA journal_mode = wal; -+ CREATE TABLE t1(x); -+} {wal} -+set MINSHMSZ [file size test.db-shm] -+ - foreach bZeroShm {0 1} { - set TN [expr $bZeroShm+1] - do_multiclient_test tn { - - # Close all connections and delete the database. -@@ -167,11 +179,11 @@ - code2 { db2 close } - sql1 { SELECT * FROM t1 } - } {a b c d e f g h 1 2} - do_test $TN.3.2.2 { - list [file size test.db-wal] [file size test.db-shm] -- } {0 32768} -+ } [list 0 $MINSHMSZ] - - do_test $TN.3.3.0 { - code2 { sqlite3 db2 test.db } - sql2 { - INSERT INTO t1 VALUES(3, 4); -@@ -180,11 +192,11 @@ - INSERT INTO t1 VALUES(9, 10); - } - code2 { db2 close } - code1 { db close } - list [file size test.db-wal] [file size test.db-shm] -- } [list [wal_file_size 4 1024] 32768] -+ } [list [wal_file_size 4 1024] $MINSHMSZ] - do_test $TN.3.3.1 { - code1 { sqlite3 db file:test.db?readonly_shm=1 } - sql1 { SELECT * FROM t1 } - } {a b c d e f g h 1 2 3 4 5 6 7 8 9 10} - do_test $TN.3.3.2 { -@@ -194,11 +206,11 @@ - DELETE FROM t1; - INSERT INTO t1 VALUES('i', 'ii'); - } - code2 { db2 close } - list [file size test.db-wal] [file size test.db-shm] -- } [list [wal_file_size 4 1024] 32768] -+ } [list [wal_file_size 4 1024] $MINSHMSZ] - do_test $TN.3.3.3 { - sql1 { SELECT * FROM t1 } - } {i ii} - - #----------------------------------------------------------------------- - - diff --git a/sqlite-3.8.10.1-tcl-regress-tests.patch b/sqlite-3.8.10.1-tcl-regress-tests.patch deleted file mode 100644 index bdeb6da..0000000 --- a/sqlite-3.8.10.1-tcl-regress-tests.patch +++ /dev/null @@ -1,137 +0,0 @@ -This patch disables a test which caused failed assertion in tcl 8.6.3. -According to sqlite upstream[1], this should be fixed in tcl 8.6.5. - -[1] http://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-users/2015-May/059518.html - -diff -up sqlite-src-3130000/test/shell1.test.orig sqlite-src-3130000/test/shell1.test ---- sqlite-src-3140100/test/shell1.test.orig 2016-08-12 02:17:02.000000000 +0200 -+++ sqlite-src-3140100/test/shell1.test 2016-08-15 15:00:59.869664051 +0200 -@@ -855,67 +855,67 @@ do_test shell1-4.6 { - - # Test using arbitrary byte data with the shell via standard input/output. - # --do_test shell1-5.0 { -- # -- # NOTE: Skip NUL byte because it appears to be incompatible with command -- # shell argument parsing. -- # -- for {set i 1} {$i < 256} {incr i} { -- # -- # NOTE: Due to how the Tcl [exec] command works (i.e. where it treats -- # command channels opened for it as textual ones), the carriage -- # return character (and on Windows, the end-of-file character) -- # cannot be used here. -- # -- if {$i==0x0D || ($tcl_platform(platform)=="windows" && $i==0x1A)} { -- continue -- } -- if {$i>=0xE0 && $tcl_platform(os)=="OpenBSD"} continue -- if {$i>=0xE0 && $i<=0xEF && $tcl_platform(os)=="Linux"} continue -- set hex [format %02X $i] -- set char [subst \\x$hex]; set oldChar $char -- set escapes [list] -- if {$tcl_platform(platform)=="windows"} { -- # -- # NOTE: On Windows, we need to escape all the whitespace characters, -- # the alarm (\a) character, and those with special meaning to -- # the SQLite shell itself. -- # -- set escapes [list \ -- \a \\a \b \\b \t \\t \n \\n \v \\v \f \\f \r \\r \ -- " " "\" \"" \" \\\" ' \"'\" \\ \\\\] -- } else { -- # -- # NOTE: On Unix, we need to escape most of the whitespace characters -- # and those with special meaning to the SQLite shell itself. -- # The alarm (\a), backspace (\b), and carriage-return (\r) -- # characters do not appear to require escaping on Unix. For -- # the alarm and backspace characters, this is probably due to -- # differences in the command shell. For the carriage-return, -- # it is probably due to differences in how Tcl handles command -- # channel end-of-line translations. -- # -- set escapes [list \ -- \t \\t \n \\n \v \\v \f \\f \ -- " " "\" \"" \" \\\" ' \"'\" \\ \\\\] -- } -- set char [string map $escapes $char] -- set x [catchcmdex test.db ".print $char\n"] -- set code [lindex $x 0] -- set res [lindex $x 1] -- if {$code ne "0"} { -- error "failed with error: $res" -- } -- if {$res ne "$oldChar\n"} { -- if {[llength $res] > 0} { -- set got [format %02X [scan $res %c]] -- } else { -- set got -- } -- error "failed with byte $hex mismatch, got $got" -- } -- } --} {} -+#do_test shell1-5.0 { -+# # -+# # NOTE: Skip NUL byte because it appears to be incompatible with command -+# # shell argument parsing. -+# # -+# for {set i 1} {$i < 256} {incr i} { -+# # -+# # NOTE: Due to how the Tcl [exec] command works (i.e. where it treats -+# # command channels opened for it as textual ones), the carriage -+# # return character (and on Windows, the end-of-file character) -+# # cannot be used here. -+# # -+# if {$i==0x0D || ($tcl_platform(platform)=="windows" && $i==0x1A)} { -+# continue -+# } -+# if {$i>=0xE0 && $tcl_platform(os)=="OpenBSD"} continue -+# if {$i>=0xE0 && $i<=0xEF && $tcl_platform(os)=="Linux"} continue -+# set hex [format %02X $i] -+# set char [subst \\x$hex]; set oldChar $char -+# set escapes [list] -+# if {$tcl_platform(platform)=="windows"} { -+# # -+# # NOTE: On Windows, we need to escape all the whitespace characters, -+# # the alarm (\a) character, and those with special meaning to -+# # the SQLite shell itself. -+# # -+# set escapes [list \ -+# \a \\a \b \\b \t \\t \n \\n \v \\v \f \\f \r \\r \ -+# " " "\" \"" \" \\\" ' \"'\" \\ \\\\] -+# } else { -+# # -+# # NOTE: On Unix, we need to escape most of the whitespace characters -+# # and those with special meaning to the SQLite shell itself. -+# # The alarm (\a), backspace (\b), and carriage-return (\r) -+# # characters do not appear to require escaping on Unix. For -+# # the alarm and backspace characters, this is probably due to -+# # differences in the command shell. For the carriage-return, -+# # it is probably due to differences in how Tcl handles command -+# # channel end-of-line translations. -+# # -+# set escapes [list \ -+# \t \\t \n \\n \v \\v \f \\f \ -+# " " "\" \"" \" \\\" ' \"'\" \\ \\\\] -+# } -+# set char [string map $escapes $char] -+# set x [catchcmdex test.db ".print $char\n"] -+# set code [lindex $x 0] -+# set res [lindex $x 1] -+# if {$code ne "0"} { -+# error "failed with error: $res" -+# } -+# if {$res ne "$oldChar\n"} { -+# if {[llength $res] > 0} { -+# set got [format %02X [scan $res %c]] -+# } else { -+# set got -+# } -+# error "failed with byte $hex mismatch, got $got" -+# } -+# } -+#} {} - - # These test cases do not work on MinGW - if 0 { diff --git a/sqlite.spec b/sqlite.spec index d96b289..fe897af 100644 --- a/sqlite.spec +++ b/sqlite.spec @@ -3,14 +3,14 @@ %bcond_with static %bcond_without check -%define realver 3290000 -%define docver 3290000 -%define rpmver 3.29.0 +%define realver 3300000 +%define docver 3300000 +%define rpmver 3.30.0 Summary: Library that implements an embeddable SQL database engine Name: sqlite Version: %{rpmver} -Release: 2%{?dist} +Release: 1%{?dist} License: Public Domain URL: http://www.sqlite.org/ @@ -22,13 +22,13 @@ Patch1: sqlite-3.6.23-lemon-system-template.patch # sqlite >= 3.7.10 is buggy if malloc_usable_size() is detected, disable it: # https://bugzilla.redhat.com/show_bug.cgi?id=801981 # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=665363 -Patch3: sqlite-3.12.2-no-malloc-usable-size.patch +Patch2: sqlite-3.12.2-no-malloc-usable-size.patch # Temporary workaround for failed percentile test, see patch for details -Patch4: sqlite-3.8.0-percentile-test.patch +Patch3: sqlite-3.8.0-percentile-test.patch # Disable test date-2.2c on i686 -Patch7: sqlite-3.16-datetest-2.2c.patch +Patch4: sqlite-3.16-datetest-2.2c.patch # Modify sync2.test to pass with DIRSYNC turned off -Patch8: sqlite-3.18.0-sync2-dirsync.patch +Patch5: sqlite-3.18.0-sync2-dirsync.patch BuildRequires: gcc BuildRequires: ncurses-devel readline-devel glibc-devel @@ -119,12 +119,12 @@ This package contains the analysis program for %{name}. %prep %setup -q -a1 -n %{name}-src-%{realver} %patch1 -p1 +%patch2 -p1 %patch3 -p1 -%patch4 -p1 %ifarch %{ix86} -%patch7 -p1 +%patch4 -p1 %endif -%patch8 -p1 +%patch5 -p1 # Remove backup-file rm -f %{name}-doc-%{docver}/sqlite.css~ || : @@ -229,6 +229,10 @@ make test %endif %changelog +* Mon Oct 07 2019 Ondrej Dubaj - 3.30.0-1 +- Updated to version 3.30.0 (https://sqlite.org/releaselog/3_30_0.html) +- updated spec file, deleted useless patches + * Sat Jul 27 2019 Fedora Release Engineering - 3.29.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild