/*
- * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
OPT_V = 100, OPT_VV, OPT_VVV, OPT_VVVV
} OPTION_CHOICE;
-OPTIONS engine_options[] = {
+const OPTIONS engine_options[] = {
{OPT_HELP_STR, 1, '-', "Usage: %s [options] engine...\n"},
{OPT_HELP_STR, 1, '-',
" engine... Engines to load\n"},
{NULL}
};
-static void identity(char *ptr)
-{
-}
-
static int append_buf(char **buf, int *size, const char *s)
{
if (*buf == NULL) {
}
cmds = sk_OPENSSL_STRING_new_null();
- if (!cmds)
+ if (cmds == NULL)
goto err;
do {
BIO_printf(out, "\n");
ret = 1;
err:
- sk_OPENSSL_STRING_pop_free(cmds, identity);
+ sk_OPENSSL_STRING_free(cmds);
OPENSSL_free(name);
OPENSSL_free(desc);
return ret;
if (!ENGINE_ctrl_cmd_string(e, buf, arg, 0))
res = 0;
}
- if (res)
+ if (res) {
BIO_printf(out, "[Success]: %s\n", cmd);
- else {
+ } else {
BIO_printf(out, "[Failure]: %s\n", cmd);
ERR_print_errors(out);
}
int ret = 1, i;
int verbose = 0, list_cap = 0, test_avail = 0, test_avail_noise = 0;
ENGINE *e;
- STACK_OF(OPENSSL_STRING) *engines = sk_OPENSSL_STRING_new_null();
+ STACK_OF(OPENSSL_CSTRING) *engines = sk_OPENSSL_CSTRING_new_null();
STACK_OF(OPENSSL_STRING) *pre_cmds = sk_OPENSSL_STRING_new_null();
STACK_OF(OPENSSL_STRING) *post_cmds = sk_OPENSSL_STRING_new_null();
BIO *out;
* names, and then setup to parse the rest of the line as flags. */
prog = argv[0];
while ((argv1 = argv[1]) != NULL && *argv1 != '-') {
- sk_OPENSSL_STRING_push(engines, argv1);
+ sk_OPENSSL_CSTRING_push(engines, argv1);
argc--;
argv++;
}
break;
case OPT_TT:
test_avail_noise++;
+ /* fall thru */
case OPT_T:
test_avail++;
break;
BIO_printf(bio_err, "%s: Use -help for summary.\n", prog);
goto end;
}
- sk_OPENSSL_STRING_push(engines, *argv);
+ sk_OPENSSL_CSTRING_push(engines, *argv);
}
- if (sk_OPENSSL_STRING_num(engines) == 0) {
+ if (sk_OPENSSL_CSTRING_num(engines) == 0) {
for (e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e)) {
- sk_OPENSSL_STRING_push(engines, (char *)ENGINE_get_id(e));
+ sk_OPENSSL_CSTRING_push(engines, ENGINE_get_id(e));
}
}
- for (i = 0; i < sk_OPENSSL_STRING_num(engines); i++) {
- const char *id = sk_OPENSSL_STRING_value(engines, i);
+ ret = 0;
+ for (i = 0; i < sk_OPENSSL_CSTRING_num(engines); i++) {
+ const char *id = sk_OPENSSL_CSTRING_value(engines, i);
if ((e = ENGINE_by_id(id)) != NULL) {
const char *name = ENGINE_get_name(e);
/*
goto end;
fn_c = ENGINE_get_ciphers(e);
- if (!fn_c)
+ if (fn_c == NULL)
goto skip_ciphers;
n = fn_c(e, NULL, &nids, 0);
for (k = 0; k < n; ++k)
skip_ciphers:
fn_d = ENGINE_get_digests(e);
- if (!fn_d)
+ if (fn_d == NULL)
goto skip_digests;
n = fn_d(e, NULL, &nids, 0);
for (k = 0; k < n; ++k)
skip_digests:
fn_pk = ENGINE_get_pkey_meths(e);
- if (!fn_pk)
+ if (fn_pk == NULL)
goto skip_pmeths;
n = fn_pk(e, NULL, &nids, 0);
for (k = 0; k < n; ++k)
if (!append_buf(&cap_buf, &cap_size, OBJ_nid2sn(nids[k])))
goto end;
skip_pmeths:
- if (cap_buf && (*cap_buf != '\0'))
+ if (cap_buf != NULL && (*cap_buf != '\0'))
BIO_printf(out, " [%s]\n", cap_buf);
OPENSSL_free(cap_buf);
if ((verbose > 0) && !util_verbose(e, verbose, out, indent))
goto end;
ENGINE_free(e);
- } else
+ } else {
ERR_print_errors(bio_err);
+ /* because exit codes above 127 have special meaning on Unix */
+ if (++ret > 127)
+ ret = 127;
+ }
}
- ret = 0;
end:
ERR_print_errors(bio_err);
- sk_OPENSSL_STRING_pop_free(engines, identity);
- sk_OPENSSL_STRING_pop_free(pre_cmds, identity);
- sk_OPENSSL_STRING_pop_free(post_cmds, identity);
+ sk_OPENSSL_CSTRING_free(engines);
+ sk_OPENSSL_STRING_free(pre_cmds);
+ sk_OPENSSL_STRING_free(post_cmds);
BIO_free_all(out);
return (ret);
}