rpms/openoffice.org/devel openoffice.org-1.9.120.rh158977.execshield.bridges.patch, NONE, 1.1 openoffice.org.spec, 1.343, 1.344

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Sat Jul 23 14:40:09 UTC 2005


Author: caolanm

Update of /cvs/dist/rpms/openoffice.org/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv12268

Modified Files:
	openoffice.org.spec 
Added Files:
	openoffice.org-1.9.120.rh158977.execshield.bridges.patch 
Log Message:
set executable heap for bridges code

openoffice.org-1.9.120.rh158977.execshield.bridges.patch:
 bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx |   18 ++++++++++++++++--
 source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx         |    0 
 2 files changed, 16 insertions(+), 2 deletions(-)

--- NEW FILE openoffice.org-1.9.120.rh158977.execshield.bridges.patch ---
Index: source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx
===================================================================
RCS file: /cvs/udk/bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx,v
retrieving revision 1.8
diff -u -p -u -r1.8 cpp2uno.cxx
--- openoffice.org.orig/bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx	17 Jun 2005 09:51:58 -0000	1.8
+++ openoffice.org/bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx	23 Jul 2005 14:19:14 -0000
@@ -71,6 +71,12 @@
 
 #include "share.hxx"
 
+#include <sys/mman.h>
+#include <limits.h>    /* for PAGESIZE */
+#ifndef PAGESIZE
+#define PAGESIZE 4096
+#endif
+
 using namespace ::com::sun::star::uno;
 
 namespace
@@ -446,11 +452,19 @@ void ** bridges::cpp_uno::shared::Vtable
     return reinterpret_cast< void ** >(block) + 2;
 }
 
+static char *create_executable_block(size_t nSize)
+{
+    char * block = new char[nSize];
+    char *p = (char *)(((int) block + PAGESIZE-1) & ~(PAGESIZE-1));
+    mprotect(p, nSize, PROT_READ | PROT_WRITE | PROT_EXEC);
+    return block;
+}
+
 char * bridges::cpp_uno::shared::VtableFactory::createBlock(
     sal_Int32 slotCount, void *** slots)
 {
-    char * block = new char[
-        (slotCount + 2) * sizeof (void *) + slotCount * codeSnippetSize];
+    size_t nSize = (slotCount + 2) * sizeof(void *) + slotCount * codeSnippetSize;
+    char * block = create_executable_block(nSize);
     *slots = mapBlockToVtable(block);
     (*slots)[-2] = 0;
     (*slots)[-1] = 0;


Index: openoffice.org.spec
===================================================================
RCS file: /cvs/dist/rpms/openoffice.org/devel/openoffice.org.spec,v
retrieving revision 1.343
retrieving revision 1.344
diff -u -r1.343 -r1.344
--- openoffice.org.spec	23 Jul 2005 11:25:02 -0000	1.343
+++ openoffice.org.spec	23 Jul 2005 14:40:07 -0000	1.344
@@ -1,5 +1,5 @@
 %define ooo2ver 120
-%define ooo_rpm_release 2
+%define ooo_rpm_release 3
 %define build_fc4 0
 %define build_fc5 1
 
@@ -163,6 +163,7 @@
 Patch61: openoffice.org-1.9.117.oooXXXXX.mozillanspr.extensions.patch
 Patch62: openoffice.org-1.9.118.forwarddecl.psprint.patch
 Patch63: openoffice.org-1.9.118.rhXXXXX.envcflags.solenv.patch
+Patch64: openoffice.org-1.9.120.rh158977.execshield.bridges.patch
 
 %define instdir %{_libdir}/openoffice.org2.0
 
@@ -811,6 +812,7 @@
 %patch61 -p1 -b .oooXXXXX.mozillanspr.extensions.patch
 %patch62 -p1 -b .forwarddecl.psprint.patch
 # %patch63 -p1 -b .rhXXXXX.envcflags.solenv.patch
+%patch64 -p1 -b .rh158977.execshield.bridges.patch
 
 %if %{includeexternals}
 #start ludicrous workaround
@@ -818,14 +820,14 @@
 #libxmlsec/db4 then this needs to be modified/dropped
 find_provides="%{__find_provides}"
 echo "#!/bin/sh" > find-provides
-echo "$find_provides | grep -v libxmlsec1 | grep -v libdb- | grep -v libdb_" >> find-provides
+echo "$find_provides | grep -v libxmlsec1 | grep -v libdb- " >> find-provides
 echo "exit 0" >> find-provides
 chmod +x find-provides
 %define __find_provides %{_builddir}/SRC680_m%{ooo2ver}/find-provides
 
 find_requires="%{__find_requires}"
 echo "#!/bin/sh" > find-requires
-echo "$find_requires | grep -v libxmlsec1 | grep -v libdb- | grep -v libdb_ | grep -v \(" >> find-requires
+echo "$find_requires | grep -v libxmlsec1 | grep -v libdb- | grep -v \(" >> find-requires
 echo "exit 0" >> find-requires
 chmod +x find-requires
 %define __find_requires %{_builddir}/SRC680_m%{ooo2ver}/find-requires
@@ -914,7 +916,7 @@
 
 %install
 #rh#158977# clear execstack requirement
-#execstack -c $RPM_BUILD_ROOT/%{instdir}/program/libgcc3_uno.so
+execstack -c $RPM_BUILD_ROOT/%{instdir}/program/libgcc3_uno.so
 
 # We don't need to carry around all the letter templates for all the languages 
 # in each langpack! In addition, all the bitmaps are the same!
@@ -963,10 +965,9 @@
         fi
 
 done
-#disabled for now until system-db is done
 if [ $origin == 1 ]; then false; fi
 #if [ $pic == 1 ]; then false; fi
-#if [ $executable == 1 ]; then false; fi
+if [ $executable == 1 ]; then false; fi
 
 #make up some /usr/bin scripts
 cp %{SOURCE4} $RPM_BUILD_ROOT/%{instdir}/program/crash_report
@@ -3015,6 +3016,9 @@
 %{instdir}/share/registry/modules/org/openoffice/Office/Scripting/Scripting-python.xcu
 
 %changelog
+* Sat Jul 23 2005 Caolan McNamara <caolanm at redhat.com> - 1:1.9.120-3
+- add openoffice.org-1.9.120.rh158977.execshield.bridges.patch
+
 * Sat Jul 23 2005 Caolan McNamara <caolanm at redhat.com> - 1:1.9.120-2
 - try and reenable ppc building
 




More information about the fedora-cvs-commits mailing list