diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2007-04-14 17:53:55 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2007-04-14 17:53:55 +0000 |
commit | 18f547734e94d4192fa6422227c1686a2d8a914e (patch) | |
tree | 6d042b04ed331daad70b4d116e028f3820b46c37 /crypto | |
parent | be3b365a347167ab89e4c6bcf5483c54f6c1f8d3 (diff) |
New function ASN1_STRING_copy() to copy to an already
alloacted ASN1_STRING structure.
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/asn1/asn1.h | 1 | ||||
-rw-r--r-- | crypto/asn1/asn1_lib.c | 27 |
2 files changed, 20 insertions, 8 deletions
diff --git a/crypto/asn1/asn1.h b/crypto/asn1/asn1.h index bed43ab669..487d349d64 100644 --- a/crypto/asn1/asn1.h +++ b/crypto/asn1/asn1.h @@ -765,6 +765,7 @@ DECLARE_ASN1_SET_OF(ASN1_OBJECT) ASN1_STRING * ASN1_STRING_new(void); void ASN1_STRING_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); ASN1_STRING * ASN1_STRING_dup(const ASN1_STRING *a); ASN1_STRING * ASN1_STRING_type_new(int type ); int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); diff --git a/crypto/asn1/asn1_lib.c b/crypto/asn1/asn1_lib.c index b2b557c24e..1bcb44aee2 100644 --- a/crypto/asn1/asn1_lib.c +++ b/crypto/asn1/asn1_lib.c @@ -340,20 +340,31 @@ int asn1_GetSequence(ASN1_const_CTX *c, long *length) return(1); } +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str) + { + if (str == NULL) + return 0; + dst->type = str->type; + if (!ASN1_STRING_set(dst,str->data,str->length)) + return 0; + dst->flags = str->flags; + return 1; + } + ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *str) { ASN1_STRING *ret; - - if (str == NULL) return(NULL); - if ((ret=ASN1_STRING_type_new(str->type)) == NULL) - return(NULL); - if (!ASN1_STRING_set(ret,str->data,str->length)) + if (!str) + return NULL; + ret=ASN1_STRING_new(); + if (!ret) + return NULL; + if (!ASN1_STRING_copy(ret,str)) { ASN1_STRING_free(ret); - return(NULL); + return NULL; } - ret->flags = str->flags; - return(ret); + return ret; } int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len) |