f716b1fc99
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
177 lines
5.2 KiB
Diff
177 lines
5.2 KiB
Diff
From 30a9f48e8dd12f7b607d1dbc9a795f939208f5d6 Mon Sep 17 00:00:00 2001
|
|
From: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
Date: Tue, 4 Oct 2011 13:28:38 +0200
|
|
Subject: [PATCH 1/4] Use a subdirectory for temporary files.
|
|
|
|
This allows the a better integration with selinux, as the rule can use the path name and doesn't need globbing.
|
|
|
|
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
---
|
|
orc/orccodemem.c | 18 +++++++++++++++++-
|
|
1 files changed, 17 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
|
|
index f470be5..e125faa 100644
|
|
--- a/orc/orccodemem.c
|
|
+++ b/orc/orccodemem.c
|
|
@@ -193,11 +193,27 @@ orc_code_chunk_free (OrcCodeChunk *chunk)
|
|
#ifdef HAVE_CODEMEM_MMAP
|
|
int
|
|
orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
|
|
- const char *dir, int force_unlink)
|
|
+ const char *basedir, int force_unlink)
|
|
{
|
|
int fd;
|
|
int n;
|
|
char *filename;
|
|
+ char *dir;
|
|
+ struct stat stat_p;
|
|
+
|
|
+ dir = malloc (strlen (basedir) + strlen ("/.orc"));
|
|
+ sprintf (dir, "%s/.orc", basedir);
|
|
+
|
|
+ stat (dir, &stat_p);
|
|
+ if (!S_ISDIR (stat_p.st_mode))
|
|
+ {
|
|
+ n = mkdir (dir, S_IRWXU);
|
|
+ if (n < 0)
|
|
+ {
|
|
+ ORC_WARNING ("failed to create subdir");
|
|
+ return FALSE;
|
|
+ }
|
|
+ }
|
|
|
|
filename = malloc (strlen ("/orcexec..") +
|
|
strlen (dir) + 6 + 1);
|
|
--
|
|
1.7.7.5
|
|
|
|
|
|
From 2e35ab7bca7eef855b12eed26da9d543c8b225b6 Mon Sep 17 00:00:00 2001
|
|
From: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
Date: Sun, 1 Jan 2012 21:25:28 +0100
|
|
Subject: [PATCH 2/4] orccodemem.c: Fix memory allocation and directory
|
|
existance.
|
|
|
|
Noted in https://bugzilla.redhat.com/show_bug.cgi?id=770602
|
|
|
|
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
---
|
|
orc/orccodemem.c | 6 +++---
|
|
1 files changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
|
|
index e125faa..be76472 100644
|
|
--- a/orc/orccodemem.c
|
|
+++ b/orc/orccodemem.c
|
|
@@ -201,11 +201,11 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
|
|
char *dir;
|
|
struct stat stat_p;
|
|
|
|
- dir = malloc (strlen (basedir) + strlen ("/.orc"));
|
|
+ dir = malloc (strlen (basedir) + strlen ("/.orc") + 1);
|
|
sprintf (dir, "%s/.orc", basedir);
|
|
|
|
- stat (dir, &stat_p);
|
|
- if (!S_ISDIR (stat_p.st_mode))
|
|
+ if (stat (dir, &stat_p) == -1 ||
|
|
+ !S_ISDIR (stat_p.st_mode))
|
|
{
|
|
n = mkdir (dir, S_IRWXU);
|
|
if (n < 0)
|
|
--
|
|
1.7.7.5
|
|
|
|
|
|
From 5a9009d4275fd40a0079a8bf44a7de31c2962bb0 Mon Sep 17 00:00:00 2001
|
|
From: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
Date: Sun, 1 Jan 2012 21:41:04 +0100
|
|
Subject: [PATCH 3/4] Add compiler option for ENABLE_USER_CODEMEM.
|
|
|
|
This option disbales non-user-dependent path checking at compile time. If enabled, only paths corresponding to a user are checked.
|
|
|
|
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
---
|
|
configure.ac | 4 ++++
|
|
orc/Makefile.am | 3 +++
|
|
orc/orccodemem.c | 2 ++
|
|
3 files changed, 9 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 6637b8e..52edb5c 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -164,6 +164,10 @@ AM_CONDITIONAL(ENABLE_BACKEND_NEON, test "x$ENABLE_BACKEND_NEON" = "xyes")
|
|
AM_CONDITIONAL(ENABLE_BACKEND_ARM, test "x$ENABLE_BACKEND_ARM" = "xyes")
|
|
AM_CONDITIONAL(ENABLE_BACKEND_C64X, test "x$ENABLE_BACKEND_C64X" = "xyes")
|
|
|
|
+AC_ARG_ENABLE(user-codemem,
|
|
+ AC_HELP_STRING([--enable-user-codemem],[Force codemem allocation to be user dependent (default is no)]),
|
|
+ [], [enable_user_codemem=no])
|
|
+AM_CONDITIONAL(ENABLE_USER_CODEMEM, test "x$enable_user_codemem" = "xyes")
|
|
|
|
AC_DEFINE(ORC_EXPORTS, 1, [Defined for compiling internal code])
|
|
|
|
diff --git a/orc/Makefile.am b/orc/Makefile.am
|
|
index 8f379e0..43e9028 100644
|
|
--- a/orc/Makefile.am
|
|
+++ b/orc/Makefile.am
|
|
@@ -9,6 +9,9 @@ liborc_@ORC_MAJORMINOR@_la_LDFLAGS = \
|
|
-no-undefined -export-symbols-regex 'orc_'
|
|
liborc_@ORC_MAJORMINOR@_la_CFLAGS = $(ORC_CFLAGS) \
|
|
-DORC_ENABLE_UNSTABLE_API
|
|
+if ENABLE_USER_CODEMEM
|
|
+liborc_@ORC_MAJORMINOR@_la_CFLAGS += -DORC_FORCE_USER_CODEMEM
|
|
+endif
|
|
|
|
liborc_@ORC_MAJORMINOR@_la_SOURCES = \
|
|
orc.c \
|
|
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
|
|
index be76472..32c14f1 100644
|
|
--- a/orc/orccodemem.c
|
|
+++ b/orc/orccodemem.c
|
|
@@ -279,12 +279,14 @@ orc_code_region_allocate_codemem (OrcCodeRegion *region)
|
|
{
|
|
const char *tmpdir;
|
|
|
|
+#ifndef ORC_FORCE_USER_CODEMEM
|
|
tmpdir = getenv ("TMPDIR");
|
|
if (tmpdir && orc_code_region_allocate_codemem_dual_map (region,
|
|
tmpdir, FALSE)) return;
|
|
|
|
if (orc_code_region_allocate_codemem_dual_map (region,
|
|
"/tmp", FALSE)) return;
|
|
+#endif
|
|
|
|
tmpdir = getenv ("XDG_RUNTIME_DIR");
|
|
if (tmpdir && orc_code_region_allocate_codemem_dual_map (region,
|
|
--
|
|
1.7.7.5
|
|
|
|
|
|
From 53f540b0856d0e5c03f3d65edcce8d909f204dd4 Mon Sep 17 00:00:00 2001
|
|
From: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
Date: Sat, 7 Jan 2012 22:37:08 +0100
|
|
Subject: [PATCH 4/4] orccodemem: Fix a small leak.
|
|
|
|
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
|
|
---
|
|
orc/orccodemem.c | 1 +
|
|
1 files changed, 1 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
|
|
index 32c14f1..fc16ebc 100644
|
|
--- a/orc/orccodemem.c
|
|
+++ b/orc/orccodemem.c
|
|
@@ -227,6 +227,7 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
|
|
if (force_unlink || !_orc_compiler_flag_debug) {
|
|
unlink (filename);
|
|
}
|
|
+ free (dir);
|
|
free (filename);
|
|
|
|
n = ftruncate (fd, SIZE);
|
|
--
|
|
1.7.7.5
|
|
|