summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-06-18 15:38:26 +0200
committerChristian Grothoff <christian@grothoff.org>2019-06-18 15:52:22 +0200
commit11afb48cbb9121455522026f11467bb8b0711439 (patch)
tree401b62286da27e7a2a26df45bafab0ae87db68a8
parent6ff867877cf2e487a8ad3a0a09e2e7fb6c1a5d3d (diff)
downloadmerchant-11afb48cbb9121455522026f11467bb8b0711439.tar.gz
merchant-11afb48cbb9121455522026f11467bb8b0711439.tar.bz2
merchant-11afb48cbb9121455522026f11467bb8b0711439.zip
fix leaks
-rw-r--r--src/backend/taler-merchant-httpd_check-payment.c4
-rw-r--r--src/backend/taler-merchant-httpd_pay.c9
-rw-r--r--src/backend/taler-merchant-httpd_refund.c22
-rw-r--r--src/backenddb/plugin_merchantdb_postgres.c2
-rw-r--r--src/lib/merchant_api_refund.c1
5 files changed, 29 insertions, 9 deletions
diff --git a/src/backend/taler-merchant-httpd_check-payment.c b/src/backend/taler-merchant-httpd_check-payment.c
index 11f6ff91..3c5909d9 100644
--- a/src/backend/taler-merchant-httpd_check-payment.c
+++ b/src/backend/taler-merchant-httpd_check-payment.c
@@ -342,6 +342,7 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
{
GNUNET_break (0);
json_decref (contract_terms);
+ GNUNET_free (last_session_id);
GNUNET_free (final_contract_url);
return TMH_RESPONSE_reply_internal_error (connection,
TALER_EC_CHECK_PAYMENT_FAILED_COMPUTE_PROPOSAL_HASH,
@@ -381,6 +382,7 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
GNUNET_free_non_null (h_contract_terms_str);
GNUNET_free (final_contract_url);
json_decref (contract_terms);
+ GNUNET_free (last_session_id);
return ret;
}
@@ -401,6 +403,7 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
GNUNET_free_non_null (h_contract_terms_str);
GNUNET_free (final_contract_url);
json_decref (contract_terms);
+ GNUNET_free (last_session_id);
return TMH_RESPONSE_reply_internal_error (connection,
TALER_EC_CHECK_PAYMENT_DB_FETCH_CONTRACT_TERMS_ERROR,
"Merchant database error (contract terms corrupted)");
@@ -426,6 +429,7 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
GNUNET_free_non_null (h_contract_terms_str);
GNUNET_free (final_contract_url);
json_decref (contract_terms);
+ GNUNET_free (last_session_id);
return TMH_RESPONSE_reply_internal_error (connection,
TALER_EC_PAY_DB_FETCH_TRANSACTION_ERROR,
"Merchant database error");
diff --git a/src/backend/taler-merchant-httpd_pay.c b/src/backend/taler-merchant-httpd_pay.c
index 227497f2..bf15106b 100644
--- a/src/backend/taler-merchant-httpd_pay.c
+++ b/src/backend/taler-merchant-httpd_pay.c
@@ -844,12 +844,15 @@ check_payment_sufficient (struct PayContext *pc)
if (-1 == TALER_amount_cmp (&acc_amount,
&pc->amount))
{
+ char *str;
+
GNUNET_break_op (0);
+ str = TALER_amount_to_string (&acc_amount);
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"price vs. sent: %s vs. %s\n",
- TALER_amount_to_string (&pc->amount),
- TALER_amount_to_string (&acc_amount));
-
+ TALER_amount2s (&pc->amount),
+ str);
+ GNUNET_free (str);
return TALER_EC_PAY_PAYMENT_INSUFFICIENT;
}
}
diff --git a/src/backend/taler-merchant-httpd_refund.c b/src/backend/taler-merchant-httpd_refund.c
index 1a2a0f81..7ed77958 100644
--- a/src/backend/taler-merchant-httpd_refund.c
+++ b/src/backend/taler-merchant-httpd_refund.c
@@ -161,13 +161,14 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
if (GNUNET_NO == res)
{
GNUNET_break_op (0);
+ json_decref (root);
return MHD_YES;
}
-
if (GNUNET_SYSERR == res)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Hard error from JSON parser\n");
+ json_decref (root);
return MHD_NO;
}
@@ -177,6 +178,7 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"No instance found\n");
GNUNET_JSON_parse_free (spec);
+ json_decref (root);
return TMH_RESPONSE_reply_not_found (connection,
TALER_EC_REFUND_INSTANCE_UNKNOWN,
"Unknown instance given");
@@ -196,6 +198,7 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR != qs);
/* Always report on hard error as well to enable diagnostics */
GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
+ json_decref (root);
return TMH_RESPONSE_reply_internal_error (connection,
TALER_EC_REFUND_LOOKUP_DB_ERROR,
"An error occurred while retrieving payment data from db");
@@ -205,6 +208,7 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Unknown order id given: %s\n",
order_id);
+ json_decref (root);
return TMH_RESPONSE_reply_not_found (connection,
TALER_EC_REFUND_ORDER_ID_UNKNOWN,
"Order id not found in database");
@@ -218,8 +222,10 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
{
GNUNET_break (0);
GNUNET_JSON_parse_free (spec);
+ json_decref (contract_terms);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Could not hash contract terms\n");
+ json_decref (root);
return TMH_RESPONSE_reply_internal_error (connection,
TALER_EC_INTERNAL_LOGIC_ERROR,
"Could not hash contract terms");
@@ -231,6 +237,8 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
"increase refund"))
{
GNUNET_break (0);
+ json_decref (contract_terms);
+ json_decref (root);
return GNUNET_DB_STATUS_HARD_ERROR;
}
qs = db->increase_refund_for_contract_NT (db->cls,
@@ -276,6 +284,8 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
/* Always report on hard error as well to enable diagnostics */
GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
GNUNET_JSON_parse_free (spec);
+ json_decref (contract_terms);
+ json_decref (root);
return TMH_RESPONSE_reply_internal_error (connection,
TALER_EC_REFUND_MERCHANT_DB_COMMIT_ERROR,
"Internal database error or refund amount too big");
@@ -286,6 +296,8 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
"Refunded amount lower or equal to previous refund: %s\n",
TALER_amount2s (&refund));
GNUNET_JSON_parse_free (spec);
+ json_decref (contract_terms);
+ json_decref (root);
return TMH_RESPONSE_reply_external_error (connection,
TALER_EC_REFUND_INCONSISTENT_AMOUNT,
"Amount incorrect: not larger than the previous one");
@@ -308,14 +320,14 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
if (GNUNET_OK !=
GNUNET_CRYPTO_eddsa_sign (&mi->privkey.eddsa_priv,
- &confirmation.purpose,
- &sig))
+ &confirmation.purpose,
+ &sig))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to sign successful refund confirmation\n");
json_decref (contract_terms);
- json_decref (root);
GNUNET_JSON_parse_free (spec);
+ json_decref (root);
return TMH_RESPONSE_reply_internal_error (connection,
TALER_EC_REFUND_MERCHANT_SIGNING_FAILED,
"Refund done, but failed to sign confirmation");
@@ -352,8 +364,8 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
contract_terms);
GNUNET_free (refund_pickup_url);
GNUNET_free (refund_redirect_url);
- json_decref (root);
GNUNET_JSON_parse_free (spec);
+ json_decref (root);
return ret;
}
}
diff --git a/src/backenddb/plugin_merchantdb_postgres.c b/src/backenddb/plugin_merchantdb_postgres.c
index 34689943..aaf1477a 100644
--- a/src/backenddb/plugin_merchantdb_postgres.c
+++ b/src/backenddb/plugin_merchantdb_postgres.c
@@ -1519,10 +1519,12 @@ find_tip_authorizations_cb (void *cls,
&amount))
{
GNUNET_break (0);
+ GNUNET_PQ_cleanup_result (rs);
ctx->qs = GNUNET_DB_STATUS_HARD_ERROR;
return;
}
}
+ GNUNET_PQ_cleanup_result (rs);
}
if (0 == i)
diff --git a/src/lib/merchant_api_refund.c b/src/lib/merchant_api_refund.c
index 131ca198..8c96cd5f 100644
--- a/src/lib/merchant_api_refund.c
+++ b/src/lib/merchant_api_refund.c
@@ -177,7 +177,6 @@ TALER_MERCHANT_refund_increase_cancel (struct TALER_MERCHANT_RefundIncreaseOpera
}
TALER_curl_easy_post_finished (&rio->post_ctx);
GNUNET_free (rio->url);
- GNUNET_free (rio->post_ctx.json_enc);
GNUNET_free (rio);
}