summaryrefslogtreecommitdiff
path: root/deps/openssl/openssl/apps/rehash.c
diff options
context:
space:
mode:
Diffstat (limited to 'deps/openssl/openssl/apps/rehash.c')
-rw-r--r--deps/openssl/openssl/apps/rehash.c57
1 files changed, 19 insertions, 38 deletions
diff --git a/deps/openssl/openssl/apps/rehash.c b/deps/openssl/openssl/apps/rehash.c
index aa3f8643a5..bb41d3129f 100644
--- a/deps/openssl/openssl/apps/rehash.c
+++ b/deps/openssl/openssl/apps/rehash.c
@@ -1,5 +1,6 @@
/*
* Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright (c) 2013-2014 Timo Teräs <timo.teras@gmail.com>
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -7,13 +8,8 @@
* https://www.openssl.org/source/license.html
*/
-/*
- * C implementation based on the original Perl and shell versions
- *
- * Copyright (c) 2013-2014 Timo Teräs <timo.teras@iki.fi>
- */
-
#include "apps.h"
+#include "progs.h"
#if defined(OPENSSL_SYS_UNIX) || defined(__APPLE__) || \
(defined(__VMS) && defined(__DECC) && __CRTL_VER >= 80300000)
@@ -255,11 +251,11 @@ static int do_file(const char *filename, const char *fullpath, enum Hash h)
goto end;
}
x = sk_X509_INFO_value(inf, 0);
- if (x->x509) {
+ if (x->x509 != NULL) {
type = TYPE_CERT;
name = X509_get_subject_name(x->x509);
X509_digest(x->x509, evpmd, digest, NULL);
- } else if (x->crl) {
+ } else if (x->crl != NULL) {
type = TYPE_CRL;
name = X509_CRL_get_issuer(x->crl);
X509_CRL_digest(x->crl, evpmd, digest, NULL);
@@ -267,7 +263,7 @@ static int do_file(const char *filename, const char *fullpath, enum Hash h)
++errs;
goto end;
}
- if (name) {
+ if (name != NULL) {
if ((h == HASH_NEW) || (h == HASH_BOTH))
errs += add_entry(type, X509_NAME_hash(name), filename, digest, 1, ~0);
if ((h == HASH_OLD) || (h == HASH_BOTH))
@@ -298,24 +294,6 @@ static int ends_with_dirsep(const char *path)
return *path == '/';
}
-static int massage_filename(char *name)
-{
-# ifdef __VMS
- char *p = strchr(name, ';');
- char *q = p;
-
- if (q != NULL) {
- for (q++; *q != '\0'; q++) {
- if (!isdigit((unsigned char)*q))
- return 1;
- }
- }
-
- *p = '\0';
-# endif
- return 1;
-}
-
/*
* Process a directory; return number of errors found.
*/
@@ -330,7 +308,7 @@ static int do_dir(const char *dirname, enum Hash h)
size_t i;
const char *pathsep;
const char *filename;
- char *buf, *copy;
+ char *buf, *copy = NULL;
STACK_OF(OPENSSL_STRING) *files = NULL;
if (app_access(dirname, W_OK) < 0) {
@@ -347,14 +325,16 @@ static int do_dir(const char *dirname, enum Hash h)
if ((files = sk_OPENSSL_STRING_new_null()) == NULL) {
BIO_printf(bio_err, "Skipping %s, out of memory\n", dirname);
- exit(1);
+ errs = 1;
+ goto err;
}
while ((filename = OPENSSL_DIR_read(&d, dirname)) != NULL) {
- if ((copy = strdup(filename)) == NULL
- || !massage_filename(copy)
+ if ((copy = OPENSSL_strdup(filename)) == NULL
|| sk_OPENSSL_STRING_push(files, copy) == 0) {
+ OPENSSL_free(copy);
BIO_puts(bio_err, "out of memory\n");
- exit(1);
+ errs = 1;
+ goto err;
}
}
OPENSSL_DIR_end(&d);
@@ -372,7 +352,6 @@ static int do_dir(const char *dirname, enum Hash h)
continue;
errs += do_file(filename, buf, h);
}
- sk_OPENSSL_STRING_pop_free(files, str_free);
for (i = 0; i < OSSL_NELEM(hash_table); i++) {
for (bp = hash_table[i]; bp; bp = nextbp) {
@@ -440,6 +419,8 @@ static int do_dir(const char *dirname, enum Hash h)
hash_table[i] = NULL;
}
+ err:
+ sk_OPENSSL_STRING_pop_free(files, str_free);
OPENSSL_free(buf);
return errs;
}
@@ -449,7 +430,7 @@ typedef enum OPTION_choice {
OPT_COMPAT, OPT_OLD, OPT_N, OPT_VERBOSE
} OPTION_CHOICE;
-OPTIONS rehash_options[] = {
+const OPTIONS rehash_options[] = {
{OPT_HELP_STR, 1, '-', "Usage: %s [options] [cert-directory...]\n"},
{OPT_HELP_STR, 1, '-', "Valid options are:\n"},
{"help", OPT_HELP, '-', "Display this summary"},
@@ -500,8 +481,8 @@ int rehash_main(int argc, char **argv)
evpmd = EVP_sha1();
evpmdsize = EVP_MD_size(evpmd);
- if (*argv) {
- while (*argv)
+ if (*argv != NULL) {
+ while (*argv != NULL)
errs += do_dir(*argv++, h);
} else if ((env = getenv(X509_get_default_cert_dir_env())) != NULL) {
char lsc[2] = { LIST_SEPARATOR_CHAR, '\0' };
@@ -518,14 +499,14 @@ int rehash_main(int argc, char **argv)
}
#else
-OPTIONS rehash_options[] = {
+const OPTIONS rehash_options[] = {
{NULL}
};
int rehash_main(int argc, char **argv)
{
BIO_printf(bio_err, "Not available; use c_rehash script\n");
- return (1);
+ return 1;
}
#endif /* defined(OPENSSL_SYS_UNIX) || defined(__APPLE__) */