Fixed bug #31347 (is_dir and is_file (incorrectly) return true for any string

greater then 255 characters).
This commit is contained in:
Ilia Alshanetsky 2005-12-20 14:24:14 +00:00
parent efff8a45e2
commit 5df2f5df42
2 changed files with 8 additions and 3 deletions

View File

@ -42,6 +42,8 @@ char *alloca ();
#ifndef MAXPATHLEN
# ifdef PATH_MAX
# define MAXPATHLEN PATH_MAX
# elif defined(MAX_PATH)
# define MAXPATHLEN MAX_PATH
# else
# define MAXPATHLEN 256
# endif

View File

@ -478,13 +478,14 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
#endif
#if defined(TSRM_WIN32)
{
char *dummy = NULL;
int new_path_length;
new_path_length = GetLongPathName(path, dummy, 0) + 1;
new_path_length = GetLongPathName(path, NULL, 0);
if (new_path_length == 0) {
return 1;
}
/* GetLongPathName already counts the \0 */
new_path = (char *) malloc(new_path_length);
if (!new_path) {
return 1;
@ -856,7 +857,9 @@ CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC)
int retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
virtual_file_ex(&new_state, path, NULL, 1);
if (virtual_file_ex(&new_state, path, NULL, 1)) {
return -1;
}
retval = stat(new_state.cwd, buf);