]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improved --safe mode defenses. Fix a test case error.
authordrh <>
Sun, 16 Nov 2025 01:34:01 +0000 (01:34 +0000)
committerdrh <>
Sun, 16 Nov 2025 01:34:01 +0000 (01:34 +0000)
FossilOrigin-Name: eacc9db80de8baa878ebdc3a054538c8998db9a2e46720c0d8b109d62a0cac29

manifest
manifest.uuid
src/shell.c.in
test/shell1.test

index 170a190f2d1b10218019039a1e35380b9171d8ca..d97ad9c92292c19486b0af9b2adba5743265d225 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Improved\serror\sdetection\sin\sthe\sargument\sto\s.mode\s--widths.
-D 2025-11-16T01:03:53.489
+C Improved\s--safe\smode\sdefenses.\s\sFix\sa\stest\scase\serror.
+D 2025-11-16T01:34:01.562
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -735,7 +735,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 5616fbcf3b833c7c705b24371828215ad0925d0c0073216c4f153348d5753f0a
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c ba9cd07ffa3277883c1986085f6ddc4320f4d35d5f212ab58df79a7ecc1a576a
-F src/shell.c.in a1ce74a73eec905323f66a20efed4cd878b198876de4c57d0bd76685efde680d
+F src/shell.c.in eff75b6dc40d8dfa4a030a439d7cfa5e0e02d77d867f3f52384d58d07b37460b
 F src/sqlite.h.in 795ce84cc136b4e74d882cf4fab56d2927c20b9af9fd2fcea27760a6fe50851b
 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
 F src/sqlite3ext.h 5d5330f5f8461f5ce74960436ddcfa53ecd09c2b8b23901e22ae38aec3243998
@@ -1603,7 +1603,7 @@ F test/sharedA.test 64bdd21216dda2c6a3bd3475348ccdc108160f34682c97f2f51c19fc0e21
 F test/sharedB.test 1a84863d7a2204e0d42f2e1606577c5e92e4473fa37ea0f5bdf829e4bf8ee707
 F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939
 F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304
-F test/shell1.test 6b256fffeac83d62e3625f47e7ef4a25db73215349bb92e818c9692ac403da3d
+F test/shell1.test c651b6d9d89293a1c6803d2970deba50d8fa5075ee2cb191c245d7bffff4c36b
 F test/shell2.test d8da6a06dcce1d8f04f776f918d4d57c28ddc28c54f3a44f95429794892e3a91
 F test/shell3.test 603b448e917537cf77be0f265c05c6f63bc677c63a533c8e96aae923b56f4a0e
 F test/shell4.test 03593fa7908a55f255916ffeda707cdf55680c777736e3da62b1d78cde0d684d
@@ -2176,8 +2176,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 4035fb15ff36d139ed4c839fdebb0278e6cf9a2f00298e1a548a8f8317ba14b2
-R 34d2aaec9c670d29863d9b6ae92ece00
+P 4d774ee495e38282b8701988fe514344ee0e81285692c8d1adc1ee7e22960ad9
+R c4d15b800fc1c75eb6a38fec8ce701a3
 U drh
-Z c75b500355bf86d63dd377a65bcb74ed
+Z 7f8fd796cbf55d5f3557e7ec4c2e1cff
 # Remove this line to create a well-formed Fossil manifest.
index d8cd40879543d8eac01e570d0c6ddc92400a849c..e325b35c474855581204de15eb29f99a6caeab0e 100644 (file)
@@ -1 +1 @@
-4d774ee495e38282b8701988fe514344ee0e81285692c8d1adc1ee7e22960ad9
+eacc9db80de8baa878ebdc3a054538c8998db9a2e46720c0d8b109d62a0cac29
index a59538f62001c3497519a50cbea28932310ecb28..9de001b1ef429e26a619a36bbfec99a72711872d 100644 (file)
@@ -4674,13 +4674,13 @@ static void output_file_close(FILE *f){
 ** recognized and do the right thing.  NULL is returned if the output
 ** filename is "off".
 */
-static FILE *output_file_open(const char *zFile){
+static FILE *output_file_open(ShellState *p, const char *zFile){
   FILE *f;
   if( cli_strcmp(zFile,"stdout")==0 ){
     f = stdout;
   }else if( cli_strcmp(zFile, "stderr")==0 ){
     f = stderr;
-  }else if( cli_strcmp(zFile, "off")==0 ){
+  }else if( cli_strcmp(zFile, "off")==0 || p->bSafeMode ){
     f = 0;
   }else{
     f = sqlite3_fopen(zFile, "w");
@@ -8020,7 +8020,7 @@ static int dotCmdOutput(ShellState *p){
     }
 #endif
   }else{
-    FILE *pfFile = output_file_open(zFile);
+    FILE *pfFile = output_file_open(p, zFile);
     if( pfFile==0 ){
       if( cli_strcmp(zFile,"off")!=0 ){
        assert( stderr!=NULL );
@@ -9464,7 +9464,7 @@ static int do_meta_command(const char *zLine, ShellState *p){
       }
       output_file_close(p->pLog);
       if( cli_strcmp(zFile,"on")==0 ) zFile = "stdout";
-      p->pLog = output_file_open(zFile);
+      p->pLog = output_file_open(p, zFile);
     }
   }else
 
@@ -10793,7 +10793,7 @@ static int do_meta_command(const char *zLine, ShellState *p){
   /* Begin redirecting output to the file "testcase-out.txt" */
   if( c=='t' && cli_strcmp(azArg[0],"testcase")==0 ){
     output_reset(p);
-    p->out = output_file_open("testcase-out.txt");
+    p->out = output_file_open(p, "testcase-out.txt");
     if( p->out==0 ){
       eputz("Error: cannot open 'testcase-out.txt'\n");
     }
@@ -11348,7 +11348,7 @@ static int do_meta_command(const char *zLine, ShellState *p){
         }
       }else{
         output_file_close(p->traceOut);
-        p->traceOut = output_file_open(z);
+        p->traceOut = output_file_open(p, z);
       }
     }
     if( p->traceOut==0 ){
index 58b250cae766d00cfe498a83a100b78ecc903f18..2251826608f43e9750c7bb845e12ed18e1fc2bff 100644 (file)
@@ -405,7 +405,7 @@ do_test shell1-3.10.1 {
   # look for a few of the possible help commands
   list [regexp {.help} $res] \
        [regexp {.quit} $res] \
-       [regexp {.show} $res]
+       [regexp {.mode} $res]
 } {1 1 1}
 do_test shell1-3.10.2 {
   # we allow .help to take extra args (it is help after all)
@@ -413,7 +413,7 @@ do_test shell1-3.10.2 {
   # look for a few of the possible help commands
   list [regexp {.help} $res] \
        [regexp {.quit} $res] \
-       [regexp {.show} $res]
+       [regexp {.mode} $res]
 } {1 1 1}
 
 # .import FILE TABLE     Import data from FILE into TABLE