projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
size_tification.
[openssl.git]
/
crypto
/
asn1
/
a_time.c
diff --git
a/crypto/asn1/a_time.c
b/crypto/asn1/a_time.c
index 7348da9457b360cee2faeff069520422d73f39e7..0d618873c76ce5745b7c4210af6c4d9a70f3b6aa 100644
(file)
--- a/
crypto/asn1/a_time.c
+++ b/
crypto/asn1/a_time.c
@@
-100,6
+100,12
@@
int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **pp)
ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
{
ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
{
+ return ASN1_TIME_adj(s, t, 0, 0);
+ }
+
+ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
+ int offset_day, long offset_sec)
+ {
struct tm *ts;
struct tm data;
struct tm *ts;
struct tm data;
@@
-109,9
+115,14
@@
ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
ASN1err(ASN1_F_ASN1_TIME_SET, ASN1_R_ERROR_GETTING_TIME);
return NULL;
}
ASN1err(ASN1_F_ASN1_TIME_SET, ASN1_R_ERROR_GETTING_TIME);
return NULL;
}
+ if (offset_day || offset_sec)
+ {
+ if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
+ return NULL;
+ }
if((ts->tm_year >= 50) && (ts->tm_year < 150))
if((ts->tm_year >= 50) && (ts->tm_year < 150))
-
return ASN1_UTCTIME_set(s, t
);
- return ASN1_GENERALIZEDTIME_
set(s,t
);
+
return ASN1_UTCTIME_adj(s, t, offset_day, offset_sec
);
+ return ASN1_GENERALIZEDTIME_
adj(s, t, offset_day, offset_sec
);
}
int ASN1_TIME_check(ASN1_TIME *t)
}
int ASN1_TIME_check(ASN1_TIME *t)
@@
-124,10
+135,12
@@
int ASN1_TIME_check(ASN1_TIME *t)
}
/* Convert an ASN1_TIME structure to GeneralizedTime */
}
/* Convert an ASN1_TIME structure to GeneralizedTime */
-ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out)
+ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t,
+ ASN1_GENERALIZEDTIME **out)
{
ASN1_GENERALIZEDTIME *ret;
char *str;
{
ASN1_GENERALIZEDTIME *ret;
char *str;
+ size_t newlen;
if (!ASN1_TIME_check(t)) return NULL;
if (!ASN1_TIME_check(t)) return NULL;
@@
-150,12
+163,14
@@
ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZE
/* grow the string */
if (!ASN1_STRING_set(ret, NULL, t->length + 2))
return NULL;
/* grow the string */
if (!ASN1_STRING_set(ret, NULL, t->length + 2))
return NULL;
+ /* ASN1_STRING_set() allocated 'len + 1' bytes. */
+ newlen = t->length + 2 + 1;
str = (char *)ret->data;
/* Work out the century and prepend */
str = (char *)ret->data;
/* Work out the century and prepend */
- if (t->data[0] >= '5')
strcpy(str, "19"
);
- else
strcpy(str, "20"
);
+ if (t->data[0] >= '5')
BUF_strlcpy(str, "19", newlen
);
+ else
BUF_strlcpy(str, "20", newlen
);
- BUF_strlcat(str, (char *)t->data,
t->length+3); /* Include space for a '\0' */
+ BUF_strlcat(str, (char *)t->data,
newlen);
return ret;
}
return ret;
}