diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2015-01-08 04:14:13 +0100 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2015-01-08 04:14:13 +0100 |
commit | 657a26f3af1b3f817d6cde2d091273d332571247 (patch) | |
tree | 417cc85c3d817a2b9dad945bdc452bc19d323732 /dirmngr/ks-engine-hkp.c | |
parent | scd: fix get_public_key for OpenPGPcard v1.0. (diff) | |
download | gnupg2-657a26f3af1b3f817d6cde2d091273d332571247.tar.xz gnupg2-657a26f3af1b3f817d6cde2d091273d332571247.zip |
dirmngr: Fix error code path of map_host.
* dirmngr/ks-engine-hkp.c (map_host): Fix error return.
--
In ks-engine-hkp.c on line 509 'reftbl' is freed, but it is then
used on line 511. I'm guessing this is a missing return;.
Reported-by: Joshua Rogers <honey@internot.info>
Debian-Bug-Id: 773520
Other fixes on error added too.
Diffstat (limited to '')
-rw-r--r-- | dirmngr/ks-engine-hkp.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/dirmngr/ks-engine-hkp.c b/dirmngr/ks-engine-hkp.c index 3c6a003f6..ea607cb93 100644 --- a/dirmngr/ks-engine-hkp.c +++ b/dirmngr/ks-engine-hkp.c @@ -325,6 +325,7 @@ static gpg_error_t map_host (ctrl_t ctrl, const char *name, int force_reselect, char **r_host, unsigned int *r_httpflags, char **r_poolname) { + gpg_error_t err = 0; hostinfo_t hi; int idx; @@ -361,8 +362,9 @@ map_host (ctrl_t ctrl, const char *name, int force_reselect, idx = create_new_hostinfo (name); if (idx == -1) { + err = gpg_error_from_syserror (); xfree (reftbl); - return gpg_error_from_syserror (); + return err; } hi = hosttable[idx]; @@ -504,9 +506,11 @@ map_host (ctrl_t ctrl, const char *name, int force_reselect, hi->pool = xtryrealloc (reftbl, (refidx+1) * sizeof *reftbl); if (!hi->pool) { + err = gpg_error_from_syserror (); log_error ("shrinking index table in map_host failed: %s\n", - strerror (errno)); + gpg_strerror (err)); xfree (reftbl); + return err; } qsort (reftbl, refidx, sizeof *reftbl, sort_hostpool); } @@ -570,12 +574,13 @@ map_host (ctrl_t ctrl, const char *name, int force_reselect, *r_host = xtrystrdup (hi->name); if (!*r_host) { + err = gpg_error_from_syserror (); if (r_poolname) { xfree (*r_poolname); *r_poolname = NULL; } - return gpg_error_from_syserror (); + return err; } return 0; } |