mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-04-27 18:24:37 +00:00
Fix some realloc error handling issues.
Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2625)
This commit is contained in:
parent
9b9f8315dc
commit
b75dbf3c11
@ -108,13 +108,16 @@ static int append_buf(char **buf, const char *s, int *size, int step)
|
||||
}
|
||||
|
||||
if (strlen(*buf) + strlen(s) >= (unsigned int)*size) {
|
||||
char *p = *buf;
|
||||
|
||||
*size += step;
|
||||
*buf = OPENSSL_realloc(*buf, *size);
|
||||
if (*buf == NULL) {
|
||||
OPENSSL_free(p);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (*buf == NULL)
|
||||
return 0;
|
||||
|
||||
if (**buf != '\0')
|
||||
BUF_strlcat(*buf, ", ", *size);
|
||||
BUF_strlcat(*buf, s, *size);
|
||||
|
@ -964,6 +964,7 @@ int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file)
|
||||
int ret = 0;
|
||||
BIO *bin = NULL;
|
||||
size_t num_extensions = 0;
|
||||
unsigned char *new_serverinfo;
|
||||
|
||||
if (ctx == NULL || file == NULL) {
|
||||
SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_FILE,
|
||||
@ -1014,12 +1015,13 @@ int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file)
|
||||
goto end;
|
||||
}
|
||||
/* Append the decoded extension to the serverinfo buffer */
|
||||
serverinfo =
|
||||
new_serverinfo =
|
||||
OPENSSL_realloc(serverinfo, serverinfo_length + extension_length);
|
||||
if (serverinfo == NULL) {
|
||||
if (new_serverinfo == NULL) {
|
||||
SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_FILE, ERR_R_MALLOC_FAILURE);
|
||||
goto end;
|
||||
}
|
||||
serverinfo = new_serverinfo;
|
||||
memcpy(serverinfo + serverinfo_length, extension, extension_length);
|
||||
serverinfo_length += extension_length;
|
||||
|
||||
|
14
ssl/t1_ext.c
14
ssl/t1_ext.c
@ -223,16 +223,14 @@ static int custom_ext_meth_add(custom_ext_methods *exts,
|
||||
/* Search for duplicate */
|
||||
if (custom_ext_find(exts, ext_type))
|
||||
return 0;
|
||||
exts->meths = OPENSSL_realloc(exts->meths,
|
||||
(exts->meths_count +
|
||||
1) * sizeof(custom_ext_method));
|
||||
|
||||
if (!exts->meths) {
|
||||
exts->meths_count = 0;
|
||||
meth = OPENSSL_realloc(exts->meths,
|
||||
(exts->meths_count + 1)
|
||||
* sizeof(custom_ext_method));
|
||||
if (meth == NULL)
|
||||
return 0;
|
||||
}
|
||||
|
||||
meth = exts->meths + exts->meths_count;
|
||||
exts->meths = meth;
|
||||
meth += exts->meths_count;
|
||||
memset(meth, 0, sizeof(custom_ext_method));
|
||||
meth->parse_cb = parse_cb;
|
||||
meth->add_cb = add_cb;
|
||||
|
Loading…
x
Reference in New Issue
Block a user