]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Handle failures of getcwd() without segfaulting. Ticket #1274. (CVS 2490)
authordrh <drh@noemail.net>
Mon, 6 Jun 2005 15:06:39 +0000 (15:06 +0000)
committerdrh <drh@noemail.net>
Mon, 6 Jun 2005 15:06:39 +0000 (15:06 +0000)
FossilOrigin-Name: c1691004d6d81b683a4ca5b1723c0de8b9b4e376

manifest
manifest.uuid
src/os_unix.c
src/sqliteInt.h
src/util.c

index 9d968573bfa0915209b404ac25a66bf79f9493bf..defd067e47e6c21d6ea1d152ea54ccd672142413 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sbug\sin\sthe\smalloc2\stests\sintroduced\sby\scheckin\s(2473).\s(CVS\s2489)
-D 2005-06-06T14:45:43
+C Handle\sfailures\sof\sgetcwd()\swithout\ssegfaulting.\s\sTicket\s#1274.\s(CVS\s2490)
+D 2005-06-06T15:06:39
 F Makefile.in 8129e7f261d405db783676f9ca31e0841768c652
 F Makefile.linux-gcc 06be33b2a9ad4f005a5f42b22c4a19dab3cbb5c7
 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -49,7 +49,7 @@ F src/os.h e5438be25cf96858787bf9b60fc7a2420e139ee3
 F src/os_common.h 0e7f428ba0a6c40a61bc56c4e96f493231301b73
 F src/os_test.c 91e5f22dd89491e5e1554820e715805f43fa4ece
 F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
-F src/os_unix.c cb8a39901b8eb920372c2e42f7ea9ab40f2e47ae
+F src/os_unix.c 443ca9d19945a08ba1e325f00e13633b3daa5bfa
 F src/os_unix.h 39a393252e69e72b06715c9958df05ddbc4aa971
 F src/os_win.c 2bbbe6fbb010763c3fa79d5e951afca9b138c6b5
 F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
@@ -63,7 +63,7 @@ F src/random.c eff68e3f257e05e81eae6c4d50a51eb88beb4ff3
 F src/select.c 071a484044efb74fb5d8f79560822cbfc7c906c3
 F src/shell.c 25b3217d7c64e6497225439d261a253a23efff26
 F src/sqlite.h.in f28f5b018f03a66aaf0bc1ab6985d8605d6b964f
-F src/sqliteInt.h 0de60fafa8d9a15b03b4ed2cfbc2372a5b259295
+F src/sqliteInt.h 0aa1d1bd6f34db3955d8615b18b20426cfd15acc
 F src/table.c 25b3ff2b39b7d87e8d4a5da0713d68dfc06cbee9
 F src/tclsqlite.c af0f002d9d6ab4f7f32b9bee5b57665946e76ad9
 F src/test1.c ad04983979a8ee4c05d407bca8575ba1fecca0e3
@@ -75,7 +75,7 @@ F src/tokenize.c d89743f2c0d05d49b5b4d6462432a1f3cc4765f1
 F src/trigger.c 1a6d0c7c51b70bdc58d5068be72034071eff23ad
 F src/update.c 04ea9dd784ccfeaf38a681b3edfe3b1c4edfdda7
 F src/utf.c bda5eb85039ef16f2d17004c1e18c96e1ab0a80c
-F src/util.c ae41deda8b026e141a00938fcab8e4431578d6ea
+F src/util.c 96008b52604d08b9cc57ed37350149d6ac8a1bf3
 F src/vacuum.c f4eb8facbfede77cac4d8c205a76a1a9b9b0d21d
 F src/vdbe.c 15b12cdaeb5096257143a00f466a00eed6137d2e
 F src/vdbe.h 75e466d84d362b0c4498978a9d6b1e6bd32ecf3b
@@ -281,7 +281,7 @@ F www/tclsqlite.tcl 425be741b8ae664f55cb1ef2371aab0a75109cf9
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
 F www/whentouse.tcl 528299b8316726dbcc5548e9aa0648c8b1bd055b
