lib: Kill GPG agent when cleaning up tmp homedirs

When a temporary directory is used for GPG operations, it's pretty clear
that the running agent will be useless after the directory is deleted.
Call the new `ot_gpgme_kill_agent ()` helper to kill gpg-agent rather
than leaving them it hanging around forever.

As it turns out, gnupg does have code to make gpg-agent automatically
exit when the homedir is removed (https://dev.gnupg.org/T2756), but
that's only available on gnupg 2.2 or newer. Possibly this code can be
dropped later when that's more widely deployed or users/distros have
been advised to backport the necessary changes.

Closes: #1799
Approved by: cgwalters
This commit is contained in:
Dan Nicholson 2019-01-10 14:00:42 -06:00 committed by Atomic Bot
parent 4670837f7c
commit b6979e7572
2 changed files with 7 additions and 2 deletions

View File

@ -87,6 +87,7 @@ verify_result_finalized_cb (gpointer data,
* finalize() method, but I didn't want this keyring hack * finalize() method, but I didn't want this keyring hack
* bleeding into multiple classes. */ * bleeding into multiple classes. */
ot_gpgme_kill_agent (tmp_dir);
(void) glnx_shutil_rm_rf_at (AT_FDCWD, tmp_dir, NULL, NULL); (void) glnx_shutil_rm_rf_at (AT_FDCWD, tmp_dir, NULL, NULL);
} }

View File

@ -2300,11 +2300,15 @@ out:
if (remote != NULL) if (remote != NULL)
ostree_remote_unref (remote); ostree_remote_unref (remote);
if (source_tmp_dir != NULL) if (source_tmp_dir != NULL) {
ot_gpgme_kill_agent (source_tmp_dir);
(void) glnx_shutil_rm_rf_at (AT_FDCWD, source_tmp_dir, NULL, NULL); (void) glnx_shutil_rm_rf_at (AT_FDCWD, source_tmp_dir, NULL, NULL);
}
if (target_tmp_dir != NULL) if (target_tmp_dir != NULL) {
ot_gpgme_kill_agent (target_tmp_dir);
(void) glnx_shutil_rm_rf_at (AT_FDCWD, target_tmp_dir, NULL, NULL); (void) glnx_shutil_rm_rf_at (AT_FDCWD, target_tmp_dir, NULL, NULL);
}
g_prefix_error (error, "GPG: "); g_prefix_error (error, "GPG: ");