Reject failed topology writes and malformed stored signatures
This commit is contained in:
1 parent
5c4207c145
commit
99608de811
2 files changed
+42
-12
No files matched your search
@@ -74,6 +74,7 @@ static void test_verified_write(void) {
|
||||
assert(sqlite3_exec(db, "DROP TRIGGER reject_node; CREATE TRIGGER reject_node BEFORE UPDATE ON nodes "
|
||||
"BEGIN SELECT RAISE(ABORT,'test update rejection'); END", NULL, NULL, NULL) == SQLITE_OK);
|
||||
assert(topo_node_sqlite_node_update_verified(db, 7, "rejected", key, key, 101, 1) < 0);
|
||||
assert(topo_node_sqlite_node_set_online(db, 7, 0) < 0 && topo_node_sqlite_node_get_online(db, 7) == 1);
|
||||
sqlite3_stmt* st = NULL;
|
||||
assert(sqlite3_prepare_v2(db, "SELECT name,update_ts FROM nodes ORDER BY node_id", -1, &st, NULL) == SQLITE_OK);
|
||||
assert(sqlite3_step(st) == SQLITE_ROW && !strcmp((const char*)sqlite3_column_text(st, 0), "before"));
|
||||
@@ -83,6 +84,21 @@ static void test_verified_write(void) {
|
||||
assert(sqlite3_prepare_v2(db, "SELECT name,update_ts FROM nodes WHERE node_id=7", -1, &st, NULL) == SQLITE_OK);
|
||||
assert(sqlite3_step(st) == SQLITE_ROW && !strcmp((const char*)sqlite3_column_text(st, 0), "after"));
|
||||
assert(sqlite3_column_int64(st, 1) == 101); sqlite3_finalize(st);
|
||||
uint8_t signature[64] = {0};
|
||||
assert(!topo_node_sqlite_channel_put(db, "123", "test", 7, key, NULL, key, NULL, signature));
|
||||
assert(!topo_node_sqlite_member_placeholder_put(db, "123", 7, key, key));
|
||||
assert(sqlite3_exec(db, "CREATE TRIGGER reject_member BEFORE DELETE ON peers_123 "
|
||||
"BEGIN SELECT RAISE(ABORT,'test member deletion rejection'); END", NULL, NULL, NULL) == SQLITE_OK);
|
||||
assert(topo_node_sqlite_member_del(db, "123", 7) < 0 && topo_node_sqlite_member_in_channel(db, "123", 7));
|
||||
assert(sqlite3_exec(db, "DROP TRIGGER reject_member; UPDATE peers_123 SET join_sig=X'01'; "
|
||||
"UPDATE channels SET x25519_pubkey=X'01'", NULL, NULL, NULL) == SQLITE_OK);
|
||||
uint64_t timestamp = 77; memset(signature, 0xa5, sizeof(signature));
|
||||
assert(topo_node_sqlite_member_get_join(db, "123", 7, signature, ×tamp) < 0);
|
||||
assert(timestamp == 77 && signature[0] == 0xa5);
|
||||
memset(key, 0xa5, sizeof(key));
|
||||
assert(topo_node_sqlite_channel_get(db, "123", NULL, 0, NULL, key, NULL, NULL) < 0 && key[0] == 0xa5);
|
||||
assert(!topo_node_sqlite_member_del(db, "123", 7) && !topo_node_sqlite_member_in_channel(db, "123", 7));
|
||||
assert(!topo_node_sqlite_node_set_online(db, 7, 0) && !topo_node_sqlite_node_get_online(db, 7));
|
||||
assert(sqlite3_exec(db, "DROP TABLE nodes", NULL, NULL, NULL) == SQLITE_OK);
|
||||
assert(topo_node_sqlite_node_update_verified(db, 7, "no table", key, key, 102, 1) < 0);
|
||||
sqlite3_close(db);
|
||||
|
||||
Reference in new issue
Block a user