diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_utctm.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_utctm.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/libcrypto/asn1/a_utctm.c b/src/lib/libcrypto/asn1/a_utctm.c index dbb4a42c9d..41f6d421bb 100644 --- a/src/lib/libcrypto/asn1/a_utctm.c +++ b/src/lib/libcrypto/asn1/a_utctm.c | |||
@@ -188,6 +188,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) | |||
188 | char *p; | 188 | char *p; |
189 | struct tm *ts; | 189 | struct tm *ts; |
190 | struct tm data; | 190 | struct tm data; |
191 | size_t len = 20; | ||
191 | 192 | ||
192 | if (s == NULL) | 193 | if (s == NULL) |
193 | s=M_ASN1_UTCTIME_new(); | 194 | s=M_ASN1_UTCTIME_new(); |
@@ -199,17 +200,17 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) | |||
199 | return(NULL); | 200 | return(NULL); |
200 | 201 | ||
201 | p=(char *)s->data; | 202 | p=(char *)s->data; |
202 | if ((p == NULL) || (s->length < 14)) | 203 | if ((p == NULL) || (s->length < len)) |
203 | { | 204 | { |
204 | p=OPENSSL_malloc(20); | 205 | p=OPENSSL_malloc(len); |
205 | if (p == NULL) return(NULL); | 206 | if (p == NULL) return(NULL); |
206 | if (s->data != NULL) | 207 | if (s->data != NULL) |
207 | OPENSSL_free(s->data); | 208 | OPENSSL_free(s->data); |
208 | s->data=(unsigned char *)p; | 209 | s->data=(unsigned char *)p; |
209 | } | 210 | } |
210 | 211 | ||
211 | sprintf(p,"%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100, | 212 | snprintf(p,len,"%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100, |
212 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); | 213 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); |
213 | s->length=strlen(p); | 214 | s->length=strlen(p); |
214 | s->type=V_ASN1_UTCTIME; | 215 | s->type=V_ASN1_UTCTIME; |
215 | #ifdef CHARSET_EBCDIC_not | 216 | #ifdef CHARSET_EBCDIC_not |