From fa868087e32ecf2e24968c740e2d35280d704c10 Mon Sep 17 00:00:00 2001 From: blackjok3r Date: Sat, 16 Mar 2019 20:47:51 +0800 Subject: [PATCH] more memleak fix --- iguana/dpow/dpow_rpc.c | 8 ++++---- iguana/iguana_notary.c | 2 ++ iguana/iguana_rpc.c | 28 ++++++++++++++++++++-------- iguana/iguana_wallet.c | 2 +- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/iguana/dpow/dpow_rpc.c b/iguana/dpow/dpow_rpc.c index 4ff202986..28e2779a3 100755 --- a/iguana/dpow/dpow_rpc.c +++ b/iguana/dpow/dpow_rpc.c @@ -151,10 +151,8 @@ int32_t komodo_initjson2(char *fstr) field = jfieldname(item); if ( (hexstr= jstr(item,field)) != 0 && is_hexstr(hexstr,0) == 66 ) { - Notaries_elected[i][0] = clonestr(field); - Notaries_elected[i][1] = clonestr(hexstr); - free(field); - free(hexstr); + strcpy(Notaries_elected[i][0],field); + strcpy(Notaries_elected[i][1],hexstr); //printf("%d of %d: %s %s\n",i,n,field,hexstr); } else @@ -162,6 +160,8 @@ int32_t komodo_initjson2(char *fstr) printf("couldnt find (%s) in %s or non-hex (%s)\n",field,jprint(item,0),hexstr!=0?hexstr:""); break; } + free(field); + free(hexstr); } if ( i == n ) { diff --git a/iguana/iguana_notary.c b/iguana/iguana_notary.c index d232867f8..0108c46f9 100755 --- a/iguana/iguana_notary.c +++ b/iguana/iguana_notary.c @@ -403,6 +403,7 @@ THREE_STRINGS_AND_DOUBLE(iguana,dpow,symbol,dest,pubkey,freq) printf("src validation error %s %s %s\n",src->symbol,srcaddr,retstr); } free(retstr); + free_json(json); retstr = 0; } else printf("%s %s didnt return anything\n",src->symbol,srcaddr); bitcoin_address(destaddr,destcoin->chain->pubtype,dp->minerkey33,33); @@ -417,6 +418,7 @@ THREE_STRINGS_AND_DOUBLE(iguana,dpow,symbol,dest,pubkey,freq) printf("dest validation error %s %s %s\n",src->symbol,srcaddr,retstr); } free(retstr); + free_json(json); retstr = 0; } else printf("%s %s didnt return anything\n",destcoin->symbol,destaddr); if ( srcvalid <= 0 || destvalid <= 0 ) diff --git a/iguana/iguana_rpc.c b/iguana/iguana_rpc.c index 7e304a064..ce3f000a4 100755 --- a/iguana/iguana_rpc.c +++ b/iguana/iguana_rpc.c @@ -1117,15 +1117,28 @@ char *SuperNET_rpcparse(struct supernet_info *myinfo,char *retbuf,int32_t bufsiz jaddstr(arg,"userpass",userpass); retstr = SuperNET_JSON(myinfo,coin,arg,remoteaddr,port); } - free_json(argjson); - free_json(json); + if ( tokens != 0) + free_json(tokens); + if ( argjson != 0 ) + free_json(argjson); + if ( origargjson != 0 ) + free_json(origargjson); if ( tmpjson != 0 ) - free(tmpjson); + free_json(tmpjson); + if ( json != 0 ) + free_json(json); return(retstr); } - free_json(argjson); + if ( tokens != 0) + free_json(tokens); + if ( argjson != 0 ) + free_json(argjson); + if ( origargjson != 0 ) + free_json(origargjson); if ( tmpjson != 0 ) - free(tmpjson); + free_json(tmpjson); + if ( json != 0 ) + free_json(json); *jsonflagp = 1; return(clonestr("{\"error\":\"couldnt process packet\"}")); } @@ -1302,10 +1315,9 @@ void iguana_rpcloop(void *args) printf("iguana sent.%d remains.%d of len.%d\n",numsent,remains,recvlen); } } - //if ( retstr != space) - // free(retstr); + if ( retstr != space) + free(retstr); } - free(retstr); closesocket(sock); } } diff --git a/iguana/iguana_wallet.c b/iguana/iguana_wallet.c index 8e3eb0e28..15dfc9dc9 100755 --- a/iguana/iguana_wallet.c +++ b/iguana/iguana_wallet.c @@ -1405,6 +1405,7 @@ TWOSTRINGS_AND_INT(bitcoinrpc,walletpassphrase,password,permanentfile,timeout) if ( (ismine= jobj(json,"ismine")) != 0 && is_cJSON_True(ismine) != 0 ) destvalid = 1; else destvalid = 0; + free(ismine); free(tmpstr); free(retjson); tmpstr = 0; @@ -1995,4 +1996,3 @@ TWO_INTS(bitcoinrpc,listaccounts,minconf,includewatchonly) } #include "../includes/iguana_apiundefs.h" -