diff options
| author | Theo Buehler <tb@openbsd.org> | 2024-03-25 17:36:13 +1100 |
|---|---|---|
| committer | Brent Cook <busterb@gmail.com> | 2024-03-25 02:57:11 -0500 |
| commit | 3822a71b2eecc16ecc64696f0b3b320845e65b58 (patch) | |
| tree | 5643e16e5ac8b6f5eb527adf9558b50b9e3792c4 | |
| parent | cb3775c392029f9f8c28c97bd4e6c764e762e993 (diff) | |
| download | portable-3822a71b2eecc16ecc64696f0b3b320845e65b58.tar.gz portable-3822a71b2eecc16ecc64696f0b3b320845e65b58.tar.bz2 portable-3822a71b2eecc16ecc64696f0b3b320845e65b58.zip | |
Backport jca's byname fix
| -rw-r--r-- | patches/byname.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/patches/byname.patch b/patches/byname.patch new file mode 100644 index 0000000..ee1cd81 --- /dev/null +++ b/patches/byname.patch | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | Backport fix for behavior change for EVP_get_{cipher,digest}byname() | ||
| 2 | https://github.com/openbsd/src/commit/ace1aaedae16f4098783ed4a8c5602142650126c | ||
| 3 | |||
| 4 | --- crypto/evp/evp_names.c.orig Mon Mar 25 17:27:41 2024 | ||
| 5 | +++ crypto/evp/evp_names.c Mon Mar 25 17:30:27 2024 | ||
| 6 | @@ -1852,6 +1852,9 @@ EVP_get_cipherbyname(const char *name) | ||
| 7 | if (!OPENSSL_init_crypto(0, NULL)) | ||
| 8 | return NULL; | ||
| 9 | |||
| 10 | + if (name == NULL) | ||
| 11 | + return NULL; | ||
| 12 | + | ||
| 13 | if ((cipher = bsearch(name, cipher_names, N_CIPHER_NAMES, | ||
| 14 | sizeof(*cipher), cipher_cmp)) == NULL) | ||
| 15 | return NULL; | ||
| 16 | @@ -1871,6 +1874,9 @@ EVP_get_digestbyname(const char *name) | ||
| 17 | const struct digest_name *digest; | ||
| 18 | |||
| 19 | if (!OPENSSL_init_crypto(0, NULL)) | ||
| 20 | + return NULL; | ||
| 21 | + | ||
| 22 | + if (name == NULL) | ||
| 23 | return NULL; | ||
| 24 | |||
| 25 | if ((digest = bsearch(name, digest_names, N_DIGEST_NAMES, | ||
| 26 | --- tests/evp_test.c.orig Mon Mar 25 17:27:41 2024 | ||
| 27 | +++ tests/evp_test.c Mon Mar 25 17:31:32 2024 | ||
| 28 | @@ -737,6 +737,28 @@ obj_name_do_all_test(void) | ||
| 29 | return failure; | ||
| 30 | } | ||
| 31 | |||
| 32 | +static int | ||
| 33 | +evp_get_cipherbyname_test(void) | ||
| 34 | +{ | ||
| 35 | + int failure = 0; | ||
| 36 | + | ||
| 37 | + /* Should handle NULL gracefully */ | ||
| 38 | + failure |= EVP_get_cipherbyname(NULL) != NULL; | ||
| 39 | + | ||
| 40 | + return failure; | ||
| 41 | +} | ||
| 42 | + | ||
| 43 | +static int | ||
| 44 | +evp_get_digestbyname_test(void) | ||
| 45 | +{ | ||
| 46 | + int failure = 0; | ||
| 47 | + | ||
| 48 | + /* Should handle NULL gracefully */ | ||
| 49 | + failure |= EVP_get_digestbyname(NULL) != NULL; | ||
| 50 | + | ||
| 51 | + return failure; | ||
| 52 | +} | ||
| 53 | + | ||
| 54 | int | ||
| 55 | main(int argc, char **argv) | ||
| 56 | { | ||
| 57 | @@ -748,6 +770,8 @@ main(int argc, char **argv) | ||
| 58 | failed |= evp_do_all_test(); | ||
| 59 | failed |= evp_aliases_test(); | ||
| 60 | failed |= obj_name_do_all_test(); | ||
| 61 | + failed |= evp_get_cipherbyname_test(); | ||
| 62 | + failed |= evp_get_digestbyname_test(); | ||
| 63 | |||
| 64 | OPENSSL_cleanup(); | ||
| 65 | |||
