diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-09-14 20:52:39 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-09-14 20:52:39 +0200 |
commit | f346e89ceb7eecf6de1abd4b2b794926d671b72c (patch) | |
tree | bd34b3ebbdc4005d09a49dec0d0837181fd1fb28 /src/exchange-lib/exchange_api_handle.c | |
parent | f440904f1bba73ff4e6b7d91b221fa3f6af4ed62 (diff) | |
download | exchange-f346e89ceb7eecf6de1abd4b2b794926d671b72c.tar.gz exchange-f346e89ceb7eecf6de1abd4b2b794926d671b72c.tar.bz2 exchange-f346e89ceb7eecf6de1abd4b2b794926d671b72c.zip |
(imperfect) test for #4840
Diffstat (limited to 'src/exchange-lib/exchange_api_handle.c')
-rw-r--r-- | src/exchange-lib/exchange_api_handle.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/exchange-lib/exchange_api_handle.c b/src/exchange-lib/exchange_api_handle.c index 822c9c7b4..cc44a787e 100644 --- a/src/exchange-lib/exchange_api_handle.c +++ b/src/exchange-lib/exchange_api_handle.c @@ -812,6 +812,9 @@ keys_completed_cb (void *cls, kr->url, response_code); kd_old = exchange->key_data; + memset (&kd, + 0, + sizeof (struct TALER_EXCHANGE_Keys)); vc = TALER_EXCHANGE_VC_PROTOCOL_ERROR; switch (response_code) { @@ -823,15 +826,12 @@ keys_completed_cb (void *cls, response_code = 0; break; } - memset (&kd, - 0, - sizeof (struct TALER_EXCHANGE_Keys)); - /* We keep the denomination keys and auditor signatures from the previous iteration (/keys cherry picking) */ kd.num_denom_keys = kd_old.num_denom_keys; - kd.denom_keys = GNUNET_new_array (kd.num_denom_keys, - struct TALER_EXCHANGE_DenomPublicKey); + GNUNET_array_grow (kd.denom_keys, + kd.denom_keys_size, + kd.num_denom_keys); /* First make a shallow copy, we then need another pass for the RSA key... */ memcpy (kd.denom_keys, kd_old.denom_keys, @@ -857,7 +857,7 @@ keys_completed_cb (void *cls, for (unsigned int j=0;j<aold->num_denom_keys;j++) { /* offsets will map 1:1 */ - unsigned int off = kd_old.denom_keys - aold->denom_keys[j]; + unsigned int off = aold->denom_keys[j] - kd_old.denom_keys; GNUNET_assert (off < kd_old.num_denom_keys); anew->denom_keys[j] = &kd.denom_keys[off]; @@ -872,7 +872,6 @@ keys_completed_cb (void *cls, response_code = 0; break; } - exchange->key_data = kd; json_decref (exchange->key_data_raw); exchange->key_data_raw = json_deep_copy (resp_obj); break; @@ -882,6 +881,7 @@ keys_completed_cb (void *cls, (unsigned int) response_code); break; } + exchange->key_data = kd; if (MHD_HTTP_OK != response_code) { |