diff options
| author | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-12-10 07:15:28 +0000 |
|---|---|---|
| committer | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-12-10 07:15:28 +0000 |
| commit | b2cd08f33dcc1c0b5d318370625a01fa0323cded (patch) | |
| tree | 913443901ff866db3d6dd1360bc690b61cd11304 /ext/standard/ftp_fopen_wrapper.c | |
| parent | 35c3a7f525b18ab01a62d97c70e533e4fd6e5b23 (diff) | |
| download | php-git-b2cd08f33dcc1c0b5d318370625a01fa0323cded.tar.gz | |
Fix bug #26574 (basename() doesn't work properly with multibyte characters)
Diffstat (limited to 'ext/standard/ftp_fopen_wrapper.c')
| -rw-r--r-- | ext/standard/ftp_fopen_wrapper.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c index 6d4014fdd9..52a4e4e289 100644 --- a/ext/standard/ftp_fopen_wrapper.c +++ b/ext/standard/ftp_fopen_wrapper.c @@ -562,7 +562,7 @@ static size_t php_ftp_dirstream_read(php_stream *stream, char *buf, size_t count php_stream *innerstream = (php_stream *)stream->abstract; size_t tmp_len; char *basename; - int basename_len; + size_t basename_len; if (count != sizeof(php_stream_dirent)) { return 0; @@ -586,8 +586,9 @@ static size_t php_ftp_dirstream_read(php_stream *stream, char *buf, size_t count return 0; } - memcpy(ent->d_name, basename, MIN((int)sizeof(ent->d_name), basename_len)-1); - ent->d_name[sizeof(ent->d_name)-1] = '\0'; + tmp_len = MIN(sizeof(ent->d_name), basename_len) - 1; + memcpy(ent->d_name, basename, tmp_len); + ent->d_name[tmp_len] = '\0'; efree(basename); return sizeof(php_stream_dirent); |
