From 48b8e8aca806b55cef2ff5c5708e1e06f3a5da12 Mon Sep 17 00:00:00 2001 From: Fabian Deutsch Date: Tue, 3 Jan 2012 11:35:48 +0100 Subject: [PATCH] Update subdir-patch. Introduces a build param to disable non-user-dependent temp dirs and fixes a allocation bug. Signed-off-by: Fabian Deutsch --- orc-subdir.patch | 108 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 105 insertions(+), 3 deletions(-) diff --git a/orc-subdir.patch b/orc-subdir.patch index 5386a7a..e765f1a 100644 --- a/orc-subdir.patch +++ b/orc-subdir.patch @@ -1,7 +1,7 @@ -From 8bc69ba508e2ec6e573ba197d0f20b1a39a1c920 Mon Sep 17 00:00:00 2001 +From 30a9f48e8dd12f7b607d1dbc9a795f939208f5d6 Mon Sep 17 00:00:00 2001 From: Fabian Deutsch Date: Tue, 4 Oct 2011 13:28:38 +0200 -Subject: [PATCH] Use a subdirectory for temporary files. +Subject: [PATCH 1/3] 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. @@ -44,5 +44,107 @@ index f470be5..e125faa 100644 filename = malloc (strlen ("/orcexec..") + strlen (dir) + 6 + 1); -- -1.7.6.4 +1.7.7.5 + + +From 2e35ab7bca7eef855b12eed26da9d543c8b225b6 Mon Sep 17 00:00:00 2001 +From: Fabian Deutsch +Date: Sun, 1 Jan 2012 21:25:28 +0100 +Subject: [PATCH 2/3] orccodemem.c: Fix memory allocation and directory + existance. + +Noted in https://bugzilla.redhat.com/show_bug.cgi?id=770602 + +Signed-off-by: Fabian Deutsch +--- + 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 2917974cb1a436831226ba17fc3017ad855c69d3 Mon Sep 17 00:00:00 2001 +From: Fabian Deutsch +Date: Sun, 1 Jan 2012 21:41:04 +0100 +Subject: [PATCH 3/3] 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 +--- + 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..b44d577 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=yes]) ++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