diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2021-09-12 22:25:46 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-12 22:25:46 +0900 |
commit | cf54f72df20879dfb377c9ca4d397285c1560daa (patch) | |
tree | 0e8f2d2507d69478ceb28faf80215db186dccc6c | |
parent | 74731d9406eb80095bdc694b18eaa0cecd2730aa (diff) | |
parent | 11b1d8a6b872a215152d55e6aec7498cea0b7f8f (diff) | |
download | ruby-openssl-cf54f72df20879dfb377c9ca4d397285c1560daa.tar.gz |
Merge pull request #455 from ruby/printf-warnings
Suppress printf format warnings
-rw-r--r-- | ext/openssl/ossl.c | 23 | ||||
-rw-r--r-- | ext/openssl/ossl.h | 4 | ||||
-rw-r--r-- | ext/openssl/ossl_config.c | 2 | ||||
-rw-r--r-- | ext/openssl/ossl_pkey_ec.c | 6 | ||||
-rw-r--r-- | ext/openssl/ossl_ts.c | 2 |
5 files changed, 22 insertions, 15 deletions
diff --git a/ext/openssl/ossl.c b/ext/openssl/ossl.c index cf070ef8..f214bcb5 100644 --- a/ext/openssl/ossl.c +++ b/ext/openssl/ossl.c @@ -268,15 +268,11 @@ ossl_to_der_if_possible(VALUE obj) /* * Errors */ -static VALUE -ossl_make_error(VALUE exc, const char *fmt, va_list args) +VALUE +ossl_make_error(VALUE exc, VALUE str) { - VALUE str = Qnil; unsigned long e; - if (fmt) { - str = rb_vsprintf(fmt, args); - } e = ERR_peek_last_error(); if (e) { const char *msg = ERR_reason_error_string(e); @@ -300,10 +296,17 @@ ossl_raise(VALUE exc, const char *fmt, ...) { va_list args; VALUE err; - va_start(args, fmt); - err = ossl_make_error(exc, fmt, args); - va_end(args); - rb_exc_raise(err); + + if (fmt) { + va_start(args, fmt); + err = rb_vsprintf(fmt, args); + va_end(args); + } + else { + err = Qnil; + } + + rb_exc_raise(ossl_make_error(exc, err)); } void diff --git a/ext/openssl/ossl.h b/ext/openssl/ossl.h index 577eb6d6..65d022c7 100644 --- a/ext/openssl/ossl.h +++ b/ext/openssl/ossl.h @@ -120,7 +120,9 @@ int ossl_pem_passwd_cb(char *, int, int, void *); /* * ERRor messages */ -NORETURN(void ossl_raise(VALUE, const char *, ...)); +PRINTF_ARGS(NORETURN(void ossl_raise(VALUE, const char *, ...)), 2, 3); +/* Make exception instance from str and OpenSSL error reason string. */ +VALUE ossl_make_error(VALUE exc, VALUE str); /* Clear OpenSSL error queue. If dOSSL is set, rb_warn() them. */ void ossl_clear_error(void); diff --git a/ext/openssl/ossl_config.c b/ext/openssl/ossl_config.c index 21c327b2..0bac0274 100644 --- a/ext/openssl/ossl_config.c +++ b/ext/openssl/ossl_config.c @@ -60,7 +60,7 @@ config_load_bio(CONF *conf, BIO *bio) if (eline <= 0) ossl_raise(eConfigError, "wrong config format"); else - ossl_raise(eConfigError, "error in line %d", eline); + ossl_raise(eConfigError, "error in line %ld", eline); } BIO_free(bio); diff --git a/ext/openssl/ossl_pkey_ec.c b/ext/openssl/ossl_pkey_ec.c index 9b461cb6..26c627f2 100644 --- a/ext/openssl/ossl_pkey_ec.c +++ b/ext/openssl/ossl_pkey_ec.c @@ -596,8 +596,10 @@ static VALUE ossl_ec_group_initialize(int argc, VALUE *argv, VALUE self) ossl_raise(rb_eArgError, "wrong number of arguments"); } - if (group == NULL) - ossl_raise(eEC_GROUP, ""); +#if !defined(LIKELY) && !defined(RB_LIKELY) +#define LIKELY(x) (x) +#endif + ASSUME(group); RTYPEDDATA_DATA(self) = group; return self; diff --git a/ext/openssl/ossl_ts.c b/ext/openssl/ossl_ts.c index 4654babf..dbd73748 100644 --- a/ext/openssl/ossl_ts.c +++ b/ext/openssl/ossl_ts.c @@ -1223,7 +1223,7 @@ end: ASN1_OBJECT_free(def_policy_id_obj); TS_RESP_CTX_free(ctx); if (err_msg) - ossl_raise(eTimestampError, err_msg); + rb_exc_raise(ossl_make_error(eTimestampError, rb_str_new_cstr(err_msg))); if (status) rb_jump_tag(status); return ret; |