/[smeserver]/rpms/cpu/sme8/cpu-1.4.3-supp-groups.patch
ViewVC logotype

Annotation of /rpms/cpu/sme8/cpu-1.4.3-supp-groups.patch

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


Revision 1.1 - (hide annotations) (download)
Mon Nov 8 03:51:36 2010 UTC (14 years ago) by slords
Branch: MAIN
CVS Tags: cpu-1_4_3-12_el5_sme, cpu-1_4_3-13_el5_sme, HEAD
* Sun Nov 7 2010 Shad L. Lords <slords@mail.com> 1.4.3-12.sme
- Retrieve supplimential groups if not specified [SME: 6347]
- Fix memory leak introduced in revision 9 [SME: 6342]

1 slords 1.1 diff -up cpu-1.4.3/src/plugins/ldap/ld.c.supp-groups cpu-1.4.3/src/plugins/ldap/ld.c
2     --- cpu-1.4.3/src/plugins/ldap/ld.c.supp-groups 2010-11-07 19:00:21.000000000 -0700
3     +++ cpu-1.4.3/src/plugins/ldap/ld.c 2010-11-07 18:56:18.000000000 -0700
4     @@ -29,6 +29,7 @@
5    
6     gid_t getlGid (LDAP * ld, char *groupn);
7     char *checkSupGroups (LDAP * ld);
8     +void getSupGroups (LDAP * ld, char *uname);
9     void rmUsrFrmOldSupGrp (LDAP * ld, char *uname);
10     int checkIsPrimaryGroup (LDAP * ld);
11     int groupExists (LDAP * ld, int cgid);
12     @@ -193,6 +194,7 @@ ldapOperation (ldapop_t optype)
13     return -1;
14     }
15     }
16     + getSupGroups (ld, globalLdap->passent->pw_name);
17     tstr = NULL;
18     if ((tstr = checkSupGroups (ld)) != NULL)
19     {
20     @@ -755,6 +757,65 @@ checkSupGroups (LDAP * ld)
21     return NULL;
22     }
23    
24     +void
25     +getSupGroups (LDAP * ld, char *uname)
26     +{
27     + LDAPMessage *res[2];
28     + LDAPMessage *pos;
29     + int filtsize = 0;
30     + struct timeval timeout;
31     + char **vals;
32     + char *filter = NULL;
33     + char *temp;
34     + int num_tokens = 0;
35     + char *attrs[7] = {
36     + "cn",
37     + NULL
38     + };
39     +
40     + if (globalLdap->memberUid != NULL)
41     + return;
42     +
43     + timeout = globalLdap->timeout;
44     + res[1] = NULL;
45     +
46     + temp = cfg_get_str ("LDAP", "GROUP_FILTER");
47     + if (temp == NULL)
48     + temp = strdup ("(objectClass=PosixGroup)");
49     + filtsize = strlen (temp) + strlen (uname) + 18;
50     + filter = (char *) malloc (sizeof (char) * filtsize);
51     + bzero (filter, filtsize);
52     +
53     + snprintf (filter, filtsize, "(&%s (memberUid=%s))", temp, uname);
54     + if (ldap_search_st (ld, globalLdap->group_base, LDAP_SCOPE_SUBTREE,
55     + filter, attrs, 0, &timeout, res) != LDAP_SUCCESS)
56     + {
57     + Free (filter);
58     + CPU_ldapPerror (ld, globalLdap, "getSupGroups: ldap_search_st");
59     + return;
60     + }
61     + free (filter);
62     + if (ldap_count_entries (ld, res[0]) < 1)
63     + return;
64     +
65     + for (pos = ldap_first_entry (ld, res[0]); pos != NULL;
66     + pos = ldap_next_entry (ld, pos))
67     + {
68     + if ((vals = ldap_get_values (ld, pos, "cn")) != NULL)
69     + {
70     + if (vals[0] != NULL)
71     + {
72     + globalLdap->memberUid = (char **)
73     + realloc (globalLdap->memberUid,
74     + sizeof(char*)*((num_tokens+1)*4));
75     + globalLdap->memberUid[num_tokens] = strdup(vals[0]);
76     + num_tokens++;
77     + }
78     + }
79     + }
80     + globalLdap->memberUid[num_tokens] = NULL;
81     +}
82     +
83     int
84     groupExists (LDAP * ld, int cgid)
85     {
86     diff -up cpu-1.4.3/src/plugins/ldap/commandline.c.supp-groups cpu-1.4.3/src/plugins/ldap/commandline.c
87     --- cpu-1.4.3/src/plugins/ldap/commandline.c.supp-groups 2010-11-07 20:45:35.000000000 -0700
88     +++ cpu-1.4.3/src/plugins/ldap/commandline.c 2010-11-07 20:45:20.000000000 -0700
89     @@ -175,15 +175,20 @@
90     if (isalnum ((int)optarg[0]))
91     gtemp = strdup (optarg);
92     if (gtemp == NULL)
93     - return -1;
94     - while (gtemp != NULL && *gtemp)
95     - {
96     + {
97     globalLdap->memberUid =
98     (char **) realloc (globalLdap->memberUid,
99     sizeof(char*)*((num_tokens+1)*4));
100     - globalLdap->memberUid[num_tokens] = getToken(&gtemp,",");
101     - num_tokens++;
102     - }
103     + }
104     + else
105     + while (gtemp != NULL && *gtemp)
106     + {
107     + globalLdap->memberUid =
108     + (char **) realloc (globalLdap->memberUid,
109     + sizeof(char*)*((num_tokens+1)*4));
110     + globalLdap->memberUid[num_tokens] = getToken(&gtemp,",");
111     + num_tokens++;
112     + }
113     globalLdap->memberUid[num_tokens] = NULL;
114     break;
115     }

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