Fix PR 19089: Environment variable TMP may yield gcc: abort
Even though I cannot reproduce the ICE any more, this is still a bug. We check already to see if we can access the directory but never check to see if the path is actually a directory. This adds the check and now we reject the file as not usable as a tmp directory. OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions. libiberty/ChangeLog: * make-temp-file.c (try_dir): Check to see if the dir is actually a directory.
This commit is contained in:
parent
2f0dd172bc
commit
68332ab7ec
@ -39,6 +39,10 @@ Boston, MA 02110-1301, USA. */
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#if HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef R_OK
|
||||
#define R_OK 4
|
||||
@ -76,7 +80,17 @@ try_dir (const char *dir, const char *base)
|
||||
return base;
|
||||
if (dir != 0
|
||||
&& access (dir, R_OK | W_OK | X_OK) == 0)
|
||||
return dir;
|
||||
{
|
||||
/* Check to make sure dir is actually a directory. */
|
||||
#ifdef S_ISDIR
|
||||
struct stat s;
|
||||
if (stat (dir, &s))
|
||||
return NULL;
|
||||
if (!S_ISDIR (s.st_mode))
|
||||
return NULL;
|
||||
#endif
|
||||
return dir;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user