diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_gentm.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_gentm.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/lib/libcrypto/asn1/a_gentm.c b/src/lib/libcrypto/asn1/a_gentm.c index f331bff320..7f8bc2fef7 100644 --- a/src/lib/libcrypto/asn1/a_gentm.c +++ b/src/lib/libcrypto/asn1/a_gentm.c | |||
@@ -208,20 +208,15 @@ ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, time_t t) | |||
208 | return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0); | 208 | return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0); |
209 | } | 209 | } |
210 | 210 | ||
211 | ASN1_GENERALIZEDTIME * | 211 | static ASN1_GENERALIZEDTIME * |
212 | ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, time_t t, int offset_day, | 212 | ASN1_GENERALIZEDTIME_adj_internal(ASN1_GENERALIZEDTIME *s, time_t t, |
213 | long offset_sec) | 213 | int offset_day, long offset_sec) |
214 | { | 214 | { |
215 | char *p; | 215 | char *p; |
216 | struct tm *ts; | 216 | struct tm *ts; |
217 | struct tm data; | 217 | struct tm data; |
218 | size_t len = 20; | 218 | size_t len = 20; |
219 | 219 | ||
220 | if (s == NULL) | ||
221 | s = M_ASN1_GENERALIZEDTIME_new(); | ||
222 | if (s == NULL) | ||
223 | return (NULL); | ||
224 | |||
225 | ts = gmtime_r(&t, &data); | 220 | ts = gmtime_r(&t, &data); |
226 | if (ts == NULL) | 221 | if (ts == NULL) |
227 | return (NULL); | 222 | return (NULL); |
@@ -250,3 +245,24 @@ ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, time_t t, int offset_day, | |||
250 | s->type = V_ASN1_GENERALIZEDTIME; | 245 | s->type = V_ASN1_GENERALIZEDTIME; |
251 | return (s); | 246 | return (s); |
252 | } | 247 | } |
248 | |||
249 | ASN1_GENERALIZEDTIME * | ||
250 | ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, time_t t, int offset_day, | ||
251 | long offset_sec) | ||
252 | { | ||
253 | ASN1_GENERALIZEDTIME *tmp = NULL, *ret; | ||
254 | |||
255 | if (s == NULL) { | ||
256 | tmp = M_ASN1_GENERALIZEDTIME_new(); | ||
257 | if (tmp == NULL) | ||
258 | return NULL; | ||
259 | s = tmp; | ||
260 | } | ||
261 | |||
262 | ret = ASN1_GENERALIZEDTIME_adj_internal(s, t, offset_day, offset_sec); | ||
263 | if (ret == NULL && tmp != NULL) | ||
264 | M_ASN1_GENERALIZEDTIME_free(tmp); | ||
265 | |||
266 | return ret; | ||
267 | |||
268 | } | ||