asn1_create_element (definitions, name, &aux);
if (result == ASN1_SUCCESS)
{
- _asn1_set_name (aux, p->name);
+ _asn1_cpy_name (aux, p);
len2 =
asn1_get_length_der (p->value,
p->value_len, &len3);
result = asn1_create_element (definitions, name, &aux);
if (result == ASN1_SUCCESS)
{
- _asn1_set_name (aux, octetNode->name);
+ _asn1_cpy_name (aux, octetNode);
len2 =
asn1_get_length_der (octetNode->value,
octetNode->value_len, &len3);
}
/******************************************************************/
+/* Function : _asn1_cpy_name */
+/* Description: copies the field NAME in a NODE_ASN element. */
+/* Parameters: */
+/* dst: a dest element pointer. */
+/* src: a source element pointer. */
+/* Return: pointer to the NODE_ASN element. */
+/******************************************************************/
+ASN1_TYPE
+_asn1_cpy_name (ASN1_TYPE dst, ASN1_TYPE src)
+{
+unsigned int nsize;
+
+ if (dst == NULL)
+ return dst;
+
+ if (src == NULL)
+ {
+ dst->name[0] = 0;
+ dst->name_hash = _asn1_bhash(dst->name, 0);
+ return dst;
+ }
+
+ nsize = _asn1_str_cpy (dst->name, sizeof (dst->name), src->name);
+ dst->name_hash = src->name_hash;
+
+ return dst;
+}
+
+/******************************************************************/
/* Function : _asn1_set_right */
/* Description: sets the field RIGHT in a NODE_ASN element. */
/* Parameters: */
ASN1_TYPE _asn1_set_name (ASN1_TYPE node, const char *name);
+ASN1_TYPE _asn1_cpy_name (ASN1_TYPE dst, ASN1_TYPE src);
+
ASN1_TYPE _asn1_set_right (ASN1_TYPE node, ASN1_TYPE right);
ASN1_TYPE _asn1_get_last_right (ASN1_TYPE node);
if (move != UP)
{
if (p_s->name[0] != 0)
- _asn1_set_name (p_d, p_s->name);
+ _asn1_cpy_name (p_d, p_s);
if (p_s->value)
_asn1_set_value (p_d, p_s->value, p_s->value_len);
if (p_s->down)
{
return ASN1_IDENTIFIER_NOT_FOUND;
}
- _asn1_set_name (p2, p->name);
+ _asn1_cpy_name (p2, p);
p2->right = p->right;
p2->left = p->left;
if (p->right)