[openssl] master update
dev at ddvo.net
dev at ddvo.net
Tue Jun 15 12:24:34 UTC 2021
The branch master has been updated
via 515480be79de6907fcf0f7797aa0d3cd45e7d33c (commit)
via bb19b9d4561228599b2259f6a4912066274ae622 (commit)
via 1d8897176d06eeb88738182dbd4ad08df2f045e9 (commit)
via 3b66592490e7b43b94298f53d4e58a611644fe4e (commit)
via f42b3b70d8f2b399e6a0f217bd022f38884343eb (commit)
via 9d9691f78a67fed1b30b0cf84b2f3601897b9639 (commit)
via 4439a6483e1579359a75f061373b377995516032 (commit)
from a5d250e57e88650986e8cf2dff6c698c50eb3255 (commit)
- Log -----------------------------------------------------------------
commit 515480be79de6907fcf0f7797aa0d3cd45e7d33c
Author: Dr. David von Oheimb <David.von.Oheimb at siemens.com>
Date: Mon Jun 14 12:58:40 2021 +0200
ASN1_parse_dump(): allow NULL BIO input, to simplify applications not needing output
Reviewed-by: Tomas Mraz <tomas at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)
commit bb19b9d4561228599b2259f6a4912066274ae622
Author: Dr. David von Oheimb <David.von.Oheimb at siemens.com>
Date: Sat Jun 12 11:49:22 2021 +0200
BIO_write_ex(): Make handing of BIO b == NULL and dlen == 0 less redundant
Reviewed-by: Tomas Mraz <tomas at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)
commit 1d8897176d06eeb88738182dbd4ad08df2f045e9
Author: Dr. David von Oheimb <David.von.Oheimb at siemens.com>
Date: Sat Jun 12 13:47:38 2021 +0200
BIO: Make source file names in crypto/bio/ consistent
Reviewed-by: Tomas Mraz <tomas at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)
commit 3b66592490e7b43b94298f53d4e58a611644fe4e
Author: Dr. David von Oheimb <David.von.Oheimb at siemens.com>
Date: Sat Jun 12 13:41:19 2021 +0200
BIO_dum_indent_cb(): Fix handling of cb return value
Reviewed-by: Tomas Mraz <tomas at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)
commit f42b3b70d8f2b399e6a0f217bd022f38884343eb
Author: Dr. David von Oheimb <David.von.Oheimb at siemens.com>
Date: Sat Jun 12 11:35:09 2021 +0200
fuzz/asn1parse.c: Clean up non-portable code and catch malloc failure
Reviewed-by: Tomas Mraz <tomas at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)
commit 9d9691f78a67fed1b30b0cf84b2f3601897b9639
Author: Dr. David von Oheimb <David.von.Oheimb at siemens.com>
Date: Sat Jun 12 11:27:28 2021 +0200
BIO: prevent crash on NULL BIO for prefix_ctrl() and thus for BIO_set_prefix(), BIO_set_indent(), etc.
Reviewed-by: Tomas Mraz <tomas at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)
commit 4439a6483e1579359a75f061373b377995516032
Author: Dr. David von Oheimb <David.von.Oheimb at siemens.com>
Date: Sat Jun 12 11:25:07 2021 +0200
ASN1: rename asn1_par.c to asn1_parse.c for clarity; simplify asn1_parse2()
Reviewed-by: Tomas Mraz <tomas at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)
-----------------------------------------------------------------------
Summary of changes:
crypto/asn1/{asn1_par.c => asn1_parse.c} | 28 +++++++++++-----------------
crypto/asn1/build.info | 2 +-
crypto/bio/bf_prefix.c | 4 ++--
crypto/bio/{b_addr.c => bio_addr.c} | 0
crypto/bio/{b_dump.c => bio_dump.c} | 7 +++++--
crypto/bio/bio_lib.c | 9 ++-------
crypto/bio/{b_print.c => bio_print.c} | 0
crypto/bio/{b_sock.c => bio_sock.c} | 0
crypto/bio/{b_sock2.c => bio_sock2.c} | 0
crypto/bio/build.info | 6 +++---
crypto/bio/{core_bio.c => ossl_core_bio.c} | 0
fuzz/asn1parse.c | 4 ++--
12 files changed, 26 insertions(+), 34 deletions(-)
rename crypto/asn1/{asn1_par.c => asn1_parse.c} (95%)
rename crypto/bio/{b_addr.c => bio_addr.c} (100%)
rename crypto/bio/{b_dump.c => bio_dump.c} (97%)
rename crypto/bio/{b_print.c => bio_print.c} (100%)
rename crypto/bio/{b_sock.c => bio_sock.c} (100%)
rename crypto/bio/{b_sock2.c => bio_sock2.c} (100%)
rename crypto/bio/{core_bio.c => ossl_core_bio.c} (100%)
diff --git a/crypto/asn1/asn1_par.c b/crypto/asn1/asn1_parse.c
similarity index 95%
rename from crypto/asn1/asn1_par.c
rename to crypto/asn1/asn1_parse.c
index 3a493de0fc..a131713d73 100644
--- a/crypto/asn1/asn1_par.c
+++ b/crypto/asn1/asn1_parse.c
@@ -41,15 +41,16 @@ static int asn1_print_info(BIO *bp, long offset, int depth, int hl, long len,
offset, depth, (long)hl, p) <= 0)
goto err;
}
- if (BIO_set_prefix(bp, str) <= 0) {
- if ((bp = BIO_push(BIO_new(BIO_f_prefix()), bp)) == NULL)
+ if (bp != NULL) {
+ if (BIO_set_prefix(bp, str) <= 0) {
+ if ((bp = BIO_push(BIO_new(BIO_f_prefix()), bp)) == NULL)
+ goto err;
+ pop_f_prefix = 1;
+ }
+ saved_indent = BIO_get_indent(bp);
+ if (BIO_set_prefix(bp, str) <= 0 || BIO_set_indent(bp, indent) < 0)
goto err;
- pop_f_prefix = 1;
}
- saved_indent = BIO_get_indent(bp);
- if (BIO_set_prefix(bp, str) <= 0
- || BIO_set_indent(bp, indent) < 0)
- goto err;
/*
* BIO_set_prefix made a copy of |str|, so we can safely use it for
@@ -115,9 +116,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
op = p;
j = ASN1_get_object(&p, &len, &tag, &xclass, length);
if (j & 0x80) {
- if (BIO_write(bp, "Error in encoding\n", 18) <= 0)
- goto end;
- ret = 0;
+ BIO_puts(bp, "Error in encoding\n");
goto end;
}
hl = (p - op);
@@ -136,7 +135,6 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
goto end;
if (len > length) {
BIO_printf(bp, "length is greater than %ld\n", length);
- ret = 0;
goto end;
}
if ((j == 0x21) && (len == 0)) {
@@ -144,10 +142,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
r = asn1_parse2(bp, &p, (long)(tot - p),
offset + (p - *pp), depth + 1,
indent, dump);
- if (r == 0) {
- ret = 0;
+ if (r == 0)
goto end;
- }
if ((r == 2) || (p >= tot)) {
len = p - sp;
break;
@@ -161,10 +157,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
r = asn1_parse2(bp, &p, tmp,
offset + (p - *pp), depth + 1,
indent, dump);
- if (r == 0) {
- ret = 0;
+ if (r == 0)
goto end;
- }
tmp -= p - sp;
}
}
diff --git a/crypto/asn1/build.info b/crypto/asn1/build.info
index e10d631654..33b86fdd31 100644
--- a/crypto/asn1/build.info
+++ b/crypto/asn1/build.info
@@ -11,7 +11,7 @@ SOURCE[../../libcrypto]=\
tasn_prn.c tasn_scn.c ameth_lib.c \
f_int.c f_string.c \
x_pkey.c bio_asn1.c bio_ndef.c asn_mime.c \
- asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_strnid.c \
+ asn1_gen.c asn1_parse.c asn1_lib.c asn1_err.c a_strnid.c \
evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p5_scrypt.c p8_pkey.c \
asn_moid.c asn_mstbl.c asn1_item_list.c \
d2i_param.c
diff --git a/crypto/bio/bf_prefix.c b/crypto/bio/bf_prefix.c
index 5727c14950..c9059ca80a 100644
--- a/crypto/bio/bf_prefix.c
+++ b/crypto/bio/bf_prefix.c
@@ -151,9 +151,9 @@ static int prefix_write(BIO *b, const char *out, size_t outl,
static long prefix_ctrl(BIO *b, int cmd, long num, void *ptr)
{
long ret = 0;
- PREFIX_CTX *ctx = BIO_get_data(b);
+ PREFIX_CTX *ctx;
- if (ctx == NULL)
+ if (b == NULL || (ctx = BIO_get_data(b)) == NULL)
return -1;
switch (cmd) {
diff --git a/crypto/bio/b_addr.c b/crypto/bio/bio_addr.c
similarity index 100%
rename from crypto/bio/b_addr.c
rename to crypto/bio/bio_addr.c
diff --git a/crypto/bio/b_dump.c b/crypto/bio/bio_dump.c
similarity index 97%
rename from crypto/bio/b_dump.c
rename to crypto/bio/bio_dump.c
index b99ebc0486..104813959c 100644
--- a/crypto/bio/b_dump.c
+++ b/crypto/bio/bio_dump.c
@@ -29,7 +29,7 @@ int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
void *u, const void *v, int len, int indent)
{
const unsigned char *s = v;
- int ret = 0;
+ int res, ret = 0;
char buf[288 + 1];
int i, j, rows, n;
unsigned char ch;
@@ -86,7 +86,10 @@ int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
* if this is the last call then update the ddt_dump thing so that we
* will move the selection point in the debug window
*/
- ret += cb((void *)buf, n, u);
+ res = cb((void *)buf, n, u);
+ if (res < 0)
+ return res;
+ ret += res;
}
return ret;
}
diff --git a/crypto/bio/bio_lib.c b/crypto/bio/bio_lib.c
index af7ad05bca..a378f186d7 100644
--- a/crypto/bio/bio_lib.c
+++ b/crypto/bio/bio_lib.c
@@ -393,13 +393,8 @@ int BIO_write(BIO *b, const void *data, int dlen)
int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written)
{
- if (dlen == 0) {
- /* no error */
- if (written != NULL)
- *written = 0;
- return 1;
- }
- return bio_write_intern(b, data, dlen, written) > 0;
+ return bio_write_intern(b, data, dlen, written) > 0
+ || (b != NULL && dlen == 0); /* order is important for *written */
}
int BIO_puts(BIO *b, const char *buf)
diff --git a/crypto/bio/b_print.c b/crypto/bio/bio_print.c
similarity index 100%
rename from crypto/bio/b_print.c
rename to crypto/bio/bio_print.c
diff --git a/crypto/bio/b_sock.c b/crypto/bio/bio_sock.c
similarity index 100%
rename from crypto/bio/b_sock.c
rename to crypto/bio/bio_sock.c
diff --git a/crypto/bio/b_sock2.c b/crypto/bio/bio_sock2.c
similarity index 100%
rename from crypto/bio/b_sock2.c
rename to crypto/bio/bio_sock2.c
diff --git a/crypto/bio/build.info b/crypto/bio/build.info
index ba7e358c29..b203ed5e63 100644
--- a/crypto/bio/build.info
+++ b/crypto/bio/build.info
@@ -3,9 +3,9 @@ LIBS=../../libcrypto
# Base library
SOURCE[../../libcrypto]=\
bio_lib.c bio_cb.c bio_err.c \
- b_print.c b_dump.c b_addr.c \
- b_sock.c b_sock2.c \
- bio_meth.c core_bio.c
+ bio_print.c bio_dump.c bio_addr.c \
+ bio_sock.c bio_sock2.c \
+ bio_meth.c ossl_core_bio.c
# Source / sink implementations
SOURCE[../../libcrypto]=\
diff --git a/crypto/bio/core_bio.c b/crypto/bio/ossl_core_bio.c
similarity index 100%
rename from crypto/bio/core_bio.c
rename to crypto/bio/ossl_core_bio.c
diff --git a/fuzz/asn1parse.c b/fuzz/asn1parse.c
index 72b0df8a46..7401375bf0 100644
--- a/fuzz/asn1parse.c
+++ b/fuzz/asn1parse.c
@@ -23,9 +23,9 @@ static BIO *bio_out;
int FuzzerInitialize(int *argc, char ***argv)
{
- bio_out = BIO_new_file("/dev/null", "w");
+ bio_out = BIO_new(BIO_s_null()); /* output will be ignored */
if (bio_out == NULL)
- bio_out = BIO_new(BIO_s_mem());
+ return 0;
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL);
ERR_clear_error();
CRYPTO_free_ex_index(0, -1);
More information about the openssl-commits
mailing list