提交 33254e1c 编写于 作者: R Richard Levitte

Fix opt_imax() call

Not all architectures have a time_t defined the same way.  To make
sure we get the same result, we need to cast &checkoffset to (intmax_t *)
and make sure that intmax_t is defined somehow.

To make really sure we don't pass a variable with the wrong size down
to opt_imax(), we use a temporary intmax_t.
Reviewed-by: NRich Salz <rsalz@openssl.org>
上级 421e30ec
......@@ -145,6 +145,8 @@ int opt_umax(const char *value, uintmax_t *result);
# else
# define opt_imax opt_long
# define opt_umax opt_ulong
# define intmax_t long
# define uintmax_t unsigned long
# endif
int app_RAND_load_file(const char *file, int dont_warn);
......
......@@ -468,12 +468,16 @@ int x509_main(int argc, char **argv)
break;
case OPT_CHECKEND:
checkend = 1;
if (!opt_imax(opt_arg(), &checkoffset))
goto opthelp;
if (checkoffset != (time_t)checkoffset) {
BIO_printf(bio_err, "%s: checkend time out of range %s\n",
prog, opt_arg());
goto opthelp;
{
intmax_t temp = 0;
if (!opt_imax(opt_arg(), &temp))
goto opthelp;
checkoffset = (time_t)temp;
if ((intmax_t)checkoffset != temp) {
BIO_printf(bio_err, "%s: checkend time out of range %s\n",
prog, opt_arg());
goto opthelp;
}
}
break;
case OPT_CHECKHOST:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册