diff --git a/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java b/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
index a0e9723..4b3fed1 100644
--- a/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
@@ -1958,8 +1958,8 @@
                                 {
                                     try
                                     {
-// TODO: OSGi R4.3 - Need to call all hooks in privileged block.
-                                        wh.weave(wci);
+                                        m_revision.getSecureAction()
+                                            .invokeWeavingHook(wh, wci);
                                     }
                                     catch (Throwable th)
                                     {
diff --git a/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java b/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java
index 4ed8ccc..4a27c47 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java
@@ -1091,6 +1091,30 @@
         }
     }
 
+    public void invokeWeavingHook(
+        org.osgi.framework.hooks.weaving.WeavingHook wh,
+        org.osgi.framework.hooks.weaving.WovenClass wc)
+        throws Exception
+    {
+        if (System.getSecurityManager() != null)
+        {
+            Actions actions = (Actions) m_actions.get();
+            actions.set(Actions.INVOKE_WEAVING_HOOK, wh, wc);
+            try
+            {
+                AccessController.doPrivileged(actions, m_acc);
+            }
+            catch (PrivilegedActionException e)
+            {
+                throw e.getException();
+            }
+        }
+        else
+        {
+            wh.weave(wc);
+        }
+    }
+
     private static class Actions implements PrivilegedExceptionAction
     {
         public static final int INITIALIZE_CONTEXT_ACTION = 0;
@@ -1135,6 +1159,7 @@
         public static final int GET_CLASS_LOADER_ACTION = 39;
         public static final int INVOKE_BUNDLE_FIND_HOOK = 40;
         public static final int INVOKE_BUNDLE_EVENT_HOOK = 41;
+        public static final int INVOKE_WEAVING_HOOK = 42;
 
         private int m_action = -1;
         private Object m_arg1 = null;
@@ -1316,6 +1341,10 @@
                     ((org.osgi.framework.hooks.bundle.EventHook) arg1).event(
                         (BundleEvent) arg2, (Collection<BundleContext>) arg3);
                     return null;
+                case INVOKE_WEAVING_HOOK:
+                    ((org.osgi.framework.hooks.weaving.WeavingHook) arg1).weave(
+                        (org.osgi.framework.hooks.weaving.WovenClass) arg2);
+                    return null;
             }
 
             return null;
