merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 018d287e772771dab59374ae29db45b4b8a3dfe6
parent f54370f9df7907edb670244f0653fcc4ac2156b3
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Thu, 16 Jul 2026 18:02:26 +0200

avoid large on-stack allocation

Diffstat:
Msrc/lib/merchant_api_get-private-statistics-amount-SLUG.c | 10+++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/lib/merchant_api_get-private-statistics-amount-SLUG.c b/src/lib/merchant_api_get-private-statistics-amount-SLUG.c @@ -170,7 +170,9 @@ parse_intervals_and_buckets_amt ( } } { - struct TALER_Amount glob_amt_arr[GNUNET_NZL (total_amounts)]; + struct TALER_Amount *glob_amt_arr + = GNUNET_new_array (GNUNET_NZL (total_amounts), + struct TALER_Amount); struct TALER_MERCHANT_GetPrivateStatisticsAmountByBucket resp_buckets[ GNUNET_NZL (resp_buckets_len)]; struct TALER_MERCHANT_GetPrivateStatisticsAmountByInterval resp_intervals[ @@ -199,6 +201,7 @@ parse_intervals_and_buckets_amt ( NULL, NULL)) { GNUNET_break_op (0); + GNUNET_free (glob_amt_arr); return GNUNET_SYSERR; } amounts_len = json_array_size (amounts_arr); @@ -214,6 +217,7 @@ parse_intervals_and_buckets_amt ( if (! json_is_string (avalue)) { GNUNET_break_op (0); + GNUNET_free (glob_amt_arr); return GNUNET_SYSERR; } if (GNUNET_OK != @@ -221,6 +225,7 @@ parse_intervals_and_buckets_amt ( &amt_arr[aindex])) { GNUNET_break_op (0); + GNUNET_free (glob_amt_arr); return GNUNET_SYSERR; } } @@ -265,6 +270,7 @@ parse_intervals_and_buckets_amt ( if (! json_is_string (avalue)) { GNUNET_break_op (0); + GNUNET_free (glob_amt_arr); return GNUNET_SYSERR; } if (GNUNET_OK != @@ -272,6 +278,7 @@ parse_intervals_and_buckets_amt ( &amt_arr[aindex])) { GNUNET_break_op (0); + GNUNET_free (glob_amt_arr); return GNUNET_SYSERR; } } @@ -294,6 +301,7 @@ parse_intervals_and_buckets_amt ( &sagr); sah->cb = NULL; } + GNUNET_free (glob_amt_arr); return ret; } }