summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_tip-pickup.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/taler-merchant-httpd_tip-pickup.c')
-rw-r--r--src/backend/taler-merchant-httpd_tip-pickup.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/backend/taler-merchant-httpd_tip-pickup.c b/src/backend/taler-merchant-httpd_tip-pickup.c
index d7e19196..90f9c891 100644
--- a/src/backend/taler-merchant-httpd_tip-pickup.c
+++ b/src/backend/taler-merchant-httpd_tip-pickup.c
@@ -227,6 +227,14 @@ run_pickup (struct MHD_Connection *connection,
human);
}
sigs = json_array ();
+ if (NULL == sigs)
+ {
+ GNUNET_break (0);
+ return TMH_RESPONSE_reply_rc (connection,
+ MHD_HTTP_INTERNAL_SERVER_ERROR,
+ TALER_EC_JSON_ALLOCATION_FAILURE,
+ "could not create JSON array");
+ }
GNUNET_CRYPTO_eddsa_key_get_public (&reserve_priv.eddsa_priv,
&reserve_pub.eddsa_pub);
for (unsigned int i=0;i<pc->planchets_len;i++)
@@ -239,10 +247,19 @@ run_pickup (struct MHD_Connection *connection,
GNUNET_CRYPTO_eddsa_sign (&reserve_priv.eddsa_priv,
&pd->wr.purpose,
&reserve_sig.eddsa_signature));
- json_array_append_new (sigs,
- json_pack ("{s:o}",
- "reserve_sig",
- GNUNET_JSON_from_data_auto (&reserve_sig)));
+ if (0 !=
+ json_array_append_new (sigs,
+ json_pack ("{s:o}",
+ "reserve_sig",
+ GNUNET_JSON_from_data_auto (&reserve_sig))))
+ {
+ GNUNET_break (0);
+ json_decref (sigs);
+ return TMH_RESPONSE_reply_rc (connection,
+ MHD_HTTP_INTERNAL_SERVER_ERROR,
+ TALER_EC_JSON_ALLOCATION_FAILURE,
+ "could not add element to JSON array");
+ }
}
return TMH_RESPONSE_reply_json_pack (connection,
MHD_HTTP_OK,