diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-08-18 10:04:02 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-08-19 23:07:58 +0000 |
commit | 14ac3e5db232137923fd597eb15dc61c875bf48c (patch) | |
tree | 4e45180b28d3af1ff72c82c4c895be76b81b7750 | |
parent | 6e4d1a0cf21ee18d6584042cd9bea3a7d1d24a56 (diff) |
Fix sandboxing of localtime syscall
The check OS(LINUX) does not work here, so use the Qt OS defines, and
remove the stat and fopen overrides that Chromium no longer proxies this
way.
Task-number: QTBUG-55125
Change-Id: Ie03b8e0cabd100f2f72b7ab1cff5dc8697ba69ad
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r-- | src/process/main.cpp | 64 |
1 files changed, 1 insertions, 63 deletions
diff --git a/src/process/main.cpp b/src/process/main.cpp index 38bb5409e..d2f9d2337 100644 --- a/src/process/main.cpp +++ b/src/process/main.cpp @@ -42,10 +42,7 @@ #include <QCoreApplication> #include <stdio.h> -#if defined(OS_LINUX) -#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(OS_ANDROID) && !defined(HAVE_XSTAT) -#define HAVE_XSTAT 1 -#endif +#if defined(Q_OS_LINUX) struct tm; struct stat; @@ -59,19 +56,6 @@ struct tm* localtime_r_override(const time_t* timep, struct tm* result); struct tm* localtime64_r_override(const time_t* timep, struct tm* result); } -// exported in libc_urandom_proxy.cc -namespace sandbox { -FILE* fopen_override(const char* path, const char* mode); -FILE* fopen64_override(const char* path, const char* mode); -#if HAVE_XSTAT -int xstat_override(int version, const char *path, struct stat *buf); -int xstat64_override(int version, const char *path, struct stat64 *buf); -#else -int stat_override(const char *path, struct stat *buf); -int stat64_override(const char *path, struct stat64 *buf); -#endif -} - // from zygote_main_linux.cc __attribute__ ((__visibility__("default"))) struct tm* localtime_proxy(const time_t* timep) __asm__ ("localtime"); @@ -101,52 +85,6 @@ struct tm* localtime64_r_proxy(const time_t* timep, struct tm* result) return content::localtime64_r_override(timep, result); } -// from libc_urandom_proxy.cc -__attribute__ ((__visibility__("default"))) -FILE* fopen_proxy(const char* path, const char* mode) __asm__ ("fopen"); -FILE* fopen_proxy(const char* path, const char* mode) -{ - return sandbox::fopen_override(path, mode); -} - -__attribute__ ((__visibility__("default"))) -FILE* fopen64_proxy(const char* path, const char* mode) __asm__ ("fopen64"); -FILE* fopen64_proxy(const char* path, const char* mode) -{ - return sandbox::fopen64_override(path, mode); -} - -#if HAVE_XSTAT -__attribute__ ((__visibility__("default"))) -int xstat_proxy(int version, const char *path, struct stat *buf) __asm__ ("__xstat"); -int xstat_proxy(int version, const char *path, struct stat *buf) -{ - return sandbox::xstat_override(version, path, buf); -} - -__attribute__ ((__visibility__("default"))) -int xstat64_proxy(int version, const char *path, struct stat64 *buf) __asm__ ("__xstat64"); -int xstat64_proxy(int version, const char *path, struct stat64 *buf) -{ - return sandbox::xstat64_override(version, path, buf); -} - -#else -__attribute__ ((__visibility__("default"))) -int stat_proxy(const char *path, struct stat *buf) __asm__ ("stat"); -int stat_proxy(const char *path, struct stat *buf) -{ - return sandbox::stat_override(path, buf); -} - -__attribute__ ((__visibility__("default"))) -int stat64_proxy(const char *path, struct stat64 *buf) __asm__ ("stat64"); -int stat64_proxy(const char *path, struct stat64 *buf) -{ - return sandbox::stat64_override(path, buf); -} - -#endif #endif // defined(OS_LINUX) #ifdef Q_OS_WIN |