Skip to content

Commit ea67883

Browse files
author
drh
committed
Never use strlen(). Use our own internal sqlite3Strlen30() which is
guaranteed to never overflow an integer. Additional explicit casts to avoid nuisance warning messages. (CVS 6007) FossilOrigin-Name: c872d554930ecf221ac2be5f886d5d67bb35288c
1 parent b27b7f5 commit ea67883

35 files changed

Lines changed: 300 additions & 250 deletions

manifest

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
C More\sexplicit\stype\scasting\sto\ssilence\sVC++.\s(CVS\s6006)
2-
D 2008-12-10T18:03:46
1+
C Never\suse\sstrlen().\s\sUse\sour\sown\sinternal\ssqlite3Strlen30()\swhich\sis\nguaranteed\sto\snever\soverflow\san\sinteger.\s\sAdditional\sexplicit\scasts\sto\navoid\snuisance\swarning\smessages.\s(CVS\s6007)
2+
D 2008-12-10T19:26:22
33
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
44
F Makefile.in f7e4c81c347b04f7b0f1c1b081a168645d7b8af7
55
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -94,7 +94,7 @@ F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
9494
F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc
9595
F sqlite3.def a1be7b9a4b8b51ac41c6ff6e8e44a14ef66b338b
9696
F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
97-
F src/alter.c 0a00c184052b7fd20271e783f65fec4efec6fe30
97+
F src/alter.c 7eee66a6de2605a4aa6a85be6b4688b89e0f48ff
9898
F src/analyze.c c86fd6a1425b22b3a46ce72ad403e4280026364f
9999
F src/attach.c 1c35f95da3c62d19de75b44cfefd12c81c1791b3
100100
F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627
@@ -103,30 +103,30 @@ F src/btmutex.c 63c5cc4ad5715690767ffcb741e185d7bc35ec1a
103103
F src/btree.c ba7baa987f9723882ef4655886327622e02a497f
104104
F src/btree.h 179c3ea813780df78a289a8f5130db18e6d4616e
105105
F src/btreeInt.h 7ef2c872371d7508657f8d7a4efe651c741d6ee6
106-
F src/build.c 01919ad8f5d259b534e04896454e3ed5a344074f
107-
F src/callback.c e970e5beddbdb23f89a6d05cb1a6419d9f755624
106+
F src/build.c 64e9eb409ab39feb08919d28bf112fc3bf07d8e6
107+
F src/callback.c 5538f3fb2507f6cc44623b06a87c861b1c0477bd
108108
F src/complete.c cb14e06dbe79dee031031f0d9e686ff306afe07c
109-
F src/date.c 80b158ab6d14f07bc81df8415c5ab2c477947d42
110-
F src/delete.c d60885716666e5ea0f177b8db73c22c67ccba2cb
109+
F src/date.c 9a6156445442625e72f1ec06b1f392658240f6e6
110+
F src/delete.c 1817205f833a084f66fa9c8e322ab46ba998e4c7
111111
F src/expr.c ee295129a9efa0466ae4ebdb03adc33cd5c2e184
112112
F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
113-
F src/func.c b4570eb73d873041b8e68f5cdbb4556ff13a94c3
113+
F src/func.c 1246828c0d16ad4660c00b39ad83644ed2205e0c
114114
F src/global.c 91723e45a2ad03ae5bb97a0a0d2dbb1a0e69527b
115-
F src/hash.c 582c00618efe2051785e66ba1b6430d5a129de3f
115+
F src/hash.c 831e9c199d8de5976c698e5aca278e2de74ff93b
116116
F src/hash.h 28f38ebb1006a5beedcb013bcdfe31befe7437ae
117117
F src/hwtime.h 4a1d45f4cae1f402ea19686acf24acf4f0cb53cb
118-
F src/insert.c 665a0e747044b39e87ed42989e9514ac9e16accd
118+
F src/insert.c c34dab7d450cf6612859f7c66d48ec6d4aa409fd
119119
F src/journal.c cffd2cd214e58c0e99c3ff632b3bee6c7cbb260e
120-
F src/legacy.c aac57bd984e666059011ea01ec4383892a253be3
120+
F src/legacy.c 4f7410b29598d991628ca40b150aa089649f17d8
121121
F src/loadext.c 2f53996c693a347edc2d773e9217dde49d96ae64
122122
F src/main.c 12b674019503ad90649cd8e6295425ef3078ce12
123-
F src/malloc.c 89c7c58fbec06b80101fdc6dcdf9ee849b7cd7ac
123+
F src/malloc.c 6a5b91159f87238392f190b02b5fba09fe526984
124124
F src/mem0.c f2f84062d1f35814d6535c9f9e33de3bfb3b132c
125125
F src/mem1.c bb8e26adde7d463270e961f045802c61dbabc8f1
126-
F src/mem2.c 7029ff791a248a634b1cad2c92f8cda100e09c16
126+
F src/mem2.c 4c53c0071d3c68b8f252fe85d1667bad59421396
127127
F src/mem3.c 67153ec933e08b70714055e872efb58a6b287939
128128
F src/mem5.c 838309b521c96a2a34507f74a5a739d28de4aac6
129-
F src/memjournal.c bd536c4d6d701b4fa7428545128c5684d2adf779
129+
F src/memjournal.c f9fbded1b4ead4378a4f751fa3ae2bc429f72976
130130
F src/mutex.c e9cb5fbe94afb4328869afaf3ac49bd1327559eb
131131
F src/mutex.h 9e686e83a88838dac8b9c51271c651e833060f1e
132132
F src/mutex_noop.c f5a07671f25a1a9bd7c10ad7107bc2585446200f
@@ -136,30 +136,30 @@ F src/mutex_w32.c ee9cf003a330e2a9d80feefbd2c49899d5d43d6d
136136
F src/os.c ed93a6b46132a602c4fd7a58142e2981c829c79d
137137
F src/os.h 4ee25a35c00e75a569cecb5080be299b0c3e208e
138138
F src/os_common.h 24525d8b7bce66c374dfc1810a6c9043f3359b60
139-
F src/os_os2.c 36196e71292a44bf2d393413cd8c86199694b8b4
140-
F src/os_unix.c cec838fe55eaa53f1ff02ecb311cdd2188c4db95
141-
F src/os_win.c 79e55bbe2177c4824d24d365b1274703c710f504
142-
F src/pager.c e72e92d44365d75563d26957e6ba4a2ec0796da5
139+
F src/os_os2.c bed77dc26e3a95ce4a204936b9a1ca6fe612fcc5
140+
F src/os_unix.c 970e4a98a2d026cbeb2464694e4d13e079102b2f
141+
F src/os_win.c af9459fcd0ba1852c75c0844ec82781e6767d909
142+
F src/pager.c 64269ef14e57c545f8a9588eba15fface4265166
143143
F src/pager.h 37f5173612b7803f44656c16e80df3280234bb18
144144
F src/parse.y 3dfd941533cdc6ce0b09b905b25c4eb73858400b
145145
F src/pcache.c 16dc8da6e6ba6250f8dfd9ee46036db1cbceedc6
146146
F src/pcache.h f20c3e82dd6da622c3fe296170cb1801f9a2d75a
147147
F src/pcache1.c 533b18aa2456b0f135e376289443e0a342e0c456
148-
F src/pragma.c 88050d5afa74fcae1bb260311fe05918f04bc8a5
149-
F src/prepare.c 26808c3d6ad2cd85a67969b14fd77bfbe92aaffb
150-
F src/printf.c b42e767ee0546587a831a5c0a1d7e8b8d80cbb40
151-
F src/random.c 67bf41b20f1983a0e481e7abb98d64704ee26884
152-
F src/resolve.c 83d668f2d622e2639f520fff00e129925bdc9d3b
148+
F src/pragma.c ad7c6eef96b599c6d0e9b2ae9a1a6a3e66108211
149+
F src/prepare.c 51d11eb1eece7548038e7e33c33ee95dc7f82e2d
150+
F src/printf.c 9866a9a9c4a90f6d4147407f373df3fd5d5f9b6f
151+
F src/random.c 676b9d7ac820fe81e6fb2394ac8c10cff7f38628
152+
F src/resolve.c 18dc9f0df1d60048e012ce6632251063e0dd356a
153153
F src/rowset.c 2256fa4a928f750e2f3d6fc733523034beceb1d6
154-
F src/select.c ea915ff233f1d7136ceaee1443d676ade95d4a08
155-
F src/shell.c 484bddeefac9314be18d4a60d401e93848274ee8
154+
F src/select.c 49296e1abf019b965f04a6dc5ff9fafa3ae46396
155+
F src/shell.c 793aaebd8024896c58ded47414fe688fb8b1ef6d
156156
F src/sqlite.h.in 619a82b485fbf02276ecb8b1cc629f0c8bcda4ca
157157
F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17
158-
F src/sqliteInt.h e61d837e04b03c75bf860f06cbb327224e320fba
158+
F src/sqliteInt.h d34967323d5e1351a3b719c4121aed6bc3c9f520
159159
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
160160
F src/status.c 237b193efae0cf6ac3f0817a208de6c6c6ef6d76
161-
F src/table.c caf335a98a1093a5e8e79557d17053755f9aa474
162-
F src/tclsqlite.c 96049bd454f1547abff0a57c45f0dfa57701e076
161+
F src/table.c 23db1e5f27c03160987c122a078b4bb51ef0b2f8
162+
F src/tclsqlite.c 63fcca6796db7dc0a5f65da953cf548cdc559c72
163163
F src/test1.c 30986773b10d75904f21bae5c3e8e8b9f20fa479
164164
F src/test2.c 897528183edf2839c2a3c991d415905db56f1240
165165
F src/test3.c 88a246b56b824275300e6c899634fbac1dc94b14
@@ -189,21 +189,21 @@ F src/test_tclvar.c 9e42fa59d3d2f064b7ab8628e7ab2dc8a9fe93d4
189189
F src/test_thread.c d74fc445e0dba0e00806117eb449b307c0b146bf
190190
F src/test_wsd.c c297d7d6b8a990239e1bd25935e81d612d8ae31d
191191
F src/tokenize.c aaa5fa6a4536a9dd7c855a3f66f32508f1612138
192-
F src/trigger.c 9244c483e5256982e6f32d6f430af6ec10344980
192+
F src/trigger.c 5a669d8fc9197db393ff85fa95ec882282162bb5
193193
F src/update.c 3e022c24e265b0975e51f2ec0348ef84eeaba311
194-
F src/utf.c 515ce4f1e039635197e7f0df46cf8a7ac659a571
194+
F src/utf.c 7bc90bc7d1a0239f876e2c2ce573e9b103aedcd4
195195
F src/util.c 6e997af379d3aa609bf084d7d10fdc1cf32cc72c
196196
F src/vacuum.c 383d6297bddc011ab04a9eed110db6eaf523e8e9
197-
F src/vdbe.c b99af9ad1764b34831ce7e91975d1a7acf6121a7
197+
F src/vdbe.c 0244413f3dae1ee63479f541ec2e950b05c65112
198198
F src/vdbe.h 03516f28bf5aca00a53c4dccd6c313f96adb94f6
199199
F src/vdbeInt.h e6e80a99ce634983b7cc2498843b4d2e5540900a
200200
F src/vdbeapi.c 85c33cfbfa56249cbe627831610afafba754477d
201-
F src/vdbeaux.c 2b7bfb736a9ad9f48b82149a47c8f430e5df730a
201+
F src/vdbeaux.c 5356c9bbac2fb0cb75b816de1d5963b26547f656
202202
F src/vdbeblob.c b0dcebfafedcf9c0addc7901ad98f6f986c08935
203-
F src/vdbemem.c 598741bc060400643b6110a3fe24891333df3d07
204-
F src/vtab.c 09df27d47ed9fef31ad94c79053fac02d5d2073a
203+
F src/vdbemem.c f9c859ac17e2e05a0f249868ce4f191f69edd31d
204+
F src/vtab.c e39e011d7443a8d574b1b9cde207a35522e6df43
205205
F src/walker.c 488c2660e13224ff70c0c82761118efb547f8f0d
206-
F src/where.c c5a21be6d5705d1c2c6f5d56a97785e4752791d2
206+
F src/where.c 7c6ab881411110fd8cf2735205532e15475d3349
207207
F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617
208208
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
209209
F test/alias.test 597662c5d777a122f9a3df0047ea5c5bd383a911
@@ -664,7 +664,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
664664
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
665665
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
666666
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
667-
P e7e9fa4fa1b7fc0668f4e3a51873ee5d11893f42
668-
R 3fdd485d39b8ec78e53f9d12f6f15e2c
667+
P 14e6d19c3157ccdce170e769d678c7f472dd3db2
668+
R 540b254104078d68363402828d97892e
669669
U drh
670-
Z 0329544b446f709fe3cdc363492e43f9
670+
Z 8a01ff0a84aab7060e0a3bce21036dfb

