gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-merchant] 03/03: fix leaks


From: gnunet
Subject: [GNUnet-SVN] [taler-merchant] 03/03: fix leaks
Date: Tue, 18 Jun 2019 15:53:09 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository merchant.

commit 11afb48cbb9121455522026f11467bb8b0711439
Author: Christian Grothoff <address@hidden>
AuthorDate: Tue Jun 18 15:38:26 2019 +0200

    fix leaks
---
 src/backend/taler-merchant-httpd_check-payment.c |  4 ++++
 src/backend/taler-merchant-httpd_pay.c           |  9 ++++++---
 src/backend/taler-merchant-httpd_refund.c        | 22 +++++++++++++++++-----
 src/backenddb/plugin_merchantdb_postgres.c       |  2 ++
 src/lib/merchant_api_refund.c                    |  1 -
 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 11f6ff9..3c5909d 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 227497f..bf15106 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 1a2a0f8..7ed7795 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 3468994..aaf1477 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 131ca19..8c96cd5 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);
 }
 

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]