diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_object.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_object.c | 100 |
1 files changed, 50 insertions, 50 deletions
diff --git a/src/lib/libcrypto/asn1/a_object.c b/src/lib/libcrypto/asn1/a_object.c index 9b3bae0442..cc4f5dd424 100644 --- a/src/lib/libcrypto/asn1/a_object.c +++ b/src/lib/libcrypto/asn1/a_object.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: a_object.c,v 1.33 2021/12/03 16:58:11 jsing Exp $ */ | 1 | /* $OpenBSD: a_object.c,v 1.34 2021/12/25 07:48:09 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -66,6 +66,55 @@ | |||
66 | #include <openssl/buffer.h> | 66 | #include <openssl/buffer.h> |
67 | #include <openssl/objects.h> | 67 | #include <openssl/objects.h> |
68 | 68 | ||
69 | ASN1_OBJECT * | ||
70 | ASN1_OBJECT_new(void) | ||
71 | { | ||
72 | ASN1_OBJECT *a; | ||
73 | |||
74 | if ((a = calloc(1, sizeof(ASN1_OBJECT))) == NULL) { | ||
75 | ASN1error(ERR_R_MALLOC_FAILURE); | ||
76 | return (NULL); | ||
77 | } | ||
78 | a->flags = ASN1_OBJECT_FLAG_DYNAMIC; | ||
79 | |||
80 | return a; | ||
81 | } | ||
82 | |||
83 | void | ||
84 | ASN1_OBJECT_free(ASN1_OBJECT *a) | ||
85 | { | ||
86 | if (a == NULL) | ||
87 | return; | ||
88 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) { | ||
89 | free((void *)a->sn); | ||
90 | free((void *)a->ln); | ||
91 | a->sn = a->ln = NULL; | ||
92 | } | ||
93 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) { | ||
94 | freezero((void *)a->data, a->length); | ||
95 | a->data = NULL; | ||
96 | a->length = 0; | ||
97 | } | ||
98 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC) | ||
99 | free(a); | ||
100 | } | ||
101 | |||
102 | ASN1_OBJECT * | ||
103 | ASN1_OBJECT_create(int nid, unsigned char *data, int len, | ||
104 | const char *sn, const char *ln) | ||
105 | { | ||
106 | ASN1_OBJECT o; | ||
107 | |||
108 | o.sn = sn; | ||
109 | o.ln = ln; | ||
110 | o.data = data; | ||
111 | o.nid = nid; | ||
112 | o.length = len; | ||
113 | o.flags = ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS | | ||
114 | ASN1_OBJECT_FLAG_DYNAMIC_DATA; | ||
115 | return (OBJ_dup(&o)); | ||
116 | } | ||
117 | |||
69 | int | 118 | int |
70 | i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp) | 119 | i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp) |
71 | { | 120 | { |
@@ -350,52 +399,3 @@ err: | |||
350 | ASN1_OBJECT_free(ret); | 399 | ASN1_OBJECT_free(ret); |
351 | return (NULL); | 400 | return (NULL); |
352 | } | 401 | } |
353 | |||
354 | ASN1_OBJECT * | ||
355 | ASN1_OBJECT_new(void) | ||
356 | { | ||
357 | ASN1_OBJECT *a; | ||
358 | |||
359 | if ((a = calloc(1, sizeof(ASN1_OBJECT))) == NULL) { | ||
360 | ASN1error(ERR_R_MALLOC_FAILURE); | ||
361 | return (NULL); | ||
362 | } | ||
363 | a->flags = ASN1_OBJECT_FLAG_DYNAMIC; | ||
364 | |||
365 | return a; | ||
366 | } | ||
367 | |||
368 | void | ||
369 | ASN1_OBJECT_free(ASN1_OBJECT *a) | ||
370 | { | ||
371 | if (a == NULL) | ||
372 | return; | ||
373 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) { | ||
374 | free((void *)a->sn); | ||
375 | free((void *)a->ln); | ||
376 | a->sn = a->ln = NULL; | ||
377 | } | ||
378 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) { | ||
379 | freezero((void *)a->data, a->length); | ||
380 | a->data = NULL; | ||
381 | a->length = 0; | ||
382 | } | ||
383 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC) | ||
384 | free(a); | ||
385 | } | ||
386 | |||
387 | ASN1_OBJECT * | ||
388 | ASN1_OBJECT_create(int nid, unsigned char *data, int len, | ||
389 | const char *sn, const char *ln) | ||
390 | { | ||
391 | ASN1_OBJECT o; | ||
392 | |||
393 | o.sn = sn; | ||
394 | o.ln = ln; | ||
395 | o.data = data; | ||
396 | o.nid = nid; | ||
397 | o.length = len; | ||
398 | o.flags = ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS | | ||
399 | ASN1_OBJECT_FLAG_DYNAMIC_DATA; | ||
400 | return (OBJ_dup(&o)); | ||
401 | } | ||