1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-04-17 15:44:34 +02:00

gpg: Streamline use of error messages in tofu.c

* g10/tofu.c: Make use of print_further_info to reduce the number of
different error messages to be translated.  Also streamline some
messages.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2016-01-19 16:29:27 +01:00
parent 8b7f64f9df
commit cfa41890bb
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B

View File

@ -261,9 +261,10 @@ begin_transaction (struct db *db, int only_batch)
"savepoint batch;", SQLITE_ARG_END); "savepoint batch;", SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error log_error (_("error beginning transaction on TOFU database: %s\n"),
(_("error beginning %s transaction on TOFU database '%s': %s\n"), err);
"batch", *db->name ? db->name : "combined", err); print_further_info ("batch, database '%s'",
*db->name ? db->name : "[combined]");
sqlite3_free (err); sqlite3_free (err);
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }
@ -279,9 +280,10 @@ begin_transaction (struct db *db, int only_batch)
"savepoint inner;", SQLITE_ARG_END); "savepoint inner;", SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error log_error (_("error beginning transaction on TOFU database: %s\n"),
(_("error beginning %s transaction on TOFU database '%s': %s\n"), err);
"inner", *db->name ? db->name : "combined", err); print_further_info ("inner, database '%s'",
*db->name ? db->name : "[combined]");
sqlite3_free (err); sqlite3_free (err);
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }
@ -313,9 +315,10 @@ end_transaction (struct db *db, int only_batch)
"release batch;", SQLITE_ARG_END); "release batch;", SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error log_error (_("error committing transaction on TOFU database: %s\n"),
(_("error committing %s transaction on TOFU database '%s': %s\n"), err);
"batch", *db->name ? db->name : "combined", err); print_further_info ("batch, database '%s'",
*db->name ? db->name : "[combined]");
sqlite3_free (err); sqlite3_free (err);
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }
@ -333,9 +336,10 @@ end_transaction (struct db *db, int only_batch)
"release inner;", SQLITE_ARG_END); "release inner;", SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error log_error (_("error committing transaction on TOFU database: %s\n"),
(_("error committing %s transaction on TOFU database '%s': %s\n"), err);
"inner", *db->name ? db->name : "combined", err); print_further_info ("inner, database '%s'",
*db->name ? db->name : "[combined]");
sqlite3_free (err); sqlite3_free (err);
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }
@ -362,9 +366,10 @@ rollback_transaction (struct db *db)
if (rc) if (rc)
{ {
log_error log_error (_("error rolling back transaction on TOFU database: %s\n"),
(_("error rolling back inner transaction on TOFU database '%s': %s\n"), err);
*db->name ? db->name : "combined", err); print_further_info ("inner, database '%s'",
*db->name ? db->name : "[combined]");
sqlite3_free (err); sqlite3_free (err);
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }
@ -443,7 +448,7 @@ version_check_cb (void *cookie, int argc, char **argv, char **azColName)
*version = 1; *version = 1;
else else
{ {
log_error (_("unsupported TOFU DB version: %s\n"), argv[0]); log_error (_("unsupported TOFU database version: %s\n"), argv[0]);
*version = -1; *version = -1;
} }
@ -480,8 +485,8 @@ initdb (sqlite3 *db, enum db_type type)
get_single_unsigned_long_cb, &count, &err); get_single_unsigned_long_cb, &count, &err);
if (rc) if (rc)
{ {
log_error (_("error querying TOFU DB's available tables: %s\n"), log_error (_("error reading TOFU database: %s\n"), err);
err); print_further_info ("query available tables");
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -508,16 +513,16 @@ initdb (sqlite3 *db, enum db_type type)
else if (rc) else if (rc)
/* Some error. */ /* Some error. */
{ {
log_error (_("error determining TOFU DB's version: %s\n"), err); log_error (_("error determining TOFU database's version: %s\n"), err);
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
else else
/* Unexpected success. This can only happen if there are no
rows. */
{ {
log_error (_("error determining TOFU DB's version: %s\n"), /* Unexpected success. This can only happen if there are no
"select returned 0, but expected ABORT"); rows. (select returned 0, but expected ABORT.) */
log_error (_("error determining TOFU database's version: %s\n"),
gpg_strerror (GPG_ERR_NO_DATA));
rc = 1; rc = 1;
goto out; goto out;
} }
@ -529,8 +534,8 @@ initdb (sqlite3 *db, enum db_type type)
NULL, NULL, &err); NULL, NULL, &err);
if (rc) if (rc)
{ {
log_error (_("error initializing TOFU database (%s): %s\n"), log_error (_("error initializing TOFU database: %s\n"), err);
"version", err); print_further_info ("create version");
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -542,36 +547,36 @@ initdb (sqlite3 *db, enum db_type type)
NULL, NULL, &err); NULL, NULL, &err);
if (rc) if (rc)
{ {
log_error (_("error initializing TOFU database (%s): %s\n"), log_error (_("error initializing TOFU database: %s\n"), err);
"version, init", err); print_further_info ("insert version");
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
/* The list of <fingerprint, email> bindings and auxiliary data. /* The list of <fingerprint, email> bindings and auxiliary data.
*
OID is a unique ID identifying this binding (and used by the * OID is a unique ID identifying this binding (and used by the
signatures table, see below). Note: OIDs will never be * signatures table, see below). Note: OIDs will never be
reused. * reused.
*
FINGERPRINT: The key's fingerprint. * FINGERPRINT: The key's fingerprint.
*
EMAIL: The normalized email address. * EMAIL: The normalized email address.
*
USER_ID: The unmodified user id from which EMAIL was extracted. * USER_ID: The unmodified user id from which EMAIL was extracted.
*
TIME: The time this binding was first observed. * TIME: The time this binding was first observed.
*
POLICY: The trust policy (TOFU_POLICY_BAD, etc. as an integer). * POLICY: The trust policy (TOFU_POLICY_BAD, etc. as an integer).
*
CONFLICT is either NULL or a fingerprint. Assume that we have * CONFLICT is either NULL or a fingerprint. Assume that we have
a binding <0xdeadbeef, foo@example.com> and then we observe * a binding <0xdeadbeef, foo@example.com> and then we observe
<0xbaddecaf, foo@example.com>. There two bindings conflict * <0xbaddecaf, foo@example.com>. There two bindings conflict
(they have the same email address). When we observe the * (they have the same email address). When we observe the
latter binding, we warn the user about the conflict and ask * latter binding, we warn the user about the conflict and ask
for a policy decision about the new binding. We also change * for a policy decision about the new binding. We also change
the old binding's policy to ask if it was auto. So that we * the old binding's policy to ask if it was auto. So that we
know why this occurred, we also set conflict to 0xbaddecaf. * know why this occurred, we also set conflict to 0xbaddecaf.
*/ */
if (type == DB_EMAIL || type == DB_COMBINED) if (type == DB_EMAIL || type == DB_COMBINED)
rc = sqlite3_exec_printf rc = sqlite3_exec_printf
@ -603,8 +608,8 @@ initdb (sqlite3 *db, enum db_type type)
" on bindings (fingerprint);\n"); " on bindings (fingerprint);\n");
if (rc) if (rc)
{ {
log_error (_("error initializing TOFU database (%s): %s\n"), log_error (_("error initializing TOFU database: %s\n"), err);
"bindings", err); print_further_info ("create bindings");
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -633,8 +638,8 @@ initdb (sqlite3 *db, enum db_type type)
NULL, NULL, &err); NULL, NULL, &err);
if (rc) if (rc)
{ {
log_error (_("error initializing TOFU database (%s): %s\n"), log_error (_("error initializing TOFU database: %s\n"), err);
"signatures", err); print_further_info ("create signatures");
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -646,7 +651,7 @@ initdb (sqlite3 *db, enum db_type type)
rc = sqlite3_exec (db, "rollback;", NULL, NULL, &err); rc = sqlite3_exec (db, "rollback;", NULL, NULL, &err);
if (rc) if (rc)
{ {
log_error (_("error aborting transaction on TOFU DB: %s\n"), log_error (_("error rolling back transaction on TOFU database: %s\n"),
err); err);
sqlite3_free (err); sqlite3_free (err);
} }
@ -657,7 +662,7 @@ initdb (sqlite3 *db, enum db_type type)
rc = sqlite3_exec (db, "end transaction;", NULL, NULL, &err); rc = sqlite3_exec (db, "end transaction;", NULL, NULL, &err);
if (rc) if (rc)
{ {
log_error (_("error committing transaction on TOFU DB: %s\n"), log_error (_("error committing transaction on TOFU database: %s\n"),
err); err);
sqlite3_free (err); sqlite3_free (err);
return 1; return 1;
@ -692,7 +697,7 @@ opendb (char *filename, enum db_type type)
rc = sqlite3_open (filename, &db); rc = sqlite3_open (filename, &db);
if (rc) if (rc)
{ {
log_error (_("can't open TOFU DB ('%s'): %s\n"), log_error (_("error opening TOFU database '%s': %s\n"),
filename, sqlite3_errmsg (db)); filename, sqlite3_errmsg (db));
/* Even if an error occurs, DB is guaranteed to be valid. */ /* Even if an error occurs, DB is guaranteed to be valid. */
sqlite3_close (db); sqlite3_close (db);
@ -755,6 +760,7 @@ getdb (struct dbs *dbs, const char *name, enum db_type type)
char *filename = NULL; char *filename = NULL;
int need_link = 1; int need_link = 1;
sqlite3 *sqlitedb = NULL; sqlite3 *sqlitedb = NULL;
gpg_error_t rc;
assert (dbs); assert (dbs);
assert (name); assert (name);
@ -826,10 +832,14 @@ getdb (struct dbs *dbs, const char *name, enum db_type type)
char *name_db; char *name_db;
/* Make the directory. */ /* Make the directory. */
if (gnupg_mkdir_p (opt.homedir, "tofu.d", type_str, prefix, NULL) != 0) rc = gnupg_mkdir_p (opt.homedir, "tofu.d", type_str, prefix, NULL);
if (rc)
{ {
log_error (_("unable to create directory %s/%s/%s/%s"), name_db = xstrconcat (opt.homedir, "tofu.d",
opt.homedir, "tofu.d", type_str, prefix); type_str, prefix, NULL);
log_error (_("can't create directory '%s': %s\n"),
name_db, gpg_strerror (rc));
xfree (name_db);
goto out; goto out;
} }
@ -906,6 +916,8 @@ closedb (struct db *db)
/* Create a new DB meta-handle. Returns NULL on error. */ /* Create a new DB meta-handle. Returns NULL on error. */
/* FIXME: Change to return an error code for better reporting by the
caller. */
static struct dbs * static struct dbs *
opendbs (void) opendbs (void)
{ {
@ -947,26 +959,27 @@ opendbs (void)
if (have_tofu_db && have_tofu_d) if (have_tofu_db && have_tofu_d)
{ {
log_info (_("Warning: Home directory contains both tofu.db" log_info (_("Warning: Home directory contains both tofu.db"
" and tofu.d. Using split format for TOFU DB.\n")); " and tofu.d.\n"));
log_info (_("Using split format for TOFU database\n"));
opt.tofu_db_format = TOFU_DB_SPLIT; opt.tofu_db_format = TOFU_DB_SPLIT;
} }
else if (have_tofu_db) else if (have_tofu_db)
{ {
opt.tofu_db_format = TOFU_DB_FLAT; opt.tofu_db_format = TOFU_DB_FLAT;
if (DBG_TRUST) if (DBG_TRUST)
log_debug ("Using flat format for TOFU DB.\n"); log_debug ("Using flat format for TOFU database.\n");
} }
else if (have_tofu_d) else if (have_tofu_d)
{ {
opt.tofu_db_format = TOFU_DB_SPLIT; opt.tofu_db_format = TOFU_DB_SPLIT;
if (DBG_TRUST) if (DBG_TRUST)
log_debug ("Using split format for TOFU DB.\n"); log_debug ("Using split format for TOFU database.\n");
} }
else else
{ {
opt.tofu_db_format = TOFU_DB_FLAT; opt.tofu_db_format = TOFU_DB_FLAT;
if (DBG_TRUST) if (DBG_TRUST)
log_debug ("Using flat format for TOFU DB.\n"); log_debug ("Using flat format for TOFU database.\n");
} }
} }
@ -1075,7 +1088,7 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
{ {
char *fingerprint_pp = format_hexfingerprint (fingerprint, NULL, 0); char *fingerprint_pp = format_hexfingerprint (fingerprint, NULL, 0);
struct db *db_email = NULL, *db_key = NULL; struct db *db_email = NULL, *db_key = NULL;
int rc; gpg_error_t rc;
char *err = NULL; char *err = NULL;
/* policy_old needs to be a long and not an enum tofu_policy, /* policy_old needs to be a long and not an enum tofu_policy,
because we pass it by reference to get_single_long_cb2, which because we pass it by reference to get_single_long_cb2, which
@ -1091,7 +1104,10 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
db_email = getdb (dbs, email, DB_EMAIL); db_email = getdb (dbs, email, DB_EMAIL);
if (! db_email) if (! db_email)
return gpg_error (GPG_ERR_GENERAL); {
rc = gpg_error (GPG_ERR_GENERAL);
goto leave;
}
if (opt.tofu_db_format == TOFU_DB_SPLIT) if (opt.tofu_db_format == TOFU_DB_SPLIT)
/* In the split format, we need to update two DBs. To keep them /* In the split format, we need to update two DBs. To keep them
@ -1102,11 +1118,14 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
{ {
db_key = getdb (dbs, fingerprint, DB_KEY); db_key = getdb (dbs, fingerprint, DB_KEY);
if (! db_key) if (! db_key)
return gpg_error (GPG_ERR_GENERAL); {
rc = gpg_error (GPG_ERR_GENERAL);
goto leave;
}
rc = begin_transaction (db_email, 0); rc = begin_transaction (db_email, 0);
if (rc) if (rc)
return gpg_error (GPG_ERR_GENERAL); goto leave;
rc = begin_transaction (db_key, 0); rc = begin_transaction (db_key, 0);
if (rc) if (rc)
@ -1116,7 +1135,7 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
{ {
rc = begin_transaction (db_email, 1); rc = begin_transaction (db_email, 1);
if (rc) if (rc)
return gpg_error (GPG_ERR_GENERAL); goto leave;
} }
@ -1174,10 +1193,9 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
SQLITE_ARG_END); SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error (_("error updating TOFU binding database" log_error (_("error updating TOFU database: %s\n"), err);
" (inserting <%s, %s> = %s): %s\n"), print_further_info (" insert bindings <%s, %s> = %s",
fingerprint_pp, email, tofu_policy_str (policy), fingerprint_pp, email, tofu_policy_str (policy));
err);
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -1202,9 +1220,9 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
SQLITE_ARG_STRING, user_id, SQLITE_ARG_END); SQLITE_ARG_STRING, user_id, SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error (_("error updating TOFU binding database" log_error (_("error updating TOFU database: %s\n"), err);
" (inserting <%s, %s>): %s\n"), print_further_info ("insert bindings <%s, %s>",
fingerprint_pp, email, err); fingerprint_pp, email);
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -1216,18 +1234,14 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
if (opt.tofu_db_format == TOFU_DB_SPLIT) if (opt.tofu_db_format == TOFU_DB_SPLIT)
/* We only need a transaction for the split format. */ /* We only need a transaction for the split format. */
{ {
int rc2; gpg_error_t rc2;
if (rc) if (rc)
rc2 = rollback_transaction (db_key); rc2 = rollback_transaction (db_key);
else else
rc2 = end_transaction (db_key, 0); rc2 = end_transaction (db_key, 0);
if (rc2) if (rc2)
{
log_error (_("error ending transaction on TOFU database: %s\n"),
err);
sqlite3_free (err); sqlite3_free (err);
}
out_revert_one: out_revert_one:
if (rc) if (rc)
@ -1235,18 +1249,13 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
else else
rc2 = end_transaction (db_email, 0); rc2 = end_transaction (db_email, 0);
if (rc2) if (rc2)
{
log_error (_("error ending transaction on TOFU database: %s\n"),
err);
sqlite3_free (err); sqlite3_free (err);
} }
}
leave:
xfree (fingerprint_pp); xfree (fingerprint_pp);
if (rc) return rc;
return gpg_error (GPG_ERR_GENERAL);
return 0;
} }
@ -1461,9 +1470,8 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
SQLITE_ARG_END); SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error (_("error reading from TOFU database" log_error (_("error reading TOFU database: %s\n"), err);
" (checking for existing bad bindings): %s\n"), print_further_info ("checking for existing bad bindings");
err);
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -1477,9 +1485,10 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
else if (strlist_length (strlist) != 2) else if (strlist_length (strlist) != 2)
/* The result has the wrong form. */ /* The result has the wrong form. */
{ {
log_error (_("error reading from TOFU database" log_error (_("error reading TOFU database: %s\n"),
" (checking for existing bad bindings):" gpg_strerror (GPG_ERR_BAD_DATA));
" expected 2 results, got %d\n"), print_further_info ("checking for existing bad bindings:"
" expected 2 results, got %d\n",
strlist_length (strlist)); strlist_length (strlist));
goto out; goto out;
} }
@ -1490,8 +1499,9 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
policy = strtol (strlist->d, &tail, 0); policy = strtol (strlist->d, &tail, 0);
if (errno || *tail != '\0') if (errno || *tail != '\0')
{ {
log_error (_("error reading from TOFU database: bad value for policy: %s\n"), log_error (_("error reading TOFU database: %s\n"),
strlist->d); gpg_strerror (GPG_ERR_BAD_DATA));
print_further_info ("bad value for policy: %s", strlist->d);
goto out; goto out;
} }
@ -1501,8 +1511,9 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
|| policy == TOFU_POLICY_BAD || policy == TOFU_POLICY_BAD
|| policy == TOFU_POLICY_ASK)) || policy == TOFU_POLICY_ASK))
{ {
log_error (_("TOFU DB is corrupted. Invalid value for policy (%d).\n"), log_error (_("error reading TOFU database: %s\n"),
policy); gpg_strerror (GPG_ERR_DB_CORRUPTED));
print_further_info ("invalid value for policy (%d)", policy);
policy = _tofu_GET_POLICY_ERROR; policy = _tofu_GET_POLICY_ERROR;
goto out; goto out;
} }
@ -1711,9 +1722,8 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email,
SQLITE_ARG_STRING, email, SQLITE_ARG_END); SQLITE_ARG_STRING, email, SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error (_("error reading from TOFU database" log_error (_("error reading TOFU database: %s\n"), err);
" (listing fingerprints): %s\n"), print_further_info ("listing fingerprints");
err);
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -1863,7 +1873,7 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email,
SQLITE_ARG_STRING, fingerprint, SQLITE_ARG_END); SQLITE_ARG_STRING, fingerprint, SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error (_("error gathering other user ids: %s.\n"), err); log_error (_("error gathering other user IDs: %s\n"), err);
sqlite3_free (err); sqlite3_free (err);
err = NULL; err = NULL;
} }
@ -2327,9 +2337,8 @@ show_statistics (struct dbs *dbs, const char *fingerprint,
sig_exclude ? "'" : ""); sig_exclude ? "'" : "");
if (rc) if (rc)
{ {
log_error (_("error reading from TOFU database" log_error (_("error reading TOFU database: %s\n"), err);
" (getting statistics): %s\n"), print_further_info ("getting statistics");
err);
sqlite3_free (err); sqlite3_free (err);
goto out; goto out;
} }
@ -2556,7 +2565,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
dbs = opendbs (); dbs = opendbs ();
if (! dbs) if (! dbs)
{ {
log_error (_("error opening TOFU DB.\n")); log_error (_("error opening TOFU database: %s\n"),
gpg_strerror (GPG_ERR_GENERAL));
goto die; goto die;
} }
@ -2589,7 +2599,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
db = getdb (dbs, email, DB_EMAIL); db = getdb (dbs, email, DB_EMAIL);
if (! db) if (! db)
{ {
log_error (_("error opening TOFU DB.\n")); log_error (_("error opening TOFU database: %s\n"),
gpg_strerror (GPG_ERR_GENERAL));
goto die; goto die;
} }
@ -2615,9 +2626,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
SQLITE_ARG_END); SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error (_("error reading from signatures database" log_error (_("error reading TOFU database: %s\n"), err);
" (checking existence): %s\n"), print_further_info ("checking existence");
err);
sqlite3_free (err); sqlite3_free (err);
} }
else if (c > 1) else if (c > 1)
@ -2662,9 +2672,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
SQLITE_ARG_END); SQLITE_ARG_END);
if (rc) if (rc)
{ {
log_error (_("error updating TOFU DB" log_error (_("error updating TOFU database: %s\n"), err);
" (inserting into signatures table): %s\n"), print_further_info ("insert signatures");
err);
sqlite3_free (err); sqlite3_free (err);
} }
} }
@ -2677,7 +2686,6 @@ tofu_register (PKT_public_key *pk, const char *user_id,
rc = end_transaction (db, 0); rc = end_transaction (db, 0);
if (rc) if (rc)
{ {
log_error (_("error ending transaction on TOFU database: %s\n"), err);
sqlite3_free (err); sqlite3_free (err);
goto die; goto die;
} }
@ -2771,7 +2779,8 @@ tofu_get_validity (PKT_public_key *pk, const char *user_id,
dbs = opendbs (); dbs = opendbs ();
if (! dbs) if (! dbs)
{ {
log_error (_("error opening TOFU DB.\n")); log_error (_("error opening TOFU database: %s\n"),
gpg_strerror (GPG_ERR_GENERAL));
goto die; goto die;
} }
@ -2823,7 +2832,8 @@ tofu_set_policy (kbnode_t kb, enum tofu_policy policy)
dbs = opendbs (); dbs = opendbs ();
if (! dbs) if (! dbs)
{ {
log_error (_("error opening TOFU DB.\n")); log_error (_("error opening TOFU database: %s\n"),
gpg_strerror (GPG_ERR_GENERAL));
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }
@ -2902,7 +2912,8 @@ tofu_get_policy (PKT_public_key *pk, PKT_user_id *user_id,
dbs = opendbs (); dbs = opendbs ();
if (! dbs) if (! dbs)
{ {
log_error (_("error opening TOFU DB.\n")); log_error (_("error opening TOFU database: %s\n"),
gpg_strerror (GPG_ERR_GENERAL));
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }