]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
In the unix backend, when implementing the defenses against small file
authordrh <>
Mon, 26 Dec 2022 16:54:15 +0000 (16:54 +0000)
committerdrh <>
Mon, 26 Dec 2022 16:54:15 +0000 (16:54 +0000)
descriptors, delete a file just created if it was opened with
O_EXCL|O_CREAT so that it can be created again the next time through the
loop.  Fix for the problem described by
[forum:/forumpost/699af709ab3a8ccf|forum post 699af709ab3a8ccf].

FossilOrigin-Name: 174acf3284434adb8b6c643c85c059fdf5ea5e24e95852834251ea3b3c3d1a4d

manifest
manifest.uuid
src/os_unix.c

index 067c7c73302c46e9e71f2e921e2a13f7d0d8ae8d..70f6f4d5e975c30367131afcf5b5d1d8de30c139 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sover-zealous\sassert()\sreported\sby\sYong\sHeng.
-D 2022-12-26T16:45:44.334
+C In\sthe\sunix\sbackend,\swhen\simplementing\sthe\sdefenses\sagainst\ssmall\sfile\ndescriptors,\sdelete\sa\sfile\sjust\screated\sif\sit\swas\sopened\swith\nO_EXCL|O_CREAT\sso\sthat\sit\scan\sbe\screated\sagain\sthe\snext\stime\sthrough\sthe\nloop.\s\sFix\sfor\sthe\sproblem\sdescribed\sby\n[forum:/forumpost/699af709ab3a8ccf|forum\spost\s699af709ab3a8ccf].
+D 2022-12-26T16:54:15.416
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -621,7 +621,7 @@ F src/os.h 1ff5ae51d339d0e30d8a9d814f4b8f8e448169304d83a7ed9db66a65732f3e63
 F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
 F src/os_kv.c 0e59600d25b72034c7666b8b7dcc527f039b5d9c16f24a7eca4c08c66f63c364
 F src/os_setup.h 6011ad7af5db4e05155f385eb3a9b4470688de6f65d6166b8956e58a3d872107
-F src/os_unix.c 287aa5f5691a2b356780c63e83abaa33549add84227b8313395f04088486d79c
+F src/os_unix.c c710dfac1b86a87c82053fa397ae31628217a8a86630904c5496ce649e5ada2b
 F src/os_win.c 295fe45f18bd86f2477f4cd79f3377c6f883ceb941b1f46808665c73747f2345
 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
 F src/pager.c 6176d9752eb580419e8fef4592dc417a6b00ddfd43ee22f818819bf8840ceee8
@@ -2055,9 +2055,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P ac9568cf87efe5e52cef030c0336761134253acb25f7e5343ccefaf526c96b41
-Q +6ee61f8cede4998f0c838d6506b058c6b09f34b3d7f30ed296100785c93f8d00
-R a921e31328d050a469842b2088f93af3
+P 1e9dbb5a1bcbf66acc1073e23791d1eb804af207de9bd08f4f7425cd3ff2e5c6
+Q +c0cfe0582add87981826d124a0763482f51fae4b105b5a970dd56919f1d04d60
+R 477e461604419f2275b312435ec4a762
 U drh
-Z 22376e6f263f52852bb40dfb09063717
+Z ee9526312e4811e0bb6246da4fd9a775
 # Remove this line to create a well-formed Fossil manifest.
index c78bd49d178013ceeee7017cef3a702877aa7cae..a8b4ce2168504864f07c39cade782fbe3a665bdd 100644 (file)
@@ -1 +1 @@
-1e9dbb5a1bcbf66acc1073e23791d1eb804af207de9bd08f4f7425cd3ff2e5c6
\ No newline at end of file
+174acf3284434adb8b6c643c85c059fdf5ea5e24e95852834251ea3b3c3d1a4d
\ No newline at end of file
index c390b5188864e796ee13a56716f297358af8de59..722e4b2c360a64f695cd9927a771238f83d0b8dd 100644 (file)
@@ -686,6 +686,9 @@ static int robust_open(const char *z, int f, mode_t m){
       break;
     }
     if( fd>=SQLITE_MINIMUM_FILE_DESCRIPTOR ) break;
+    if( (f & (O_EXCL|O_CREAT))==(O_EXCL|O_CREAT) ){
+      (void)osUnlink(z);
+    }
     osClose(fd);
     sqlite3_log(SQLITE_WARNING, 
                 "attempt to open \"%s\" as file descriptor %d", z, fd);