From 6f205896aa8bf9f089a17ca9df9dcc30436f2f19 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 8 Dec 2020 10:53:19 +1030 Subject: [PATCH] bitcoin/tx: fix type of outpoint (n is a u32), simplify json_to_outpoint Signed-off-by: Rusty Russell --- bitcoin/tx.h | 2 +- common/json_helpers.c | 21 ++++----------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/bitcoin/tx.h b/bitcoin/tx.h index c5b92fc13..40d7f6969 100644 --- a/bitcoin/tx.h +++ b/bitcoin/tx.h @@ -24,7 +24,7 @@ struct bitcoin_txid { struct bitcoin_outpoint { struct bitcoin_txid txid; - u16 n; + u32 n; }; /* Define bitcoin_txid_eq */ diff --git a/common/json_helpers.c b/common/json_helpers.c index ca8b09337..42243d68b 100644 --- a/common/json_helpers.c +++ b/common/json_helpers.c @@ -96,26 +96,13 @@ bool json_to_txid(const char *buffer, const jsmntok_t *tok, bool json_to_outpoint(const char *buffer, const jsmntok_t *tok, struct bitcoin_outpoint *op) { - size_t len = tok->end - tok->start; - char str[len + 1]; + jsmntok_t t1, t2; - if (len < 66) - return NULL; - - memcpy(str, buffer+tok->start, len); - str[len] = 0x00; - - if (str[64] != ':') - return NULL; - - if (!bitcoin_txid_from_hex(str, 64, &op->txid)) + if (!split_tok(buffer, tok, ':', &t1, &t2)) return false; - op->n = atoi(str + 65); - if (op->n < 0) - return false; - - return true; + return json_to_txid(buffer, &t1, &op->txid) + && json_to_u32(buffer, &t2, &op->n); } bool json_to_channel_id(const char *buffer, const jsmntok_t *tok,