]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a bug in test module test_fs.c causing a segfault on OpenBSD.
authordan <dan@noemail.net>
Mon, 15 Apr 2019 19:17:50 +0000 (19:17 +0000)
committerdan <dan@noemail.net>
Mon, 15 Apr 2019 19:17:50 +0000 (19:17 +0000)
FossilOrigin-Name: ee886600297c2a03d9d1d10db88d3d107b48e5d4de5e5d91b0ab16cc7c447ede

manifest
manifest.uuid
src/test_fs.c

index e4f193dbad21d444c46f90508f8de6e6134a13ca..62c33b61f83df606b17094a2265bf36ee98345b9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sproblem\swith\sthe\suser-auth\sextension\sand\sdeserializing\sin-memory\sdatabases.
-D 2019-04-15T15:41:33.596
+C Fix\sa\sbug\sin\stest\smodule\stest_fs.c\scausing\sa\ssegfault\son\sOpenBSD.
+D 2019-04-15T19:17:50.242
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -547,7 +547,7 @@ F src/test_config.c 5ebafbcd5c75ac1c16bb0c8fe926dc325cc03e780943a88ca50e0d9a4fc4
 F src/test_delete.c e2fe07646dff6300b48d49b2fee2fe192ed389e834dd635e3b3bac0ce0bf9f8f
 F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e
 F src/test_devsym.c 1960abbb234b97e9b920f07e99503fc04b443f62bbc3c6ff2c2cea2133e3b8a2
-F src/test_fs.c 70e30fdeb5038997bf5954816042f78ac6fc568c3d9e07c10b7d6af3886462d5
+F src/test_fs.c ba1e1dc18fd3159fdba0b9c4256f14032159785320dfbd6776eb9973cb75d480
 F src/test_func.c 181f992e5495644434c4f0e3cc72362a78c295eb2cf3ff4d02498b8bde7aa276
 F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d
 F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664
@@ -1818,7 +1818,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 734192d876e0489cb34e454aaa4a9c6858145791a49959b31dee2917a8e41a7d
-R ccb16b8d5f092c09f18270d0885ef69e
+P 09fa0b3c4adf7f81a777975762029ad43dbdc76b02dc32d2307e1c42465213c9
+R 2c29be806e15259c3d103a682fe95c22
 U dan
-Z 8977b16e1e0f2a3bdfa5e727ba8e15b2
+Z 7ef87e754e329fa1f6401ed2164f4318
index 847e5f4d366f6f65d437ca881cfdd65a9206c5d5..d78b9e0934f7e88807cd57ae68b3ffd3433b5c94 100644 (file)
@@ -1 +1 @@
-09fa0b3c4adf7f81a777975762029ad43dbdc76b02dc32d2307e1c42465213c9
\ No newline at end of file
+ee886600297c2a03d9d1d10db88d3d107b48e5d4de5e5d91b0ab16cc7c447ede
\ No newline at end of file
index 682a083e67ad161692d01eb1dbb5974c3f24959a..ddfdc7fb59806182b3fbc5ef248e656062c0f112 100644 (file)
@@ -129,7 +129,7 @@ struct FsdirCsr {
   char *zDir;                     /* Buffer containing directory scanned */
   DIR *pDir;                      /* Open directory */
   sqlite3_int64 iRowid;
-  struct DIRENT entry;            /* Current entry */
+  struct DIRENT *pEntry;
 };
 
 /*
@@ -236,12 +236,8 @@ static int fsdirNext(sqlite3_vtab_cursor *cur){
   FsdirCsr *pCsr = (FsdirCsr*)cur;
 
   if( pCsr->pDir ){
-    struct DIRENT *pRes = 0;
-    pRes = readdir(pCsr->pDir);
-    if( pRes!=0 ){
-      memcpy(&pCsr->entry, pRes, sizeof(struct DIRENT));
-    }
-    if( pRes==0 ){
+    pCsr->pEntry = readdir(pCsr->pDir);
+    if( pCsr->pEntry==0 ){
       closedir(pCsr->pDir);
       pCsr->pDir = 0;
     }
@@ -304,7 +300,7 @@ static int fsdirColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){
       break;
 
     case 1: /* name */
-      sqlite3_result_text(ctx, pCsr->entry.d_name, -1, SQLITE_TRANSIENT);
+      sqlite3_result_text(ctx, pCsr->pEntry->d_name, -1, SQLITE_TRANSIENT);
       break;
 
     default: