diff options
author | Robert Sloan <varomodt@google.com> | 2017-03-27 07:13:07 -0700 |
---|---|---|
committer | Robert Sloan <varomodt@google.com> | 2017-03-27 14:04:02 -0700 |
commit | 6d0d00e090b753250659b9a2d67dab7467257900 (patch) | |
tree | c478b31bb734b02e26a264d7c1b45e49c5593acc /src/crypto/asn1/a_time.c | |
parent | 8ecb7cdb5c51e9ce89a04ed0f5285ce646b8b7eb (diff) | |
download | boringssl-6d0d00e090b753250659b9a2d67dab7467257900.tar.gz |
external/boringssl: Sync to bbfe603519bc54fbc4c8dd87efe1ed385df550b4.
This includes the following changes:
https://boringssl.googlesource.com/boringssl/+log/2d05568a7b7bc62affbd13ea97a81b5829b99794..bbfe603519bc54fbc4c8dd87efe1ed385df550b4
Test: BoringSSL CTS Presubmits.
Change-Id: I78ec99cd34bebca1f864e4daaaedeec6bc1db3f0
Diffstat (limited to 'src/crypto/asn1/a_time.c')
-rw-r--r-- | src/crypto/asn1/a_time.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/crypto/asn1/a_time.c b/src/crypto/asn1/a_time.c index 4b584297..c962c0bf 100644 --- a/src/crypto/asn1/a_time.c +++ b/src/crypto/asn1/a_time.c @@ -114,7 +114,7 @@ int ASN1_TIME_check(ASN1_TIME *t) ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out) { - ASN1_GENERALIZEDTIME *ret; + ASN1_GENERALIZEDTIME *ret = NULL; char *str; int newlen; @@ -123,22 +123,21 @@ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, if (!out || !*out) { if (!(ret = ASN1_GENERALIZEDTIME_new())) - return NULL; - if (out) - *out = ret; - } else + goto err; + } else { ret = *out; + } /* If already GeneralizedTime just copy across */ if (t->type == V_ASN1_GENERALIZEDTIME) { if (!ASN1_STRING_set(ret, t->data, t->length)) - return NULL; - return ret; + goto err; + goto done; } /* grow the string */ if (!ASN1_STRING_set(ret, NULL, t->length + 2)) - return NULL; + goto err; /* ASN1_STRING_set() allocated 'len + 1' bytes. */ newlen = t->length + 2 + 1; str = (char *)ret->data; @@ -150,9 +149,18 @@ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, BUF_strlcat(str, (char *)t->data, newlen); - return ret; + done: + if (out != NULL && *out == NULL) + *out = ret; + return ret; + + err: + if (out == NULL || *out != ret) + ASN1_GENERALIZEDTIME_free(ret); + return NULL; } + int ASN1_TIME_set_string(ASN1_TIME *s, const char *str) { ASN1_TIME t; |