Sprinkle setting error strings.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17409 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-05-02 11:05:29 +00:00
parent a6fdb2b939
commit 5eb2dd8d17

View File

@@ -91,18 +91,23 @@ hx509_certs_init(hx509_context context,
type = strdup("MEMORY"); type = strdup("MEMORY");
residue = name; residue = name;
} }
if (type == NULL) if (type == NULL) {
hx509_clear_error_string(context);
return ENOMEM; return ENOMEM;
}
ops = _hx509_ks_type(context, type); ops = _hx509_ks_type(context, type);
free(type); free(type);
if (ops == NULL) if (ops == NULL) {
hx509_set_error_string(context, 0, ENOENT,
"Keyset type %s is not supported", type);
return ENOENT; return ENOENT;
}
c = calloc(1, sizeof(*c)); c = calloc(1, sizeof(*c));
if (c == NULL) if (c == NULL) {
hx509_clear_error_string(context);
return ENOMEM; return ENOMEM;
}
c->ops = ops; c->ops = ops;
ret = (*ops->init)(context, c, &c->ops_data, flags, residue, lock); ret = (*ops->init)(context, c, &c->ops_data, flags, residue, lock);
@@ -132,8 +137,12 @@ hx509_certs_start_seq(hx509_context context,
{ {
int ret; int ret;
if (certs->ops->iter_start == NULL) if (certs->ops->iter_start == NULL) {
hx509_set_error_string(context, 0, ENOENT,
"Keyset type %s doesn't support iteration",
certs->ops->name);
return ENOENT; return ENOENT;
}
ret = (*certs->ops->iter_start)(context, certs, certs->ops_data, cursor); ret = (*certs->ops->iter_start)(context, certs, certs->ops_data, cursor);
if (ret) if (ret)
@@ -219,8 +228,12 @@ hx509_ci_print_names(hx509_context context, void *ctx, hx509_cert c)
int int
hx509_certs_add(hx509_context context, hx509_certs certs, hx509_cert cert) hx509_certs_add(hx509_context context, hx509_certs certs, hx509_cert cert)
{ {
if (certs->ops->add == NULL) if (certs->ops->add == NULL) {
hx509_set_error_string(context, 0, ENOENT,
"Keyset type %s doesn't support add operation",
certs->ops->name);
return ENOENT; return ENOENT;
}
return (*certs->ops->add)(context, certs, certs->ops_data, cert); return (*certs->ops->add)(context, certs, certs->ops_data, cert);
} }
@@ -261,8 +274,10 @@ hx509_certs_find(hx509_context context,
hx509_certs_end_seq(context, certs, cursor); hx509_certs_end_seq(context, certs, cursor);
if (ret) if (ret)
return ret; return ret;
if (c == NULL) if (c == NULL) {
hx509_clear_error_string(context);
return HX509_CERT_NOT_FOUND; return HX509_CERT_NOT_FOUND;
}
return 0; return 0;
} }