diff options
| author | Ben Woods <woodsb02@FreeBSD.org> | 2018-07-22 13:40:52 +0000 |
|---|---|---|
| committer | Ben Woods <woodsb02@FreeBSD.org> | 2018-07-22 13:40:52 +0000 |
| commit | 4b8e4d53fa6f9e262c5bbaae48ecfda99a7d652e (patch) | |
| tree | 56ad4a888418522411c9c742330fbe81c56c99fa /lib/geom | |
| parent | cca6b506e010310b11ea0e3f58c5e425c7eb7076 (diff) | |
Notes
Diffstat (limited to 'lib/geom')
| -rw-r--r-- | lib/geom/eli/geom_eli.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/lib/geom/eli/geom_eli.c b/lib/geom/eli/geom_eli.c index 15e584049da6..db87c419523a 100644 --- a/lib/geom/eli/geom_eli.c +++ b/lib/geom/eli/geom_eli.c @@ -941,18 +941,26 @@ eli_attach(struct gctl_req *req) prov = gctl_get_ascii(req, "arg%d", i); gctl_ro_param(r, "arg0", -1, prov); - if (eli_metadata_read(r, prov, &md) == -1) - return; + if (eli_metadata_read(r, prov, &md) == -1) { + /* + * Error reading metadata - details added to geom + * request by eli_metadata_read(). + */ + goto out; + } mediasize = g_get_mediasize(prov); if (md.md_provsize != (uint64_t)mediasize) { gctl_error(r, "Provider size mismatch."); - return; + goto out; } if (eli_genkey(r, &md, key, false) == NULL) { - explicit_bzero(key, sizeof(key)); - return; + /* + * Error generating key - details added to geom request + * by eli_genkey(). + */ + goto out; } gctl_ro_param(r, "key", sizeof(key), key); @@ -962,19 +970,20 @@ eli_attach(struct gctl_req *req) printf("Attached to %s.\n", prov); } +out: /* Print error for this request, and set parent request error message */ - if (r->error != NULL && r->error[0] != '\0') { - warnx("%s", r->error); - gctl_error(req, "At least one provider failed to attach."); - } + if (r->error != NULL && r->error[0] != '\0') { + warnx("%s", r->error); + gctl_error(req, "There was an error with at least one provider."); + } gctl_free(r); - /* Clear the derived key */ + /* Clear sensitive data from memory. */ explicit_bzero(key, sizeof(key)); } - /* Clear the cached passphrase */ + /* Clear sensitive data from memory. */ explicit_bzero(cached_passphrase, sizeof(cached_passphrase)); } |
