From 14ac3e5db232137923fd597eb15dc61c875bf48c Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 18 Aug 2016 10:04:02 +0200 Subject: 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 --- src/process/main.cpp | 64 +--------------------------------------------------- 1 file changed, 1 insertion(+), 63 deletions(-) (limited to 'src/process') 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 #include -#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 -- cgit v1.2.3