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.
Commit
0cbc5d295c9911b00ed405d301a7b8e76db77b41
Parent
599e6abfb177b9c…
1 file changed
+5
-1
M
src/db.c
+5
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -502,16 +502,20 @@ | ||
| 502 | 502 | ** zDefault instead. |
| 503 | 503 | */ |
| 504 | 504 | char *db_text(char *zDefault, const char *zSql, ...){ |
| 505 | 505 | va_list ap; |
| 506 | 506 | Stmt s; |
| 507 | - char *z = zDefault; | |
| 507 | + char *z; | |
| 508 | 508 | va_start(ap, zSql); |
| 509 | 509 | db_vprepare(&s, zSql, ap); |
| 510 | 510 | va_end(ap); |
| 511 | 511 | if( db_step(&s)==SQLITE_ROW ){ |
| 512 | 512 | z = mprintf("%s", sqlite3_column_text(s.pStmt, 0)); |
| 513 | + }else if( zDefault ){ | |
| 514 | + z = mprintf("%s", zDefault); | |
| 515 | + }else{ | |
| 516 | + z = 0; | |
| 513 | 517 | } |
| 514 | 518 | db_finalize(&s); |
| 515 | 519 | return z; |
| 516 | 520 | } |
| 517 | 521 | |
| 518 | 522 |
| --- 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 |