diff options
author | Todd Short <tshort@akamai.com> | 2018-05-22 16:48:04 +0200 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2018-05-29 18:08:39 +0200 |
commit | 02a7e0a9f63ec97e9671fec2bb8ce7c289fb4d66 (patch) | |
tree | edc725d392142f891ac22c4eb53fce8d8743c704 /apps/rehash.c | |
parent | Fix no-sm2 with clang (diff) | |
download | openssl-02a7e0a9f63ec97e9671fec2bb8ce7c289fb4d66.tar.xz openssl-02a7e0a9f63ec97e9671fec2bb8ce7c289fb4d66.zip |
Replace strdup() with OPENSSL_strdup()
It's freed with OPENSSL_free()
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6331)
Diffstat (limited to 'apps/rehash.c')
-rw-r--r-- | apps/rehash.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/apps/rehash.c b/apps/rehash.c index 521bf6175e..de7217cb10 100644 --- a/apps/rehash.c +++ b/apps/rehash.c @@ -308,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) { @@ -325,13 +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 + 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); @@ -349,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) { @@ -417,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; } |