diff options
-rw-r--r-- | crypto/params_from_text.c | 5 | ||||
-rw-r--r-- | doc/man3/OSSL_PARAM_allocate_from_text.pod | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/crypto/params_from_text.c b/crypto/params_from_text.c index d458d31b2e..24d96108d0 100644 --- a/crypto/params_from_text.c +++ b/crypto/params_from_text.c @@ -9,6 +9,7 @@ */ #include <string.h> +#include <openssl/ebcdic.h> #include <openssl/err.h> #include <openssl/params.h> @@ -139,7 +140,11 @@ static int construct_from_text(OSSL_PARAM *to, const OSSL_PARAM *paramdef, } break; case OSSL_PARAM_UTF8_STRING: +#ifdef CHARSET_EBCDIC + ebcdic2ascii(buf, value, buf_n); +#else strncpy(buf, value, buf_n); +#endif break; case OSSL_PARAM_OCTET_STRING: if (ishex) { diff --git a/doc/man3/OSSL_PARAM_allocate_from_text.pod b/doc/man3/OSSL_PARAM_allocate_from_text.pod index 011685c8c8..6522e3b135 100644 --- a/doc/man3/OSSL_PARAM_allocate_from_text.pod +++ b/doc/man3/OSSL_PARAM_allocate_from_text.pod @@ -73,8 +73,10 @@ considers that an error. If I<key> started with "hex", OSSL_PARAM_allocate_from_text() considers that an error. -Otherwise, I<value> is considered a C string and is copied with no -further checks to the I<< to->data >> storage. +Otherwise, I<value> is considered a C string and is copied to the +I<< to->data >> storage. +On systems where the native character encoding is EBCDIC, the bytes in +I<< to->data >> are converted to ASCII. =item B<OSSL_PARAM_OCTET_STRING> |