diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_gentm.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_gentm.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/libcrypto/asn1/a_gentm.c b/src/lib/libcrypto/asn1/a_gentm.c index cd09f68b38..48b923de1f 100644 --- a/src/lib/libcrypto/asn1/a_gentm.c +++ b/src/lib/libcrypto/asn1/a_gentm.c | |||
@@ -208,6 +208,7 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | |||
208 | char *p; | 208 | char *p; |
209 | struct tm *ts; | 209 | struct tm *ts; |
210 | struct tm data; | 210 | struct tm data; |
211 | size_t len = 20; | ||
211 | 212 | ||
212 | if (s == NULL) | 213 | if (s == NULL) |
213 | s=M_ASN1_GENERALIZEDTIME_new(); | 214 | s=M_ASN1_GENERALIZEDTIME_new(); |
@@ -219,17 +220,17 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | |||
219 | return(NULL); | 220 | return(NULL); |
220 | 221 | ||
221 | p=(char *)s->data; | 222 | p=(char *)s->data; |
222 | if ((p == NULL) || (s->length < 16)) | 223 | if ((p == NULL) || (s->length < len)) |
223 | { | 224 | { |
224 | p=OPENSSL_malloc(20); | 225 | p=OPENSSL_malloc(len); |
225 | if (p == NULL) return(NULL); | 226 | if (p == NULL) return(NULL); |
226 | if (s->data != NULL) | 227 | if (s->data != NULL) |
227 | OPENSSL_free(s->data); | 228 | OPENSSL_free(s->data); |
228 | s->data=(unsigned char *)p; | 229 | s->data=(unsigned char *)p; |
229 | } | 230 | } |
230 | 231 | ||
231 | sprintf(p,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, | 232 | snprintf(p,len,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, |
232 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); | 233 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); |
233 | s->length=strlen(p); | 234 | s->length=strlen(p); |
234 | s->type=V_ASN1_GENERALIZEDTIME; | 235 | s->type=V_ASN1_GENERALIZEDTIME; |
235 | #ifdef CHARSET_EBCDIC_not | 236 | #ifdef CHARSET_EBCDIC_not |