From: drh Date: Mon, 6 Jun 2005 15:07:02 +0000 (+0000) Subject: Handle failures of getcwd() without segfaulting. Ticket #1274. (CVS 2491) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d7ae9475a8fd9d9e89f6e0f5b1dc2e522d539759;p=thirdparty%2Fsqlite.git Handle failures of getcwd() without segfaulting. Ticket #1274. (CVS 2491) FossilOrigin-Name: c1bd0a150c2c734b1ef991361f4eb41feb2ec578 --- diff --git a/manifest b/manifest index df8b50e98b..3a8f540685 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C The\s".dump"\smethod\sin\sthe\sshell\sfor\sversion\s2\sshould\snot\ssort\stables\sby\nname\sbecause\sthis\scan\sput\sviews\sout\sof\sdependency\sorder.\s\s\sTicket\s#1124.\s(CVS\s2347) -D 2005-02-16T03:53:11 +C Handle\sfailures\sof\sgetcwd()\swithout\ssegfaulting.\s\sTicket\s#1274.\s(CVS\s2491) +D 2005-06-06T15:07:03 F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -38,7 +38,7 @@ F src/hash.h 3247573ab95b9dd90bcca0307a75d9a16da1ccc7 F src/insert.c c0485ee2d1b99322894e2d1e0b576fd05ed75616 F src/main.c 7802ab78b2f2e66750be2192b2c1334c99bc10a5 F src/md5.c fe4f9c9c6f71dfc26af8da63e4d04489b1430565 -F src/os.c 989942fc5d209128d1f371f29447914ec98006ef +F src/os.c 617db07b13113ec093786b2278767ab46217d140 F src/os.h 250a3789be609adfee5c5aa20137ce8683276f24 F src/pager.c b246986e5ba31b15aa3cf91d3b9ec2e608aceb8e F src/pager.h 82332878799280145639a48d88cdb4058925e3f6 @@ -49,7 +49,7 @@ F src/random.c 775913e0b7fbd6295d21f12a7bd35b46387c44b2 F src/select.c a1c18cab14b49f28ed7629a53fe02adeb13083d2 F src/shell.c 46a1757c152bba687f647b571693bfa223d3354d F src/sqlite.h.in b1414cc6686c77917024d8196efa4531e76cf194 -F src/sqliteInt.h 3e9203f16d12baf3a364fae9d64903d813651abd +F src/sqliteInt.h 311de2338da566e996ea3f4846d489e3856be7a3 F src/table.c eea34544be947e4939ba9e46391d5da998f90b84 F src/tclsqlite.c 2daaaa41378fbaf167905363197e1d44464b6eb6 F src/test1.c 4ae20bc125b1a7d7824cccca55d538d81f0b4949 @@ -59,7 +59,7 @@ F src/test4.c 6e3e31acfaf21d66420fc35fda5b17dc0000cc8d F src/tokenize.c 6676b946fd8825b67ab52140af4fdc57a70bda48 F src/trigger.c a9927b57c865b6f3df3fb5e40c9824d722660ded F src/update.c bd391079138e67d09c9af34528ca4137c29242d1 -F src/util.c 48f1e99803e924433477a7ccbdab35663acb621d +F src/util.c c2de22342aae2cc954d3c88ef40a2ece7cee6905 F src/vacuum.c 12de02a8dec2b3f8d30ea496b66a0f989322a2c4 F src/vdbe.c f78a26f5bbd647fac84c26e0a54b85361613a004 F src/vdbe.h ac987945e4dd6f987bca534c6005899f089fc270 @@ -191,7 +191,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P 74684507a0a2bda67b6cfa899ccabf99da515899 -R 75958564507d78fd3b2f7cf5f11b5638 +P b82c06fdd143fde6678003a0f3fc66e10c21a65b +R 128473a62b22c8a2cfc6d615fe53b280 U drh -Z e5cfbc8013b3ec6e8beae1c96b8bf821 +Z e17f99ad55fbdd9c4262ff68b1f001b5 diff --git a/manifest.uuid b/manifest.uuid index be00d3f53f..09dd3b0bd6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b82c06fdd143fde6678003a0f3fc66e10c21a65b \ No newline at end of file +c1bd0a150c2c734b1ef991361f4eb41feb2ec578 \ No newline at end of file diff --git a/src/os.c b/src/os.c index 930d62440e..dccd65f1d6 100644 --- a/src/os.c +++ b/src/os.c @@ -1778,6 +1778,7 @@ char *sqliteOsFullPathname(const char *zRelative){ sqliteSetString(&zFull, zRelative, (char*)0); }else{ char zBuf[5000]; + zBuf[0] = 0; sqliteSetString(&zFull, getcwd(zBuf, sizeof(zBuf)), "/", zRelative, (char*)0); } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index c8c7e9c962..04158e91be 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -11,7 +11,7 @@ ************************************************************************* ** Internal interface definitions for SQLite. ** -** @(#) $Id: sqliteInt.h,v 1.220.2.1 2004/07/15 13:37:05 drh Exp $ +** @(#) $Id: sqliteInt.h,v 1.220.2.2 2005/06/06 15:07:03 drh Exp $ */ #include "config.h" #include "sqlite.h" @@ -1120,7 +1120,7 @@ void sqliteRealToSortable(double r, char *); #endif char *sqliteMPrintf(const char*, ...); char *sqliteVMPrintf(const char*, va_list); -void sqliteSetString(char **, const char *, ...); +void sqliteSetString(char **, ...); void sqliteSetNString(char **, ...); void sqliteErrorMsg(Parse*, const char*, ...); void sqliteDequote(char*); diff --git a/src/util.c b/src/util.c index 53809c69e2..d8ce7072d0 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.74.2.1 2004/07/15 13:08:41 drh Exp $ +** $Id: util.c,v 1.74.2.2 2005/06/06 15:07:03 drh Exp $ */ #include "sqliteInt.h" #include @@ -330,15 +330,15 @@ char *sqliteStrNDup(const char *z, int n){ ** point to that string. The 1st argument must either be NULL or ** point to memory obtained from sqliteMalloc(). */ -void sqliteSetString(char **pz, const char *zFirst, ...){ +void sqliteSetString(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); } @@ -348,9 +348,8 @@ void sqliteSetString(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);