diff --git a/wallet/db.c b/wallet/db.c index fbc640211..d6591a68e 100644 --- a/wallet/db.c +++ b/wallet/db.c @@ -562,6 +562,7 @@ bool db_step(struct db_stmt *stmt) u64 db_column_u64(struct db_stmt *stmt, int col) { + assert(!db_column_is_null(stmt, col)); return stmt->db->config->column_u64_fn(stmt, col); } @@ -575,11 +576,13 @@ int db_column_int_or_default(struct db_stmt *stmt, int col, int def) int db_column_int(struct db_stmt *stmt, int col) { + assert(!db_column_is_null(stmt, col)); return stmt->db->config->column_int_fn(stmt, col); } size_t db_column_bytes(struct db_stmt *stmt, int col) { + assert(!db_column_is_null(stmt, col)); return stmt->db->config->column_bytes_fn(stmt, col); } @@ -590,11 +593,13 @@ int db_column_is_null(struct db_stmt *stmt, int col) const void *db_column_blob(struct db_stmt *stmt, int col) { + assert(!db_column_is_null(stmt, col)); return stmt->db->config->column_blob_fn(stmt, col); } const unsigned char *db_column_text(struct db_stmt *stmt, int col) { + assert(!db_column_is_null(stmt, col)); return stmt->db->config->column_text_fn(stmt, col); } @@ -1136,12 +1141,14 @@ struct bitcoin_tx *db_column_tx(const tal_t *ctx, struct db_stmt *stmt, int col) void *db_column_arr_(const tal_t *ctx, struct db_stmt *stmt, int col, size_t bytes, const char *label, const char *caller) { - size_t sourcelen = db_column_bytes(stmt, col); + size_t sourcelen; void *p; if (db_column_is_null(stmt, col)) return NULL; + sourcelen = db_column_bytes(stmt, col); + if (sourcelen % bytes != 0) db_fatal("%s: column size %zu not a multiple of %s (%zu)", caller, sourcelen, label, bytes); diff --git a/wallet/wallet.c b/wallet/wallet.c index 5eef0f5f6..054985fb5 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -1790,7 +1790,7 @@ static bool wallet_stmt2htlc_out(struct channel *channel, sizeof(out->onion_routing_packet)); out->failuremsg = db_column_arr(out, stmt, 8, u8); - out->failcode = db_column_int(stmt, 9); + out->failcode = db_column_int_or_default(stmt, 9, 0); if (!db_column_is_null(stmt, 10)) { out->origin_htlc_id = db_column_u64(stmt, 10);