-P 6bc372978364a1a4bfa14732a818a6bba613b1e3
-R c07667a46ec74b005cbbe569bfa7a722
+P fafaa18eea1e7142e1094b5f6d544d20c9df7c0f
+R 5f8c1791e4ed7ae7c3960acf6aa8ba37
 U drh
-Z d0ae35c886d8d1aee0549d8443c95180
+Z 4059ba1e77ce92b7b89e85120d6f5660
index cff81480af6e01ed3e9d9945c2f681052ef702bd..ae029f940fa05ae0dab87e5e6420bdb8bbe591fc 100644 (file)
@@ -1 +1 @@
-fafaa18eea1e7142e1094b5f6d544d20c9df7c0f
\ No newline at end of file
+c1691004d6d81b683a4ca5b1723c0de8b9b4e376
\ No newline at end of file
index eb0d870bb299134a85c2e4fb05ab4b86055e78a0..b900331bd32357e92b354fcbe1407fd3735783a9 100644 (file)
@@ -1291,6 +1291,7 @@ char *sqlite3OsFullPathname(const char *zRelative){
     sqlite3SetString(&zFull, zRelative, (char*)0);
   }else{
     char zBuf[5000];
+    zBuf[0] = 0;
     sqlite3SetString(&zFull, getcwd(zBuf, sizeof(zBuf)), "/", zRelative,
                     (char*)0);
   }
index 21904557e6d2845328c0e9d5d030e2306a55e497..dc0cb75988c5d0cac8045787fa93503fc680691c 100644 (file)
@@ -11,7 +11,7 @@
 *************************************************************************
 ** Internal interface definitions for SQLite.
 **
-** @(#) $Id: sqliteInt.h,v 1.384 2005/05/25 10:45:10 danielk1977 Exp $
+** @(#) $Id: sqliteInt.h,v 1.385 2005/06/06 15:06:39 drh Exp $
 */
 #ifndef _SQLITEINT_H_
 #define _SQLITEINT_H_
@@ -1340,7 +1340,7 @@ char *sqlite3MPrintf(const char*, ...);
 char *sqlite3VMPrintf(const char*, va_list);
 void sqlite3DebugPrintf(const char*, ...);
 void *sqlite3TextToPtr(const char*);
-void sqlite3SetString(char **, const char *, ...);
+void sqlite3SetString(char **, ...);
 void sqlite3ErrorMsg(Parse*, const char*, ...);
 void sqlite3Dequote(char*);
 int sqlite3KeywordCode(const char*, int);
index 57ac13994f914deebadb89be8f260709f40bd11c..6e7da85e09a399392fff375be58a655ddd798566 100644 (file)
@@ -14,7 +14,7 @@
 ** This file contains functions for allocating memory, comparing
 ** strings, and stuff like that.
 **
-** $Id: util.c,v 1.135 2005/05/23 13:00:58 danielk1977 Exp $
+** $Id: util.c,v 1.136 2005/06/06 15:06:39 drh Exp $
 */
 #include "sqliteInt.h"
 #include <stdarg.h>
@@ -347,15 +347,15 @@ char *sqlite3StrNDup(const char *z, int n){
 ** point to that string.  The 1st argument must either be NULL or 
 ** point to memory obtained from sqliteMalloc().
 */
-void sqlite3SetString(char **pz, const char *zFirst, ...){
+void sqlite3SetString(char **pz, ...){
   va_list ap;
   int nByte;
   const char *z;
   char *zResult;
 
   if( pz==0 ) return;
-  nByte = strlen(zFirst) + 1;
-  va_start(ap, zFirst);
+  nByte = 1;
+  va_start(ap, pz);
   while( (z = va_arg(ap, const char*))!=0 ){
     nByte += strlen(z);
   }
@@ -365,9 +365,8 @@ void sqlite3SetString(char **pz, const char *zFirst, ...){
   if( zResult==0 ){
     return;
   }
-  strcpy(zResult, zFirst);
-  zResult += strlen(zResult);
-  va_start(ap, zFirst);
+  *zResult = 0;
+  va_start(ap, pz);
   while( (z = va_arg(ap, const char*))!=0 ){
     strcpy(zResult, z);
     zResult += strlen(zResult);