[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-anastasis] branch master updated: fix misc leaks and other memory
From: |
gnunet |
Subject: |
[taler-anastasis] branch master updated: fix misc leaks and other memory issues |
Date: |
Sun, 14 Feb 2021 18:37:03 +0100 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository anastasis.
The following commit(s) were added to refs/heads/master by this push:
new fd3071d fix misc leaks and other memory issues
fd3071d is described below
commit fd3071d26e3f5cb831afc5ca3ab66240d0603631
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Feb 14 18:37:01 2021 +0100
fix misc leaks and other memory issues
---
src/backend/anastasis-httpd_policy_upload.c | 3 -
src/include/anastasis_testing_lib.h | 4 +-
src/lib/anastasis_backup.c | 16 ++++--
src/lib/anastasis_recovery.c | 22 +++++---
src/restclient/anastasis_api_policy_store.c | 22 +++++---
src/testing/test_anastasis.c | 85 ++++++++++++++++-------------
src/testing/testing_cmd_challenge_answer.c | 3 +-
src/testing/testing_cmd_recover_secret.c | 69 ++++++++++++-----------
src/testing/testing_cmd_secret_share.c | 81 ++++++++++++++-------------
src/testing/testing_cmd_truth_upload.c | 24 ++++----
10 files changed, 183 insertions(+), 146 deletions(-)
diff --git a/src/backend/anastasis-httpd_policy_upload.c
b/src/backend/anastasis-httpd_policy_upload.c
index 61decba..9503a44 100644
--- a/src/backend/anastasis-httpd_policy_upload.c
+++ b/src/backend/anastasis-httpd_policy_upload.c
@@ -915,7 +915,6 @@ AH_handler_policy_post (
return ret;
}
-
/* handle upload */
if (0 != *recovery_data_size)
{
@@ -941,8 +940,6 @@ AH_handler_policy_post (
}
/* finished with upload, check hash */
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Upload finished\n");
if (NULL != puc->hash_ctx)
{
struct GNUNET_HashCode our_hash;
diff --git a/src/include/anastasis_testing_lib.h
b/src/include/anastasis_testing_lib.h
index adf8323..0ab121c 100644
--- a/src/include/anastasis_testing_lib.h
+++ b/src/include/anastasis_testing_lib.h
@@ -594,7 +594,7 @@ struct TALER_TESTING_Command
ANASTASIS_TESTING_cmd_truth_upload (
const char *label,
const char *anastasis_url,
- json_t *id_data,
+ const json_t *id_data,
const char *method,
const char *instructions,
const char *mime_type,
@@ -764,7 +764,7 @@ struct TALER_TESTING_Command
ANASTASIS_TESTING_cmd_recover_secret (
const char *label,
const char *anastasis_url,
- json_t *id_data,
+ const json_t *id_data,
unsigned int version,
unsigned int http_status,
enum ANASTASIS_TESTING_RecoverSecretOption rso,
diff --git a/src/lib/anastasis_backup.c b/src/lib/anastasis_backup.c
index 750088e..9cde710 100644
--- a/src/lib/anastasis_backup.c
+++ b/src/lib/anastasis_backup.c
@@ -526,7 +526,13 @@ get_num_urls (const struct ANASTASIS_Policy *policies[],
for (unsigned int l = 0; l <= i; l++)
{
- for (unsigned int k = 0; k < policies[l]->truths_length; k++)
+ unsigned int limit;
+
+ if (l == i)
+ limit = j;
+ else
+ limit = policies[l]->truths_length;
+ for (unsigned int k = 0; k < limit; k++)
{
if (0 ==
strcmp (policies[i]->truths[j]->url,
@@ -603,9 +609,11 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
GNUNET_assert (NULL != uuids);
for (unsigned int b = 0; b < policy->truths_length; b++)
- json_array_append (uuids,
- GNUNET_JSON_from_data_auto (
- &policy->truths[b]->uuid));
+ GNUNET_assert (0 ==
+ json_array_append_new (
+ uuids,
+ GNUNET_JSON_from_data_auto (
+ &policy->truths[b]->uuid)));
if (0 !=
json_array_append_new (
dec_policies,
diff --git a/src/lib/anastasis_recovery.c b/src/lib/anastasis_recovery.c
index 94b9798..53925a0 100644
--- a/src/lib/anastasis_recovery.c
+++ b/src/lib/anastasis_recovery.c
@@ -586,8 +586,8 @@ policy_lookup_cb (void *cls,
if (Z_OK !=
uncompress ((Bytef *) pt,
&pt_size,
- (const Bytef *) plaintext,
- size_plaintext))
+ (const Bytef *) plaintext + sizeof (uint32_t),
+ size_plaintext - sizeof (uint32_t)))
{
GNUNET_break_op (0);
r->csc (r->csc_cls,
@@ -887,8 +887,8 @@ ANASTASIS_recovery_serialize (const struct
ANASTASIS_Recovery *r)
GNUNET_JSON_from_data_auto (&c->uuid));
GNUNET_assert (NULL != cs);
GNUNET_assert (0 ==
- json_array_append (dps_arr,
- cs));
+ json_array_append_new (dps_arr,
+ cs));
}
dps = json_pack ("{s:o, s:o, s:o}",
"emk",
@@ -899,8 +899,8 @@ ANASTASIS_recovery_serialize (const struct
ANASTASIS_Recovery *r)
c_arr);
GNUNET_assert (NULL != dps);
GNUNET_assert (0 ==
- json_array_append (dps_arr,
- dps));
+ json_array_append_new (dps_arr,
+ dps));
}
cs_arr = json_array ();
GNUNET_assert (NULL != cs_arr);
@@ -931,8 +931,8 @@ ANASTASIS_recovery_serialize (const struct
ANASTASIS_Recovery *r)
TALER_JSON_from_amount (&c->ci.cost));
GNUNET_assert (NULL != cs);
GNUNET_assert (0 ==
- json_array_append (cs_arr,
- cs));
+ json_array_append_new (cs_arr,
+ cs));
}
return json_pack ("{s:o, s:o, s:o, s:I, s:O, s:s, s:o}",
@@ -1254,6 +1254,8 @@ ANASTASIS_recovery_abort (struct ANASTASIS_Recovery *r)
r->plo = NULL;
}
GNUNET_free (r->solved_challenges);
+ for (unsigned int j = 0; j < r->ri.dps_len; j++)
+ GNUNET_free (r->dps[j].pub_details.challenges);
GNUNET_free (r->ri.dps);
for (unsigned int i = 0; i < r->ri.cs_len; i++)
{
@@ -1262,10 +1264,12 @@ ANASTASIS_recovery_abort (struct ANASTASIS_Recovery *r)
GNUNET_free (cs->url);
GNUNET_free (cs->method);
GNUNET_free (cs->instructions);
- GNUNET_free (cs);
}
GNUNET_free (r->ri.cs);
+ GNUNET_free (r->cs);
+ GNUNET_free (r->dps);
json_decref (r->id_data);
GNUNET_free (r->provider_url);
+ GNUNET_free (r->enc_core_secret);
GNUNET_free (r);
}
diff --git a/src/restclient/anastasis_api_policy_store.c
b/src/restclient/anastasis_api_policy_store.c
index 8f1a2a9..5a0a048 100644
--- a/src/restclient/anastasis_api_policy_store.c
+++ b/src/restclient/anastasis_api_policy_store.c
@@ -66,6 +66,11 @@ struct ANASTASIS_PolicyStoreOperation
*/
char *pay_uri;
+ /**
+ * Copy of the uploaded data. Needed by curl.
+ */
+ void *postcopy;
+
/**
* Hash of the data we are uploading.
*/
@@ -84,6 +89,7 @@ ANASTASIS_policy_store_cancel (
}
GNUNET_free (pso->pay_uri);
GNUNET_free (pso->url);
+ GNUNET_free (pso->postcopy);
GNUNET_free (pso);
}
@@ -104,27 +110,28 @@ handle_policy_store_finished (void *cls,
{
struct ANASTASIS_PolicyStoreOperation *pso = cls;
struct ANASTASIS_UploadDetails ud;
- struct ANASTASIS_UploadDetails *udp;
pso->job = NULL;
- udp = NULL;
memset (&ud, 0, sizeof (ud));
ud.http_status = response_code;
ud.ec = TALER_EC_NONE;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Policy store finished with HTTP status %u\n",
+ (unsigned int) response_code);
switch (response_code)
{
case 0:
+ ud.us = ANASTASIS_US_SERVER_ERROR;
+ ud.ec = TALER_EC_GENERIC_INVALID_RESPONSE;
break;
case MHD_HTTP_NO_CONTENT:
ud.us = ANASTASIS_US_SUCCESS;
ud.details.curr_backup_hash = &pso->new_upload_hash;
- udp = &ud;
break;
case MHD_HTTP_NOT_MODIFIED:
ud.us = ANASTASIS_US_SUCCESS;
ud.details.curr_backup_hash = &pso->new_upload_hash;
- udp = &ud;
break;
case MHD_HTTP_BAD_REQUEST:
GNUNET_break (0);
@@ -161,7 +168,6 @@ handle_policy_store_finished (void *cls,
}
ud.us = ANASTASIS_US_PAYMENT_REQUIRED;
ud.details.payment.payment_request = pso->pay_uri;
- udp = &ud;
break;
case MHD_HTTP_LENGTH_REQUIRED:
GNUNET_break (0);
@@ -181,7 +187,7 @@ handle_policy_store_finished (void *cls,
break;
}
pso->cb (pso->cb_cls,
- udp);
+ &ud);
pso->cb = NULL;
ANASTASIS_policy_store_cancel (pso);
}
@@ -347,6 +353,8 @@ ANASTASIS_policy_store (
}
/* Finished setting up headers */
pso = GNUNET_new (struct ANASTASIS_PolicyStoreOperation);
+ pso->postcopy = GNUNET_memdup (recovery_data,
+ recovery_data_size);
pso->new_upload_hash = usp.new_recovery_data_hash;
{
char *acc_pub_str;
@@ -379,7 +387,7 @@ ANASTASIS_policy_store (
GNUNET_assert (CURLE_OK ==
curl_easy_setopt (eh,
CURLOPT_POSTFIELDS,
- recovery_data));
+ pso->postcopy));
GNUNET_assert (CURLE_OK ==
curl_easy_setopt (eh,
CURLOPT_POSTFIELDSIZE,
diff --git a/src/testing/test_anastasis.c b/src/testing/test_anastasis.c
index 12eed29..0b3b10c 100644
--- a/src/testing/test_anastasis.c
+++ b/src/testing/test_anastasis.c
@@ -101,6 +101,11 @@ static struct GNUNET_OS_Process *merchantd;
*/
static struct GNUNET_OS_Process *anastasisd;
+/**
+ * Identity to use for testing.
+ */
+static json_t *id_data;
+
/**
* Execute the taler-exchange-wirewatch command with
@@ -178,27 +183,42 @@ run (void *cls,
ANASTASIS_TESTING_cmd_salt ("salt-request-1",
anastasis_url,
MHD_HTTP_OK),
- ANASTASIS_TESTING_cmd_truth_question ("truth-create-1",
- anastasis_url,
- NULL,
- "SomeTruth1",
- ANASTASIS_TESTING_TSO_NONE,
- MHD_HTTP_NO_CONTENT),
- ANASTASIS_TESTING_cmd_truth_question ("truth-create-2",
- anastasis_url,
- NULL,
- "SomeTruth2",
- ANASTASIS_TESTING_TSO_NONE,
- MHD_HTTP_NO_CONTENT),
- ANASTASIS_TESTING_cmd_truth_store ("truth-create-3",
- anastasis_url,
- NULL,
- "file",
- "text/plain",
- strlen (file_secret),
- file_secret,
- ANASTASIS_TESTING_TSO_NONE,
- MHD_HTTP_NO_CONTENT),
+ ANASTASIS_TESTING_cmd_truth_upload ("truth-create-1",
+ anastasis_url,
+ id_data,
+ "question",
+ "answer the question",
+ "text/plain",
+ "SomeTruth1",
+ strlen ("SomeTruth1"),
+ NULL,
+ MHD_HTTP_NO_CONTENT,
+ ANASTASIS_TESTING_TSO_NONE,
+ "salt-request-1"),
+ ANASTASIS_TESTING_cmd_truth_upload ("truth-create-2",
+ anastasis_url,
+ id_data,
+ "question",
+ "answer the question",
+ "text/plain",
+ "SomeTruth2",
+ strlen ("SomeTruth2"),
+ NULL,
+ MHD_HTTP_NO_CONTENT,
+ ANASTASIS_TESTING_TSO_NONE,
+ "salt-request-1"),
+ ANASTASIS_TESTING_cmd_truth_upload ("truth-create-3",
+ anastasis_url,
+ id_data,
+ "file",
+ "read the file",
+ "text/plain",
+ file_secret,
+ strlen (file_secret),
+ NULL,
+ MHD_HTTP_NO_CONTENT,
+ ANASTASIS_TESTING_TSO_NONE,
+ "salt-request-1"),
ANASTASIS_TESTING_cmd_policy_create ("policy-create-1",
"truth-create-1",
"truth-create-2",
@@ -214,11 +234,10 @@ run (void *cls,
ANASTASIS_TESTING_cmd_secret_share ("secret-share-1",
anastasis_url,
NULL,
- ANASTASIS_TESTING_make_id_data_example
(
- "MaxMuster123456789"),
+ id_data,
"core secret",
strlen ("core secret"),
- MHD_HTTP_PAYMENT_REQUIRED,
+
ANASTASIS_SHARE_STATUS_PAYMENT_REQUIRED,
ANASTASIS_TESTING_SSO_NONE,
"policy-create-1",
"policy-create-2",
@@ -242,11 +261,10 @@ run (void *cls,
ANASTASIS_TESTING_cmd_secret_share ("secret-share-2",
anastasis_url,
"secret-share-1",
- ANASTASIS_TESTING_make_id_data_example
(
- "MaxMuster123456789"),
+ id_data,
"core secret",
strlen ("core secret"),
- MHD_HTTP_NO_CONTENT,
+ ANASTASIS_SHARE_STATUS_SUCCESS,
ANASTASIS_TESTING_SSO_NONE,
"policy-create-1",
"policy-create-2",
@@ -254,8 +272,7 @@ run (void *cls,
NULL),
ANASTASIS_TESTING_cmd_recover_secret ("recover-secret-1",
anastasis_url,
-
ANASTASIS_TESTING_make_id_data_example (
- "MaxMuster123456789"),
+ id_data,
0,
MHD_HTTP_PAYMENT_REQUIRED, // FIXME!
WHY!?
ANASTASIS_TESTING_RSO_NONE,
@@ -305,15 +322,8 @@ run (void *cls,
MHD_HTTP_NO_CONTENT),
TALER_TESTING_cmd_batch ("pay",
pay),
-
TALER_TESTING_cmd_batch ("anastasis",
anastasis),
-
-
- /**
- * End the suite. Fixme: better to have a label for this
- * too, as it shows a "(null)" token on logs.
- */
TALER_TESTING_cmd_end ()
};
@@ -354,6 +364,8 @@ main (int argc,
"%s/.secret",
dir);
}
+ id_data = ANASTASIS_TESTING_make_id_data_example (
+ "MaxMuster123456789");
payer_payto = ("payto://x-taler-bank/localhost/" USER_ACCOUNT_NAME);
exchange_payto = ("payto://x-taler-bank/localhost/" EXCHANGE_ACCOUNT_NAME);
merchant_payto = ("payto://x-taler-bank/localhost/" MERCHANT_ACCOUNT_NAME);
@@ -376,7 +388,6 @@ main (int argc,
return 1;
case GNUNET_NO:
return 77;
-
case GNUNET_OK:
if (NULL == (merchantd =
TALER_TESTING_run_merchant (CONFIG_FILE,
diff --git a/src/testing/testing_cmd_challenge_answer.c
b/src/testing/testing_cmd_challenge_answer.c
index 135bd35..f0a7d53 100644
--- a/src/testing/testing_cmd_challenge_answer.c
+++ b/src/testing/testing_cmd_challenge_answer.c
@@ -96,10 +96,12 @@ challenge_answer_cb (void *af_cls,
{
struct ChallengeState *cs = af_cls;
+ cs->c = NULL;
if (csr->cs != cs->expected_cs)
{
GNUNET_break (0);
TALER_TESTING_interpreter_fail (cs->is);
+ return;
}
switch (csr->cs)
{
@@ -252,7 +254,6 @@ challenge_answer_run (void *cls,
ps = NULL;
}
-
cs->c = (struct ANASTASIS_Challenge *) c;
if (GNUNET_OK !=
ANASTASIS_challenge_answer (cs->c,
diff --git a/src/testing/testing_cmd_recover_secret.c
b/src/testing/testing_cmd_recover_secret.c
index 005eee5..5fb110f 100644
--- a/src/testing/testing_cmd_recover_secret.c
+++ b/src/testing/testing_cmd_recover_secret.c
@@ -211,6 +211,7 @@ static void
delayed_abort (void *cls)
{
struct ANASTASIS_Recovery *recovery = cls;
+
ANASTASIS_recovery_abort (recovery);
}
@@ -219,7 +220,7 @@ delayed_abort (void *cls)
* Free the state of a "recover secret" CMD, and possibly
* cancel it if it did not complete.
*
- * @param cls closure.
+ * @param cls closure
* @param cmd command being freed.
*/
static void
@@ -258,16 +259,21 @@ recover_secret_traits (void *cls,
unsigned int index)
{
struct RecoverSecretState *rss = cls;
- struct TALER_TESTING_Trait traits[] = {
- ANASTASIS_TESTING_make_trait_challenge (index,
- rss->ri->cs[index]),
- TALER_TESTING_trait_end ()
- };
-
- return TALER_TESTING_get_trait (traits,
- ret,
- trait,
- index);
+
+ if (NULL == rss->ri)
+ return GNUNET_SYSERR;
+ {
+ struct TALER_TESTING_Trait traits[] = {
+ ANASTASIS_TESTING_make_trait_challenge (index,
+ rss->ri->cs[index]),
+ TALER_TESTING_trait_end ()
+ };
+
+ return TALER_TESTING_get_trait (traits,
+ ret,
+ trait,
+ index);
+ }
}
@@ -284,36 +290,37 @@ recover_secret_traits (void *cls,
* @return the command
*/
struct TALER_TESTING_Command
-ANASTASIS_TESTING_cmd_recover_secret (const char *label,
- const char *anastasis_url,
- json_t *id_data,
- unsigned int version,
- unsigned int http_status,
- enum
- ANASTASIS_TESTING_RecoverSecretOption
rso,
- const char *download_ref,
- const char *core_secret_ref)
+ANASTASIS_TESTING_cmd_recover_secret (
+ const char *label,
+ const char *anastasis_url,
+ const json_t *id_data,
+ unsigned int version,
+ unsigned int http_status,
+ enum ANASTASIS_TESTING_RecoverSecretOption rso,
+ const char *download_ref,
+ const char *core_secret_ref)
{
struct RecoverSecretState *rss;
rss = GNUNET_new (struct RecoverSecretState);
rss->http_status = http_status;
rss->version = version;
- rss->id_data = id_data;
+ rss->id_data = json_incref ((json_t *) id_data);
rss->rsopt = rso;
rss->anastasis_url = anastasis_url;
rss->download_reference = download_ref;
rss->core_secret_reference = core_secret_ref;
-
- struct TALER_TESTING_Command cmd = {
- .cls = rss,
- .label = label,
- .run = &recover_secret_run,
- .cleanup = &recover_secret_cleanup,
- .traits = &recover_secret_traits
- };
-
- return cmd;
+ {
+ struct TALER_TESTING_Command cmd = {
+ .cls = rss,
+ .label = label,
+ .run = &recover_secret_run,
+ .cleanup = &recover_secret_cleanup,
+ .traits = &recover_secret_traits
+ };
+
+ return cmd;
+ }
}
diff --git a/src/testing/testing_cmd_secret_share.c
b/src/testing/testing_cmd_secret_share.c
index a6bb54a..5c58695 100644
--- a/src/testing/testing_cmd_secret_share.c
+++ b/src/testing/testing_cmd_secret_share.c
@@ -56,33 +56,18 @@ struct SecretShareState
/**
* Data to derive user identifier from.
*/
- const json_t *id_data;
+ json_t *id_data;
/**
* The core secret to backup/recover.
*/
const void *core_secret;
- /**
- * Size of core_secret.
- */
- size_t core_secret_size;
-
- /**
- * Length of array of command labels (cmd_label_array).
- */
- unsigned int cmd_label_array_length;
-
/**
* URL of the anastasis backend.
*/
const char *anastasis_url;
- /**
- * Expected status code.
- */
- enum ANASTASIS_ShareStatus want_status;
-
/**
* The /truth GET operation handle.
*/
@@ -93,11 +78,6 @@ struct SecretShareState
*/
const char *prev_secret_share;
- /**
- * Options for how we are supposed to do the upload.
- */
- enum ANASTASIS_TESTING_SecretShareOption ssopt;
-
/**
* closure for the payment callback
*/
@@ -112,6 +92,26 @@ struct SecretShareState
* Payment order ID we got back, if any. Otherwise NULL.
*/
char *payment_order_id;
+
+ /**
+ * Size of core_secret.
+ */
+ size_t core_secret_size;
+
+ /**
+ * Length of array of command labels (cmd_label_array).
+ */
+ unsigned int cmd_label_array_length;
+
+ /**
+ * Expected status code.
+ */
+ enum ANASTASIS_ShareStatus want_status;
+
+ /**
+ * Options for how we are supposed to do the upload.
+ */
+ enum ANASTASIS_TESTING_SecretShareOption ssopt;
};
@@ -185,15 +185,10 @@ secret_share_run (void *cls,
struct SecretShareState *sss = cls;
const struct ANASTASIS_Policy *policies[sss->cmd_label_array_length];
unsigned int pds_len;
- struct ANASTASIS_PaymentDetails pds[1];
+ struct ANASTASIS_PaymentDetails pds;
GNUNET_assert (sss->cmd_label_array_length > 0);
GNUNET_assert (NULL != sss->cmd_label_array);
-
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "At %s:%d cmd label array length is %i\n", __FILE__, __LINE__,
- sss->cmd_label_array_length);
-
sss->is = is;
if (NULL != sss->cmd_label_array)
{
@@ -258,7 +253,7 @@ secret_share_run (void *cls,
}
}
- memset (pds,
+ memset (&pds,
0,
sizeof (pds));
if (NULL != sss->payment_order_id)
@@ -266,7 +261,7 @@ secret_share_run (void *cls,
if (GNUNET_OK !=
GNUNET_STRINGS_string_to_data (sss->payment_order_id,
strlen (sss->payment_order_id),
- &pds[0].payment_secret,
+ &pds.payment_secret,
sizeof (struct
ANASTASIS_PaymentSecretP)))
{
@@ -276,7 +271,7 @@ secret_share_run (void *cls,
return;
}
GNUNET_free (sss->payment_order_id);
- pds[0].provider_url = sss->anastasis_url;
+ pds.provider_url = sss->anastasis_url;
pds_len = 1;
}
else
@@ -287,7 +282,7 @@ secret_share_run (void *cls,
sss->id_data,
policies,
sss->cmd_label_array_length,
- pds,
+ (0 == pds_len) ? NULL : &pds,
pds_len,
false,
&secret_share_result_cb,
@@ -329,7 +324,7 @@ secret_share_cleanup (void *cls,
ANASTASIS_secret_share_cancel (sss->sso);
sss->sso = NULL;
}
- json_decref ((json_t *) sss->id_data);
+ json_decref (sss->id_data);
GNUNET_free (sss);
}
@@ -394,27 +389,31 @@ ANASTASIS_TESTING_cmd_secret_share (
...)
{
struct SecretShareState *sss;
- va_list ap;
sss = GNUNET_new (struct SecretShareState);
sss->want_status = want_status;
sss->ssopt = sso;
sss->anastasis_url = anastasis_url;
sss->label = label;
- sss->id_data = id_data;
+ sss->id_data = json_incref ((json_t *) id_data);
sss->core_secret = core_secret;
sss->core_secret_size = core_secret_size;
sss->prev_secret_share = prev_secret_share;
- va_start (ap, sso);
- const char *policy_create_cmd;
- while (NULL != (policy_create_cmd = va_arg (ap, const char *)))
{
- GNUNET_array_append (sss->cmd_label_array,
- sss->cmd_label_array_length,
- policy_create_cmd);
+ const char *policy_create_cmd;
+ va_list ap;
+
+ va_start (ap,
+ sso);
+ while (NULL != (policy_create_cmd = va_arg (ap, const char *)))
+ {
+ GNUNET_array_append (sss->cmd_label_array,
+ sss->cmd_label_array_length,
+ policy_create_cmd);
+ }
+ va_end (ap);
}
- va_end (ap);
{
struct TALER_TESTING_Command cmd = {
.cls = sss,
diff --git a/src/testing/testing_cmd_truth_upload.c
b/src/testing/testing_cmd_truth_upload.c
index 91b8647..36d16d0 100644
--- a/src/testing/testing_cmd_truth_upload.c
+++ b/src/testing/testing_cmd_truth_upload.c
@@ -50,7 +50,7 @@ struct TruthUploadState
/**
* The ID data to generate user identifier
*/
- const json_t *id_data;
+ json_t *id_data;
/**
* The escrow method
@@ -105,9 +105,9 @@ struct TruthUploadState
void *tpc_cls;
/**
- * Reference to upload command of previous truth upload.
+ * Reference to salt download.
*/
- const char *upload_reference;
+ const char *salt_reference;
/**
* Options for how we are supposed to do the upload.
@@ -171,11 +171,11 @@ truth_upload_run (void *cls,
const struct ANASTASIS_PaymentSecretP *ps;
tus->is = is;
- if (NULL != tus->upload_reference)
+ if (NULL != tus->salt_reference)
{
ref = TALER_TESTING_interpreter_lookup_command
(is,
- tus->upload_reference);
+ tus->salt_reference);
if (NULL == ref)
{
GNUNET_break (0);
@@ -268,7 +268,10 @@ truth_upload_cleanup (void *cls,
tus->tuo = NULL;
}
if (NULL != tus->id_data)
- json_decref ((json_t *) tus->id_data);
+ {
+ json_decref (tus->id_data);
+ tus->id_data = NULL;
+ }
if (NULL != tus->truth)
{
ANASTASIS_truth_free (tus->truth);
@@ -317,7 +320,6 @@ ANASTASIS_TESTING_make_id_data_example (const char *id_data)
id = json_pack ("{s:s}",
"id_data", id_data);
GNUNET_assert (NULL != id);
-
return id;
}
@@ -326,7 +328,7 @@ struct TALER_TESTING_Command
ANASTASIS_TESTING_cmd_truth_upload (
const char *label,
const char *anastasis_url,
- json_t *id_data,
+ const json_t *id_data,
const char *method,
const char *instructions,
const char *mime_type,
@@ -335,7 +337,7 @@ ANASTASIS_TESTING_cmd_truth_upload (
const char *paid_order_ref,
unsigned int http_status,
enum ANASTASIS_TESTING_TruthStoreOption tso,
- const char *upload_ref)
+ const char *salt_ref)
{
struct TruthUploadState *tus;
@@ -344,8 +346,8 @@ ANASTASIS_TESTING_cmd_truth_upload (
tus->http_status = http_status;
tus->tsopt = tso;
tus->anastasis_url = anastasis_url;
- tus->upload_reference = upload_ref;
- tus->id_data = id_data;
+ tus->salt_reference = salt_ref;
+ tus->id_data = json_incref ((json_t *) id_data);
tus->method = method;
tus->instructions = instructions;
tus->mime_type = mime_type;
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-anastasis] branch master updated: fix misc leaks and other memory issues,
gnunet <=