# include "internal/sockets.h" /* for openssl_fdset() */
# include <assert.h>
+# include <stdarg.h>
# include <sys/types.h>
# ifndef OPENSSL_NO_POSIX_IO
# include <sys/stat.h>
# endif
} CA_DB;
+void app_bail_out(char *fmt, ...);
void* app_malloc(int sz, const char *what);
BIGNUM *load_serial(const char *serialfile, int create, ASN1_INTEGER **retai);
int save_serial(const char *serialfile, const char *suffix, const BIGNUM *serial,
return rv;
}
+void app_bail_out(char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ BIO_vprintf(bio_err, fmt, args);
+ va_end(args);
+ ERR_print_errors(bio_err);
+ exit(1);
+}
+
void* app_malloc(int sz, const char *what)
{
void *vp = OPENSSL_malloc(sz);
- if (vp == NULL) {
- BIO_printf(bio_err, "%s: Could not allocate %d bytes for %s\n",
- opt_getprog(), sz, what);
- ERR_print_errors(bio_err);
- exit(1);
- }
+ if (vp == NULL)
+ app_bail_out("%s: Could not allocate %d bytes for %s\n",
+ opt_getprog(), sz, what);
return vp;
}
destroy_ui_method();
}
-static char *make_config_name(void)
-{
- const char *t;
- size_t len;
- char *p;
-
- if ((t = getenv("OPENSSL_CONF")) != NULL)
- return OPENSSL_strdup(t);
-
- t = X509_get_default_cert_area();
- len = strlen(t) + 1 + strlen(OPENSSL_CONF) + 1;
- p = app_malloc(len, "config filename buffer");
- strcpy(p, t);
-#ifndef OPENSSL_SYS_VMS
- strcat(p, "/");
-#endif
- strcat(p, OPENSSL_CONF);
-
- return p;
-}
-
#ifndef OPENSSL_NO_TRACE
typedef struct tracedata_st {
arg.size = 0;
/* Set up some of the environment. */
- default_config_file = make_config_name();
bio_in = dup_bio_in(FORMAT_TEXT);
bio_out = dup_bio_out(FORMAT_TEXT);
bio_err = dup_bio_err(FORMAT_TEXT);
}
pname = opt_progname(argv[0]);
+ default_config_file = CONF_get1_default_config_file();
+ if (default_config_file == NULL)
+ app_bail_out("%s: could not get default config file\n", pname);
+
/* first check the program name */
f.name = pname;
fp = lh_FUNCTION_retrieve(prog, &f);
char *CONF_get1_default_config_file(void)
{
+ const char *t;
char *file, *sep = "";
- int len;
+ size_t size;
if ((file = ossl_safe_getenv("OPENSSL_CONF")) != NULL)
return OPENSSL_strdup(file);
- len = strlen(X509_get_default_cert_area());
+ t = X509_get_default_cert_area();
#ifndef OPENSSL_SYS_VMS
- len++;
sep = "/";
#endif
- len += strlen(OPENSSL_CONF);
-
- file = OPENSSL_malloc(len + 1);
+ size = strlen(t) + strlen(sep) + strlen(OPENSSL_CONF) + 1;
+ file = OPENSSL_malloc(size);
if (file == NULL)
return NULL;
- BIO_snprintf(file, len + 1, "%s%s%s", X509_get_default_cert_area(),
- sep, OPENSSL_CONF);
+ BIO_snprintf(file, size, "%s%s%s", t, sep, OPENSSL_CONF);
return file;
}