99#include "../ui.h"
1010#include "../utils/address.h"
1111#include "../utils/cbor_rpc.h"
12+ #include "../utils/malloc_ext.h"
1213#include "../utils/network.h"
1314#include "../wallet.h"
1415
@@ -56,9 +57,11 @@ void get_receive_address_process(void* process_ptr)
5657
5758 if (rpc_has_field_data ("multisig_name" , & params )) {
5859 // Load multisig data record
59- multisig_data_t multisig_data ;
60+ multisig_data_t * const multisig_data = JADE_MALLOC (sizeof (multisig_data_t ));
61+ jade_process_free_on_exit (process , multisig_data );
62+
6063 char multisig_name [MAX_MULTISIG_NAME_SIZE ];
61- if (!params_load_multisig (& params , multisig_name , sizeof (multisig_name ), & multisig_data , & errmsg )) {
64+ if (!params_load_multisig (& params , multisig_name , sizeof (multisig_name ), multisig_data , & errmsg )) {
6265 jade_process_reject_message (process , CBOR_RPC_BAD_PARAMETERS , errmsg , NULL );
6366 goto cleanup ;
6467 }
@@ -67,23 +70,23 @@ void get_receive_address_process(void* process_ptr)
6770 const bool is_change = false;
6871 size_t written = 0 ;
6972 uint8_t pubkeys [MAX_ALLOWED_SIGNERS * EC_PUBLIC_KEY_LEN ]; // Sufficient
70- if (!params_multisig_pubkeys (is_change , & params , & multisig_data , pubkeys , sizeof (pubkeys ), & written ,
71- warning_msg , sizeof (warning_msg ), & errmsg )) {
73+ if (!params_multisig_pubkeys (is_change , & params , multisig_data , pubkeys , sizeof (pubkeys ), & written , warning_msg ,
74+ sizeof (warning_msg ), & errmsg )) {
7275 jade_process_reject_message (process , CBOR_RPC_BAD_PARAMETERS , errmsg , NULL );
7376 goto cleanup ;
7477 }
7578
7679 // Build a script pubkey for the passed parameters
77- if (!wallet_build_multisig_script (multisig_data . variant , multisig_data . sorted , multisig_data . threshold , pubkeys ,
78- written , script , sizeof (script ), & script_len )) {
80+ if (!wallet_build_multisig_script (multisig_data -> variant , multisig_data -> sorted , multisig_data -> threshold ,
81+ pubkeys , written , script , sizeof (script ), & script_len )) {
7982 jade_process_reject_message (
8083 process , CBOR_RPC_BAD_PARAMETERS , "Failed to generate valid multisig script" , NULL );
8184 goto cleanup ;
8285 }
8386
8487 if (confidential ) {
8588 if (!multisig_get_master_blinding_key (
86- & multisig_data , multisig_master_blinding_key , sizeof (multisig_master_blinding_key ), & errmsg )) {
89+ multisig_data , multisig_master_blinding_key , sizeof (multisig_master_blinding_key ), & errmsg )) {
8790 jade_process_reject_message (process , CBOR_RPC_BAD_PARAMETERS , errmsg , NULL );
8891 goto cleanup ;
8992 }
@@ -99,9 +102,11 @@ void get_receive_address_process(void* process_ptr)
99102 }
100103
101104 // Load descriptor record
102- descriptor_data_t descriptor ;
105+ descriptor_data_t * const descriptor = JADE_MALLOC (sizeof (descriptor_data_t ));
106+ jade_process_free_on_exit (process , descriptor );
107+
103108 char descriptor_name [MAX_DESCRIPTOR_NAME_SIZE ];
104- if (!params_load_descriptor (& params , descriptor_name , sizeof (descriptor_name ), & descriptor , & errmsg )) {
109+ if (!params_load_descriptor (& params , descriptor_name , sizeof (descriptor_name ), descriptor , & errmsg )) {
105110 jade_process_reject_message (process , CBOR_RPC_BAD_PARAMETERS , errmsg , NULL );
106111 goto cleanup ;
107112 }
@@ -116,7 +121,7 @@ void get_receive_address_process(void* process_ptr)
116121 }
117122
118123 // Build a script pubkey for the passed parameters
119- if (!wallet_build_descriptor_script (network_id , descriptor_name , & descriptor , branch , pointer , script ,
124+ if (!wallet_build_descriptor_script (network_id , descriptor_name , descriptor , branch , pointer , script ,
120125 sizeof (script ), & script_len , & errmsg )) {
121126 jade_process_reject_message (
122127 process , CBOR_RPC_BAD_PARAMETERS , "Failed to generate valid descriptor script" , NULL );
0 commit comments