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 |
