summaryrefslogtreecommitdiff
path: root/Cryptlib/OpenSSL/crypto/objects/obj_lib.c
diff options
context:
space:
mode:
authorGary Ching-Pang Lin <glin@suse.com>2015-07-28 11:46:38 -0400
committerPeter Jones <pjones@redhat.com>2015-07-28 11:46:38 -0400
commit5ce38c90cf43ee79cd999716ea83a5a44eeb819e (patch)
tree2fb3d9dd667c772fae5f87fa61e1501cf12da0ce /Cryptlib/OpenSSL/crypto/objects/obj_lib.c
parent69ba24ff72921ecabbb47178de40dc5a79350040 (diff)
downloadefi-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.c38
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);
}