mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
Fix regression of no-posix-io builds
Instead of using stat() to check if a file is a directory we just skip . and .. as a workaround. Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> (Merged from https://github.com/openssl/openssl/pull/20786)
This commit is contained in:
parent
24a3225443
commit
3155b5a90e
@ -29,11 +29,11 @@
|
||||
# ifdef _WIN32
|
||||
# define stat _stat
|
||||
# endif
|
||||
# ifndef S_ISDIR
|
||||
# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef S_ISDIR
|
||||
# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
|
||||
static int ssl_security_default_callback(const SSL *s, const SSL_CTX *ctx,
|
||||
int op, int bits, int nid, void *other,
|
||||
@ -881,8 +881,14 @@ int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
|
||||
while ((filename = OPENSSL_DIR_read(&d, dir))) {
|
||||
char buf[1024];
|
||||
int r;
|
||||
#ifndef OPENSSL_NO_POSIX_IO
|
||||
struct stat st;
|
||||
|
||||
#else
|
||||
/* Cannot use stat so just skip current and parent directories */
|
||||
if (strcmp(filename, ".") == 0 || strcmp(filename, "..") == 0)
|
||||
continue;
|
||||
#endif
|
||||
if (strlen(dir) + strlen(filename) + 2 > sizeof(buf)) {
|
||||
ERR_raise(ERR_LIB_SSL, SSL_R_PATH_TOO_LONG);
|
||||
goto err;
|
||||
@ -892,9 +898,11 @@ int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
|
||||
#else
|
||||
r = BIO_snprintf(buf, sizeof(buf), "%s/%s", dir, filename);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_POSIX_IO
|
||||
/* Skip subdirectories */
|
||||
if (!stat(buf, &st) && S_ISDIR(st.st_mode))
|
||||
continue;
|
||||
#endif
|
||||
if (r <= 0 || r >= (int)sizeof(buf))
|
||||
goto err;
|
||||
if (!SSL_add_file_cert_subjects_to_stack(stack, buf))
|
||||
|
Loading…
Reference in New Issue
Block a user