summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2017-01-22 22:43:53 +0100
committerAnatol Belski <ab@php.net>2017-01-22 22:43:53 +0100
commit609507024f3e8da406d71aaabd04c1624c01ada6 (patch)
tree2d9cc27a70d6814c38dbdb2aebf5e07a13d3b72e /win32
parent8782e847b4f0e53b4c0f3e89944b4b7106c4d28f (diff)
downloadphp-git-609507024f3e8da406d71aaabd04c1624c01ada6.tar.gz
preliminary fix for bug #73971, more refactoring is needed
Diffstat (limited to 'win32')
-rw-r--r--win32/readdir.c4
-rw-r--r--win32/readdir.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/win32/readdir.c b/win32/readdir.c
index 43d5deecfd..42b528ad0a 100644
--- a/win32/readdir.c
+++ b/win32/readdir.c
@@ -103,7 +103,7 @@ struct dirent *readdir(DIR *dp)
/* wide to utf8 failed, should never happen. */
return NULL;
}
- strlcpy(dp->dent.d_name, _tmp, _MAX_FNAME+1);
+ strlcpy(dp->dent.d_name, _tmp, _MAX_FNAME*4+1);
dp->dent.d_reclen = (unsigned short)strlen(dp->dent.d_name);
free(_tmp);
@@ -138,7 +138,7 @@ int readdir_r(DIR *dp, struct dirent *entry, struct dirent **result)
result = NULL;
return 0;
}
- strlcpy(dp->dent.d_name, _tmp, _MAX_FNAME+1);
+ strlcpy(dp->dent.d_name, _tmp, _MAX_FNAME*4+1);
dp->dent.d_reclen = (unsigned short)strlen(dp->dent.d_name);
free(_tmp);
diff --git a/win32/readdir.h b/win32/readdir.h
index 73058f8804..495c36a1a9 100644
--- a/win32/readdir.h
+++ b/win32/readdir.h
@@ -22,7 +22,7 @@ struct dirent {
long d_ino; /* inode (always 1 in WIN32) */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of d_name */
- char d_name[PHP_WIN32_IOUTIL_MAXPATHLEN + 1]; /* filename (null terminated) */
+ char d_name[_MAX_FNAME*4+1]; /* filename with care about UTF-8 (null terminated) */
};
/* typedef DIR - not the same as Unix */