From: Dr. David von Oheimb Date: Tue, 16 May 2023 08:24:35 +0000 (+0200) Subject: APPS: replace awkward and error-prone pattern by calls to new app_conf_try_number() X-Git-Tag: openssl-3.2.0-alpha1~751 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b77826877be3bdd56e3e86887cb78ea010db90be;p=thirdparty%2Fopenssl.git APPS: replace awkward and error-prone pattern by calls to new app_conf_try_number() Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale Reviewed-by: David von Oheimb (Merged from https://github.com/openssl/openssl/pull/20971) --- diff --git a/apps/ca.c b/apps/ca.c index 8bdbc9a1f0e..751287eda8d 100644 --- a/apps/ca.c +++ b/apps/ca.c @@ -886,10 +886,8 @@ end_of_options: } if (days == 0) { - if (!NCONF_get_number(conf, section, ENV_DEFAULT_DAYS, &days)) { - ERR_clear_error(); + if (!app_conf_try_number(conf, section, ENV_DEFAULT_DAYS, &days)) days = 0; - } } if (enddate == NULL && days == 0) { BIO_printf(bio_err, "cannot lookup how many days to certify for\n"); @@ -1149,16 +1147,12 @@ end_of_options: } if (!crldays && !crlhours && !crlsec) { - if (!NCONF_get_number(conf, section, - ENV_DEFAULT_CRL_DAYS, &crldays)) { - ERR_clear_error(); + if (!app_conf_try_number(conf, section, + ENV_DEFAULT_CRL_DAYS, &crldays)) crldays = 0; - } - if (!NCONF_get_number(conf, section, - ENV_DEFAULT_CRL_HOURS, &crlhours)) { - ERR_clear_error(); + if (!app_conf_try_number(conf, section, + ENV_DEFAULT_CRL_HOURS, &crlhours)) crlhours = 0; - } } if ((crl_nextupdate == NULL) && (crldays == 0) && (crlhours == 0) && (crlsec == 0)) { diff --git a/apps/include/apps.h b/apps/include/apps.h index c9e0d440e8c..62b4d19ae3e 100644 --- a/apps/include/apps.h +++ b/apps/include/apps.h @@ -66,6 +66,8 @@ BIO *bio_open_owner(const char *filename, int format, int private); BIO *bio_open_default(const char *filename, char mode, int format); BIO *bio_open_default_quiet(const char *filename, char mode, int format); char *app_conf_try_string(const CONF *cnf, const char *group, const char *name); +int app_conf_try_number(const CONF *conf, const char *group, const char *name, + long *result); CONF *app_load_config_bio(BIO *in, const char *filename); # define app_load_config(filename) app_load_config_internal(filename, 0) # define app_load_config_quiet(filename) app_load_config_internal(filename, 1) diff --git a/apps/lib/apps.c b/apps/lib/apps.c index bfa983a3519..79980257bde 100644 --- a/apps/lib/apps.c +++ b/apps/lib/apps.c @@ -349,6 +349,19 @@ char *app_conf_try_string(const CONF *conf, const char *group, const char *name) return res; } +int app_conf_try_number(const CONF *conf, const char *group, const char *name, + long *result) +{ + int ok; + + ERR_set_mark(); + ok = NCONF_get_number(conf, group, name, result); + if (!ok) + ERR_pop_to_mark(); + else + ERR_clear_last_mark(); + return ok; +} CONF *app_load_config_bio(BIO *in, const char *filename) { diff --git a/apps/req.c b/apps/req.c index 11ecf6cad75..59ed6ebaa2e 100644 --- a/apps/req.c +++ b/apps/req.c @@ -608,7 +608,7 @@ int req_main(int argc, char **argv) if (newreq && pkey == NULL) { app_RAND_load_conf(req_conf, section); - if (!NCONF_get_number(req_conf, section, BITS, &newkey_len)) + if (!app_conf_try_number(req_conf, section, BITS, &newkey_len)) newkey_len = DEFAULT_KEY_LENGTH; genctx = set_keygen_ctx(keyalg, &keyalgstr, &newkey_len, gen_eng); @@ -1167,17 +1167,13 @@ static int prompt_info(X509_REQ *req, if (!join(buf, sizeof(buf), v->name, "_min", "Name")) return 0; - if (!NCONF_get_number(req_conf, dn_sect, buf, &n_min)) { - ERR_clear_error(); + if (!app_conf_try_number(req_conf, dn_sect, buf, &n_min)) n_min = -1; - } if (!join(buf, sizeof(buf), v->name, "_max", "Name")) return 0; - if (!NCONF_get_number(req_conf, dn_sect, buf, &n_max)) { - ERR_clear_error(); + if (!app_conf_try_number(req_conf, dn_sect, buf, &n_max)) n_max = -1; - } if (!add_DN_object(subj, v->value, def, value, nid, n_min, n_max, chtype, mval)) @@ -1221,17 +1217,13 @@ static int prompt_info(X509_REQ *req, if (!join(buf, sizeof(buf), type, "_min", "Name")) return 0; - if (!NCONF_get_number(req_conf, attr_sect, buf, &n_min)) { - ERR_clear_error(); + if (!app_conf_try_number(req_conf, attr_sect, buf, &n_min)) n_min = -1; - } if (!join(buf, sizeof(buf), type, "_max", "Name")) return 0; - if (!NCONF_get_number(req_conf, attr_sect, buf, &n_max)) { - ERR_clear_error(); + if (!app_conf_try_number(req_conf, attr_sect, buf, &n_max)) n_max = -1; - } if (!add_attribute_object(req, v->value, def, value, nid, n_min,