mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 22:45:27 +01:00
accept_pkt_open_commit_sig: don't allocate sig.
Caller can allocate and free; this gets the context correct (that commit). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
ac7d80bbeb
commit
de2ffd8985
3 changed files with 10 additions and 8 deletions
|
@ -367,17 +367,14 @@ Pkt *accept_pkt_anchor(struct peer *peer, const Pkt *pkt)
|
|||
}
|
||||
|
||||
Pkt *accept_pkt_open_commit_sig(struct peer *peer, const Pkt *pkt,
|
||||
struct bitcoin_signature **sig)
|
||||
struct bitcoin_signature *sig)
|
||||
{
|
||||
const OpenCommitSig *s = pkt->open_commit_sig;
|
||||
struct signature signature;
|
||||
|
||||
if (!proto_to_signature(peer->dstate->secpctx, s->sig, &signature))
|
||||
if (!proto_to_signature(peer->dstate->secpctx, s->sig, &sig->sig))
|
||||
return pkt_err(peer, "Malformed signature");
|
||||
|
||||
*sig = tal(peer, struct bitcoin_signature);
|
||||
(*sig)->stype = SIGHASH_ALL;
|
||||
(*sig)->sig = signature;
|
||||
sig->stype = SIGHASH_ALL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ Pkt *accept_pkt_open(struct peer *peer, const Pkt *pkt,
|
|||
Pkt *accept_pkt_anchor(struct peer *peer, const Pkt *pkt);
|
||||
|
||||
Pkt *accept_pkt_open_commit_sig(struct peer *peer, const Pkt *pkt,
|
||||
struct bitcoin_signature **sig);
|
||||
struct bitcoin_signature *sig);
|
||||
|
||||
Pkt *accept_pkt_open_complete(struct peer *peer, const Pkt *pkt);
|
||||
|
||||
|
|
7
state.c
7
state.c
|
@ -180,8 +180,11 @@ enum state state(struct peer *peer,
|
|||
case STATE_OPEN_WAIT_FOR_COMMIT_SIG:
|
||||
if (input_is(input, PKT_OPEN_COMMIT_SIG)) {
|
||||
const char *db_err;
|
||||
|
||||
peer->local.commit->sig = tal(peer->local.commit,
|
||||
struct bitcoin_signature);
|
||||
err = accept_pkt_open_commit_sig(peer, pkt,
|
||||
&peer->local.commit->sig);
|
||||
peer->local.commit->sig);
|
||||
if (!err &&
|
||||
!check_tx_sig(peer->dstate->secpctx,
|
||||
peer->local.commit->tx, 0,
|
||||
|
@ -192,6 +195,8 @@ enum state state(struct peer *peer,
|
|||
err = pkt_err(peer, "Bad signature");
|
||||
|
||||
if (err) {
|
||||
peer->local.commit->sig
|
||||
= tal_free(peer->local.commit->sig);
|
||||
bitcoin_release_anchor(peer, INPUT_NONE);
|
||||
peer_open_complete(peer, err->error->problem);
|
||||
goto err_breakdown;
|
||||
|
|
Loading…
Add table
Reference in a new issue