]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid even trying to open a SHM file read/write in WAL mode if we know that
authordrh <drh@noemail.net>
Fri, 7 Jul 2017 20:33:36 +0000 (20:33 +0000)
committerdrh <drh@noemail.net>
Fri, 7 Jul 2017 20:33:36 +0000 (20:33 +0000)
the file is read-only.  This avoids scare security log messages.

FossilOrigin-Name: d9d927814019f6c562eca198aca10f407aae423ea0a9f82c789298b77be8c187

manifest
manifest.uuid
src/os_unix.c

index 774e828ef5f959a55fc3a1ab73e56031f915f56e..1577445867b048f87c8ae33b9ca8995d29089134 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\slatest\strunk\schanges\swith\sthis\sbranch.
-D 2017-06-27T16:48:08.459
+C Avoid\seven\strying\sto\sopen\sa\sSHM\sfile\sread/write\sin\sWAL\smode\sif\swe\sknow\sthat\nthe\sfile\sis\sread-only.\s\sThis\savoids\sscare\ssecurity\slog\smessages.
+D 2017-07-07T20:33:36.184
 F Makefile.in 227347646e289e3b016ebb7a391ad6ed4ab56525834d56d47d1a83b8d97d6989
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc fb28c0304f8a14c5ce7d4bde9fea1c903f644b49e78ebd9976ab2a1f0eb8afb5
@@ -393,7 +393,7 @@ F src/os.c c03b50496df5815e8f6d45bae4404b73cadf069b
 F src/os.h 8e976e59eb4ca1c0fca6d35ee803e38951cb0343
 F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
 F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
-F src/os_unix.c 4a58dfdfda7e72aab0e393953890a9b6d40a7ff4
+F src/os_unix.c 4193a7dca757d090f566edb733e012af939b5f8cbf4da6d574121ff55dcc67c7
 F src/os_win.c 85b19486054c8cd5c4117dea882d983ea065d16e
 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
 F src/pager.c 6140d3ccfba4ce89d5a9f113d32bd0554bd4ab8c476bf5cf6651f9060f6bfb1d
@@ -1589,7 +1589,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 53b14a388838439087f92282bdaa3f706e9e197a7ed93f8c73e8844cffca8126 87b381663398f029f52cb5598aadd069b03034b6f833ce80ba762b406075a44e
-R 6e130e59f6087f79b0c5f510a3cd1fb5
-U dan
-Z 3658eeaa042232e633ca1fa776f1869a
+P 2b0954060fe10d6de6d479287dd88890f1bef6cc1beca11bc6cdb79f72e2377b
+R ee7bac678e139337809f17f1857c6b7a
+U drh
+Z b85dcfa1091a029b631421bc18f43c11
index a4f755b1db471e39e305e7aa8f4f41b9ddf94d03..9c2d4b8f97803beca775ab19934812c2903aaf2e 100644 (file)
@@ -1 +1 @@
-2b0954060fe10d6de6d479287dd88890f1bef6cc1beca11bc6cdb79f72e2377b
\ No newline at end of file
+d9d927814019f6c562eca198aca10f407aae423ea0a9f82c789298b77be8c187
\ No newline at end of file
index 7468136ee763a92bfb957aec99ad998bc93c07b7..f51804f1e03ca8eee9d1a02c3febae6e4cce98a8 100644 (file)
@@ -5057,7 +5057,14 @@ static int unixOpenSharedMemory(unixFile *pDbFd){
     if( pInode->bProcessLock==0 ){
       int openFlags = O_RDWR | O_CREAT;
       int fd;                     /* File descriptor for *-shm file */
-      if( sqlite3_uri_boolean(pDbFd->zPath, "readonly_shm", 0) ){
+      if( sqlite3_uri_boolean(pDbFd->zPath, "readonly_shm", 0)
+#ifdef __APPLE__
+       /* On MacOS and iOS, avoid even trying to open a read-only SHM file
+       ** for writing, because doing so generates scary log messages */
+       || (osAccess(zShmFilename, R_OK|W_OK)!=0
+            && (errno==EPERM || errno==EACCES))
+#endif
+      ){
         openFlags = O_RDONLY;
         pShmNode->isReadonly = 1;
       }
@@ -5071,7 +5078,7 @@ static int unixOpenSharedMemory(unixFile *pDbFd){
       ** may be also be used by a read/write database connection.  */
 #if defined(SQLITE_ENABLE_PERSIST_WAL)&&(SQLITE_ENABLE_LOCKING_STYLE \
     || defined(__APPLE__))
-      if( fd<0 && errno!=EISDIR && pShmNode->isReadonly==0 
+      if( fd<0 && (errno==EPERM || errno==EACCES) && pShmNode->isReadonly==0 
        && (pDbFd->openFlags & O_RDWR)!=O_RDWR
       ){
         fd = robust_open(zShmFilename, O_RDONLY, (sStat.st_mode&0777));