/[smeserver]/rpms/cpu/sme8/cpu-1.4.3-mod-delete.patch
ViewVC logotype

Contents of /rpms/cpu/sme8/cpu-1.4.3-mod-delete.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Sat Nov 6 05:47:03 2010 UTC (13 years, 7 months ago) by slords
Branch: MAIN
CVS Tags: cpu-1_4_3-9_el5_sme
Changes since 1.1: +196 -16 lines
* Fri Nov 5 2010 Shad L. Lords <slords@mail.com> 1.4.3-9.sme
- Check for attribute before deleting (for extra attrs) [SME: 6342]

1 diff -up cpu-1.4.3/src/include/plugins/ldap/ldap.h.mod-delete cpu-1.4.3/src/include/plugins/ldap/ldap.h
2 diff -up cpu-1.4.3/src/include/plugins/ldap/ldap.h.mod-delete cpu-1.4.3/src/include/plugins/ldap/ldap.h
3 --- cpu-1.4.3/src/include/plugins/ldap/ldap.h.mod-delete 2003-12-30 20:22:20.000000000 -0700
4 +++ cpu-1.4.3/src/include/plugins/ldap/ldap.h 2010-11-05 23:41:22.000000000 -0600
5 @@ -127,8 +127,8 @@ int ldapCat(LDAP *ld);
6 uid_t getNextUid(LDAP * ld);
7 gid_t getNextGid(LDAP * ld, ldapop_t op);
8 int ldapUserCheck(int mod_op, LDAP * ld);
9 -int ldapGroupCheck(int mod_op);
10 -LDAPMod ** ldapBuildListStr(int mod_op, char * mod_type, char * value,
11 +int ldapGroupCheck(int mod_op, LDAP * ld);
12 +LDAPMod ** ldapBuildListStr(LDAP * ld, int mod_op, char * mod_type, char * value,
13 LDAPMod ** mods);
14 LDAPMod ** ldapBuildList(int mod_op, char * mod_type, char ** value,
15 LDAPMod ** mods);
16 diff -up cpu-1.4.3/src/plugins/ldap/group.c.mod-delete cpu-1.4.3/src/plugins/ldap/group.c
17 --- cpu-1.4.3/src/plugins/ldap/group.c.mod-delete 2003-10-12 17:34:59.000000000 -0600
18 +++ cpu-1.4.3/src/plugins/ldap/group.c 2010-11-05 23:41:22.000000000 -0600
19 @@ -31,7 +31,7 @@ LDAPMod **groupMod = NULL;
20 int
21 ldapGroupAdd (LDAP * ld)
22 {
23 - if (ldapGroupCheck (LDAP_MOD_ADD) < 0)
24 + if (ldapGroupCheck (LDAP_MOD_ADD, ld) < 0)
25 {
26 fprintf (stderr, "ldap: ldapGroupAdd: error in ldapGroupCheck\n");
27 return -1;
28 @@ -50,7 +50,7 @@ int
29 ldapGroupMod (LDAP * ld)
30 {
31 char *newdn = NULL;
32 - if (ldapGroupCheck (LDAP_MOD_REPLACE) < 0)
33 + if (ldapGroupCheck (LDAP_MOD_REPLACE, ld) < 0)
34 {
35 fprintf (stderr, "ldap: ldapGroupMod: error in ldapGroupCheck\n");
36 return -1;
37 @@ -105,7 +105,7 @@ ldapGroupDel (LDAP * ld)
38 }
39
40 int
41 -ldapGroupCheck (int mod_op)
42 +ldapGroupCheck (int mod_op, LDAP * ld)
43 {
44 int op = 0;
45 if (mod_op == LDAP_MOD_ADD)
46 @@ -126,11 +126,11 @@ ldapGroupCheck (int mod_op)
47 groupMod = ldapBuildList (op, "objectClass",
48 globalLdap->group_object_class, groupMod);
49 groupMod =
50 - ldapBuildListStr (LDAP_MOD_ADD, "cn", ldapGetCn (), groupMod);
51 + ldapBuildListStr (ld, LDAP_MOD_ADD, "cn", ldapGetCn (), groupMod);
52 }
53
54 if (globalLdap->passent->pw_passwd)
55 - groupMod = ldapBuildListStr (op, "userPassword",
56 + groupMod = ldapBuildListStr (ld, op, "userPassword",
57 globalLdap->passent->pw_passwd, groupMod);
58
59 if ((int) globalLdap->passent->pw_gid > -1)
60 @@ -143,7 +143,7 @@ ldapGroupCheck (int mod_op)
61 pos = globalLdap->parse;
62 while (pos != NULL)
63 {
64 - groupMod = ldapBuildListStr (op, pos->attr, pos->attrval, groupMod);
65 + groupMod = ldapBuildListStr (ld, op, pos->attr, pos->attrval, groupMod);
66 pos = pos->next;
67 }
68 }
69 diff -up cpu-1.4.3/src/plugins/ldap/ld.c.mod-delete cpu-1.4.3/src/plugins/ldap/ld.c
70 --- cpu-1.4.3/src/plugins/ldap/ld.c.mod-delete 2010-11-05 23:40:48.000000000 -0600
71 +++ cpu-1.4.3/src/plugins/ldap/ld.c 2010-11-05 23:41:22.000000000 -0600
72 @@ -278,7 +278,7 @@ ldapAddList (LDAPMod ** mods)
73 }
74
75 LDAPMod **
76 -ldapBuildListStr (int mod_op, char *mod_type, char *value, LDAPMod ** mods)
77 +ldapBuildListStr (LDAP * ld, int mod_op, char *mod_type, char *value, LDAPMod ** mods)
78 {
79 char **temp;
80
81 @@ -286,19 +286,53 @@ ldapBuildListStr (int mod_op, char *mod_
82 return mods;
83
84 if (value == NULL || strlen(value) == strspn(value, " "))
85 - return mods;
86 + {
87 + int strsize = 1;
88 + char *filter = NULL;
89 + int ldapres = 0;
90 +
91 + LDAPMessage *res[2];
92 + res[1] = NULL;
93 +
94 + strsize = strlen (mod_type) + 5;
95 + filter = (char *) malloc (sizeof (char) * strsize);
96 + if (filter == NULL)
97 + return -1;
98 + bzero (filter, strsize);
99 + snprintf (filter, strsize, "(%s=*)", mod_type);
100 + if (ldap_search_st (ld, globalLdap->dn, LDAP_SCOPE_BASE, filter, NULL, 0,
101 + &globalLdap->timeout, res) != LDAP_SUCCESS)
102 + {
103 + CPU_ldapPerror (ld, globalLdap,
104 + "ldapBuildListStr: ldap_search_st");
105 + return -1;
106 + }
107 + ldapres = ldap_count_entries (ld, res[0]);
108 + if (ldapres > 0)
109 + {
110 + mods = ldapAddList (mods);
111
112 - mods = ldapAddList (mods);
113 + mods[list_size]->mod_op = LDAP_MOD_DELETE;
114 + mods[list_size]->mod_type = strdup (mod_type);
115 + mods[list_size]->mod_values = NULL;
116 + list_size++;
117 + }
118 + }
119 + else
120 + {
121 + mods = ldapAddList (mods);
122
123 - temp = (char **) malloc (sizeof (char *) * 2);
124 - bzero (temp, sizeof (char *) * 2);
125 - temp[0] = value;
126 - temp[1] = NULL;
127 + temp = (char **) malloc (sizeof (char *) * 2);
128 + bzero (temp, sizeof (char *) * 2);
129 + temp[0] = value;
130 + temp[1] = NULL;
131 +
132 + mods[list_size]->mod_op = mod_op;
133 + mods[list_size]->mod_type = strdup (mod_type);
134 + mods[list_size]->mod_values = temp;
135 + list_size++;
136 + }
137
138 - mods[list_size]->mod_op = mod_op;
139 - mods[list_size]->mod_type = strdup (mod_type);
140 - mods[list_size]->mod_values = temp;
141 - list_size++;
142 return mods;
143 }
144
145 diff -up cpu-1.4.3/src/plugins/ldap/user.c.mod-delete cpu-1.4.3/src/plugins/ldap/user.c
146 --- cpu-1.4.3/src/plugins/ldap/user.c.mod-delete 2010-11-05 23:40:48.000000000 -0600
147 +++ cpu-1.4.3/src/plugins/ldap/user.c 2010-11-05 23:41:22.000000000 -0600
148 @@ -251,16 +251,16 @@ ldapUserCheck (int mod_op, LDAP * ld)
149 */
150 if (op == LDAP_MOD_ADD)
151 {
152 - userMod = ldapBuildListStr (LDAP_MOD_ADD, "cn", ldapGetCn (), userMod);
153 + userMod = ldapBuildListStr (ld, LDAP_MOD_ADD, "cn", ldapGetCn (), userMod);
154 userMod =
155 ldapBuildList (op, "objectClass", globalLdap->user_object_class,
156 userMod);
157 }
158 else if (globalLdap->passent->pw_gecos || (globalLdap->first_name && globalLdap->last_name))
159 - userMod = ldapBuildListStr (op, "cn", ldapGetCn (), userMod);
160 + userMod = ldapBuildListStr (ld, op, "cn", ldapGetCn (), userMod);
161
162 userMod =
163 - ldapBuildListStr (op, "uid", globalLdap->passent->pw_name, userMod);
164 + ldapBuildListStr (ld, op, "uid", globalLdap->passent->pw_name, userMod);
165
166 /* do we allow duplicates ? */
167 if ((int) globalLdap->passent->pw_uid > -1)
168 @@ -433,35 +433,35 @@ ldapUserCheck (int mod_op, LDAP * ld)
169 }
170 if (globalLdap->first_name)
171 userMod =
172 - ldapBuildListStr (op, "givenName", globalLdap->first_name, userMod);
173 + ldapBuildListStr (ld, op, "givenName", globalLdap->first_name, userMod);
174
175 if (globalLdap->last_name)
176 - userMod = ldapBuildListStr (op, "sn", globalLdap->last_name, userMod);
177 + userMod = ldapBuildListStr (ld, op, "sn", globalLdap->last_name, userMod);
178
179 if (globalLdap->new_username)
180 - userMod = ldapBuildListStr (op, "uid", globalLdap->new_username, userMod);
181 + userMod = ldapBuildListStr (ld, op, "uid", globalLdap->new_username, userMod);
182
183 if (globalLdap->email_address)
184 userMod =
185 - ldapBuildListStr (op, "mail", globalLdap->email_address, userMod);
186 + ldapBuildListStr (ld, op, "mail", globalLdap->email_address, userMod);
187
188 if (globalLdap->passent->pw_passwd)
189 userMod =
190 - ldapBuildListStr (op, "userPassword", globalLdap->passent->pw_passwd,
191 + ldapBuildListStr (ld, op, "userPassword", globalLdap->passent->pw_passwd,
192 userMod);
193
194 if (globalLdap->passent->pw_gecos)
195 - userMod = ldapBuildListStr (op, "gecos", globalLdap->passent->pw_gecos,
196 + userMod = ldapBuildListStr (ld, op, "gecos", globalLdap->passent->pw_gecos,
197 userMod);
198
199 if (globalLdap->passent->pw_dir)
200 userMod =
201 - ldapBuildListStr (op, "homeDirectory", globalLdap->passent->pw_dir,
202 + ldapBuildListStr (ld, op, "homeDirectory", globalLdap->passent->pw_dir,
203 userMod);
204
205 if (globalLdap->passent->pw_shell)
206 userMod =
207 - ldapBuildListStr (op, "loginShell", globalLdap->passent->pw_shell,
208 + ldapBuildListStr (ld, op, "loginShell", globalLdap->passent->pw_shell,
209 userMod);
210 if ((int) globalLdap->passent->sp_lstchg != -10)
211 userMod = ldapBuildListInt (op, "shadowLastChange",
212 @@ -501,7 +501,7 @@ ldapUserCheck (int mod_op, LDAP * ld)
213 pos = globalLdap->parse;
214 while (pos != NULL)
215 {
216 - userMod = ldapBuildListStr (op, pos->attr, pos->attrval, userMod);
217 + userMod = ldapBuildListStr (ld, op, pos->attr, pos->attrval, userMod);
218 pos = pos->next;
219 }
220 }

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed