--- rpms/cpu/sme8/cpu-1.4.3-mod-delete.patch 2010/11/06 05:47:03 1.2 +++ rpms/cpu/sme8/cpu-1.4.3-mod-delete.patch 2010/11/06 06:06:39 1.3 @@ -1,7 +1,6 @@ diff -up cpu-1.4.3/src/include/plugins/ldap/ldap.h.mod-delete cpu-1.4.3/src/include/plugins/ldap/ldap.h -diff -up cpu-1.4.3/src/include/plugins/ldap/ldap.h.mod-delete cpu-1.4.3/src/include/plugins/ldap/ldap.h --- cpu-1.4.3/src/include/plugins/ldap/ldap.h.mod-delete 2003-12-30 20:22:20.000000000 -0700 -+++ cpu-1.4.3/src/include/plugins/ldap/ldap.h 2010-11-05 23:41:22.000000000 -0600 ++++ cpu-1.4.3/src/include/plugins/ldap/ldap.h 2010-11-05 23:54:19.000000000 -0600 @@ -127,8 +127,8 @@ int ldapCat(LDAP *ld); uid_t getNextUid(LDAP * ld); gid_t getNextGid(LDAP * ld, ldapop_t op); @@ -15,7 +14,7 @@ diff -up cpu-1.4.3/src/include/plugins/l LDAPMod ** mods); diff -up cpu-1.4.3/src/plugins/ldap/group.c.mod-delete cpu-1.4.3/src/plugins/ldap/group.c --- cpu-1.4.3/src/plugins/ldap/group.c.mod-delete 2003-10-12 17:34:59.000000000 -0600 -+++ cpu-1.4.3/src/plugins/ldap/group.c 2010-11-05 23:41:22.000000000 -0600 ++++ cpu-1.4.3/src/plugins/ldap/group.c 2010-11-05 23:54:19.000000000 -0600 @@ -31,7 +31,7 @@ LDAPMod **groupMod = NULL; int ldapGroupAdd (LDAP * ld) @@ -67,8 +66,8 @@ diff -up cpu-1.4.3/src/plugins/ldap/grou } } diff -up cpu-1.4.3/src/plugins/ldap/ld.c.mod-delete cpu-1.4.3/src/plugins/ldap/ld.c ---- cpu-1.4.3/src/plugins/ldap/ld.c.mod-delete 2010-11-05 23:40:48.000000000 -0600 -+++ cpu-1.4.3/src/plugins/ldap/ld.c 2010-11-05 23:41:22.000000000 -0600 +--- cpu-1.4.3/src/plugins/ldap/ld.c.mod-delete 2010-11-05 23:53:41.000000000 -0600 ++++ cpu-1.4.3/src/plugins/ldap/ld.c 2010-11-06 00:03:17.000000000 -0600 @@ -278,7 +278,7 @@ ldapAddList (LDAPMod ** mods) } @@ -78,15 +77,18 @@ diff -up cpu-1.4.3/src/plugins/ldap/ld.c { char **temp; -@@ -286,19 +286,53 @@ ldapBuildListStr (int mod_op, char *mod_ +@@ -286,19 +286,65 @@ ldapBuildListStr (int mod_op, char *mod_ return mods; if (value == NULL || strlen(value) == strspn(value, " ")) - return mods; +- +- mods = ldapAddList (mods); + { + int strsize = 1; + char *filter = NULL; + int ldapres = 0; ++ int err = 0; + + LDAPMessage *res[2]; + res[1] = NULL; @@ -100,20 +102,30 @@ diff -up cpu-1.4.3/src/plugins/ldap/ld.c + if (ldap_search_st (ld, globalLdap->dn, LDAP_SCOPE_BASE, filter, NULL, 0, + &globalLdap->timeout, res) != LDAP_SUCCESS) + { -+ CPU_ldapPerror (ld, globalLdap, -+ "ldapBuildListStr: ldap_search_st"); -+ return -1; ++ if (ldap_get_option (ld, LDAP_OPT_ERROR_NUMBER, &err) < 0) ++ { ++ fprintf (stderr, "Error in ldap_get_option\n"); ++ return -1; ++ } ++ if (err != LDAP_NO_SUCH_OBJECT) ++ { ++ CPU_ldapPerror (ld, globalLdap, ++ "ldapBuildListStr: ldap_search_st"); ++ return -1; ++ } + } -+ ldapres = ldap_count_entries (ld, res[0]); -+ if (ldapres > 0) ++ else + { -+ mods = ldapAddList (mods); - -- mods = ldapAddList (mods); -+ mods[list_size]->mod_op = LDAP_MOD_DELETE; -+ mods[list_size]->mod_type = strdup (mod_type); -+ mods[list_size]->mod_values = NULL; -+ list_size++; ++ ldapres = ldap_count_entries (ld, res[0]); ++ if (ldapres > 0) ++ { ++ mods = ldapAddList (mods); ++ ++ mods[list_size]->mod_op = LDAP_MOD_DELETE; ++ mods[list_size]->mod_type = strdup (mod_type); ++ mods[list_size]->mod_values = NULL; ++ list_size++; ++ } + } + } + else @@ -143,8 +155,8 @@ diff -up cpu-1.4.3/src/plugins/ldap/ld.c } diff -up cpu-1.4.3/src/plugins/ldap/user.c.mod-delete cpu-1.4.3/src/plugins/ldap/user.c ---- cpu-1.4.3/src/plugins/ldap/user.c.mod-delete 2010-11-05 23:40:48.000000000 -0600 -+++ cpu-1.4.3/src/plugins/ldap/user.c 2010-11-05 23:41:22.000000000 -0600 +--- cpu-1.4.3/src/plugins/ldap/user.c.mod-delete 2010-11-05 23:53:41.000000000 -0600 ++++ cpu-1.4.3/src/plugins/ldap/user.c 2010-11-05 23:54:19.000000000 -0600 @@ -251,16 +251,16 @@ ldapUserCheck (int mod_op, LDAP * ld) */ if (op == LDAP_MOD_ADD)