Fix a problem with strange expressions being fed to an ATTACH or DETACH

statement. (CVS 3965)

FossilOrigin-Name: 0c91dc9ee0c5d441a7789b631476515260cb887f
This commit is contained in:
drh 2007-05-09 20:31:29 +00:00
parent de3bea7ba4
commit b63f274589
4 changed files with 24 additions and 11 deletions

View File

@ -1,5 +1,5 @@
C Fix\san\sobscure\scache\scorruption\sthat\scould\soccur\safter\san\sSQLITE_FULL\serror.\s(CVS\s3964)
D 2007-05-09T15:56:40
C Fix\sa\sproblem\swith\sstrange\sexpressions\sbeing\sfed\sto\san\sATTACH\sor\sDETACH\nstatement.\s(CVS\s3965)
D 2007-05-09T20:31:30
F Makefile.in 87b200ad9970907f76df734d29dff3d294c10935
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@ -59,7 +59,7 @@ F sqlite3.def a96c1d0d39362b763d2ddba220a32da41a15c4b4
F sqlite3.pc.in 985b9bf34192a549d7d370e0f0b6b34a4f61369a
F src/alter.c ca8fc4a3c7359379598dc12589b65c32eb88defd
F src/analyze.c 4bbf5ddf9680587c6d4917e02e378b6037be3651
F src/attach.c a674f72b5e4a02b81d0ae7e6e14c1a2f48e36491
F src/attach.c ba628db0c2b6a362f036d017bf1196cdfe4ebb37
F src/auth.c 902f4722661c796b97f007d9606bd7529c02597f
F src/btree.c ec0943dd89a7209ea3326ff29df7708f98c5596f
F src/btree.h 1d527bf61ed176f980c34999d5793a0fd45dcf8c
@ -152,7 +152,7 @@ F test/altermalloc.test 19323e0f452834044c27a54c6e78554d706de7ba
F test/analyze.test 2f55535aa335785db1a2f97d3f3831c16c09f8b0
F test/async.test 464dc7c7ccb144e8c82ecca429e6d7cd1c96bd6e
F test/async2.test 81e4a1fd010c903eb3b763fdb4c4cad7a99afb14
F test/attach.test c616a88eab6b6fd99b7b2fcf449420f14628bc0b
F test/attach.test cf289abdb120053136649efd1306ab9d47fa41b2
F test/attach2.test 0e6a7c54343c85dd877a1e86073a05176043ed40
F test/attach3.test eafcafb107585aecc2ed1569a77914138eef46a9
F test/attachmalloc.test 03eeddd06e685ddbe975efd51824e4941847e5f4
@ -486,7 +486,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P 9bf2c594a48a4661700f0833562ee2b3ff7b761c
R e6e433ce97807ce8e1a14237202d778b
U danielk1977
Z 5e57374f56d07a6eac9a76bd05073c8d
P e8e879aca67dee959bab42627028964c474da72f
R d85fded0d2876aeef51189f8bdd48649
U drh
Z 136b1067dae497c5894f3596fcc6c47e

View File

@ -1 +1 @@
e8e879aca67dee959bab42627028964c474da72f
0c91dc9ee0c5d441a7789b631476515260cb887f

View File

@ -11,7 +11,7 @@
*************************************************************************
** This file contains code used to implement the ATTACH and DETACH commands.
**
** $Id: attach.c,v 1.59 2007/05/08 01:08:49 drh Exp $
** $Id: attach.c,v 1.60 2007/05/09 20:31:30 drh Exp $
*/
#include "sqliteInt.h"
@ -40,6 +40,10 @@ static int resolveAttachExpr(NameContext *pName, Expr *pExpr)
if( pExpr ){
if( pExpr->op!=TK_ID ){
rc = sqlite3ExprResolveNames(pName, pExpr);
if( rc==SQLITE_OK && !sqlite3ExprIsConstant(pExpr) ){
sqlite3ErrorMsg(pName->pParse, "invalid name: \"%T\"", &pExpr->span);
return SQLITE_ERROR;
}
}else{
pExpr->op = TK_STRING;
}

View File

@ -12,7 +12,7 @@
# focus of this script is testing the ATTACH and DETACH commands
# and related functionality.
#
# $Id: attach.test,v 1.43 2006/05/25 12:17:32 drh Exp $
# $Id: attach.test,v 1.44 2007/05/09 20:31:30 drh Exp $
#
set testdir [file dirname $argv0]
@ -735,4 +735,13 @@ db close
file delete -force test2.db
file delete -force no-such-file
do_test attach-7.1 {
file delete -force test.db test.db-journal
sqlite3 db test.db
catchsql {
DETACH RAISE ( IGNORE ) IN ( SELECT "AAAAAA" . * ORDER BY
REGISTER LIMIT "AAAAAA" . "AAAAAA" OFFSET RAISE ( IGNORE ) NOT NULL )
}
} {1 {invalid name: "RAISE ( IGNORE ) IN ( SELECT "AAAAAA" . * ORDER BY
REGISTER LIMIT "AAAAAA" . "AAAAAA" OFFSET RAISE ( IGNORE ) NOT NULL )"}}
finish_test