From e4d5e3cb0d10e8f77c7100d42cfdb32051de1c18 Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Wed, 31 Aug 2016 11:40:33 +0200 Subject: [PATCH] g10: Update a key's TOFU policy in a transaction. * g10/tofu.c (tofu_set_policy): Do the update in a transaction. * g10/gpg.c (main): Do a TOFU policy update in a batch transaction. -- Signed-off-by: Neal H. Walfield --- g10/gpg.c | 5 ++++- g10/tofu.c | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/g10/gpg.c b/g10/gpg.c index 3193e7426..a9770d74a 100644 --- a/g10/gpg.c +++ b/g10/gpg.c @@ -4664,6 +4664,8 @@ main (int argc, char **argv) if (! hd) g10_exit (1); + tofu_begin_batch_update (ctrl); + for (i = 1; i < argc; i ++) { KEYDB_SEARCH_DESC desc; @@ -4721,8 +4723,9 @@ main (int argc, char **argv) g10_exit (1); } - keydb_release (hd); + tofu_end_batch_update (ctrl); + keydb_release (hd); } #endif /*USE_TOFU*/ break; diff --git a/g10/tofu.c b/g10/tofu.c index 137065ad6..4285e960c 100644 --- a/g10/tofu.c +++ b/g10/tofu.c @@ -2584,6 +2584,8 @@ tofu_set_policy (ctrl_t ctrl, kbnode_t kb, enum tofu_policy policy) fingerprint = hexfingerprint (pk, NULL, 0); + begin_transaction (ctrl); + for (; kb; kb = kb->next) { PKT_user_id *user_id; @@ -2605,6 +2607,8 @@ tofu_set_policy (ctrl_t ctrl, kbnode_t kb, enum tofu_policy policy) xfree (email); } + end_transaction (ctrl, 0); + xfree (fingerprint); return 0; }