diff --git a/login_destination.admin.inc b/login_destination.admin.inc
index 7ec3fa2..5ad6f91 100755
--- a/login_destination.admin.inc
+++ b/login_destination.admin.inc
@@ -502,11 +502,39 @@ function login_destination_edit_form_validate($form, &$form_state) {
   $destination_type = $form_state['values']['destination_type'];
 
   // Check user has enter any path.
-  if (!empty($destination) && $destination_type == 0) {
-    $destination = preg_replace("/\?.+/", "", $destination);
+  if (empty($destination) || $destination_type != 0) {
+    return;
+  }
+  $destination = preg_replace("/\?.+/", "", $destination);
+  if (url_is_external($destination)) {
+    return;
+  }
+  $roles = array_filter($form_state['values']['roles']);
+  // If roles are not selected, check that at least current user has access to the path.
+  if (empty($roles)) {
     if (!drupal_valid_path($destination)) {
       form_set_error('destination', t('Incorrect path, Please Enter valid Path'));
     }
+    else {
+      // Show message that user possibly do not have access to the entered path.
+      drupal_set_message(t('Entered path(destination) could be unavailable for some roles, choose specific role to make validation role on access to path.'));
+    }
+    return;
+  }
+  /** @var array $item */
+  $item = menu_get_item($destination);
+  if (empty($item)) {
+    form_set_error('destination', t('Incorrect path, Please Enter valid Path'));
+  }
+  $item_access = unserialize($item['access_arguments']);
+  $role_permissions = user_role_permissions($roles);
+  foreach ($role_permissions as $key => $role) {
+    $permissions = array_keys($role);
+    if (empty(array_intersect($permissions, $item_access))) {
+      $user_role = user_role_load($key);
+      form_set_error('destination', t('Role "@role_name" does not have access to the path.', array('@role_name' => $user_role->name)));
+      break;
+    }
   }
 }
 
