tmps->type = type;
p = (char*)tmps->data;
- if (type == V_ASN1_GENERALIZEDTIME)
+ if (ts->tm_mon > INT_MAX - 1)
+ goto err;
+
+ if (type == V_ASN1_GENERALIZEDTIME) {
+ if (ts->tm_year > INT_MAX - 1900)
+ goto err;
tmps->length = BIO_snprintf(p, len, "%04d%02d%02d%02d%02d%02dZ",
ts->tm_year + 1900, ts->tm_mon + 1,
ts->tm_mday, ts->tm_hour, ts->tm_min,
ts->tm_sec);
- else
+ } else {
tmps->length = BIO_snprintf(p, len, "%02d%02d%02d%02d%02d%02dZ",
ts->tm_year % 100, ts->tm_mon + 1,
ts->tm_mday, ts->tm_hour, ts->tm_min,
ts->tm_sec);
+ }
#ifdef CHARSET_EBCDIC
ebcdic2ascii(tmps->data, tmps->data, tmps->length);