--- CopySupport.py.orig	Wed Dec 18 13:08:25 2002
+++ CopySupport.py	Fri Dec 19 18:27:05 2003
@@ -23,6 +23,10 @@
 from zExceptions import Unauthorized
 from AccessControl import getSecurityManager
 
+from Globals import InitializeClass
+from Acquisition import Implicit
+from AccessControl import ClassSecurityInfo
+
 CopyError='Copy Error'
 
 _marker=[]
@@ -335,7 +339,16 @@
                 break
 
         if mt_permission is not None:
-            if getSecurityManager().checkPermission( mt_permission, self ):
+            #if getSecurityManager().checkPermission( mt_permission, self ):
+            # DM: the following does not take executable security (owner<br>
+            #  ship, proxy roles) into account.<br>
+            #if getSecurityManager().checkPermission( mt_permission, self ):<br>
+            class _Proxy(Implicit):
+                security= ClassSecurityInfo()
+            _Proxy.security.declareObjectProtected(mt_permission)
+            InitializeClass(_Proxy)
+            _proxy= _Proxy().__of__(self)
+            if getSecurityManager().validate(None,self,None,_proxy):
                 if not validate_src:
                     return
                 # Ensure the user is allowed to access the object on the
