From: minyong.ha Date: Mon, 22 May 2023 05:44:13 +0000 (+0900) Subject: Fix a bug where the result of rehash is unstable X-Git-Tag: openssl-3.2.0-alpha1~750 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=31c94b5e1159b5435b2354e6525355ec33683ecc;p=thirdparty%2Fopenssl.git Fix a bug where the result of rehash is unstable The root cause is that the file entries targeted for rehash are not actually sorted. Sort was skipped because the compare function was null. So a compare function has been implemented to allow file entries to be sorted. Reviewed-by: Richard Levitte Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/21013) --- diff --git a/apps/rehash.c b/apps/rehash.c index 67dfe49a707..5b979288b0e 100644 --- a/apps/rehash.c +++ b/apps/rehash.c @@ -340,6 +340,11 @@ static int ends_with_dirsep(const char *path) return *path == '/'; } +static int sk_strcmp(const char * const *a, const char * const *b) +{ + return strcmp(*a, *b); +} + /* * Process a directory; return number of errors found. */ @@ -369,7 +374,7 @@ static int do_dir(const char *dirname, enum Hash h) if (verbose) BIO_printf(bio_out, "Doing %s\n", dirname); - if ((files = sk_OPENSSL_STRING_new_null()) == NULL) { + if ((files = sk_OPENSSL_STRING_new(sk_strcmp)) == NULL) { BIO_printf(bio_err, "Skipping %s, out of memory\n", dirname); errs = 1; goto err;