STACK *SSL_dup_CA_list(STACK *sk)
	{
	int i;
	STACK *ret;
	X509_NAME *name;
	ret=sk_new_null();
	for (i=0; i<sk_num(sk); i++)
		{
		name=X509_NAME_dup((X509_NAME *)sk_value(sk,i));
		if ((name == NULL) || !sk_push(ret,(char *)name))
			{
			sk_pop_free(ret,X509_NAME_free);
			return(NULL);
			}
		}
	return(ret);
	}
['STACK *SSL_dup_CA_list(STACK *sk)\n\t{\n\tint i;\n\tSTACK *ret;\n\tX509_NAME *name;\n\tret=sk_new_null();\n\tfor (i=0; i<sk_num(sk); i++)\n\t\t{\n\t\tname=X509_NAME_dup((X509_NAME *)sk_value(sk,i));\n\t\tif ((name == NULL) || !sk_push(ret,(char *)name))\n\t\t\t{\n\t\t\tsk_pop_free(ret,X509_NAME_free);\n\t\t\treturn(NULL);\n\t\t\t}\n\t\t}\n\treturn(ret);\n\t}', 'STACK *sk_new(int (*c)())\n\t{\n\tSTACK *ret;\n\tint i;\n\tif ((ret=(STACK *)Malloc(sizeof(STACK))) == NULL)\n\t\tgoto err0;\n\tif ((ret->data=(char **)Malloc(sizeof(char *)*MIN_NODES)) == NULL)\n\t\tgoto err1;\n\tfor (i=0; i<MIN_NODES; i++)\n\t\tret->data[i]=NULL;\n\tret->comp=c;\n\tret->num_alloc=MIN_NODES;\n\tret->num=0;\n\tret->sorted=0;\n\treturn(ret);\nerr1:\n\tFree((char *)ret);\nerr0:\n\treturn(NULL);\n\t}', 'int sk_num(STACK *st)\n{\n\tif(st == NULL) return -1;\n\treturn st->num;\n}', 'char *sk_value(STACK *st, int i)\n{\n\tif(st == NULL) return NULL;\n\treturn st->data[i];\n}', 'X509_NAME *X509_NAME_dup(X509_NAME *xn)\n\t{\n\treturn((X509_NAME *)ASN1_dup((int (*)())i2d_X509_NAME,\n\t\t(char *(*)())d2i_X509_NAME,(char *)xn));\n\t}', 'char *ASN1_dup(int (*i2d)(), char *(*d2i)(), char *x)\n\t{\n\tunsigned char *b,*p;\n\tlong i;\n\tchar *ret;\n\tif (x == NULL) return(NULL);\n\ti=(long)i2d(x,NULL);\n\tb=(unsigned char *)Malloc((unsigned int)i+10);\n\tif (b == NULL)\n\t\t{ ASN1err(ASN1_F_ASN1_DUP,ERR_R_MALLOC_FAILURE); return(NULL); }\n\tp= b;\n\ti=i2d(x,&p);\n\tp= b;\n\tret=d2i(NULL,&p,i);\n\tFree((char *)b);\n\treturn(ret);\n\t}', 'int sk_push(STACK *st, char *data)\n\t{\n\treturn(sk_insert(st,data,st->num));\n\t}']