if (len == 0) continue;
if (len == 0) { if (ss == p) break; continue; }
static int add_cert_dir(BY_DIR *ctx, const char *dir, int type)	{	int j,len;	int *ip;	const char *s,*ss,*p;	char **pp;	if (dir == NULL || !*dir)	    {	    X509err(X509_F_ADD_CERT_DIR,X509_R_INVALID_DIRECTORY);	    return 0;	    }	s=dir;	p=s;	for (;;)		{		if ((*p == LIST_SEPARATOR_CHAR) || (*p == '\0'))			{			ss=s;			s=p+1;			len=(int)(p-ss);			if (len == 0) continue;			for (j=0; j<ctx->num_dirs; j++)				if (strncmp(ctx->dirs[j],ss,(unsigned int)len) == 0)					continue;			if (ctx->num_dirs_alloced < (ctx->num_dirs+1))				{				ctx->num_dirs_alloced+=10;				pp=(char **)Malloc(ctx->num_dirs_alloced*					sizeof(char *));				ip=(int *)Malloc(ctx->num_dirs_alloced*					sizeof(int));				if ((pp == NULL) || (ip == NULL))					{					X509err(X509_F_ADD_CERT_DIR,ERR_R_MALLOC_FAILURE);					return(0);					}				memcpy(pp,ctx->dirs,(ctx->num_dirs_alloced-10)*					sizeof(char *));				memcpy(ip,ctx->dirs_type,(ctx->num_dirs_alloced-10)*					sizeof(int));				if (ctx->dirs != NULL)					Free((char *)ctx->dirs);				if (ctx->dirs_type != NULL)					Free((char *)ctx->dirs_type);				ctx->dirs=pp;				ctx->dirs_type=ip;				}			ctx->dirs_type[ctx->num_dirs]=type;			ctx->dirs[ctx->num_dirs]=(char *)Malloc((unsigned int)len+1);			if (ctx->dirs[ctx->num_dirs] == NULL) return(0);			strncpy(ctx->dirs[ctx->num_dirs],ss,(unsigned int)len);			ctx->dirs[ctx->num_dirs][len]='\0';			ctx->num_dirs++;			}		if (*p == '\0') break;		p++;		}	return(1);	}