test(media): cover malformed local announcements and SQLite failures

This commit is contained in:
evgeny committed 2026-10-24 17:26:11 +02:00
1 parent 81fc4291db
commit eea2b22c4e
3 files changed
+184 -6

No files matched your search

+6 -5
View File
@@ -1617,19 +1617,20 @@ void media_delivery_announce_local_blocks(struct UTUN_INSTANCE* inst) {
media_delivery_refresh_roles(inst);
sqlite3_stmt* st = NULL;
if (sqlite3_prepare_v2(db, "SELECT id,media_id,block_id,chunk,chat_id FROM media_files WHERE node_id=?",
-1, &st, NULL) != SQLITE_OK) {
DEBUG_ERROR(DEBUG_CATEGORY_GENERAL, "%s: announce_local_blocks prepare failed: %s", MD_ID, sqlite3_errmsg(db));
int rc = sqlite3_prepare_v2(db, "SELECT id,media_id,block_id,chunk,chat_id FROM media_files WHERE node_id=?", -1, &st, NULL);
if (rc != SQLITE_OK) {
DEBUG_ERROR(DEBUG_CATEGORY_MEDIA, "%s: announce_local_blocks prepare failed rc=%d: %s", MD_ID, rc, sqlite3_errmsg(db));
return;
}
int rc = sqlite3_bind_int64(st, 1, (sqlite3_int64)inst->node_id);
rc = sqlite3_bind_int64(st, 1, (sqlite3_int64)inst->node_id);
uint64_t rows = 0, eligible = 0, skipped = 0;
if (rc == SQLITE_OK) while ((rc = sqlite3_step(st)) == SQLITE_ROW) {
rows++;
sqlite3_int64 row = sqlite3_column_int64(st, 0), chunk = sqlite3_column_int64(st, 3);
sqlite3_int64 row = sqlite3_column_int64(st, 0);
int media_type = sqlite3_column_type(st, 1), block_type = sqlite3_column_type(st, 2);
int chunk_type = sqlite3_column_type(st, 3), chat_type = sqlite3_column_type(st, 4);
sqlite3_int64 chunk = sqlite3_column_int64(st, 3);
int media_bytes = sqlite3_column_bytes(st, 1), block_bytes = sqlite3_column_bytes(st, 2);
int chat_bytes = sqlite3_column_bytes(st, 4);
const uint8_t* media = media_type == SQLITE_BLOB && media_bytes == 16 ? sqlite3_column_blob(st, 1) : NULL;