summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509_att.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509/x509_att.c')
-rw-r--r--src/lib/libcrypto/x509/x509_att.c42
1 files changed, 16 insertions, 26 deletions
diff --git a/src/lib/libcrypto/x509/x509_att.c b/src/lib/libcrypto/x509/x509_att.c
index 98460e8921..7f924fbe39 100644
--- a/src/lib/libcrypto/x509/x509_att.c
+++ b/src/lib/libcrypto/x509/x509_att.c
@@ -91,8 +91,7 @@ int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, ASN1_OBJECT *obj,
91 if (lastpos < 0) 91 if (lastpos < 0)
92 lastpos=0; 92 lastpos=0;
93 n=sk_X509_ATTRIBUTE_num(sk); 93 n=sk_X509_ATTRIBUTE_num(sk);
94 for ( ; lastpos < n; lastpos++) 94 for ( ; lastpos < n; lastpos++) {
95 {
96 ex=sk_X509_ATTRIBUTE_value(sk,lastpos); 95 ex=sk_X509_ATTRIBUTE_value(sk,lastpos);
97 if (OBJ_cmp(ex->object,obj) == 0) 96 if (OBJ_cmp(ex->object,obj) == 0)
98 return(lastpos); 97 return(lastpos);
@@ -124,18 +123,15 @@ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
124 X509_ATTRIBUTE *new_attr=NULL; 123 X509_ATTRIBUTE *new_attr=NULL;
125 STACK_OF(X509_ATTRIBUTE) *sk=NULL; 124 STACK_OF(X509_ATTRIBUTE) *sk=NULL;
126 125
127 if (x == NULL) 126 if (x == NULL) {
128 {
129 X509err(X509_F_X509AT_ADD1_ATTR, ERR_R_PASSED_NULL_PARAMETER); 127 X509err(X509_F_X509AT_ADD1_ATTR, ERR_R_PASSED_NULL_PARAMETER);
130 goto err2; 128 goto err2;
131 } 129 }
132 130
133 if (*x == NULL) 131 if (*x == NULL) {
134 {
135 if ((sk=sk_X509_ATTRIBUTE_new_null()) == NULL) 132 if ((sk=sk_X509_ATTRIBUTE_new_null()) == NULL)
136 goto err; 133 goto err;
137 } 134 } else
138 else
139 sk= *x; 135 sk= *x;
140 136
141 if ((new_attr=X509_ATTRIBUTE_dup(attr)) == NULL) 137 if ((new_attr=X509_ATTRIBUTE_dup(attr)) == NULL)
@@ -215,11 +211,10 @@ X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
215 X509_ATTRIBUTE *ret; 211 X509_ATTRIBUTE *ret;
216 212
217 obj=OBJ_nid2obj(nid); 213 obj=OBJ_nid2obj(nid);
218 if (obj == NULL) 214 if (obj == NULL) {
219 {
220 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_NID,X509_R_UNKNOWN_NID); 215 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_NID,X509_R_UNKNOWN_NID);
221 return(NULL); 216 return(NULL);
222 } 217 }
223 ret=X509_ATTRIBUTE_create_by_OBJ(attr,obj,atrtype,data,len); 218 ret=X509_ATTRIBUTE_create_by_OBJ(attr,obj,atrtype,data,len);
224 if (ret == NULL) ASN1_OBJECT_free(obj); 219 if (ret == NULL) ASN1_OBJECT_free(obj);
225 return(ret); 220 return(ret);
@@ -230,14 +225,12 @@ X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
230{ 225{
231 X509_ATTRIBUTE *ret; 226 X509_ATTRIBUTE *ret;
232 227
233 if ((attr == NULL) || (*attr == NULL)) 228 if ((attr == NULL) || (*attr == NULL)) {
234 { 229 if ((ret=X509_ATTRIBUTE_new()) == NULL) {
235 if ((ret=X509_ATTRIBUTE_new()) == NULL)
236 {
237 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ,ERR_R_MALLOC_FAILURE); 230 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ,ERR_R_MALLOC_FAILURE);
238 return(NULL); 231 return(NULL);
239 }
240 } 232 }
233 }
241 else 234 else
242 ret= *attr; 235 ret= *attr;
243 236
@@ -256,22 +249,21 @@ err:
256 249
257X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, 250X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
258 const char *atrname, int type, const unsigned char *bytes, int len) 251 const char *atrname, int type, const unsigned char *bytes, int len)
259 { 252{
260 ASN1_OBJECT *obj; 253 ASN1_OBJECT *obj;
261 X509_ATTRIBUTE *nattr; 254 X509_ATTRIBUTE *nattr;
262 255
263 obj=OBJ_txt2obj(atrname, 0); 256 obj=OBJ_txt2obj(atrname, 0);
264 if (obj == NULL) 257 if (obj == NULL) {
265 {
266 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_TXT, 258 X509err(X509_F_X509_ATTRIBUTE_CREATE_BY_TXT,
267 X509_R_INVALID_FIELD_NAME); 259 X509_R_INVALID_FIELD_NAME);
268 ERR_add_error_data(2, "name=", atrname); 260 ERR_add_error_data(2, "name=", atrname);
269 return(NULL); 261 return(NULL);
270 } 262 }
271 nattr = X509_ATTRIBUTE_create_by_OBJ(attr,obj,type,bytes,len); 263 nattr = X509_ATTRIBUTE_create_by_OBJ(attr,obj,type,bytes,len);
272 ASN1_OBJECT_free(obj); 264 ASN1_OBJECT_free(obj);
273 return nattr; 265 return nattr;
274 } 266}
275 267
276int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj) 268int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj)
277{ 269{
@@ -310,12 +302,10 @@ int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, const void *dat
310 if (attrtype == 0) 302 if (attrtype == 0)
311 return 1; 303 return 1;
312 if(!(ttmp = ASN1_TYPE_new())) goto err; 304 if(!(ttmp = ASN1_TYPE_new())) goto err;
313 if ((len == -1) && !(attrtype & MBSTRING_FLAG)) 305 if ((len == -1) && !(attrtype & MBSTRING_FLAG)) {
314 {
315 if (!ASN1_TYPE_set1(ttmp, attrtype, data)) 306 if (!ASN1_TYPE_set1(ttmp, attrtype, data))
316 goto err; 307 goto err;
317 } 308 } else
318 else
319 ASN1_TYPE_set(ttmp, atype, stmp); 309 ASN1_TYPE_set(ttmp, atype, stmp);
320 if(!sk_ASN1_TYPE_push(attr->value.set, ttmp)) goto err; 310 if(!sk_ASN1_TYPE_push(attr->value.set, ttmp)) goto err;
321 return 1; 311 return 1;