mirror of
https://github.com/openssl/openssl.git
synced 2025-01-12 13:36:28 +08:00
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 <david.von.oheimb@siemens.com> (Merged from https://github.com/openssl/openssl/pull/16367)
This commit is contained in:
parent
43044ede54
commit
f4d8b29a26
29
apps/cms.c
29
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;
|
||||
|
Loading…
Reference in New Issue
Block a user