From: Nils Larsch Date: Tue, 5 Dec 2006 21:21:10 +0000 (+0000) Subject: avoid duplicate entries in add_cert_dir() X-Git-Tag: OpenSSL_0_9_8e~52 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=66c4bb1a70ba9cac8fd90dc80dbc3f4ff08cf62a;p=openssl avoid duplicate entries in add_cert_dir() PR: 1407 Submitted by: Tomas Mraz --- diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c index ea689aed1a..f33ea7b84f 100644 --- a/crypto/x509/by_dir.c +++ b/crypto/x509/by_dir.c @@ -189,7 +189,7 @@ static int add_cert_dir(BY_DIR *ctx, const char *dir, int type) s=dir; p=s; - for (;;) + for (;;p++) { if ((*p == LIST_SEPARATOR_CHAR) || (*p == '\0')) { @@ -198,8 +198,11 @@ static int add_cert_dir(BY_DIR *ctx, const char *dir, int type) len=(int)(p-ss); if (len == 0) continue; for (j=0; jnum_dirs; j++) - if (strncmp(ctx->dirs[j],ss,(unsigned int)len) == 0) - continue; + if (strlen(ctx->dirs[j]) == len && + strncmp(ctx->dirs[j],ss,(unsigned int)len) == 0) + break; + if (jnum_dirs) + continue; if (ctx->num_dirs_alloced < (ctx->num_dirs+1)) { ctx->num_dirs_alloced+=10; @@ -231,7 +234,6 @@ static int add_cert_dir(BY_DIR *ctx, const char *dir, int type) ctx->num_dirs++; } if (*p == '\0') break; - p++; } return(1); }