From 8cb6140d114e676410d7a0921a2d3257d48f3351 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 6 Jul 2016 06:02:43 +0200
Subject: [PATCH] Fixes #4981 trying to put an ACL assignments on an non
 existing branch crashes

---
 plugins/admin/acl/class_aclManagement.inc | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index a39bec8e7..11510d616 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -104,8 +104,12 @@ class aclAssignmentCreationDialog extends simplePlugin
       msg_dialog::displayChecks($msgs);
       return TRUE;
     }
-    $this->simpleManagement->closeDialogs();
-    $this->simpleManagement->newEntryConfirmed($this->baseDn);
+    try {
+      $this->simpleManagement->newEntryConfirmed($this->baseDn);
+    } catch (NonExistingLdapNodeException $e) {
+      msg_dialog::displayChecks(array(_('The dn you entered could not be found in the LDAP')));
+      return TRUE;
+    }
     return FALSE;
   }
 
@@ -179,14 +183,19 @@ class aclManagement extends simpleManagement
   {
     $type = 'aclAssignment';
 
+    /* This might throw an exception which is catched in aclAssignmentCreationDialog */
+    $tabObject = objects::open($this->dn, $type);
+
+    /* This will happen only if the exception is not thrown */
+    $this->closeDialogs();
+
     $this->displayApplyBtn  = FALSE;
     $this->dn               = $dn;
     $this->is_single_edit   = FALSE;
 
     set_object_info($this->dn);
 
-    // Open object
-    $this->openTabObject(objects::open($this->dn, $type), $this->headpage->getBase());
+    $this->openTabObject($tabObject, $this->headpage->getBase());
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Creating new ACLĂ‚ assignment');
   }
 
-- 
GitLab