diff options
author | Anatol Belski <ab@php.net> | 2017-01-22 22:43:53 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2017-01-22 22:43:53 +0100 |
commit | 609507024f3e8da406d71aaabd04c1624c01ada6 (patch) | |
tree | 2d9cc27a70d6814c38dbdb2aebf5e07a13d3b72e /win32 | |
parent | 8782e847b4f0e53b4c0f3e89944b4b7106c4d28f (diff) | |
download | php-git-609507024f3e8da406d71aaabd04c1624c01ada6.tar.gz |
preliminary fix for bug #73971, more refactoring is needed
Diffstat (limited to 'win32')
-rw-r--r-- | win32/readdir.c | 4 | ||||
-rw-r--r-- | win32/readdir.h | 2 |
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 */ |