manifest.uuid

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
14e6d19c3157ccdce170e769d678c7f472dd3db2
1+
c872d554930ecf221ac2be5f886d5d67bb35288c

src/alter.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
** This file contains C code routines that used to generate VDBE code
1313
** that implements the ALTER TABLE command.
1414
**
15-
** $Id: alter.c,v 1.50 2008/11/19 09:05:27 danielk1977 Exp $
15+
** $Id: alter.c,v 1.51 2008/12/10 19:26:22 drh Exp $
1616
*/
1717
#include "sqliteInt.h"
1818
#include <ctype.h>
@@ -305,7 +305,9 @@ void sqlite3AlterRenameTable(
305305
/* Make sure it is not a system table being altered, or a reserved name
306306
** that the table is being renamed to.
307307
*/
308-
if( strlen(pTab->zName)>6 && 0==sqlite3StrNICmp(pTab->zName, "sqlite_", 7) ){
308+
if( sqlite3Strlen30(pTab->zName)>6
309+
&& 0==sqlite3StrNICmp(pTab->zName, "sqlite_", 7)
310+
){
309311
sqlite3ErrorMsg(pParse, "table %s may not be altered", pTab->zName);
310312
goto exit_rename_table;
311313
}

src/build.c

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
** COMMIT
2323
** ROLLBACK
2424
**
25-
** $Id: build.c,v 1.505 2008/12/10 17:20:00 drh Exp $
25+
** $Id: build.c,v 1.506 2008/12/10 19:26:22 drh Exp $
2626
*/
2727
#include "sqliteInt.h"
2828
#include <ctype.h>
@@ -369,7 +369,8 @@ static void sqliteDeleteIndex(Index *p){
369369
Index *pOld;
370370
const char *zName = p->zName;
371371

372-
pOld = sqlite3HashInsert(&p->pSchema->idxHash, zName, strlen(zName)+1, 0);
372+
pOld = sqlite3HashInsert(&p->pSchema->idxHash, zName,
373+
sqlite3Strlen30(zName)+1, 0);
373374
assert( pOld==0 || pOld==p );
374375
freeIndex(p);
375376
}
@@ -534,7 +535,7 @@ void sqlite3DeleteTable(Table *pTable){
534535
for(pFKey=pTable->pFKey; pFKey; pFKey=pNextFKey){
535536
pNextFKey = pFKey->pNextFrom;
536537
assert( sqlite3HashFind(&pTable->pSchema->aFKey,
537-
pFKey->zTo, strlen(pFKey->zTo)+1)!=pFKey );
538+
pFKey->zTo, sqlite3Strlen30(pFKey->zTo)+1)!=pFKey );
538539
sqlite3DbFree(db, pFKey);
539540
}
540541
#endif
@@ -565,11 +566,12 @@ void sqlite3UnlinkAndDeleteTable(sqlite3 *db, int iDb, const char *zTabName){
565566
assert( iDb>=0 && iDb<db->nDb );
566567
assert( zTabName && zTabName[0] );
567568
pDb = &db->aDb[iDb];
568-
p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName, strlen(zTabName)+1,0);
569+
p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName,
570+
sqlite3Strlen30(zTabName)+1,0);
569571
if( p ){
570572
#ifndef SQLITE_OMIT_FOREIGN_KEY
571573
for(pF1=p->pFKey; pF1; pF1=pF1->pNextFrom){
572-
int nTo = strlen(pF1->zTo) + 1;
574+
int nTo = sqlite3Strlen30(pF1->zTo) + 1;
573575
pF2 = sqlite3HashFind(&pDb->pSchema->aFKey, pF1->zTo, nTo);
574576
if( pF2==pF1 ){
575577
sqlite3HashInsert(&pDb->pSchema->aFKey, pF1->zTo, nTo, pF1->pNextTo);
@@ -632,9 +634,9 @@ int sqlite3FindDb(sqlite3 *db, Token *pName){
632634

633635
zName = sqlite3NameFromToken(db, pName);
634636
if( zName ){
635-
n = strlen(zName);
637+
n = sqlite3Strlen30(zName);
636638
for(i=(db->nDb-1), pDb=&db->aDb[i]; i>=0; i--, pDb--){
637-
if( (!OMIT_TEMPDB || i!=1 ) && n==strlen(pDb->zName) &&
639+
if( (!OMIT_TEMPDB || i!=1 ) && n==sqlite3Strlen30(pDb->zName) &&
638640
0==sqlite3StrICmp(pDb->zName, zName) ){
639641
break;
640642
}
@@ -1365,7 +1367,7 @@ static char *createTableStmt(sqlite3 *db, Table *p, int isTemp){
13651367
n += identLength(pCol->zName);
13661368
z = pCol->zType;
13671369
if( z ){
1368-
n += (strlen(z) + 1);
1370+
n += (sqlite3Strlen30(z) + 1);
13691371
}
13701372
}
13711373
n += identLength(p->zName);
@@ -1386,19 +1388,19 @@ static char *createTableStmt(sqlite3 *db, Table *p, int isTemp){
13861388
}
13871389
sqlite3_snprintf(n, zStmt,
13881390
!OMIT_TEMPDB&&isTemp ? "CREATE TEMP TABLE ":"CREATE TABLE ");
1389-
k = strlen(zStmt);
1391+
k = sqlite3Strlen30(zStmt);
13901392
identPut(zStmt, &k, p->zName);
13911393
zStmt[k++] = '(';
13921394
for(pCol=p->aCol, i=0; i<p->nCol; i++, pCol++){
13931395
sqlite3_snprintf(n-k, &zStmt[k], zSep);
1394-
k += strlen(&zStmt[k]);
1396+
k += sqlite3Strlen30(&zStmt[k]);
13951397
zSep = zSep2;
13961398
identPut(zStmt, &k, pCol->zName);
13971399
if( (z = pCol->zType)!=0 ){
13981400
zStmt[k++] = ' ';
1399-
assert( (int)(strlen(z)+k+1)<=n );
1401+
assert( (int)(sqlite3Strlen30(z)+k+1)<=n );
14001402
sqlite3_snprintf(n-k, &zStmt[k], "%s", z);
1401-
k += strlen(z);
1403+
k += sqlite3Strlen30(z);
14021404
}
14031405
}
14041406
sqlite3_snprintf(n-k, &zStmt[k], "%s", zEnd);
@@ -1606,7 +1608,8 @@ void sqlite3EndTable(
16061608
Table *pOld;
16071609
FKey *pFKey;
16081610
Schema *pSchema = p->pSchema;
1609-
pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName, strlen(p->zName)+1,p);
1611+
pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName,
1612+
sqlite3Strlen30(p->zName)+1,p);
16101613
if( pOld ){
16111614
assert( p==pOld ); /* Malloc must have failed inside HashInsert() */
16121615
db->mallocFailed = 1;
@@ -1615,7 +1618,7 @@ void sqlite3EndTable(
16151618
#ifndef SQLITE_OMIT_FOREIGN_KEY
16161619
for(pFKey=p->pFKey; pFKey; pFKey=pFKey->pNextFrom){
16171620
void *data;
1618-
int nTo = strlen(pFKey->zTo) + 1;
1621+
int nTo = sqlite3Strlen30(pFKey->zTo) + 1;
16191622
pFKey->pNextTo = sqlite3HashFind(&pSchema->aFKey, pFKey->zTo, nTo);
16201623
data = sqlite3HashInsert(&pSchema->aFKey, pFKey->zTo, nTo, pFKey);
16211624
if( data==(void *)pFKey ){
@@ -2172,7 +2175,7 @@ void sqlite3CreateForeignKey(
21722175
nByte = sizeof(*pFKey) + nCol*sizeof(pFKey->aCol[0]) + pTo->n + 1;
21732176
if( pToCol ){
21742177
for(i=0; i<pToCol->nExpr; i++){
2175-
nByte += strlen(pToCol->a[i].zName) + 1;
2178+
nByte += sqlite3Strlen30(pToCol->a[i].zName) + 1;
21762179
}
21772180
}
21782181
pFKey = sqlite3DbMallocZero(db, nByte );
@@ -2211,7 +2214,7 @@ void sqlite3CreateForeignKey(
22112214
}
22122215
if( pToCol ){
22132216
for(i=0; i<nCol; i++){
2214-
int n = strlen(pToCol->a[i].zName);
2217+
int n = sqlite3Strlen30(pToCol->a[i].zName);
22152218
pFKey->aCol[i].zCol = z;
22162219
memcpy(z, pToCol->a[i].zName, n);
22172220
z[n] = 0;
@@ -2497,7 +2500,7 @@ void sqlite3CreateIndex(
24972500
*/
24982501
if( pList==0 ){
24992502
nullId.z = (u8*)pTab->aCol[pTab->nCol-1].zName;
2500-
nullId.n = strlen((char*)nullId.z);
2503+
nullId.n = sqlite3Strlen30((char*)nullId.z);
25012504
pList = sqlite3ExprListAppend(pParse, 0, 0, &nullId);
25022505
if( pList==0 ) goto exit_create_index;
25032506
pList->a[0].sortOrder = sortOrder;
@@ -2510,14 +2513,14 @@ void sqlite3CreateIndex(
25102513
Expr *pExpr;
25112514
CollSeq *pColl;
25122515
if( (pExpr = pList->a[i].pExpr)!=0 && (pColl = pExpr->pColl)!=0 ){
2513-
nExtra += (1 + strlen(pColl->zName));
2516+
nExtra += (1 + sqlite3Strlen30(pColl->zName));
25142517
}
25152518
}
25162519

25172520
/*
25182521
** Allocate the index structure.
25192522
*/
2520-
nName = strlen(zName);
2523+
nName = sqlite3Strlen30(zName);
25212524
nCol = pList->nExpr;
25222525
pIndex = sqlite3DbMallocZero(db,
25232526
sizeof(Index) + /* Index structure */
@@ -2581,7 +2584,7 @@ void sqlite3CreateIndex(
25812584
assert( pListItem->pExpr->pColl );
25822585
zColl = zExtra;
25832586
sqlite3_snprintf(nExtra, zExtra, "%s", pListItem->pExpr->pColl->zName);
2584-
zExtra += (strlen(zColl) + 1);
2587+
zExtra += (sqlite3Strlen30(zColl) + 1);
25852588
}else{
25862589
zColl = pTab->aCol[j].zColl;
25872590
if( !zColl ){
@@ -2654,7 +2657,8 @@ void sqlite3CreateIndex(
26542657
if( db->init.busy ){
26552658
Index *p;
26562659
p = sqlite3HashInsert(&pIndex->pSchema->idxHash,
2657-
pIndex->zName, strlen(pIndex->zName)+1, pIndex);
2660+
pIndex->zName, sqlite3Strlen30(pIndex->zName)+1,
2661+
pIndex);
26582662
if( p ){
26592663
assert( p==pIndex ); /* Malloc must have failed */
26602664
db->mallocFailed = 1;

src/callback.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
** This file contains functions used to access the internal hash tables
1414
** of user defined functions and collation sequences.
1515
**
16-
** $Id: callback.c,v 1.32 2008/10/10 17:41:29 drh Exp $
16+
** $Id: callback.c,v 1.33 2008/12/10 19:26:22 drh Exp $
1717
*/
1818

1919
#include "sqliteInt.h"
@@ -56,7 +56,7 @@ static void callCollNeeded(sqlite3 *db, const char *zName, int nName){
5656
static int synthCollSeq(sqlite3 *db, CollSeq *pColl){
5757
CollSeq *pColl2;
5858
char *z = pColl->zName;
59-
int n = strlen(z);
59+
int n = sqlite3Strlen30(z);
6060
int i;
6161
static const u8 aEnc[] = { SQLITE_UTF16BE, SQLITE_UTF16LE, SQLITE_UTF8 };
6262
for(i=0; i<3; i++){
@@ -287,7 +287,7 @@ void sqlite3FuncDefInsert(
287287
FuncDef *pDef /* The function definition to insert */
288288
){
289289
FuncDef *pOther;
290-
int nName = strlen(pDef->zName);
290+
int nName = sqlite3Strlen30(pDef->zName);
291291
u8 c1 = (u8)pDef->zName[0];
292292
int h = (sqlite3UpperToLower[c1] + nName) % ArraySize(pHash->a);
293293
pOther = functionSearch(pHash, h, pDef->zName, nName);

0 commit comments

Comments
 (0)