summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/objects/obj_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/objects/obj_lib.c')
-rw-r--r--src/lib/libcrypto/objects/obj_lib.c39
1 files changed, 20 insertions, 19 deletions
diff --git a/src/lib/libcrypto/objects/obj_lib.c b/src/lib/libcrypto/objects/obj_lib.c
index 0a9c756197..b0b0f2ff24 100644
--- a/src/lib/libcrypto/objects/obj_lib.c
+++ b/src/lib/libcrypto/objects/obj_lib.c
@@ -58,27 +58,28 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "lhash.h" 61#include <openssl/lhash.h>
62#include "objects.h" 62#include <openssl/objects.h>
63#include "buffer.h" 63#include <openssl/buffer.h>
64 64
65ASN1_OBJECT *OBJ_dup(o) 65ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o)
66ASN1_OBJECT *o;
67 { 66 {
68 ASN1_OBJECT *r; 67 ASN1_OBJECT *r;
69 int i; 68 int i;
69 char *ln=NULL;
70 70
71 if (o == NULL) return(NULL); 71 if (o == NULL) return(NULL);
72 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC)) 72 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
73 return(o); 73 return((ASN1_OBJECT *)o); /* XXX: ugh! Why? What kind of
74 duplication is this??? */
74 75
75 r=(ASN1_OBJECT *)ASN1_OBJECT_new(); 76 r=ASN1_OBJECT_new();
76 if (r == NULL) 77 if (r == NULL)
77 { 78 {
78 OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB); 79 OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB);
79 return(NULL); 80 return(NULL);
80 } 81 }
81 r->data=(unsigned char *)Malloc(o->length); 82 r->data=OPENSSL_malloc(o->length);
82 if (r->data == NULL) 83 if (r->data == NULL)
83 goto err; 84 goto err;
84 memcpy(r->data,o->data,o->length); 85 memcpy(r->data,o->data,o->length);
@@ -88,35 +89,35 @@ ASN1_OBJECT *o;
88 if (o->ln != NULL) 89 if (o->ln != NULL)
89 { 90 {
90 i=strlen(o->ln)+1; 91 i=strlen(o->ln)+1;
91 r->ln=(char *)Malloc(i); 92 r->ln=ln=OPENSSL_malloc(i);
92 if (r->ln == NULL) goto err; 93 if (r->ln == NULL) goto err;
93 memcpy(r->ln,o->ln,i); 94 memcpy(ln,o->ln,i);
94 } 95 }
95 96
96 if (o->sn != NULL) 97 if (o->sn != NULL)
97 { 98 {
99 char *s;
100
98 i=strlen(o->sn)+1; 101 i=strlen(o->sn)+1;
99 r->sn=(char *)Malloc(i); 102 r->sn=s=OPENSSL_malloc(i);
100 if (r->sn == NULL) goto err; 103 if (r->sn == NULL) goto err;
101 memcpy(r->sn,o->sn,i); 104 memcpy(s,o->sn,i);
102 } 105 }
103 r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC| 106 r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC|
104 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS); 107 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA);
105 return(r); 108 return(r);
106err: 109err:
107 OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE); 110 OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE);
108 if (r != NULL) 111 if (r != NULL)
109 { 112 {
110 if (r->ln != NULL) Free(r->ln); 113 if (ln != NULL) OPENSSL_free(ln);
111 if (r->data != NULL) Free(r->data); 114 if (r->data != NULL) OPENSSL_free(r->data);
112 Free(r); 115 OPENSSL_free(r);
113 } 116 }
114 return(NULL); 117 return(NULL);
115 } 118 }
116 119
117int OBJ_cmp(a,b) 120int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b)
118ASN1_OBJECT *a;
119ASN1_OBJECT *b;
120 { 121 {
121 int ret; 122 int ret;
122 123