Hi Barak,

I did some testing, the patch from
https://www2.fossil-scm.org/fossil/info/d4041437b6f40d0cc62f22d2973498d596af325b1d18fed2dd7584aef733df7a
indeed fixes the bug. I'm attaching the patch, and if you want, I can
do NMU.


-- 
Sergei Golovan
diff -Nru fossil-2.14/debian/changelog fossil-2.14/debian/changelog
--- fossil-2.14/debian/changelog	2021-01-24 19:12:40.000000000 +0300
+++ fossil-2.14/debian/changelog	2021-03-13 12:59:32.000000000 +0300
@@ -1,3 +1,11 @@
+fossil (1:2.14-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload
+  * Apply an upstream patch which fixes updating schema for repositories
+    created by fossil 1.x (closes: #985124)
+
+ -- Sergei Golovan <sgolo...@debian.org>  Sat, 13 Mar 2021 12:59:32 +0300
+
 fossil (1:2.14-1) unstable; urgency=medium
 
   * New upstream version
diff -Nru fossil-2.14/debian/patches/series fossil-2.14/debian/patches/series
--- fossil-2.14/debian/patches/series	2021-01-24 19:12:40.000000000 +0300
+++ fossil-2.14/debian/patches/series	2021-03-13 12:57:08.000000000 +0300
@@ -1 +1,2 @@
 debian-changes
+update-schema.patch
diff -Nru fossil-2.14/debian/patches/update-schema.patch fossil-2.14/debian/patches/update-schema.patch
--- fossil-2.14/debian/patches/update-schema.patch	1970-01-01 03:00:00.000000000 +0300
+++ fossil-2.14/debian/patches/update-schema.patch	2021-03-13 12:59:32.000000000 +0300
@@ -0,0 +1,27 @@
+Author: Upstream
+Description: Disable devencive mode when updating schema for repositories created by fossil 1.x.
+
+--- a/src/rebuild.c
++++ b/src/rebuild.c
+@@ -156,17 +156,20 @@
+     /* Search for:  length(uuid)==40
+     **              0123456789 12345   */
+     int i;
+     for(i=10; z[i]; i++){
+       if( z[i]=='=' && strncmp(&z[i-6],"(uuid)==40",10)==0 ){
++        int rc = 0;
+         z[i] = '>';
++        sqlite3_db_config(g.db, SQLITE_DBCONFIG_DEFENSIVE, 0, &rc);
+         db_multi_exec(
+            "PRAGMA writable_schema=ON;"
+            "UPDATE repository.sqlite_schema SET sql=%Q WHERE name LIKE 'blob';"
+            "PRAGMA writable_schema=OFF;",
+            z
+         );
++        sqlite3_db_config(g.db, SQLITE_DBCONFIG_DEFENSIVE, 1, &rc);
+         break;
+       }
+     }
+     fossil_free(z);
+   }
+

Reply via email to