summaryrefslogtreecommitdiff
path: root/src/lib/exchange_api_payback.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-06-06 20:52:32 +0200
committerChristian Grothoff <christian@grothoff.org>2019-06-06 20:52:32 +0200
commita4813d1864a6cc00f829b35849c3cc5f78d75764 (patch)
tree41ef3a5b15b728cf5f5ffaddf7329a5c37854d75 /src/lib/exchange_api_payback.c
parent69a07468de8555d5260afab4019e34f40e5ec6be (diff)
downloadexchange-a4813d1864a6cc00f829b35849c3cc5f78d75764.tar.gz
exchange-a4813d1864a6cc00f829b35849c3cc5f78d75764.tar.bz2
exchange-a4813d1864a6cc00f829b35849c3cc5f78d75764.zip
fixing #5754 (make copy, as original may disappear)
Diffstat (limited to 'src/lib/exchange_api_payback.c')
-rw-r--r--src/lib/exchange_api_payback.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/exchange_api_payback.c b/src/lib/exchange_api_payback.c
index 99b390b11..a23ad7be5 100644
--- a/src/lib/exchange_api_payback.c
+++ b/src/lib/exchange_api_payback.c
@@ -57,7 +57,7 @@ struct TALER_EXCHANGE_PaybackHandle
/**
* Denomination key of the coin.
*/
- const struct TALER_EXCHANGE_DenomPublicKey *pk;
+ struct TALER_EXCHANGE_DenomPublicKey pk;
/**
* Handle for the request.
@@ -195,7 +195,7 @@ handle_payback_finished (void *cls,
struct TALER_Amount total;
const struct TALER_EXCHANGE_DenomPublicKey *dki;
- dki = ph->pk;
+ dki = &ph->pk;
history = json_object_get (j,
"history");
if (GNUNET_OK !=
@@ -318,7 +318,8 @@ TALER_EXCHANGE_payback (struct TALER_EXCHANGE_Handle *exchange,
ph = GNUNET_new (struct TALER_EXCHANGE_PaybackHandle);
ph->coin_pub = pr.coin_pub;
ph->exchange = exchange;
- ph->pk = pk;
+ ph->pk = *pk;
+ ph->pk.key.rsa_public_key = GNUNET_CRYPTO_rsa_public_key_dup (pk->key.rsa_public_key);
ph->cb = payback_cb;
ph->cb_cls = payback_cb_cls;
ph->url = TEAH_path_to_url (exchange, "/payback");
@@ -332,6 +333,7 @@ TALER_EXCHANGE_payback (struct TALER_EXCHANGE_Handle *exchange,
curl_easy_cleanup (eh);
json_decref (payback_obj);
GNUNET_free (ph->url);
+ GNUNET_CRYPTO_rsa_public_key_free (ph->pk.key.rsa_public_key);
GNUNET_free (ph);
return NULL;
}
@@ -365,6 +367,7 @@ TALER_EXCHANGE_payback_cancel (struct TALER_EXCHANGE_PaybackHandle *ph)
}
GNUNET_free (ph->url);
TALER_curl_easy_post_finished (&ph->ctx);
+ GNUNET_CRYPTO_rsa_public_key_free (ph->pk.key.rsa_public_key);
GNUNET_free (ph);
}