------------------------------------------------------------
revno: 2000
committer: Rene Engelhard <r...@debian.org>
branch nick: debian
timestamp: Tue 2010-06-01 17:09:32 +0200
message:
  fix CVE-2010-0395
added:
  patches/avoid-execution-of-python-macros-when-browsing.diff
modified:
  changelog
  patches/series
=== modified file 'changelog'
--- a/changelog 2010-05-27 22:44:58 +0000
+++ b/changelog 2010-06-01 15:09:32 +0000
@@ -1,15 +1,17 @@
-openoffice.org (1:3.2.0-11) UNRELEASED; urgency=low
+openoffice.org (1:3.2.0-11) UNRELEASED; urgency=high
 
   * debian/patches/extensions-mozilla-plugin-pc-if-libxul.diff: remove
     again ..
   * debian/patches/fix-bashisms-in-configure.diff: in favour of the
     correct fix (== vs. = breaking with dash)
+  * debian/patches/avoid-execution-of-python-macros-when-browsing.diff:
+    avoid execution of python code when browsing macros (CVE-2010-0395)
 
   * debian/rules:
     - fix variable to not add kfreebsd-i386 to OOO_MONO_ARCHS twice but
       to actually add it to OOO_MOZILLA_ARCHS 
 
- -- Rene Engelhard <r...@debian.org>  Fri, 28 May 2010 00:19:08 +0200
+ -- Rene Engelhard <r...@debian.org>  Mon, 31 May 2010 22:50:07 +0200
 
 openoffice.org (1:3.2.0-10) unstable; urgency=low
 

=== added file 'patches/avoid-execution-of-python-macros-when-browsing.diff'
--- a/patches/avoid-execution-of-python-macros-when-browsing.diff       
1970-01-01 00:00:00 +0000
+++ b/patches/avoid-execution-of-python-macros-when-browsing.diff       
2010-06-01 15:09:32 +0000
@@ -0,0 +1,125 @@
+diff --git a/patches/dev300/apply b/patches/dev300/apply
+index a6011bb..38ddf8a 100644
+--- openoffice.org-3.2.0/ooo-build-3-2-0-10/patches/dev300/apply
++++ openoffice.org-3.2.0/ooo-build-3-2-0-10/patches/dev300/apply
+@@ -18,7 +18,7 @@
+        OOXML, OOXMLExport, SVGImport, FrameworkFeature, UnitTesting, \
+        PopupRemoval, LinkWarningDlg, InternalCairo, Lockdown, \
+        FedoraCommonFixes, InternalMesaHeaders, LayoutDialogs, Fuzz, \
+-       CalcRowLimit, Gcc44, BuildFix, OptionalIconThemes
++       CalcRowLimit, Gcc44, BuildFix, OptionalIconThemes, Security
+ 
+ LinuxCommon : Common, Defaults, TangoIcons, FontConfigTemporaryHacks, \
+             FedoraLinuxOnlyFixes, LinuxOnly, SystemBits, \
+@@ -3599,3 +3599,6 @@ stream-read-csv-always-single-line.diff, n#523517, kohei
+ cws-koheiextref01-sc.diff,     kohei
+ cws-koheiextref01-offapi.diff, kohei
+ cws-koheiextref01-oox.diff,    kohei
++
++[ Security ]
++pyuno.avoid.execution.for.browsing.funcs.legacy.python.diff
+--- /dev/null  2010-04-14 03:44:50.008165136 +0200
++++ 
openoffice.org-3.2.0/ooo-build-3-2-0-10/patches/dev300/pyuno.avoid.execution.for.browsing.funcs.legacy.python.diff
 2010-04-16 21:28:06.000000000 +0200
