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) {