diff options
author | Marcus Brinkmann <[email protected]> | 2012-01-03 21:12:37 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2012-01-25 13:07:08 +0000 |
commit | e917c07b2664bb01a5f7b5975723b90da0f396c9 (patch) | |
tree | e31e737fe07e96b596f8bbbaf16a1e122ac683ae /agent/cache.c | |
parent | Require gitlog-to-changelog to be installed. (diff) | |
download | gnupg-e917c07b2664bb01a5f7b5975723b90da0f396c9.tar.gz gnupg-e917c07b2664bb01a5f7b5975723b90da0f396c9.zip |
Port to npth.npth-3
* configure.ac: Don't check for PTH but for NPTH.
(AH_BOTTOM): Remove PTH_SYSCALL_SOFT.
(have_pth): Rename to ...
(have_npth): ... this.
(USE_GNU_NPTH): Rename to ...
(USE_GNU_PTH): ... this.
* m4/npth.m4: New file.
* agent/Makefile.am, agent/cache.c, agent/call-pinentry.c,
agent/call-scd.c, agent/findkey.c, agent/gpg-agent.c,
agent/trustlist.c, common/Makefile.am, common/estream.c,
common/exechelp-posix.c, common/exechelp-w32.c,
common/exechelp-w32ce.c, common/http.c, common/init.c,
common/sysutils.c, dirmngr/Makefile.am, dirmngr/crlfetch.c,
dirmngr/dirmngr.c, dirmngr/dirmngr_ldap.c, dirmngr/ldap-wrapper-ce.c,
dirmngr/ldap-wrapper.c, dirmngr/ldap.c, g13/Makefile.am,
g13/call-gpg.c, g13/g13.c, g13/runner.c, scd/Makefile.am,
scd/apdu.c, scd/app.c, scd/ccid-driver.c, scd/command.c,
scd/scdaemon.c, tools/Makefile.am: Port to npth.
Diffstat (limited to 'agent/cache.c')
-rw-r--r-- | agent/cache.c | 52 |
1 files changed, 33 insertions, 19 deletions
diff --git a/agent/cache.c b/agent/cache.c index 9c20469d2..9b90d93f4 100644 --- a/agent/cache.c +++ b/agent/cache.c @@ -24,7 +24,7 @@ #include <string.h> #include <time.h> #include <assert.h> -#include <pth.h> +#include <npth.h> #include "agent.h" @@ -33,7 +33,7 @@ /* A mutex used to protect the encryption. This is required because we use one context to do all encryption and decryption. */ -static pth_mutex_t encryption_lock; +static npth_mutex_t encryption_lock; /* The encryption context. This is the only place where the encryption key for all cached entries is available. It would be nice to keep this (or just the key) in some hardware device, for example @@ -71,11 +71,12 @@ static ITEM thecache; void initialize_module_cache (void) { - if (!pth_mutex_init (&encryption_lock)) - { - gpg_error_t err = gpg_error_from_syserror (); - log_fatal ("error initializing cache module: %s\n", gpg_strerror (err)); - } + int err; + + err = npth_mutex_init (&encryption_lock, NULL); + + if (err) + log_fatal ("error initializing cache module: %s\n", strerror (err)); } @@ -98,12 +99,14 @@ init_encryption (void) { gpg_error_t err; void *key; + int res; if (encryption_handle) return 0; /* Shortcut - Already initialized. */ - if (!pth_mutex_acquire (&encryption_lock, 0, NULL)) - log_fatal ("failed to acquire cache encryption mutex\n"); + res = npth_mutex_lock (&encryption_lock); + if (res) + log_fatal ("failed to acquire cache encryption mutex: %s\n", strerror (res)); err = gcry_cipher_open (&encryption_handle, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_AESWRAP, GCRY_CIPHER_SECURE); @@ -127,8 +130,9 @@ init_encryption (void) log_error ("error initializing cache encryption context: %s\n", gpg_strerror (err)); - if (!pth_mutex_release (&encryption_lock)) - log_fatal ("failed to release cache encryption mutex\n"); + res = npth_mutex_unlock (&encryption_lock); + if (res) + log_fatal ("failed to release cache encryption mutex: %s\n", strerror (res)); return err? gpg_error (GPG_ERR_NOT_INITIALIZED) : 0; } @@ -148,6 +152,7 @@ new_data (const char *string, struct secret_data_s **r_data) struct secret_data_s *d, *d_enc; size_t length; int total; + int res; *r_data = NULL; @@ -178,13 +183,17 @@ new_data (const char *string, struct secret_data_s **r_data) } d_enc->totallen = total; - if (!pth_mutex_acquire (&encryption_lock, 0, NULL)) - log_fatal ("failed to acquire cache encryption mutex\n"); + res = npth_mutex_lock (&encryption_lock); + if (res) + log_fatal ("failed to acquire cache encryption mutex: %s\n", + strerror (res)); + err = gcry_cipher_encrypt (encryption_handle, d_enc->data, total, d->data, total - 8); xfree (d); - if (!pth_mutex_release (&encryption_lock)) - log_fatal ("failed to release cache encryption mutex\n"); + res = npth_mutex_unlock (&encryption_lock); + if (res) + log_fatal ("failed to release cache encryption mutex: %s\n", strerror (res)); if (err) { xfree (d_enc); @@ -378,6 +387,7 @@ agent_get_cache (const char *key, cache_mode_t cache_mode) gpg_error_t err; ITEM r; char *value = NULL; + int res; if (cache_mode == CACHE_MODE_IGNORE) return NULL; @@ -405,13 +415,17 @@ agent_get_cache (const char *key, cache_mode_t cache_mode) err = gpg_error_from_syserror (); else { - if (!pth_mutex_acquire (&encryption_lock, 0, NULL)) - log_fatal ("failed to acquire cache encryption mutex\n"); + res = npth_mutex_lock (&encryption_lock); + if (res) + log_fatal ("failed to acquire cache encryption mutex: %s\n", + strerror (res)); err = gcry_cipher_decrypt (encryption_handle, value, r->pw->totallen - 8, r->pw->data, r->pw->totallen); - if (!pth_mutex_release (&encryption_lock)) - log_fatal ("failed to release cache encryption mutex\n"); + res = npth_mutex_unlock (&encryption_lock); + if (res) + log_fatal ("failed to release cache encryption mutex: %s\n", + strerror (res)); } if (err) { |