Update to OpenSSL 1.0.2.o
This commit is contained in:
@@ -259,6 +259,7 @@ void ERR_load_CONF_strings(void);
|
||||
# define CONF_R_NO_VALUE 108
|
||||
# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103
|
||||
# define CONF_R_UNKNOWN_MODULE_NAME 113
|
||||
# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116
|
||||
# define CONF_R_VARIABLE_HAS_NO_VALUE 104
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -69,6 +69,12 @@
|
||||
#include <openssl/buffer.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
/*
|
||||
* The maximum length we can grow a value to after variable expansion. 64k
|
||||
* should be more than enough for all reasonable uses.
|
||||
*/
|
||||
#define MAX_CONF_VALUE_LENGTH 65536
|
||||
|
||||
static char *eat_ws(CONF *conf, char *p);
|
||||
static char *eat_alpha_numeric(CONF *conf, char *p);
|
||||
static void clear_comments(CONF *conf, char *p);
|
||||
@@ -417,7 +423,7 @@ static int def_load_bio(CONF *conf, BIO *in, long *line)
|
||||
OPENSSL_free(section);
|
||||
if (line != NULL)
|
||||
*line = eline;
|
||||
BIO_snprintf(btmp, sizeof btmp, "%ld", eline);
|
||||
BIO_snprintf(btmp, sizeof(btmp), "%ld", eline);
|
||||
ERR_add_error_data(2, "line ", btmp);
|
||||
if ((h != conf->data) && (conf->data != NULL)) {
|
||||
CONF_free(conf->data);
|
||||
@@ -530,6 +536,8 @@ static int str_copy(CONF *conf, char *section, char **pto, char *from)
|
||||
} else if (IS_EOF(conf, *from))
|
||||
break;
|
||||
else if (*from == '$') {
|
||||
size_t newsize;
|
||||
|
||||
/* try to expand it */
|
||||
rrp = NULL;
|
||||
s = &(from[1]);
|
||||
@@ -584,8 +592,12 @@ static int str_copy(CONF *conf, char *section, char **pto, char *from)
|
||||
CONFerr(CONF_F_STR_COPY, CONF_R_VARIABLE_HAS_NO_VALUE);
|
||||
goto err;
|
||||
}
|
||||
if (!BUF_MEM_grow_clean(buf,
|
||||
(strlen(p) + buf->length - (e - from)))) {
|
||||
newsize = strlen(p) + buf->length - (e - from);
|
||||
if (newsize > MAX_CONF_VALUE_LENGTH) {
|
||||
CONFerr(CONF_F_STR_COPY, CONF_R_VARIABLE_EXPANSION_TOO_LONG);
|
||||
goto err;
|
||||
}
|
||||
if (!BUF_MEM_grow_clean(buf, newsize)) {
|
||||
CONFerr(CONF_F_STR_COPY, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
@@ -115,6 +115,8 @@ static ERR_STRING_DATA CONF_str_reasons[] = {
|
||||
{ERR_REASON(CONF_R_UNABLE_TO_CREATE_NEW_SECTION),
|
||||
"unable to create new section"},
|
||||
{ERR_REASON(CONF_R_UNKNOWN_MODULE_NAME), "unknown module name"},
|
||||
{ERR_REASON(CONF_R_VARIABLE_EXPANSION_TOO_LONG),
|
||||
"variable expansion too long"},
|
||||
{ERR_REASON(CONF_R_VARIABLE_HAS_NO_VALUE), "variable has no value"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
@@ -221,7 +221,7 @@ static int module_run(const CONF *cnf, char *name, char *value,
|
||||
if (!(flags & CONF_MFLAGS_SILENT)) {
|
||||
char rcode[DECIMAL_SIZE(ret) + 1];
|
||||
CONFerr(CONF_F_MODULE_RUN, CONF_R_MODULE_INITIALIZATION_ERROR);
|
||||
BIO_snprintf(rcode, sizeof rcode, "%-8d", ret);
|
||||
BIO_snprintf(rcode, sizeof(rcode), "%-8d", ret);
|
||||
ERR_add_error_data(6, "module=", name, ", value=", value,
|
||||
", retcode=", rcode);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user