From: Dmitry Belyavskiy Date: Fri, 20 Aug 2021 14:45:15 +0000 (+0200) Subject: Get rid of warn_binary X-Git-Tag: openssl-3.0.0~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f4d8b29a26cc3ee0ef37e2073c192bdbb2b796c4;p=thirdparty%2Fopenssl.git Get rid of warn_binary Current implementation of warn_binary introduces a regression when the content is passed in /dev/stdin as an explicit file name and reads the file to be processed twice otherwise. I suggest to reimplement this functionality after 3.0 if necessary. Fixes #16359 Reviewed-by: David von Oheimb (Merged from https://github.com/openssl/openssl/pull/16367) --- diff --git a/apps/cms.c b/apps/cms.c index c22027e3b19..b30273f1710 100644 --- a/apps/cms.c +++ b/apps/cms.c @@ -272,31 +272,6 @@ static CMS_ContentInfo *load_content_info(int informat, BIO *in, int flags, return NULL; } -static void warn_binary(const char *file) -{ - BIO *bio; - unsigned char linebuf[1024], *cur, *end; - int len; - - if (file == NULL) - return; /* cannot give a warning for stdin input */ - if ((bio = bio_open_default(file, 'r', FORMAT_BINARY)) == NULL) - return; /* cannot give a proper warning since there is an error */ - while ((len = BIO_read(bio, linebuf, sizeof(linebuf))) > 0) { - end = linebuf + len; - for (cur = linebuf; cur < end; cur++) { - if (*cur == '\0' || *cur >= 0x80) { - BIO_printf(bio_err, "Warning: input file '%s' contains %s" - " character; better use -binary option\n", - file, *cur == '\0' ? "NUL" : "8-bit"); - goto end; - } - } - } - end: - BIO_free(bio); -} - int cms_main(int argc, char **argv) { CONF *conf = NULL; @@ -911,8 +886,6 @@ int cms_main(int argc, char **argv) goto end; } - if ((flags & CMS_BINARY) == 0) - warn_binary(infile); in = bio_open_default(infile, 'r', binary_files ? FORMAT_BINARY : informat); if (in == NULL) @@ -924,8 +897,6 @@ int cms_main(int argc, char **argv) goto end; if (contfile != NULL) { BIO_free(indata); - if ((flags & CMS_BINARY) == 0) - warn_binary(contfile); if ((indata = BIO_new_file(contfile, "rb")) == NULL) { BIO_printf(bio_err, "Can't read content file %s\n", contfile); goto end;