diff options
author | tb <> | 2025-05-24 19:45:34 +0000 |
---|---|---|
committer | tb <> | 2025-05-24 19:45:34 +0000 |
commit | cfa724cf6aec2c8b01b7611b510bc617bea7af64 (patch) | |
tree | fd557221697d0d1fff3dfb2f69a8c613557093d7 /src | |
parent | ff9d397e7e76ff6cf62ce357ec25a615036b5c55 (diff) | |
download | openbsd-cfa724cf6aec2c8b01b7611b510bc617bea7af64.tar.gz openbsd-cfa724cf6aec2c8b01b7611b510bc617bea7af64.tar.bz2 openbsd-cfa724cf6aec2c8b01b7611b510bc617bea7af64.zip |
Create bm->buf from the start to avoid arithmetic on NULL
This is a different way of avoiding the pointer arithmetic on NULL and
avoids test breakage in pyca/cryptography. This is also a gross hack
that penalizes existing callers of BIO_s_mem(), but this is rarely
called in a hot loop and if so that will most likely be a test.
ok kenjiro joshua jsing
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/bio/bss_mem.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/libcrypto/bio/bss_mem.c b/src/lib/libcrypto/bio/bss_mem.c index 0936ab4e83..f977a123a7 100644 --- a/src/lib/libcrypto/bio/bss_mem.c +++ b/src/lib/libcrypto/bio/bss_mem.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bss_mem.c,v 1.25 2025/05/24 19:43:09 tb Exp $ */ | 1 | /* $OpenBSD: bss_mem.c,v 1.26 2025/05/24 19:45:34 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -162,6 +162,12 @@ mem_new(BIO *bio) | |||
162 | free(bm); | 162 | free(bm); |
163 | return 0; | 163 | return 0; |
164 | } | 164 | } |
165 | if (BUF_MEM_grow_clean(bm->buf, 64) != 64) { | ||
166 | BUF_MEM_free(bm->buf); | ||
167 | free(bm); | ||
168 | return 0; | ||
169 | } | ||
170 | bm->buf->length = 0; | ||
165 | 171 | ||
166 | bio->shutdown = 1; | 172 | bio->shutdown = 1; |
167 | bio->init = 1; | 173 | bio->init = 1; |