Commit cde70093 authored by Richard Levitte's avatar Richard Levitte
Browse files

Make the new conf implementatoin bug-compatible with the old one.

Actually, it's a feature that it goes looking at environment
variables.  It's just a pity that it's at the cost of the error
checking...  I'll see if I can come up with a better interface for
this.
parent 5f97f508
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -167,6 +167,8 @@ int NCONF_dump_bio(CONF *conf, BIO *out);
#define CONF_R_MISSING_EQUAL_SIGN			 101
#define CONF_R_NO_CLOSE_BRACE				 102
#define CONF_R_NO_CONF					 105
#define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE		 106
#define CONF_R_NO_SECTION				 107
#define CONF_R_UNABLE_TO_CREATE_NEW_SECTION		 103
#define CONF_R_VARIABLE_HAS_NO_VALUE			 104

+2 −0
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@ static ERR_STRING_DATA CONF_str_reasons[]=
{CONF_R_MISSING_EQUAL_SIGN               ,"missing equal sign"},
{CONF_R_NO_CLOSE_BRACE                   ,"no close brace"},
{CONF_R_NO_CONF                          ,"no conf"},
{CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE  ,"no conf or environment variable"},
{CONF_R_NO_SECTION                       ,"no section"},
{CONF_R_UNABLE_TO_CREATE_NEW_SECTION     ,"unable to create new section"},
{CONF_R_VARIABLE_HAS_NO_VALUE            ,"variable has no value"},
{0,NULL}
+22 −3
Original line number Diff line number Diff line
@@ -299,27 +299,46 @@ STACK_OF(CONF_VALUE) *NCONF_get_section(CONF *conf,char *section)
		return NULL;
		}

	if (section == NULL)
		{
		CONFerr(CONF_F_NCONF_GET_SECTION,CONF_R_NO_SECTION);
		return NULL;
		}

	return _CONF_get_section_values(conf, section);
	}

char *NCONF_get_string(CONF *conf,char *group,char *name)
	{
	char *s = _CONF_get_string(conf, group, name);

        /* Since we may get a value from an environment variable even
           if conf is NULL, let's check the value first */
        if (s) return s;

	if (conf == NULL)
		{
		CONFerr(CONF_F_NCONF_GET_STRING,CONF_R_NO_CONF);
		CONFerr(CONF_F_NCONF_GET_STRING,
                        CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE);
		return NULL;
		}

	return _CONF_get_string(conf, group, name);
	}

long NCONF_get_number(CONF *conf,char *group,char *name)
	{
#if 0 /* As with _CONF_get_string(), we rely on the possibility of finding
         an environment variable with a suitable name.  Unfortunately, there's
         no way with the current API to see if we found one or not...
         The meaning of this is that if a number is not found anywhere, it
         will always default to 0. */
	if (conf == NULL)
		{
		CONFerr(CONF_F_NCONF_GET_NUMBER,CONF_R_NO_CONF);
		CONFerr(CONF_F_NCONF_GET_NUMBER,
                        CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE);
		return 0;
		}
#endif
	
	return _CONF_get_number(conf, group, name);
	}