From e7dbd7a1e2ad3e12dafa2919bc8603d60416ea4d Mon Sep 17 00:00:00 2001 From: beck <> Date: Sat, 26 Apr 2014 18:56:38 +0000 Subject: Replace all use of ERR_add_error_data with ERR_asprintf_error_data. This avoids a lot of ugly gymnastics to do snprintfs before sending the bag of strings to ERR, and eliminates at least one place in dso_dlfctn.c where it was being called with the incorrect number of arguments and using random things off the stack as addresses of strings. ok krw@, jsing@ --- src/lib/libcrypto/conf/conf_def.c | 4 +--- src/lib/libcrypto/conf/conf_lib.c | 2 +- src/lib/libcrypto/conf/conf_mod.c | 11 +++++------ 3 files changed, 7 insertions(+), 10 deletions(-) (limited to 'src/lib/libcrypto/conf') diff --git a/src/lib/libcrypto/conf/conf_def.c b/src/lib/libcrypto/conf/conf_def.c index 22fe7a8f60..bc9f139e7e 100644 --- a/src/lib/libcrypto/conf/conf_def.c +++ b/src/lib/libcrypto/conf/conf_def.c @@ -218,7 +218,6 @@ def_load_bio(CONF *conf, BIO *in, long *line) char *s, *p, *end; int again; long eline = 0; - char btmp[DECIMAL_SIZE(eline) + 1]; CONF_VALUE *v = NULL, *tv; CONF_VALUE *sv = NULL; char *section = NULL, *buf; @@ -428,8 +427,7 @@ err: free(section); if (line != NULL) *line = eline; - snprintf(btmp, sizeof btmp, "%ld", eline); - ERR_add_error_data(2, "line ", btmp); + ERR_asprintf_error_data("line %ld", eline); if ((h != conf->data) && (conf->data != NULL)) { CONF_free(conf->data); conf->data = NULL; diff --git a/src/lib/libcrypto/conf/conf_lib.c b/src/lib/libcrypto/conf/conf_lib.c index 469af6e825..35bdda3d64 100644 --- a/src/lib/libcrypto/conf/conf_lib.c +++ b/src/lib/libcrypto/conf/conf_lib.c @@ -329,7 +329,7 @@ NCONF_get_string(const CONF *conf, const char *group, const char *name) return NULL; } CONFerr(CONF_F_NCONF_GET_STRING, CONF_R_NO_VALUE); - ERR_add_error_data(4, "group=", group, " name=", name); + ERR_asprintf_error_data("group=%s name=%s", group, name); return NULL; } diff --git a/src/lib/libcrypto/conf/conf_mod.c b/src/lib/libcrypto/conf/conf_mod.c index 80266e43d8..b574104791 100644 --- a/src/lib/libcrypto/conf/conf_mod.c +++ b/src/lib/libcrypto/conf/conf_mod.c @@ -211,7 +211,7 @@ module_run(const CONF *cnf, char *name, char *value, unsigned long flags) if (!md) { if (!(flags & CONF_MFLAGS_SILENT)) { CONFerr(CONF_F_MODULE_RUN, CONF_R_UNKNOWN_MODULE_NAME); - ERR_add_error_data(2, "module=", name); + ERR_asprintf_error_data("module=%s", name); } return -1; } @@ -220,12 +220,11 @@ module_run(const CONF *cnf, char *name, char *value, unsigned long flags) if (ret <= 0) { if (!(flags & CONF_MFLAGS_SILENT)) { - char rcode[DECIMAL_SIZE(ret) + 1]; CONFerr(CONF_F_MODULE_RUN, CONF_R_MODULE_INITIALIZATION_ERROR); - snprintf(rcode, sizeof rcode, "%-8d", ret); - ERR_add_error_data(6, "module=", name, ", value=", - value, ", retcode=", rcode); + ERR_asprintf_error_data + ("module=%s, value=%s, retcode=%-8d", + name, value, ret); } } @@ -272,7 +271,7 @@ err: if (dso) DSO_free(dso); CONFerr(CONF_F_MODULE_LOAD_DSO, errcode); - ERR_add_error_data(4, "module=", name, ", path=", path); + ERR_asprintf_error_data("module=%s, path=%s", name, path); return NULL; } -- cgit v1.2.3-55-g6feb