+@@ -0,0 +1,102 @@
++--- scripting.orig/source/pyprov/pythonscript.py      2010-03-08 
15:47:10.000000000 +0000
+++++ scripting/source/pyprov/pythonscript.py   2010-03-08 20:39:32.000000000 
+0000
++@@ -5,6 +5,7 @@
++ import os
++ import imp
++ import time
+++import compiler
++ 
++ class LogLevel:
++     NONE = 0
++@@ -340,6 +341,32 @@
++             ret = url[0:pos]+ package.transientPathElement + "/" + 
url[pos:len(url)]
++         log.isDebugLevel() and log.debug( "getStorageUrlFromPersistentUrl " 
+ url + " -> "+ ret)
++         return ret
+++
+++    def getFuncsByUrl( self, url ):
+++        src = readTextFromStream( self.sfa.openFileRead( url ) )
+++        checkForPythonPathBesideScript( url[0:url.rfind('/')] )
+++        src = ensureSourceState( src )
+++
+++        code = compiler.parse( src )
+++
+++        allFuncs = []
+++
+++        if code == None:
+++            return allFuncs
+++        
+++        g_exportedScripts = []
+++        for node in code.node.nodes:
+++            if node.__class__.__name__ == 'Function':
+++                allFuncs.append(node.name)
+++            elif node.__class__.__name__ == 'Assign':
+++                for assignee in node.nodes:
+++                    if assignee.name == 'g_exportedScripts':
+++                        for item in node.expr:
+++                            if item.__class__.__name__ == 'Name':
+++                                g_exportedScripts.append(item.name)
+++                        return g_exportedScripts
+++
+++        return allFuncs
++     
++     def getModuleByUrl( self, url ):
++         entry =  self.modules.get(url)
++@@ -382,11 +409,10 @@
++     
++ #-------------------------------------------------------
++ class ScriptBrowseNode( unohelper.Base, XBrowseNode , XPropertySet, 
XInvocation, XActionListener ):
++-    def __init__( self, provCtx, uri, fileName, funcName, func ):
+++    def __init__( self, provCtx, uri, fileName, funcName ):
++         self.fileName = fileName
++         self.funcName = funcName
++         self.provCtx = provCtx
++-        self.func = func
++         self.uri = uri
++         
++     def getName( self ):
++@@ -407,8 +433,6 @@
++             if name == "URI":
++                 ret = self.provCtx.uriHelper.getScriptURI(
++                     self.provCtx.getPersistentUrlFromStorageUrl( self.uri + 
"$" + self.funcName ) )
++-            elif name == "Description":
++-                ret = getattr( self.func, "__doc__", None )
++             elif name == "Editable" and ENABLE_EDIT_DIALOG:
++                 ret = not self.provCtx.sfa.isReadOnly( self.uri )
++         
++@@ -506,7 +530,7 @@
++         self.provCtx = provCtx
++         self.uri = uri
++         self.name = name
++-        self.module = None
+++        self.funcnames = None
++         
++     def getName( self ):
++         return self.name
++@@ -514,21 +538,14 @@
++     def getChildNodes(self):
++         ret = ()
++         try:
++-            self.module = self.provCtx.getModuleByUrl( self.uri )
++-            values = self.module.__dict__.get( CALLABLE_CONTAINER_NAME , 
None )
+++            self.funcnames = self.provCtx.getFuncsByUrl( self.uri )
++             
++-            # no g_exportedScripts, export every function
++-            if not isinstance(values, type(())):
++-                values = self.module.__dict__.values()
++-                    
++             scriptNodeList = []
++-            for i in values:
++-                if isScript( i ):
++-                    scriptNodeList.append(
++-                        ScriptBrowseNode(
++-                        self.provCtx, self.uri, self.name, i.__name__, i  ))
+++            for i in self.funcnames:
+++                scriptNodeList.append(
+++                    ScriptBrowseNode(
+++                    self.provCtx, self.uri, self.name, i ))
++             ret = tuple( scriptNodeList )
++-            # must compile  !
++             log.isDebugLevel() and log.debug( "returning " +str(len(ret)) + 
" ScriptChildNodes on " + self.uri )
++         except Exception, e:
++             text = lastException2String()
++

=== modified file 'patches/series'
--- a/patches/series    2010-05-27 22:44:58 +0000
+++ b/patches/series    2010-06-01 15:09:32 +0000
@@ -15,3 +15,4 @@
 fix-system-mythes-for-mythes-1.2.diff
 kde4-redraw-status-bar.diff
 fix-bashisms-in-configure.diff
+avoid-execution-of-python-macros-when-browsing.diff

Reply via email to