Index: src/platform-posix.cc |
diff --git a/src/platform-posix.cc b/src/platform-posix.cc |
index 83f6c8112edf0732e4de957779e393d13d2deda3..7082589298398e1b9eff864acdef3120bf591c77 100644 |
--- a/src/platform-posix.cc |
+++ b/src/platform-posix.cc |
@@ -37,6 +37,7 @@ |
#include <sys/resource.h> |
#include <sys/time.h> |
#include <sys/types.h> |
+#include <sys/stat.h> |
#include <arpa/inet.h> |
#include <netinet/in.h> |
@@ -130,7 +131,14 @@ int OS::GetLastError() { |
// |
FILE* OS::FOpen(const char* path, const char* mode) { |
- return fopen(path, mode); |
+ FILE* file = fopen(path, mode); |
+ if (file == NULL) return NULL; |
+ struct stat file_stat; |
+ if (fstat(fileno(file), &file_stat) != 0) return NULL; |
+ bool is_regular_file = ((file_stat.st_mode & S_IFREG) != 0); |
+ if (is_regular_file) return file; |
+ fclose(file); |
+ return NULL; |
} |