Skip to content

Commit

Permalink
wallet: conditionally free waddrs and waddr_vector reads
Browse files Browse the repository at this point in the history
  • Loading branch information
xanimo committed Dec 8, 2023
1 parent 529a793 commit 164fff0
Showing 1 changed file with 36 additions and 29 deletions.
65 changes: 36 additions & 29 deletions src/wallet.c
Original file line number Diff line number Diff line change
Expand Up @@ -442,36 +442,38 @@ dogecoin_wallet* dogecoin_wallet_init(const dogecoin_chainparams* chain, const c
return NULL;
}
}
dogecoin_wallet_addr_free(waddr);
if (wallet->waddr_vector->len == 0) dogecoin_wallet_addr_free(waddr);
}
}
#ifdef USE_UNISTRING
else if (wallet->waddr_vector->len == 0) {
int i=0;
for(;i<20;i++) {
waddr = dogecoin_wallet_next_bip44_addr(wallet);
dogecoin_wallet_addr_free(waddr);
if (wallet->waddr_vector->len == 0) dogecoin_wallet_addr_free(waddr);
}
}
#else
else if (wallet->waddr_vector->len == 0) {
waddr = dogecoin_wallet_next_addr(wallet);
dogecoin_wallet_addr_free(waddr);
if (wallet->waddr_vector->len == 0) dogecoin_wallet_addr_free(waddr);
}
#endif
return wallet;
}

void print_utxos(dogecoin_wallet* wallet) {
/* Creating a vector of addresses and storing them in the wallet. */
vector* addrs = vector_new(1, free);
dogecoin_wallet_get_addresses(wallet, addrs);
unsigned int i;
for (i = 0; i < addrs->len; i++) {
char* addr = vector_idx(addrs, i);
printf("address: %s\n", addr);
}
vector_free(addrs, true);
if (wallet->waddr_vector->len) {
/* Creating a vector of addresses and storing them in the wallet. */
vector* addrs = vector_new(1, free);
dogecoin_wallet_get_addresses(wallet, addrs);
unsigned int i;
for (i = 0; i < addrs->len; i++) {
char* addr = vector_idx(addrs, i);
printf("address: %s\n", addr);
}
vector_free(addrs, true);
}

if (wallet->spends->len) {
char wallet_total[21];
Expand All @@ -498,6 +500,7 @@ void print_utxos(dogecoin_wallet* wallet) {
if (unspent->len) {
char wallet_total[21];
uint64_t wallet_total_u64 = 0;
unsigned int i;
for (i = 0; i < unspent->len; i++) {
dogecoin_utxo* utxo = vector_idx(unspent, i);
printf("%s\n", "----------------------");
Expand Down Expand Up @@ -1013,18 +1016,20 @@ dogecoin_bool dogecoin_p2pkh_address_to_wallet_pubkeyhash(const char* address_in
if (!address_in || !addr || !wallet || !wallet->masterkey) return false;

// lookup to see if we have address already:
vector* addrs = vector_new(1, free);
dogecoin_wallet_get_addresses(wallet, addrs);
dogecoin_bool match = false;
unsigned int i;
for (i = 0; i < addrs->len; i++) {
char* watch_addr = vector_idx(addrs, i);
if (strncmp(watch_addr, address_in, strlen(watch_addr))==0) {
addr->childindex = i;
match = true;
if (wallet->waddr_vector->len) {
vector* addrs = vector_new(1, free);
dogecoin_wallet_get_addresses(wallet, addrs);
unsigned int i;
for (i = 0; i < addrs->len; i++) {
char* watch_addr = vector_idx(addrs, i);
if (strncmp(watch_addr, address_in, strlen(watch_addr))==0) {
addr->childindex = i;
match = true;
}
}
vector_free(addrs, true);
}
vector_free(addrs, true);

char* pubkey_hash = dogecoin_address_to_pubkey_hash((char*)address_in);
if (!pubkey_hash) return false;
Expand All @@ -1048,14 +1053,16 @@ dogecoin_bool dogecoin_p2pkh_address_to_wallet_pubkeyhash(const char* address_in

void dogecoin_wallet_get_addresses(dogecoin_wallet* wallet, vector* addr_out)
{
unsigned int i;
for (i = 0; i < wallet->waddr_vector->len; i++) {
dogecoin_wallet_addr *waddr = vector_idx(wallet->waddr_vector, i);
if (!waddr->ignore) {
size_t addrsize = P2PKHLEN;
char* addr = dogecoin_calloc(1, addrsize);
dogecoin_p2pkh_addr_from_hash160(waddr->pubkeyhash, wallet->chain, addr, addrsize);
vector_add(addr_out, addr);
if (wallet->waddr_vector->len) {
unsigned int i;
for (i = 0; i < wallet->waddr_vector->len; i++) {
dogecoin_wallet_addr *waddr = vector_idx(wallet->waddr_vector, i);
if (!waddr->ignore) {
size_t addrsize = P2PKHLEN;
char* addr = dogecoin_calloc(1, addrsize);
dogecoin_p2pkh_addr_from_hash160(waddr->pubkeyhash, wallet->chain, addr, addrsize);
vector_add(addr_out, addr);
}
}
}
}
Expand Down

0 comments on commit 164fff0

Please sign in to comment.