summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/a_gentm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/a_gentm.c')
-rw-r--r--src/lib/libcrypto/asn1/a_gentm.c32
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
211ASN1_GENERALIZEDTIME * 211static ASN1_GENERALIZEDTIME *
212ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, time_t t, int offset_day, 212ASN1_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
249ASN1_GENERALIZEDTIME *
250ASN1_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}