mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-08 03:22:21 +03:00
Fix segfaults that might occur after a malloc failure. (CVS 2119)
FossilOrigin-Name: 368774487e7a0266465f5a1c2701c9b14573d26c
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Documentation\sfor\sREINDEX\sand\sALTER\sTABLE\scommands.\s(CVS\s2118)
|
C Fix\ssegfaults\sthat\smight\soccur\safter\sa\smalloc\sfailure.\s(CVS\s2119)
|
||||||
D 2004-11-20T08:17:18
|
D 2004-11-20T18:13:10
|
||||||
F Makefile.in e747bb5ba34ccbdd81f79dcf1b2b33c02817c21d
|
F Makefile.in e747bb5ba34ccbdd81f79dcf1b2b33c02817c21d
|
||||||
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
|
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
|
||||||
F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
|
F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
|
||||||
@@ -31,10 +31,10 @@ F src/attach.c e49d09dad9f5f9fb10b4b0c1be5a70ae4c45e689
|
|||||||
F src/auth.c 3b81f2a42f48a62c2c9c9b0eda31a157c681edea
|
F src/auth.c 3b81f2a42f48a62c2c9c9b0eda31a157c681edea
|
||||||
F src/btree.c 49b09718cd988d1c7c981b03e94679bc10b5f711
|
F src/btree.c 49b09718cd988d1c7c981b03e94679bc10b5f711
|
||||||
F src/btree.h 861e40b759a195ba63819740e484390012cf81ab
|
F src/btree.h 861e40b759a195ba63819740e484390012cf81ab
|
||||||
F src/build.c a43f3b8f452dbd28ad94fad788693f3fc2336908
|
F src/build.c c7dd57fdbb330d65df241277291cad8e58687a46
|
||||||
F src/date.c 65536e7ea04fdde6e0551264fca15966966e171f
|
F src/date.c 65536e7ea04fdde6e0551264fca15966966e171f
|
||||||
F src/delete.c be9d039b819f4a5d0fdfaeceace139ba189ef819
|
F src/delete.c be9d039b819f4a5d0fdfaeceace139ba189ef819
|
||||||
F src/expr.c 4ee3e47358c92a919062255b14057a7a8f641e01
|
F src/expr.c 90f440e1fe065717bbe391cc4de455997794399d
|
||||||
F src/func.c b668e5ad043176049454c95a6a780367a0e8f6bb
|
F src/func.c b668e5ad043176049454c95a6a780367a0e8f6bb
|
||||||
F src/hash.c a97721a55440b7bea31ffe471bb2f6b4123cddd5
|
F src/hash.c a97721a55440b7bea31ffe471bb2f6b4123cddd5
|
||||||
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
|
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
|
||||||
@@ -260,7 +260,7 @@ F www/tclsqlite.tcl 560ecd6a916b320e59f2917317398f3d59b7cc25
|
|||||||
F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618
|
F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618
|
||||||
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
|
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
|
||||||
F www/whentouse.tcl fdacb0ba2d39831e8a6240d05a490026ad4c4e4c
|
F www/whentouse.tcl fdacb0ba2d39831e8a6240d05a490026ad4c4e4c
|
||||||
P 5efa2d2a602c3b7249c4e6701e97b16b5ad0280d
|
P aceaa5f6e97c93962f5d6d14de8a490efa619db4
|
||||||
R 502686892546d476cbd8522ca98f27e6
|
R 8f9d5443bb2a95ac89805536ee413fef
|
||||||
U danielk1977
|
U drh
|
||||||
Z 626ea436eea0d0f50a92b6b634fdfd52
|
Z 96591b175a33effa711ce86d94861df3
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
aceaa5f6e97c93962f5d6d14de8a490efa619db4
|
368774487e7a0266465f5a1c2701c9b14573d26c
|
||||||
18
src/build.c
18
src/build.c
@@ -22,7 +22,7 @@
|
|||||||
** COMMIT
|
** COMMIT
|
||||||
** ROLLBACK
|
** ROLLBACK
|
||||||
**
|
**
|
||||||
** $Id: build.c,v 1.284 2004/11/19 08:41:34 danielk1977 Exp $
|
** $Id: build.c,v 1.285 2004/11/20 18:13:10 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -136,6 +136,9 @@ void sqlite3NestedParse(Parse *pParse, const char *zFormat, ...){
|
|||||||
va_start(ap, zFormat);
|
va_start(ap, zFormat);
|
||||||
zSql = sqlite3VMPrintf(zFormat, ap);
|
zSql = sqlite3VMPrintf(zFormat, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
if( zSql==0 ){
|
||||||
|
return; /* A malloc must have failed */
|
||||||
|
}
|
||||||
pParse->nested++;
|
pParse->nested++;
|
||||||
memcpy(saveBuf, &pParse->nVar, SAVE_SZ);
|
memcpy(saveBuf, &pParse->nVar, SAVE_SZ);
|
||||||
memset(&pParse->nVar, 0, SAVE_SZ);
|
memset(&pParse->nVar, 0, SAVE_SZ);
|
||||||
@@ -516,10 +519,14 @@ void sqlite3OpenMasterTable(Vdbe *v, int iDb){
|
|||||||
** does not exist.
|
** does not exist.
|
||||||
*/
|
*/
|
||||||
int findDb(sqlite3 *db, Token *pName){
|
int findDb(sqlite3 *db, Token *pName){
|
||||||
int i;
|
int i; /* Database number */
|
||||||
Db *pDb;
|
int n; /* Number of characters in the name */
|
||||||
char *zName = sqlite3NameFromToken(pName);
|
Db *pDb; /* A database whose name space is being searched */
|
||||||
int n = strlen(zName);
|
char *zName; /* Name we are searching for */
|
||||||
|
|
||||||
|
zName = sqlite3NameFromToken(pName);
|
||||||
|
if( zName ){
|
||||||
|
n = strlen(zName);
|
||||||
for(pDb=db->aDb, i=0; i<db->nDb; i++, pDb++){
|
for(pDb=db->aDb, i=0; i<db->nDb; i++, pDb++){
|
||||||
if( n==strlen(pDb->zName) && 0==sqlite3StrICmp(pDb->zName, zName) ){
|
if( n==strlen(pDb->zName) && 0==sqlite3StrICmp(pDb->zName, zName) ){
|
||||||
sqliteFree(zName);
|
sqliteFree(zName);
|
||||||
@@ -527,6 +534,7 @@ int findDb(sqlite3 *db, Token *pName){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sqliteFree(zName);
|
sqliteFree(zName);
|
||||||
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
** This file contains routines used for analyzing expressions and
|
** This file contains routines used for analyzing expressions and
|
||||||
** for generating VDBE code that evaluates expressions in SQLite.
|
** for generating VDBE code that evaluates expressions in SQLite.
|
||||||
**
|
**
|
||||||
** $Id: expr.c,v 1.170 2004/11/12 03:56:15 drh Exp $
|
** $Id: expr.c,v 1.171 2004/11/20 18:13:10 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -220,6 +220,9 @@ Expr *sqlite3RegisterExpr(Parse *pParse, Token *pToken){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
p = sqlite3Expr(TK_REGISTER, 0, 0, pToken);
|
p = sqlite3Expr(TK_REGISTER, 0, 0, pToken);
|
||||||
|
if( p==0 ){
|
||||||
|
return 0; /* Malloc failed */
|
||||||
|
}
|
||||||
depth = atoi(&pToken->z[1]);
|
depth = atoi(&pToken->z[1]);
|
||||||
if( depth>=0 ){
|
if( depth>=0 ){
|
||||||
p->iTable = pParse->nMem++;
|
p->iTable = pParse->nMem++;
|
||||||
|
|||||||
Reference in New Issue
Block a user