diff --git a/CHANGELOG.md b/CHANGELOG.md index b2fbc03..cdf4e8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.27.12 + +* Check integrity of sqlite3 file before decoding or tile-joining + ## 1.27.11 * Always include tile and layer in tippecanoe-decode, fixing corrupt JSON. diff --git a/decode.cpp b/decode.cpp index acaf1e4..63d70b8 100644 --- a/decode.cpp +++ b/decode.cpp @@ -274,6 +274,12 @@ void decode(char *fname, int z, unsigned x, unsigned y, std::set co fprintf(stderr, "%s: %s\n", fname, sqlite3_errmsg(db)); exit(EXIT_FAILURE); } + + char *err = NULL; + if (sqlite3_exec(db, "PRAGMA integrity_check;", NULL, NULL, &err) != SQLITE_OK) { + fprintf(stderr, "%s: integrity_check: %s\n", fname, err); + exit(EXIT_FAILURE); + } } if (z < 0) { diff --git a/enumerate.cpp b/enumerate.cpp index 9b0aed5..bd27fc5 100644 --- a/enumerate.cpp +++ b/enumerate.cpp @@ -11,6 +11,12 @@ void enumerate(char *fname) { exit(EXIT_FAILURE); } + char *err = NULL; + if (sqlite3_exec(db, "PRAGMA integrity_check;", NULL, NULL, &err) != SQLITE_OK) { + fprintf(stderr, "%s: integrity_check: %s\n", fname, err); + exit(EXIT_FAILURE); + } + const char *sql = "SELECT zoom_level, tile_column, tile_row from tiles order by zoom_level, tile_column, tile_row;"; sqlite3_stmt *stmt; diff --git a/tile-join.cpp b/tile-join.cpp index abe340e..0cba463 100644 --- a/tile-join.cpp +++ b/tile-join.cpp @@ -413,6 +413,12 @@ struct reader *begin_reading(char *fname) { exit(EXIT_FAILURE); } + char *err = NULL; + if (sqlite3_exec(db, "PRAGMA integrity_check;", NULL, NULL, &err) != SQLITE_OK) { + fprintf(stderr, "%s: integrity_check: %s\n", fname, err); + exit(EXIT_FAILURE); + } + const char *sql = "SELECT zoom_level, tile_column, tile_row, tile_data from tiles order by zoom_level, tile_column, tile_row;"; sqlite3_stmt *stmt; diff --git a/version.hpp b/version.hpp index 244058c..14b1750 100644 --- a/version.hpp +++ b/version.hpp @@ -1,6 +1,6 @@ #ifndef VERSION_HPP #define VERSION_HPP -#define VERSION "tippecanoe v1.27.11\n" +#define VERSION "tippecanoe v1.27.12\n" #endif