aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/conf
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2001-02-06 10:26:34 +0000
committerBodo Möller <bodo@openssl.org>2001-02-06 10:26:34 +0000
commit9eea2be6f142cf2f4db54eb14b078331ae2f29f0 (patch)
tree562515ce4a66c6b1f9a457d675b212887d7c173a /crypto/conf
parent69a03c1799cd068d99652173748db8f39c8b5440 (diff)
downloadopenssl-9eea2be6f142cf2f4db54eb14b078331ae2f29f0.tar.gz
Avoid coredumps for CONF_get_...(NULL, ...)
Diffstat (limited to 'crypto/conf')
-rw-r--r--crypto/conf/conf_lib.c59
1 files changed, 41 insertions, 18 deletions
diff --git a/crypto/conf/conf_lib.c b/crypto/conf/conf_lib.c
index 2005c87350..a071750249 100644
--- a/crypto/conf/conf_lib.c
+++ b/crypto/conf/conf_lib.c
@@ -131,40 +131,63 @@ LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline)
STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,char *section)
{
- CONF ctmp;
+ if (conf == NULL)
+ {
+ return NULL;
+ }
+ else
+ {
+ CONF ctmp;
- if (default_CONF_method == NULL)
- default_CONF_method = NCONF_default();
+ if (default_CONF_method == NULL)
+ default_CONF_method = NCONF_default();
- default_CONF_method->init(&ctmp);
- ctmp.data = conf;
- return NCONF_get_section(&ctmp, section);
+ default_CONF_method->init(&ctmp);
+ ctmp.data = conf;
+ return NCONF_get_section(&ctmp, section);
+ }
}
char *CONF_get_string(LHASH *conf,char *group,char *name)
{
- CONF ctmp;
+ if (conf == NULL)
+ {
+ return NCONF_get_string(NULL, group, name);
+ }
+ else
+ {
+ CONF ctmp;
- if (default_CONF_method == NULL)
- default_CONF_method = NCONF_default();
+ if (default_CONF_method == NULL)
+ default_CONF_method = NCONF_default();
- default_CONF_method->init(&ctmp);
- ctmp.data = conf;
- return NCONF_get_string(&ctmp, group, name);
+ default_CONF_method->init(&ctmp);
+ ctmp.data = conf;
+ return NCONF_get_string(&ctmp, group, name);
+ }
}
long CONF_get_number(LHASH *conf,char *group,char *name)
{
- CONF ctmp;
int status;
long result = 0;
- if (default_CONF_method == NULL)
- default_CONF_method = NCONF_default();
+ if (conf == NULL)
+ {
+ status = NCONF_get_number_e(NULL, group, name, &result);
+ }
+ else
+ {
+ CONF ctmp;
+
+ if (default_CONF_method == NULL)
+ default_CONF_method = NCONF_default();
+
+ default_CONF_method->init(&ctmp);
+ ctmp.data = conf;
+ status = NCONF_get_number_e(&ctmp, group, name, &result);
+ }
- default_CONF_method->init(&ctmp);
- ctmp.data = conf;
- status = NCONF_get_number_e(&ctmp, group, name, &result);
if (status == 0)
{
/* This function does not believe in errors... */