diff options
| author | djm <> | 2010-10-01 22:59:01 +0000 |
|---|---|---|
| committer | djm <> | 2010-10-01 22:59:01 +0000 |
| commit | 8922d4bc4a8b8893d72a48deb2cdf58215f98505 (patch) | |
| tree | 939b752540947d33507b3acc48d76a8bfb7c3dc3 /src/lib/libcrypto/objects/obj_lib.c | |
| parent | 76262f7bf9262f965142b1b2b2105cb279c5c696 (diff) | |
| download | openbsd-8922d4bc4a8b8893d72a48deb2cdf58215f98505.tar.gz openbsd-8922d4bc4a8b8893d72a48deb2cdf58215f98505.tar.bz2 openbsd-8922d4bc4a8b8893d72a48deb2cdf58215f98505.zip | |
resolve conflicts, fix local changes
Diffstat (limited to 'src/lib/libcrypto/objects/obj_lib.c')
| -rw-r--r-- | src/lib/libcrypto/objects/obj_lib.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/lib/libcrypto/objects/obj_lib.c b/src/lib/libcrypto/objects/obj_lib.c index 706fa0b0e7..23e9d48cdf 100644 --- a/src/lib/libcrypto/objects/obj_lib.c +++ b/src/lib/libcrypto/objects/obj_lib.c | |||
| @@ -66,7 +66,8 @@ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o) | |||
| 66 | { | 66 | { |
| 67 | ASN1_OBJECT *r; | 67 | ASN1_OBJECT *r; |
| 68 | int i; | 68 | int i; |
| 69 | char *ln=NULL; | 69 | char *ln=NULL,*sn=NULL; |
| 70 | unsigned char *data=NULL; | ||
| 70 | 71 | ||
| 71 | if (o == NULL) return(NULL); | 72 | if (o == NULL) return(NULL); |
| 72 | if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC)) | 73 | if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC)) |
| @@ -79,42 +80,42 @@ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o) | |||
| 79 | OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB); | 80 | OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB); |
| 80 | return(NULL); | 81 | return(NULL); |
| 81 | } | 82 | } |
| 82 | r->data=OPENSSL_malloc(o->length); | 83 | data=OPENSSL_malloc(o->length); |
| 83 | if (r->data == NULL) | 84 | if (data == NULL) |
| 84 | goto err; | 85 | goto err; |
| 85 | if (o->data != NULL) | 86 | if (o->data != NULL) |
| 86 | memcpy(r->data,o->data,o->length); | 87 | memcpy(data,o->data,o->length); |
| 88 | /* once data attached to object it remains const */ | ||
| 89 | r->data = data; | ||
| 87 | r->length=o->length; | 90 | r->length=o->length; |
| 88 | r->nid=o->nid; | 91 | r->nid=o->nid; |
| 89 | r->ln=r->sn=NULL; | 92 | r->ln=r->sn=NULL; |
| 90 | if (o->ln != NULL) | 93 | if (o->ln != NULL) |
| 91 | { | 94 | { |
| 92 | i=strlen(o->ln)+1; | 95 | i=strlen(o->ln)+1; |
| 93 | r->ln=ln=OPENSSL_malloc(i); | 96 | ln=OPENSSL_malloc(i); |
| 94 | if (r->ln == NULL) goto err; | 97 | if (ln == NULL) goto err; |
| 95 | memcpy(ln,o->ln,i); | 98 | memcpy(ln,o->ln,i); |
| 99 | r->ln=ln; | ||
| 96 | } | 100 | } |
| 97 | 101 | ||
| 98 | if (o->sn != NULL) | 102 | if (o->sn != NULL) |
| 99 | { | 103 | { |
| 100 | char *s; | ||
| 101 | |||
| 102 | i=strlen(o->sn)+1; | 104 | i=strlen(o->sn)+1; |
| 103 | r->sn=s=OPENSSL_malloc(i); | 105 | sn=OPENSSL_malloc(i); |
| 104 | if (r->sn == NULL) goto err; | 106 | if (sn == NULL) goto err; |
| 105 | memcpy(s,o->sn,i); | 107 | memcpy(sn,o->sn,i); |
| 108 | r->sn=sn; | ||
| 106 | } | 109 | } |
| 107 | r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC| | 110 | r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC| |
| 108 | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA); | 111 | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA); |
| 109 | return(r); | 112 | return(r); |
| 110 | err: | 113 | err: |
| 111 | OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE); | 114 | OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE); |
| 112 | if (r != NULL) | 115 | if (ln != NULL) OPENSSL_free(ln); |
| 113 | { | 116 | if (sn != NULL) OPENSSL_free(sn); |
| 114 | if (ln != NULL) OPENSSL_free(ln); | 117 | if (data != NULL) OPENSSL_free(data); |
| 115 | if (r->data != NULL) OPENSSL_free(r->data); | 118 | if (r != NULL) OPENSSL_free(r); |
| 116 | OPENSSL_free(r); | ||
| 117 | } | ||
| 118 | return(NULL); | 119 | return(NULL); |
| 119 | } | 120 | } |
| 120 | 121 | ||
