mirror of https://github.com/python/cpython
test_glob found a nasty bug in GUSI opendir(): it will not fail when called on files, but in stead open the parent directory! We now explicitly test for the argument being a directory and simulate ENOTDIR otherwise.
This commit is contained in:
parent
b5982221bb
commit
d7b568ac4d
|
@ -311,6 +311,24 @@ mac_listdir(self, args)
|
|||
struct dirent *ep;
|
||||
if (!PyArg_ParseTuple(args, "s", &name))
|
||||
return NULL;
|
||||
#ifdef USE_GUSI
|
||||
/* Work around a bug in GUSI: if you opendir() a file it will
|
||||
** actually opendir() the parent directory.
|
||||
*/
|
||||
{
|
||||
struct stat stb;
|
||||
int res;
|
||||
|
||||
res = stat(name, &stb);
|
||||
if ( res < 0 )
|
||||
return mac_error();
|
||||
if (!S_ISDIR(stb.st_mode) ) {
|
||||
errno = ENOTDIR;
|
||||
return mac_error();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
if ((dirp = opendir(name)) == NULL) {
|
||||
Py_BLOCK_THREADS
|
||||
|
|
Loading…
Reference in New Issue