fix memory leaks (#5050)
This commit is contained in:
parent
ad850ce0a9
commit
59fd83b731
1
.gitignore
vendored
1
.gitignore
vendored
@ -84,3 +84,4 @@ doc/manual/manual.toc
|
|||||||
doc/manual/manual.tp
|
doc/manual/manual.tp
|
||||||
doc/manual/manual.vr
|
doc/manual/manual.vr
|
||||||
contrib/taler-exchange.tag
|
contrib/taler-exchange.tag
|
||||||
|
doxygen-doc/
|
||||||
|
@ -13,6 +13,8 @@ ACLOCAL_AMFLAGS = -I m4
|
|||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
AUTHORS \
|
AUTHORS \
|
||||||
contrib/coverage.sh \
|
contrib/coverage.sh \
|
||||||
|
contrib/gnunet.tag \
|
||||||
|
contrib/microhttpd.tag \
|
||||||
Doxyfile
|
Doxyfile
|
||||||
|
|
||||||
app:
|
app:
|
||||||
|
@ -361,6 +361,7 @@ handle_admin_add_incoming (struct TALER_FAKEBANK_Handle *h,
|
|||||||
(json_int_t) t->serial_id);
|
(json_int_t) t->serial_id);
|
||||||
json_str = json_dumps (json,
|
json_str = json_dumps (json,
|
||||||
JSON_INDENT(2));
|
JSON_INDENT(2));
|
||||||
|
json_decref (json);
|
||||||
if (NULL == json_str)
|
if (NULL == json_str)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
@ -409,11 +409,42 @@ parse_reserve_history (struct TALER_EXCHANGE_Handle *exchange,
|
|||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free memory (potentially) allocated by #parse_reserve_history().
|
||||||
|
*
|
||||||
|
* @param rhistory result to free
|
||||||
|
* @param len number of entries in @a rhistory
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
free_rhistory (struct TALER_EXCHANGE_ReserveHistory *rhistory,
|
||||||
|
unsigned int len)
|
||||||
|
{
|
||||||
|
for (unsigned int i=0;i<len;i++)
|
||||||
|
{
|
||||||
|
switch (rhistory[i].type)
|
||||||
|
{
|
||||||
|
case TALER_EXCHANGE_RTT_DEPOSIT:
|
||||||
|
GNUNET_free_non_null (rhistory[i].details.in_details.wire_reference);
|
||||||
|
if (NULL != rhistory[i].details.in_details.sender_account_details)
|
||||||
|
json_decref (rhistory[i].details.in_details.sender_account_details);
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGE_RTT_WITHDRAWAL:
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGE_RTT_PAYBACK:
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGE_RTT_CLOSE:
|
||||||
|
if (NULL != rhistory[i].details.close_details.receiver_account_details)
|
||||||
|
json_decref (rhistory[i].details.close_details.receiver_account_details);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function called when we're done processing the
|
* Function called when we're done processing the
|
||||||
* HTTP /reserve/status request.
|
* HTTP /reserve/status request.
|
||||||
@ -468,6 +499,7 @@ handle_reserve_status_finished (void *cls,
|
|||||||
{
|
{
|
||||||
struct TALER_EXCHANGE_ReserveHistory rhistory[len];
|
struct TALER_EXCHANGE_ReserveHistory rhistory[len];
|
||||||
|
|
||||||
|
memset (rhistory, 0, sizeof (rhistory));
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
parse_reserve_history (rsh->exchange,
|
parse_reserve_history (rsh->exchange,
|
||||||
history,
|
history,
|
||||||
@ -479,17 +511,18 @@ handle_reserve_status_finished (void *cls,
|
|||||||
{
|
{
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
response_code = 0;
|
response_code = 0;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if (0 !=
|
if ( (0 != response_code) &&
|
||||||
|
(0 !=
|
||||||
TALER_amount_cmp (&balance_from_history,
|
TALER_amount_cmp (&balance_from_history,
|
||||||
&balance))
|
&balance)) )
|
||||||
{
|
{
|
||||||
/* exchange cannot add up balances!? */
|
/* exchange cannot add up balances!? */
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
response_code = 0;
|
response_code = 0;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
if (0 != response_code)
|
||||||
|
{
|
||||||
rsh->cb (rsh->cb_cls,
|
rsh->cb (rsh->cb_cls,
|
||||||
response_code,
|
response_code,
|
||||||
TALER_EC_NONE,
|
TALER_EC_NONE,
|
||||||
@ -499,6 +532,9 @@ handle_reserve_status_finished (void *cls,
|
|||||||
rhistory);
|
rhistory);
|
||||||
rsh->cb = NULL;
|
rsh->cb = NULL;
|
||||||
}
|
}
|
||||||
|
free_rhistory (rhistory,
|
||||||
|
len);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MHD_HTTP_BAD_REQUEST:
|
case MHD_HTTP_BAD_REQUEST:
|
||||||
@ -796,8 +832,12 @@ reserve_withdraw_payment_required (struct TALER_EXCHANGE_ReserveWithdrawHandle *
|
|||||||
rhistory))
|
rhistory))
|
||||||
{
|
{
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
|
free_rhistory (rhistory,
|
||||||
|
len);
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
|
free_rhistory (rhistory,
|
||||||
|
len);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 !=
|
if (0 !=
|
||||||
|
Loading…
Reference in New Issue
Block a user