diff --git a/src/database/config.c b/src/database/config.c
index d931f9eebc11192dbef3727d6b8f11882775aae7..9dba758018efca89ae3a429041cd9b9783181e36 100644
--- a/src/database/config.c
+++ b/src/database/config.c
@@ -144,7 +144,7 @@ bool
 database_config_queue(sqlite3 *db, const char *option, int value)
 {
     static const char *SQL_STMT_TMP = "UPDATE queue_state SET %s = ? WHERE id = 42;";
-    char SQL_STMT[PATH_MAX];
+    char SQL_STMT[LKT_MAX_SQLITE_STATEMENT];
     sqlite3_stmt *stmt = 0;
     bool ret = false;
     int code;
@@ -154,7 +154,8 @@ database_config_queue(sqlite3 *db, const char *option, int value)
     if (value > 100)
         value = 100;
 
-    snprintf(SQL_STMT, PATH_MAX, SQL_STMT_TMP, option);
+    snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT - 1, SQL_STMT_TMP, option);
+    SQL_STMT[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_PREPARE(db, stmt, SQL_STMT, error);
 
     if (sqlite3_bind_int(stmt, 1, value) != SQLITE_OK)
@@ -183,9 +184,7 @@ database_config_queue_default(sqlite3 *db)
         "  single = 0,"
         "  consume = 0,"
         "  current = NULL,"
-        "  duration = 0;"
-        ;
-
+        "  duration = 0;";
     SQLITE_EXEC(db, SQL_DEFAULT, error);
     return true;
 error:
@@ -196,11 +195,12 @@ bool
 database_get_config(sqlite3 *db, const char *option, int *value)
 {
     static const char *SQL_STMT_TMP = "SELECT %s FROM queue_state WHERE id = 42;";
-    char SQL_STMT[PATH_MAX];
+    char SQL_STMT[LKT_MAX_SQLITE_STATEMENT];
     sqlite3_stmt *stmt = 0;
     bool ret = false;
 
-    snprintf(SQL_STMT, PATH_MAX, SQL_STMT_TMP, option);
+    snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT - 1, SQL_STMT_TMP, option);
+    SQL_STMT[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_PREPARE(db, stmt, SQL_STMT, error);
 
     if (sqlite3_step(stmt) != SQLITE_ROW)
diff --git a/src/database/find.c b/src/database/find.c
index d49dce80d65e05334372a68c50a3172dbf76f722..63e490b646dda30b620c2a1c535d5e55a62538b6 100644
--- a/src/database/find.c
+++ b/src/database/find.c
@@ -22,10 +22,10 @@ database_search_init(sqlite3 *db, char *col_name, char *rgx, sqlite3_stmt **ret)
         "  kara.id AS id, "
         "  string AS any_col"
         "FROM kara WHERE %s LIKE ?;";
-    char SQL_STMT[PATH_MAX];
+    char SQL_STMT[LKT_MAX_SQLITE_STATEMENT];
 
-    memset(SQL_STMT, 0, PATH_MAX);
-    snprintf(SQL_STMT, PATH_MAX, SQL_STMT_TEMPLATE, col_name);
+    snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT - 1, SQL_STMT_TEMPLATE, col_name);
+    SQL_STMT[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_PREPARE(db, *ret, SQL_STMT, error);
 
     if (sqlite3_bind_text(*ret, 1, rgx, -1, 0) != SQLITE_OK) {
diff --git a/src/database/open.c b/src/database/open.c
index 50e848d2f5e44ce493d87cba0db1cba75038f54a..5d70fae207aaedbf02a321ee7fdf132ff1e8143a 100644
--- a/src/database/open.c
+++ b/src/database/open.c
@@ -89,16 +89,15 @@ static inline bool
 __attach(sqlite3 *db, const char *name, const char *path)
 {
     static const char SQL_ATTACH_TEMPLATE[] = "ATTACH '%s' AS '%s';";
-    size_t len = strlen(path) + strlen(name) + (sizeof(SQL_ATTACH_TEMPLATE) / sizeof(char));
-    char *SQL_ATTACH = (char *) calloc(len, sizeof(char));
+    char SQL_ATTACH[LKT_MAX_SQLITE_STATEMENT];
     bool ret = false;
 
-    snprintf(SQL_ATTACH, len - 1, SQL_ATTACH_TEMPLATE, path, name);
+    snprintf(SQL_ATTACH, LKT_MAX_SQLITE_STATEMENT - 1, SQL_ATTACH_TEMPLATE, path, name);
+    SQL_ATTACH[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_EXEC(db, SQL_ATTACH, err_no_attach);
     fprintf(stderr, " * Attached database '%s' with path '%s'\n", name, path);
     ret = true;
 err_no_attach:
-    free(SQL_ATTACH);
     return ret;
 }
 
@@ -106,16 +105,15 @@ static inline bool
 __detach(sqlite3 *db, const char *name)
 {
     static const char SQL_DETACH_TEMPLATE[] = "DETACH '%s';\n";
-    size_t len = strlen(name) + (sizeof(SQL_DETACH_TEMPLATE) / sizeof(char));
-    char *SQL_DETACH = (char *) calloc(len, sizeof(char));
+    char SQL_DETACH[LKT_MAX_SQLITE_STATEMENT];
     bool ret = false;
 
-    snprintf(SQL_DETACH, len - 1, SQL_DETACH_TEMPLATE, name);
+    snprintf(SQL_DETACH, LKT_MAX_SQLITE_STATEMENT - 1, SQL_DETACH_TEMPLATE, name);
+    SQL_DETACH[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_EXEC(db, SQL_DETACH, err_no_detach);
     fprintf(stderr, " * Detached database '%s'\n", name);
     ret = true;
 err_no_detach:
-    free(SQL_DETACH);
     return ret;
 }
 
diff --git a/src/database/playlist.c b/src/database/playlist.c
index 65f3a34d606dd4d9ebb8d1fef779899743b525ac..f29575b9c9a7d7ff3de28dd52eea5b39e859a10e 100644
--- a/src/database/playlist.c
+++ b/src/database/playlist.c
@@ -153,7 +153,7 @@ database_plt_export(sqlite3 *db, const char *name)
     static const char *SQL_SCHEM =
         "CREATE TABLE IF NOT EXISTS %s.content"
         "( kara_id INTEGER PRIMARY KEY NOT NULL CHECK(kara_id > 0) );";
-    char SQL_STMT[1024];
+    char SQL_STMT[LKT_MAX_SQLITE_STATEMENT];
     int code, ret = false;
     sqlite3_stmt *stmt;
 
@@ -193,7 +193,7 @@ database_plt_import(sqlite3 *db, const char *name)
         "INSERT OR IGNORE INTO kara_playlist (kara_id, playlist_id)"
         " SELECT %s.content.kara_id, ( SELECT id FROM playlist WHERE name = %s LIMIT 1 )"
         " FROM %s.content;\n";
-    char SQL_STMT[1024];
+    char SQL_STMT[LKT_MAX_SQLITE_STATEMENT];
     int code, ret = false;
     sqlite3_stmt *stmt;
 
@@ -236,7 +236,7 @@ database_plt_add_uri(sqlite3 *db, const char *name, struct lkt_uri_t *uri)
         "  FROM kara, plt_id "
         "  WHERE kara.%s LIKE ? "
         "  ORDER BY RANDOM();";
-    char SQL_STMT[1024], sta = false;
+    char SQL_STMT[LKT_MAX_SQLITE_STATEMENT], sta = false;
     const char *column;
     sqlite3_stmt *stmt;
 
@@ -261,8 +261,8 @@ database_plt_add_uri(sqlite3 *db, const char *name, struct lkt_uri_t *uri)
         return false;
     }
 
-    snprintf(SQL_STMT, 1024, SQL, column);
-
+    snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT - 1, SQL, column);
+    SQL_STMT[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_PREPARE(db, stmt, SQL_STMT, error);
 
     if (sqlite3_bind_text(stmt, 1, name, -1, 0) != SQLITE_OK ||
diff --git a/src/database/queue.c b/src/database/queue.c
index 37e7125f03f3c465cbbbd5ee5543eeb720392ba3..b6b61ec9e3b81e4ec872638a8476666f0d7666df 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -94,7 +94,7 @@ queue_add_with_col_like_str(sqlite3 *db, const char *col, const char *val, int p
         return false;
     }
 
-    char SQL[1024];
+    char SQL[LKT_MAX_SQLITE_STATEMENT];
     static const char *SQL_STMT =
         "INSERT INTO queue (kara_id, priority)"
         "  SELECT id, ?"
@@ -104,7 +104,8 @@ queue_add_with_col_like_str(sqlite3 *db, const char *col, const char *val, int p
     bool status = false;
     sqlite3_stmt *stmt = NULL;
 
-    snprintf(SQL, 1024, SQL_STMT, col);
+    snprintf(SQL, LKT_MAX_SQLITE_STATEMENT - 1, SQL_STMT, col);
+    SQL[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_PREPARE(db, stmt, SQL, error);
 
     if (sqlite3_bind_int(stmt, 1, priority) != SQLITE_OK ||
@@ -134,7 +135,7 @@ queue_insert_with_col_like_str(sqlite3 *db, const char *col, const char *val, in
         return false;
     }
 
-    char SQL[4096];
+    char SQL[LKT_MAX_SQLITE_STATEMENT];
     static const char *SQL_STMT =
         "BEGIN TRANSACTION;"
         "CREATE TEMPORARY TABLE queue_tmp"
@@ -161,7 +162,8 @@ queue_insert_with_col_like_str(sqlite3 *db, const char *col, const char *val, in
     bool status = false;
     sqlite3_stmt *stmt = NULL;
 
-    snprintf(SQL, 1024, SQL_STMT, col);
+    snprintf(SQL, LKT_MAX_SQLITE_STATEMENT - 1, SQL_STMT, col);
+    SQL[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_PREPARE(db, stmt, SQL, error);
 
     if (sqlite3_bind_int(stmt, 1, pos) != SQLITE_OK ||
@@ -368,7 +370,7 @@ database_queue_next(sqlite3 *db, char filepath[PATH_MAX])
         "             ELSE position > current END)"
         "  ORDER BY CASE WHEN (SELECT random FROM queue_state LIMIT 1) = 1 THEN RANDOM() ELSE 2 END"
         "  LIMIT 1";
-    char SQL_UPDATE[PATH_MAX];
+    char SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT];
     bool status = false;
     int code = SQLITE_OK, id;
     sqlite3_stmt *stmt = NULL;
@@ -379,7 +381,8 @@ database_queue_next(sqlite3 *db, char filepath[PATH_MAX])
 
     if (code == SQLITE_ROW) {
         id = MAX(1, sqlite3_column_int(stmt, 1));
-        snprintf(SQL_UPDATE, PATH_MAX, "UPDATE queue_state SET current = %d;", id);
+        snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT - 1, "UPDATE queue_state SET current = %d;", id);
+        SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
 
         if (filepath != NULL)
             strncpy(filepath, (const char *) sqlite3_column_text(stmt, 0), PATH_MAX);
@@ -429,7 +432,7 @@ database_queue_prev(sqlite3 *db, char filepath[PATH_MAX])
         "    ELSE queue_.position < queue_state.current"
         "  END"
         "  ORDER BY position DESC LIMIT 1;";
-    char SQL_UPDATE[PATH_MAX];
+    char SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT];
     bool status = false;
     int code = SQLITE_OK, id;
     sqlite3_stmt *stmt = NULL;
@@ -439,7 +442,8 @@ database_queue_prev(sqlite3 *db, char filepath[PATH_MAX])
 
     if (code == SQLITE_ROW) {
         id = MAX(1, sqlite3_column_int(stmt, 1));
-        snprintf(SQL_UPDATE, PATH_MAX, "UPDATE queue_state SET current = %d;", id);
+        snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT - 1, "UPDATE queue_state SET current = %d;", id);
+        SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
 
         if (filepath != NULL)
             strncpy(filepath, (const char *) sqlite3_column_text(stmt, 0), PATH_MAX);
@@ -576,18 +580,19 @@ bool
 database_queue_set_current_index(sqlite3 *db, int idx)
 {
     static const char *SQL_GET_TEMPLATE = "UPDATE queue_state SET current = %d;";
-    char SQL_GET[4096];
+    char SQL_GET[LKT_MAX_SQLITE_STATEMENT];
 
     if (idx <= 0) {
         fprintf(stderr, " ! database_queue_set_current_index: an idx of %d is invalid, must be >= 0\n", idx);
         return false;
     }
 
-    if (snprintf(SQL_GET, 4096, SQL_GET_TEMPLATE, idx) < 0) {
+    if (snprintf(SQL_GET, LKT_MAX_SQLITE_STATEMENT - 1, SQL_GET_TEMPLATE, idx) < 0) {
         fprintf(stderr, " ! database_queue_set_current_index: snprintf failed\n");
         return false;
     }
 
+    SQL_GET[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
     SQLITE_EXEC(db, SQL_GET, error);
     return true;
 error: