Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/win32/ngx_files.c')
-rw-r--r--src/os/win32/ngx_files.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
index 55d7f7696..0b131b58a 100644
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -427,16 +427,31 @@ ngx_realpath(u_char *path, u_char *resolved)
ngx_int_t
ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
{
- ngx_cpystrn(name->data + name->len, NGX_DIR_MASK, NGX_DIR_MASK_LEN + 1);
+ u_char *pattern, *p;
+ ngx_err_t err;
+
+ pattern = malloc(name->len + 3);
+ if (pattern == NULL) {
+ return NGX_ERROR;
+ }
- dir->dir = FindFirstFile((const char *) name->data, &dir->finddata);
+ p = ngx_cpymem(pattern, name->data, name->len);
- name->data[name->len] = '\0';
+ *p++ = '/';
+ *p++ = '*';
+ *p = '\0';
+
+ dir->dir = FindFirstFile((const char *) pattern, &dir->finddata);
if (dir->dir == INVALID_HANDLE_VALUE) {
+ err = ngx_errno;
+ ngx_free(pattern);
+ ngx_set_errno(err);
return NGX_ERROR;
}
+ ngx_free(pattern);
+
dir->valid_info = 1;
dir->ready = 1;