diff options
author | Werner Koch <[email protected]> | 2015-06-04 15:39:55 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2015-06-04 15:39:55 +0000 |
commit | f170240ef735edc481f60e51527cbb5ee1acfd55 (patch) | |
tree | 2e6f3a74f2ea779a3c5afb72a0dd1c546cfd91bf /g10/tdbio.c | |
parent | gpg: Fix output in case of a corrupted trustdb. (diff) | |
download | gnupg-f170240ef735edc481f60e51527cbb5ee1acfd55.tar.gz gnupg-f170240ef735edc481f60e51527cbb5ee1acfd55.zip |
gpg: Cleanup error code path in case of a bad trustdb.
* g10/tdbio.c (tdbio_read_record): Fix returning of the error.
--
Actually the returned error will anyway be GPG_ERR_TRUSTDB but the old
code was not correct.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'g10/tdbio.c')
-rw-r--r-- | g10/tdbio.c | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/g10/tdbio.c b/g10/tdbio.c index b6b5938e2..4c93c96c3 100644 --- a/g10/tdbio.c +++ b/g10/tdbio.c @@ -1487,34 +1487,36 @@ tdbio_read_record (ulong recnum, TRUSTREC *rec, int expected) { log_error (_("%s: not a trustdb file\n"), db_name ); err = gpg_error (GPG_ERR_TRUSTDB); - /* FIXME ^ */ } - p += 2; /* skip "gpg" */ - rec->r.ver.version = *p++; - rec->r.ver.marginals = *p++; - rec->r.ver.completes = *p++; - rec->r.ver.cert_depth = *p++; - rec->r.ver.trust_model = *p++; - rec->r.ver.min_cert_level = *p++; - p += 2; - rec->r.ver.created = buf32_to_ulong(p); p += 4; - rec->r.ver.nextcheck = buf32_to_ulong(p); p += 4; - p += 4; - p += 4; - rec->r.ver.firstfree =buf32_to_ulong(p); p += 4; - p += 4; - rec->r.ver.trusthashtbl =buf32_to_ulong(p); p += 4; - if (recnum) - { - log_error( _("%s: version record with recnum %lu\n"), db_name, - (ulong)recnum ); - err = gpg_error (GPG_ERR_TRUSTDB); - } - else if (rec->r.ver.version != 3) + else { - log_error( _("%s: invalid file version %d\n"), db_name, - rec->r.ver.version ); - err = gpg_error (GPG_ERR_TRUSTDB); + p += 2; /* skip "gpg" */ + rec->r.ver.version = *p++; + rec->r.ver.marginals = *p++; + rec->r.ver.completes = *p++; + rec->r.ver.cert_depth = *p++; + rec->r.ver.trust_model = *p++; + rec->r.ver.min_cert_level = *p++; + p += 2; + rec->r.ver.created = buf32_to_ulong(p); p += 4; + rec->r.ver.nextcheck = buf32_to_ulong(p); p += 4; + p += 4; + p += 4; + rec->r.ver.firstfree =buf32_to_ulong(p); p += 4; + p += 4; + rec->r.ver.trusthashtbl =buf32_to_ulong(p); p += 4; + if (recnum) + { + log_error( _("%s: version record with recnum %lu\n"), db_name, + (ulong)recnum ); + err = gpg_error (GPG_ERR_TRUSTDB); + } + else if (rec->r.ver.version != 3) + { + log_error( _("%s: invalid file version %d\n"), db_name, + rec->r.ver.version ); + err = gpg_error (GPG_ERR_TRUSTDB); + } } break; |