19 lines
843 B
Diff
19 lines
843 B
Diff
diff -up ./lib/softoken/sdb.c.orig ./lib/softoken/sdb.c
|
|
--- ./lib/softoken/sdb.c.orig 2020-12-11 22:49:26.961726193 -0500
|
|
+++ ./lib/softoken/sdb.c 2020-12-11 23:01:30.739122494 -0500
|
|
@@ -690,8 +690,14 @@ sdb_openDB(const char *name, sqlite3 **s
|
|
openFlags = SQLITE_OPEN_READONLY;
|
|
} else {
|
|
openFlags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
|
|
+ /* btrfs and sqlite seem to incorrectly open readwrite.
|
|
+ * when the file is readonly explicitly reject that issue here */
|
|
+ if ((_NSSUTIL_Access(name, PR_ACCESS_EXISTS) == PR_SUCCESS) && (_NSSUTIL_Access(name, PR_ACCESS_WRITE_OK) != PR_SUCCESS)) {
|
|
+ return SQLITE_READONLY;
|
|
+ }
|
|
}
|
|
|
|
+
|
|
/* Requires SQLite 3.5.0 or newer. */
|
|
sqlerr = sqlite3_open_v2(name, sqlDB, openFlags, NULL);
|
|
if (sqlerr != SQLITE_OK) {
|