diff options
Diffstat (limited to 'apps/srp.c')
-rw-r--r-- | apps/srp.c | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/apps/srp.c b/apps/srp.c index 5ba9375984..69175ebc58 100644 --- a/apps/srp.c +++ b/apps/srp.c @@ -107,9 +107,12 @@ static int update_index(CA_DB *db, char **row) return 1; } -static void lookup_fail(const char *name, const char *tag) +static char *lookup_conf(const CONF *conf, const char *section, const char *tag) { - BIO_printf(bio_err, "variable lookup failed for %s::%s\n", name, tag); + char *entry = NCONF_get_string(conf, section, tag); + if (entry == NULL) + BIO_printf(bio_err, "variable lookup failed for %s::%s\n", section, tag); + return entry; } static char *srp_verify_user(const char *user, const char *srp_verifier, @@ -124,7 +127,7 @@ static char *srp_verify_user(const char *user, const char *srp_verifier, cb_tmp.prompt_info = user; cb_tmp.password = passin; - if (password_callback(password, 1024, 0, &cb_tmp) > 0) { + if (password_callback(password, sizeof(password), 0, &cb_tmp) > 0) { if (verbose) BIO_printf(bio_err, "Validating\n user=\"%s\"\n srp_verifier=\"%s\"\n srp_usersalt=\"%s\"\n g=\"%s\"\n N=\"%s\"\n", @@ -157,7 +160,7 @@ static char *srp_create_user(char *user, char **srp_verifier, cb_tmp.prompt_info = user; cb_tmp.password = passout; - if (password_callback(password, 1024, 1, &cb_tmp) > 0) { + if (password_callback(password, sizeof(password), 1, &cb_tmp) > 0) { if (verbose) BIO_printf(bio_err, "Creating\n user=\"%s\"\n g=\"%s\"\n N=\"%s\"\n", user, g, N); @@ -320,14 +323,12 @@ int srp_main(int argc, char **argv) "trying to read " ENV_DEFAULT_SRP " in " BASE_SECTION "\n"); - section = NCONF_get_string(conf, BASE_SECTION, ENV_DEFAULT_SRP); - if (section == NULL) { - lookup_fail(BASE_SECTION, ENV_DEFAULT_SRP); + section = lookup_conf(conf, BASE_SECTION, ENV_DEFAULT_SRP); + if (section == NULL) goto end; - } } - if (randfile == NULL && conf) + if (randfile == NULL) randfile = NCONF_get_string(conf, BASE_SECTION, "RANDFILE"); if (verbose) @@ -335,12 +336,9 @@ int srp_main(int argc, char **argv) "trying to read " ENV_DATABASE " in section \"%s\"\n", section); - if ((srpvfile = NCONF_get_string(conf, section, ENV_DATABASE)) - == NULL) { - lookup_fail(section, ENV_DATABASE); + srpvfile = lookup_conf(conf, section, ENV_DATABASE); + if (srpvfile == NULL) goto end; - } - } if (randfile == NULL) ERR_clear_error(); @@ -391,12 +389,11 @@ int srp_main(int argc, char **argv) while (mode == OPT_LIST || user) { int userindex = -1; - if (user) - if (verbose > 1) - BIO_printf(bio_err, "Processing user \"%s\"\n", user); + + if (user != NULL && verbose > 1) + BIO_printf(bio_err, "Processing user \"%s\"\n", user); if ((userindex = get_index(db, user, 'U')) >= 0) { - print_user(db, userindex, (verbose > 0) - || mode == OPT_LIST); + print_user(db, userindex, (verbose > 0) || mode == OPT_LIST); } if (mode == OPT_LIST) { |