shutdown: закрывать shared sqlite (topo_sqlite_db) в самом конце utun_instance_destroy (UAF при teardown)

This commit is contained in:
evgeny committed 2026-09-14 11:47:45 +03:00
1 parent 884f36c2d4
commit d78d652bf5
2 files changed
+11 -2

No files matched your search

+3 -2
View File
@@ -502,8 +502,9 @@ void topo_groups_destroy(struct UTUN_INSTANCE* instance) {
memory_pool_destroy(g->v6_subnet_pool);
DEBUG_INFO(DEBUG_CATEGORY_SYS, "[TOPO_DESTROY] 7 pools destroyed");
if (instance->topo_sqlite_db) { sqlite3_close(instance->topo_sqlite_db); instance->topo_sqlite_db = NULL; }
DEBUG_INFO(DEBUG_CATEGORY_SYS, "[TOPO_DESTROY] 8 sqlite closed");
/* Shared SQLite DB закрывается в utun_instance_destroy() в самом конце —
* chat/media/db_sync ещё используют его во время teardown. */
DEBUG_INFO(DEBUG_CATEGORY_SYS, "[TOPO_DESTROY] 8 sqlite deferred (закрывается в utun_instance_destroy)");
u_free(g); instance->topo_groups = NULL; instance->conn_mgr = NULL;
DEBUG_INFO(DEBUG_CATEGORY_SYS, "[TOPO_DESTROY] 9 done");