ispyisail
e3fa4a049c
.qetz: read the project database the way SQLite advises for untrusted files
...
A .qetz's project.sqlite comes from a file, which may be damaged, made
by another tool, edited by hand (issue #1458 ) or made to harm. SQLite's
advice for such files (https://www.sqlite.org/security.html ) was only
partly followed: trusted_schema was off and every name had to be a plain
table. readAsUntrusted() now also turns on the defensive mode, turns off
triggers and views, checks each cell's size as its page is read, limits
a value to 256 MiB, and runs quick_check before anything is read, for
the database read on opening and for the one a save copies kept folios
from.
A damaged database is now refused as "the project database is damaged",
where it was "cannot be read: database disk image is malformed" or a
missing row. Damage on disk was already caught before SQLite: the zip
checks each entry (one flipped bit in project.sqlite: refused, "unexpected
decompressed size"). quick_check does not see a changed value inside a
row (49 of 400 random small changes read silently, quick_check "ok"):
only the zip's checksum does.
New test damagedDatabaseRefused (a page overwritten at three places):
fails without this change on the message. Opening nuri (136 folios):
3.56-3.66 s with and without. ctest: the 7 container, save and lazy
folio suites pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 08:41:27 +13:00
..
2026-10-13 11:01:21 +02:00
2026-10-13 11:01:21 +02:00
2026-10-11 05:00:01 +02:00
2026-10-16 08:41:27 +13:00
2026-10-14 07:35:34 +13:00
2026-10-11 05:00:01 +02:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-10-15 17:06:29 +13:00
2026-10-08 12:50:13 +13:00
2026-10-11 05:00:01 +02:00
2026-10-09 23:31:26 +13:00
2026-08-17 10:25:44 +02:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-10-14 23:38:00 +13:00
2026-07-31 09:52:32 +12:00
2026-10-11 14:57:42 +02:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-10-15 21:42:43 +13:00
2026-10-09 05:05:49 +13:00
2026-10-07 10:55:50 +02:00
2026-10-07 10:55:50 +02:00
2026-10-08 12:50:13 +13:00
2026-10-14 18:57:29 +13:00
2026-10-14 18:57:29 +13:00
2026-09-25 23:25:27 +12:00
2026-01-16 15:24:35 +01:00
2026-10-15 16:26:45 +02:00
2026-10-09 08:49:24 +02:00
2026-10-15 17:06:29 +13:00
2026-10-13 23:03:51 +13:00
2026-10-09 22:09:28 +13:00
2026-01-16 15:24:35 +01:00
2026-09-28 09:19:59 +13:00
2026-08-09 09:11:40 +02:00
2026-08-09 09:11:40 +02:00
2026-10-11 05:00:01 +02:00
2026-10-11 05:00:01 +02:00
2026-09-26 08:22:12 +12:00
2026-10-07 23:38:34 +02:00
2026-01-16 15:24:35 +01:00
2026-10-13 23:03:14 +13:00
2026-10-13 23:03:14 +13:00
2026-09-26 21:18:35 +12:00
2026-09-26 21:06:13 +12:00
2026-10-14 18:57:29 +13:00
2026-10-14 13:12:38 +13:00
2026-10-08 12:50:13 +13:00
2026-09-26 21:34:02 +12:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-10-13 20:13:18 +02:00
2026-10-13 23:03:51 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-10-06 17:26:46 +02:00
2026-10-14 18:26:00 +13:00
2026-10-14 18:26:00 +13:00
2026-10-03 08:43:27 +13:00
2026-10-03 08:43:27 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-30 10:31:12 +13:00
2026-01-16 15:24:35 +01:00
2026-09-09 11:45:36 +12:00
2026-10-07 10:12:20 +13:00
2026-10-07 10:12:20 +13:00
2026-10-06 21:09:41 +02:00
2026-10-15 20:26:30 +13:00
2026-10-14 18:57:29 +13:00
2026-10-08 12:50:13 +13:00
2026-10-03 18:09:33 +02:00
2026-10-13 23:03:44 +13:00
2026-10-13 23:03:51 +13:00
2026-10-02 21:04:54 +13:00
2026-09-22 09:07:27 +02:00
2026-09-28 06:16:17 +13:00
2026-09-26 21:40:32 +12:00
2026-10-07 18:38:25 +13:00
2026-10-07 18:38:25 +13:00
2026-09-27 11:16:37 +13:00
2026-01-16 15:24:35 +01:00
2026-09-07 20:54:18 +12:00
2026-10-11 05:00:01 +02:00
2026-10-07 18:34:51 +13:00
2026-10-16 07:18:24 +13:00
2026-10-13 11:01:21 +02:00
2026-10-07 21:17:38 +13:00
2026-09-27 21:54:44 +13:00
2026-09-07 10:44:30 +02:00
2026-09-07 10:44:30 +02:00
2026-10-08 12:50:13 +13:00
2026-04-26 10:48:47 +02:00
2026-10-13 23:03:51 +13:00
2026-10-13 23:03:51 +13:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-09-19 12:22:24 -05:00
2026-01-16 15:24:35 +01:00
2026-10-11 05:00:01 +02:00
2026-10-11 05:00:01 +02:00
2026-10-08 12:50:13 +13:00
2026-05-13 19:42:11 +02:00
2026-10-13 11:01:21 +02:00
2026-08-04 16:36:23 +12:00
2026-10-15 20:07:01 +02:00
2026-10-15 20:07:01 +02:00
2026-10-08 12:50:13 +13:00
2026-09-26 10:22:50 +12:00
2026-10-14 13:12:38 +13:00
2026-09-27 21:54:36 +13:00
2026-10-14 13:12:38 +13:00
2026-10-14 13:12:38 +13:00
2026-10-14 13:12:38 +13:00
2026-10-14 13:12:38 +13:00
2026-10-08 06:04:35 +02:00
2026-10-13 11:01:21 +02:00
2026-04-19 10:44:52 +02:00
2026-10-07 18:38:25 +13:00
2026-10-07 18:38:25 +13:00
2026-10-10 20:27:01 +13:00
2026-10-09 10:00:31 +02:00
2026-09-28 14:55:04 +02:00
2026-09-28 14:55:04 +02:00
2026-09-16 15:40:41 +12:00
2026-09-16 15:40:41 +12:00
2026-10-08 12:50:13 +13:00
2026-06-20 22:31:06 +12:00
2026-10-07 01:51:00 +02:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-10-06 21:09:41 +02:00
2026-10-06 21:09:41 +02:00
2026-10-12 16:02:26 +02:00
2026-10-04 08:54:13 +13:00
2026-10-08 06:03:31 +02:00
2026-10-13 23:03:51 +13:00
2026-10-13 23:03:33 +13:00
2026-10-13 11:01:21 +02:00
2026-10-13 11:01:21 +02:00
2026-10-13 07:44:40 +13:00
2026-10-11 05:00:01 +02:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-10-16 07:18:24 +13:00
2026-10-16 07:18:24 +13:00
2026-10-15 20:07:01 +02:00
2026-10-15 20:07:01 +02:00
2026-10-09 05:05:49 +13:00
2026-10-08 15:29:05 +02:00
2026-10-08 12:50:13 +13:00
2026-10-07 19:31:42 +13:00
2026-08-05 05:26:57 +12:00
2026-08-05 05:26:57 +12:00
2026-10-06 21:09:41 +02:00
2026-10-06 21:09:41 +02:00
2026-10-15 06:20:57 +13:00
2026-10-15 06:20:57 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-20 12:45:07 -05:00
2026-09-19 12:26:06 -05:00
2026-08-16 07:16:33 +02:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-07-17 10:25:49 +02:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-09-17 00:07:46 +02:00
2026-09-17 00:07:46 +02:00
2026-08-09 01:34:22 +02:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-07-17 10:29:13 +02:00
2026-07-17 10:29:13 +02:00
2026-10-08 12:50:13 +13:00
2026-09-27 09:09:44 +02:00
2026-10-06 08:17:16 +13:00
2026-10-06 08:17:16 +13:00
2026-10-04 00:07:16 +13:00
2026-10-04 00:07:16 +13:00
2026-09-30 18:12:43 +13:00
2026-09-26 10:22:50 +12:00
2026-10-06 09:53:49 +02:00
2026-10-05 17:53:38 +02:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-10-07 08:13:52 +13:00
2026-10-07 08:13:52 +13:00
2026-10-07 08:13:52 +13:00
2026-10-07 07:05:12 +13:00
2026-10-06 09:14:35 +13:00
2026-10-01 21:18:12 +13:00
2026-10-01 21:18:12 +13:00
2026-10-13 23:03:51 +13:00
2026-10-13 23:03:51 +13:00
2026-10-04 01:43:37 +13:00
2026-10-04 01:43:37 +13:00