fix memory leaks: json_array_append increments RC

This commit is contained in:
Christian Grothoff 2016-06-11 16:16:49 +02:00
parent 7dc075ae28
commit ce5587b427
2 changed files with 25 additions and 25 deletions

View File

@ -1318,8 +1318,8 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
GNUNET_CRYPTO_ecdhe_key_get_public (&mc->transfer_priv[j].ecdhe_priv, GNUNET_CRYPTO_ecdhe_key_get_public (&mc->transfer_priv[j].ecdhe_priv,
&transfer_pub.ecdhe_pub); &transfer_pub.ecdhe_pub);
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (transfer_pubs, json_array_append_new (transfer_pubs,
GNUNET_JSON_from_data_auto (&transfer_pub))); GNUNET_JSON_from_data_auto (&transfer_pub)));
} }
/* now secret_encs */ /* now secret_encs */
@ -1337,17 +1337,17 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
&trans_sec, &trans_sec,
&els)); &els));
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (secret_encs, json_array_append_new (secret_encs,
GNUNET_JSON_from_data_auto (&els))); GNUNET_JSON_from_data_auto (&els)));
} }
/* now new_denoms */ /* now new_denoms */
for (i=0;i<md->num_fresh_coins;i++) for (i=0;i<md->num_fresh_coins;i++)
{ {
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (new_denoms, json_array_append_new (new_denoms,
GNUNET_JSON_from_rsa_public_key GNUNET_JSON_from_rsa_public_key
(md->fresh_pks[i].rsa_public_key))); (md->fresh_pks[i].rsa_public_key)));
} }
/* now link_encs */ /* now link_encs */
@ -1366,12 +1366,12 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
&md->link_secrets[j], &md->link_secrets[j],
&rle); &rle);
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (tmp, json_array_append_new (tmp,
GNUNET_JSON_from_data_auto (&rle))); GNUNET_JSON_from_data_auto (&rle)));
} }
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (link_encs, json_array_append_new (link_encs,
tmp)); tmp));
} }
/* now coin_evs */ /* now coin_evs */
@ -1410,14 +1410,14 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
return NULL; return NULL;
} }
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (tmp, json_array_append_new (tmp,
GNUNET_JSON_from_data (coin_ev, GNUNET_JSON_from_data (coin_ev,
coin_ev_size))); coin_ev_size)));
GNUNET_free (coin_ev); GNUNET_free (coin_ev);
} }
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (coin_evs, json_array_append_new (coin_evs,
tmp)); tmp));
} }
/* finally, assemble main JSON request from constitutent arrays */ /* finally, assemble main JSON request from constitutent arrays */
@ -1796,8 +1796,8 @@ TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange,
continue; continue;
} }
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (transfer_privs, json_array_append_new (transfer_privs,
GNUNET_JSON_from_data_auto (&md->melted_coin.transfer_priv[j]))); GNUNET_JSON_from_data_auto (&md->melted_coin.transfer_priv[j])));
} }
/* build main JSON request */ /* build main JSON request */

View File

@ -1278,13 +1278,13 @@ TMH_RESPONSE_reply_track_transfer_details (struct MHD_Connection *connection,
&dd, &dd,
sizeof (struct TALER_WireDepositDetailP)); sizeof (struct TALER_WireDepositDetailP));
GNUNET_assert (0 == GNUNET_assert (0 ==
json_array_append (deposits, json_array_append_new (deposits,
json_pack ("{s:o, s:I, s:o, s:o, s:o}", json_pack ("{s:o, s:I, s:o, s:o, s:o}",
"H_contract", GNUNET_JSON_from_data_auto (&wdd_pos->h_contract), "H_contract", GNUNET_JSON_from_data_auto (&wdd_pos->h_contract),
"transaction_id", (json_int_t) wdd_pos->transaction_id, "transaction_id", (json_int_t) wdd_pos->transaction_id,
"coin_pub", GNUNET_JSON_from_data_auto (&wdd_pos->coin_pub), "coin_pub", GNUNET_JSON_from_data_auto (&wdd_pos->coin_pub),
"deposit_value", TALER_JSON_from_amount (&wdd_pos->deposit_value), "deposit_value", TALER_JSON_from_amount (&wdd_pos->deposit_value),
"deposit_fee", TALER_JSON_from_amount (&wdd_pos->deposit_fee)))); "deposit_fee", TALER_JSON_from_amount (&wdd_pos->deposit_fee))));
} }
wdp.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE_DEPOSIT); wdp.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE_DEPOSIT);
wdp.purpose.size = htonl (sizeof (struct TALER_WireDepositDataPS)); wdp.purpose.size = htonl (sizeof (struct TALER_WireDepositDataPS));