ipa-nis-manage was broken because of a signature change to ldap2.getentry(). Two new arguments were added before normalize and a call to this in ipa-nis-manage was relying on positional arguments. This caused ldap2 to add the basedn to what we were trying to get, which was something in cn=config, so it failed.

ticket https://fedorahosted.org/freeipa/ticket/414

rob
>From 98c033712ec27c5692246cb6f2d1d91087b98fa5 Mon Sep 17 00:00:00 2001
From: Rob Crittenden <rcrit...@redhat.com>
Date: Thu, 4 Nov 2010 15:23:25 -0400
Subject: [PATCH] Fix NotFound exception in ipa-nis-manage.

The signature of ldap2.get_entry() changed so normalize wasn't being
handled properly so the basedn was always being appended causing our
entry in cn=config to be not found.

ticket 414
---
 install/tools/ipa-nis-manage |    6 ++++--
 ipaserver/plugins/ldap2.py   |    2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/install/tools/ipa-nis-manage b/install/tools/ipa-nis-manage
index 706b0e6..6448d17 100755
--- a/install/tools/ipa-nis-manage
+++ b/install/tools/ipa-nis-manage
@@ -37,7 +37,7 @@ error was:
 """ % sys.exc_value
     sys.exit(1)
 
-nis_config_dn = "cn=NIS Server, cn=plugins, cn=config"
+nis_config_dn = "cn=NIS Server,cn=plugins,cn=config"
 compat_dn = "cn=Schema Compatibility,cn=plugins,cn=config"
 
 def parse_options():
@@ -115,6 +115,8 @@ def main():
             conn.connect(
                 bind_dn='cn=directory manager', bind_pw=dirman_password
             )
+        except errors.ACIError:
+            sys.exit("Incorrect password")
         except errors.LDAPError, lde:
             print "An error occurred while connecting to the server."
             print lde
@@ -205,7 +207,7 @@ def main():
                 print "The %s service may need to be started." % servicemsg
 
     finally:
-        if conn:
+        if conn and conn.isconnected():
             conn.disconnect()
 
     return retval
diff --git a/ipaserver/plugins/ldap2.py b/ipaserver/plugins/ldap2.py
index b5efc42..cbb8ddb 100644
--- a/ipaserver/plugins/ldap2.py
+++ b/ipaserver/plugins/ldap2.py
@@ -702,7 +702,7 @@ class ldap2(CrudBackend, Encoder):
 
     def _generate_modlist(self, dn, entry_attrs, normalize):
         # get original entry
-        (dn, entry_attrs_old) = self.get_entry(dn, entry_attrs.keys(), normalize)
+        (dn, entry_attrs_old) = self.get_entry(dn, entry_attrs.keys(), normalize=normalize)
         # get_entry returns a decoded entry, encode it back
         # we could call search_s directly, but this saves a lot of code at
         # the expense of a little bit of performace
-- 
1.7.2.1

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to