mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-03 20:54:41 +02:00
make sure stat uses full path for REG check
This commit is contained in:
21
src/crl.c
21
src/crl.c
@@ -30,6 +30,7 @@
|
|||||||
#include <cyassl/error.h>
|
#include <cyassl/error.h>
|
||||||
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
@@ -532,8 +533,19 @@ int LoadCRL(CYASSL_CRL* crl, const char* path, int type, int monitor)
|
|||||||
return BAD_PATH_ERROR;
|
return BAD_PATH_ERROR;
|
||||||
}
|
}
|
||||||
while ( (entry = readdir(dir)) != NULL) {
|
while ( (entry = readdir(dir)) != NULL) {
|
||||||
if (entry->d_type & DT_REG) {
|
char name[MAX_FILENAME_SZ];
|
||||||
char name[MAX_FILENAME_SZ];
|
struct stat s;
|
||||||
|
|
||||||
|
XMEMSET(name, 0, sizeof(name));
|
||||||
|
XSTRNCPY(name, path, MAX_FILENAME_SZ/2 - 2);
|
||||||
|
XSTRNCAT(name, "/", 1);
|
||||||
|
XSTRNCAT(name, entry->d_name, MAX_FILENAME_SZ/2);
|
||||||
|
|
||||||
|
if (stat(name, &s) != 0) {
|
||||||
|
CYASSL_MSG("stat on name failed");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (s.st_mode & S_IFREG) {
|
||||||
|
|
||||||
if (type == SSL_FILETYPE_PEM) {
|
if (type == SSL_FILETYPE_PEM) {
|
||||||
if (strstr(entry->d_name, ".pem") == NULL) {
|
if (strstr(entry->d_name, ".pem") == NULL) {
|
||||||
@@ -550,11 +562,6 @@ int LoadCRL(CYASSL_CRL* crl, const char* path, int type, int monitor)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XMEMSET(name, 0, sizeof(name));
|
|
||||||
XSTRNCPY(name, path, MAX_FILENAME_SZ/2 - 2);
|
|
||||||
XSTRNCAT(name, "/", 1);
|
|
||||||
XSTRNCAT(name, entry->d_name, MAX_FILENAME_SZ/2);
|
|
||||||
|
|
||||||
if (ProcessFile(NULL, name, type, CRL_TYPE, NULL, 0, crl)
|
if (ProcessFile(NULL, name, type, CRL_TYPE, NULL, 0, crl)
|
||||||
!= SSL_SUCCESS) {
|
!= SSL_SUCCESS) {
|
||||||
CYASSL_MSG("CRL file load failed, continuing");
|
CYASSL_MSG("CRL file load failed, continuing");
|
||||||
|
16
src/ssl.c
16
src/ssl.c
@@ -1672,20 +1672,20 @@ int CyaSSL_CTX_load_verify_locations(CYASSL_CTX* ctx, const char* file,
|
|||||||
return BAD_PATH_ERROR;
|
return BAD_PATH_ERROR;
|
||||||
}
|
}
|
||||||
while ( ret == SSL_SUCCESS && (entry = readdir(dir)) != NULL) {
|
while ( ret == SSL_SUCCESS && (entry = readdir(dir)) != NULL) {
|
||||||
|
char name[MAX_FILENAME_SZ];
|
||||||
struct stat s;
|
struct stat s;
|
||||||
if (stat(entry->d_name, &s) != 0) {
|
|
||||||
|
XMEMSET(name, 0, sizeof(name));
|
||||||
|
XSTRNCPY(name, path, MAX_FILENAME_SZ/2 - 2);
|
||||||
|
XSTRNCAT(name, "/", 1);
|
||||||
|
XSTRNCAT(name, entry->d_name, MAX_FILENAME_SZ/2);
|
||||||
|
|
||||||
|
if (stat(name, &s) != 0) {
|
||||||
CYASSL_MSG("stat on name failed");
|
CYASSL_MSG("stat on name failed");
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
return BAD_PATH_ERROR;
|
return BAD_PATH_ERROR;
|
||||||
}
|
}
|
||||||
if (s.st_mode & S_IFREG) {
|
if (s.st_mode & S_IFREG) {
|
||||||
char name[MAX_FILENAME_SZ];
|
|
||||||
|
|
||||||
XMEMSET(name, 0, sizeof(name));
|
|
||||||
XSTRNCPY(name, path, MAX_FILENAME_SZ/2 - 2);
|
|
||||||
XSTRNCAT(name, "/", 1);
|
|
||||||
XSTRNCAT(name, entry->d_name, MAX_FILENAME_SZ/2);
|
|
||||||
|
|
||||||
ret = ProcessFile(ctx, name, SSL_FILETYPE_PEM, CA_TYPE, NULL,0,
|
ret = ProcessFile(ctx, name, SSL_FILETYPE_PEM, CA_TYPE, NULL,0,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user