From: drh Date: Mon, 6 Jun 2005 15:06:39 +0000 (+0000) Subject: Handle failures of getcwd() without segfaulting. Ticket #1274. (CVS 2490) X-Git-Tag: version-3.6.10~3668 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41f5852eeaaef8b6810df6b564f8fe54f23cf093;p=thirdparty%2Fsqlite.git Handle failures of getcwd() without segfaulting. Ticket #1274. (CVS 2490) FossilOrigin-Name: c1691004d6d81b683a4ca5b1723c0de8b9b4e376 --- diff --git a/manifest b/manifest index 9d968573bf..defd067e47 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index cff81480af..ae029f940f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fafaa18eea1e7142e1094b5f6d544d20c9df7c0f \ No newline at end of file +c1691004d6d81b683a4ca5b1723c0de8b9b4e376 \ No newline at end of file diff --git a/src/os_unix.c b/src/os_unix.c index eb0d870bb2..b900331bd3 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -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); } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 21904557e6..dc0cb75988 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -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); diff --git a/src/util.c b/src/util.c index 57ac13994f..6e7da85e09 100644 --- a/src/util.c +++ b/src/util.c @@ -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 @@ -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);