if (ne_value == NULL)
if (!*ne_values[i])
static X509_NAME *do_subject(char *subject)	{	X509_NAME *n = NULL;	int i, nid, ne_num=0;	char *ne_name = NULL;	char *ne_value = NULL;	char *tmp = NULL;	char *p[2];	char *str_list[256];       	p[0] = ",/";	p[1] = "=";	n = X509_NAME_new();	tmp = strtok(subject, p[0]);	while((tmp != NULL) && (ne_num < (sizeof str_list/sizeof *str_list)))		{		char *token = tmp;		while (token[0] == ' ')			token++;		str_list[ne_num] = token;		tmp = strtok(NULL, p[0]);		ne_num++;		}	for (i = 0; i < ne_num; i++)		{		ne_name  = strtok(str_list[i], p[1]);		ne_value = strtok(NULL, p[1]);		if ((nid=OBJ_txt2nid(ne_name)) == NID_undef)			{			BIO_printf(bio_err, "Subject Attribute %s has no known NID, skipped\n", ne_name);			continue;			}		if (ne_value == NULL)			{			BIO_printf(bio_err, "No value provided for Subject Attribute %s, skipped\n", ne_name);			continue;			}		if (!X509_NAME_add_entry_by_NID(n, nid, MBSTRING_ASC, (unsigned char*)ne_value, -1,-1,0))			{			X509_NAME_free(n);			return NULL;			}		}	return n;	}