From 65c09c895de241efb3302141cfdf92e1d8664a6b Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 12 Feb 2018 20:40:43 +1030 Subject: [PATCH] wallet: properly handle case where peer has no address when saving channel. In practice, it currently always does, so we've never hit an error. Signed-off-by: Rusty Russell --- wallet/wallet.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/wallet/wallet.c b/wallet/wallet.c index 99e604651..e65b40602 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -737,9 +737,12 @@ void wallet_channel_save(struct wallet *w, struct wallet_channel *chan) /* Need to store the peer first */ stmt = db_prepare(w->db, "INSERT INTO peers (node_id, address) VALUES (?, ?);"); sqlite3_bind_pubkey(stmt, 1, &chan->peer->id); - sqlite3_bind_text(stmt, 2, - type_to_string(tmpctx, struct wireaddr, &chan->peer->addr), - -1, SQLITE_TRANSIENT); + if (chan->peer->addr.type == ADDR_TYPE_PADDING) + sqlite3_bind_null(stmt, 2); + else + sqlite3_bind_text(stmt, 2, + type_to_string(tmpctx, struct wireaddr, &chan->peer->addr), + -1, SQLITE_TRANSIENT); db_exec_prepared(w->db, stmt); p->dbid = sqlite3_last_insert_rowid(w->db->sql); }