Fossil SCM

Make sure the return value of db_text() is always something obtained from malloc() or else NULL. Strdup() the default value if the default value is used.

drh 2010-03-10 17:18 trunk
Commit 0cbc5d295c9911b00ed405d301a7b8e76db77b41
1 file changed +5 -1
+5 -1
--- src/db.c
+++ src/db.c
@@ -502,16 +502,20 @@
502502
** zDefault instead.
503503
*/
504504
char *db_text(char *zDefault, const char *zSql, ...){
505505
va_list ap;
506506
Stmt s;
507
- char *z = zDefault;
507
+ char *z;
508508
va_start(ap, zSql);
509509
db_vprepare(&s, zSql, ap);
510510
va_end(ap);
511511
if( db_step(&s)==SQLITE_ROW ){
512512
z = mprintf("%s", sqlite3_column_text(s.pStmt, 0));
513
+ }else if( zDefault ){
514
+ z = mprintf("%s", zDefault);
515
+ }else{
516
+ z = 0;
513517
}
514518
db_finalize(&s);
515519
return z;
516520
}
517521
518522
--- src/db.c
+++ src/db.c
@@ -502,16 +502,20 @@
502 ** zDefault instead.
503 */
504 char *db_text(char *zDefault, const char *zSql, ...){
505 va_list ap;
506 Stmt s;
507 char *z = zDefault;
508 va_start(ap, zSql);
509 db_vprepare(&s, zSql, ap);
510 va_end(ap);
511 if( db_step(&s)==SQLITE_ROW ){
512 z = mprintf("%s", sqlite3_column_text(s.pStmt, 0));
 
 
 
 
513 }
514 db_finalize(&s);
515 return z;
516 }
517
518
--- src/db.c
+++ src/db.c
@@ -502,16 +502,20 @@
502 ** zDefault instead.
503 */
504 char *db_text(char *zDefault, const char *zSql, ...){
505 va_list ap;
506 Stmt s;
507 char *z;
508 va_start(ap, zSql);
509 db_vprepare(&s, zSql, ap);
510 va_end(ap);
511 if( db_step(&s)==SQLITE_ROW ){
512 z = mprintf("%s", sqlite3_column_text(s.pStmt, 0));
513 }else if( zDefault ){
514 z = mprintf("%s", zDefault);
515 }else{
516 z = 0;
517 }
518 db_finalize(&s);
519 return z;
520 }
521
522

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button