diff options
| author | Gary Ching-Pang Lin <glin@suse.com> | 2015-07-28 11:46:38 -0400 |
|---|---|---|
| committer | Peter Jones <pjones@redhat.com> | 2015-07-28 11:46:38 -0400 |
| commit | 5ce38c90cf43ee79cd999716ea83a5a44eeb819e (patch) | |
| tree | 2fb3d9dd667c772fae5f87fa61e1501cf12da0ce /Cryptlib/OpenSSL/crypto/objects/obj_lib.c | |
| parent | 69ba24ff72921ecabbb47178de40dc5a79350040 (diff) | |
| download | efi-boot-shim-5ce38c90cf43ee79cd999716ea83a5a44eeb819e.tar.gz efi-boot-shim-5ce38c90cf43ee79cd999716ea83a5a44eeb819e.zip | |
Update openssl to 1.0.2d
Also update Cryptlib to edk2 r17731
Signed-off-by: Gary Ching-Pang Lin <glin@suse.com>
Diffstat (limited to 'Cryptlib/OpenSSL/crypto/objects/obj_lib.c')
| -rw-r--r-- | Cryptlib/OpenSSL/crypto/objects/obj_lib.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/Cryptlib/OpenSSL/crypto/objects/obj_lib.c b/Cryptlib/OpenSSL/crypto/objects/obj_lib.c index 0687602a..8851baff 100644 --- a/Cryptlib/OpenSSL/crypto/objects/obj_lib.c +++ b/Cryptlib/OpenSSL/crypto/objects/obj_lib.c @@ -66,7 +66,8 @@ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o) { ASN1_OBJECT *r; int i; - char *ln = NULL; + char *ln = NULL, *sn = NULL; + unsigned char *data = NULL; if (o == NULL) return (NULL); @@ -79,30 +80,32 @@ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o) OBJerr(OBJ_F_OBJ_DUP, ERR_R_ASN1_LIB); return (NULL); } - r->data = OPENSSL_malloc(o->length); - if (r->data == NULL) + data = OPENSSL_malloc(o->length); + if (data == NULL) goto err; if (o->data != NULL) - memcpy(r->data, o->data, o->length); + memcpy(data, o->data, o->length); + /* once data attached to object it remains const */ + r->data = data; r->length = o->length; r->nid = o->nid; r->ln = r->sn = NULL; if (o->ln != NULL) { i = strlen(o->ln) + 1; - r->ln = ln = OPENSSL_malloc(i); - if (r->ln == NULL) + ln = OPENSSL_malloc(i); + if (ln == NULL) goto err; memcpy(ln, o->ln, i); + r->ln = ln; } if (o->sn != NULL) { - char *s; - i = strlen(o->sn) + 1; - r->sn = s = OPENSSL_malloc(i); - if (r->sn == NULL) + sn = OPENSSL_malloc(i); + if (sn == NULL) goto err; - memcpy(s, o->sn, i); + memcpy(sn, o->sn, i); + r->sn = sn; } r->flags = o->flags | (ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS | @@ -110,13 +113,14 @@ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o) return (r); err: OBJerr(OBJ_F_OBJ_DUP, ERR_R_MALLOC_FAILURE); - if (r != NULL) { - if (ln != NULL) - OPENSSL_free(ln); - if (r->data != NULL) - OPENSSL_free(r->data); + if (ln != NULL) + OPENSSL_free(ln); + if (sn != NULL) + OPENSSL_free(sn); + if (data != NULL) + OPENSSL_free(data); + if (r != NULL) OPENSSL_free(r); - } return (NULL); } |
