~ubuntu-branches/ubuntu/wily/tomcat6/wily-proposed

« back to all changes in this revision

Viewing changes to .pc/0012-CVE-2011-2204.patch/java/org/apache/catalina/users/MemoryUser.java

  • Committer: Bazaar Package Importer
  • Author(s): tony mancill
  • Date: 2011-07-06 21:23:58 UTC
  • Revision ID: james.westby@ubuntu.com-20110706212358-xltxm013ie5pa3ur
Tags: 6.0.32-5
* Team upload.
* Add Catalan debconf translation ca.po (Closes: #630073).
* Correct Suggests for libtcnative-1 (tomcat-native) (Closes: #631919)
* Add patch for CVE-2011-2204 (Closes: #632882)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
 
3
 * contributor license agreements.  See the NOTICE file distributed with
 
4
 * this work for additional information regarding copyright ownership.
 
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
 
6
 * (the "License"); you may not use this file except in compliance with
 
7
 * the License.  You may obtain a copy of the License at
 
8
 * 
 
9
 *      http://www.apache.org/licenses/LICENSE-2.0
 
10
 * 
 
11
 * Unless required by applicable law or agreed to in writing, software
 
12
 * distributed under the License is distributed on an "AS IS" BASIS,
 
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
14
 * See the License for the specific language governing permissions and
 
15
 * limitations under the License.
 
16
 */
 
17
 
 
18
 
 
19
package org.apache.catalina.users;
 
20
 
 
21
 
 
22
import java.util.ArrayList;
 
23
import java.util.Iterator;
 
24
 
 
25
import org.apache.catalina.Group;
 
26
import org.apache.catalina.Role;
 
27
import org.apache.catalina.UserDatabase;
 
28
import org.apache.catalina.util.RequestUtil;
 
29
 
 
30
/**
 
31
 * <p>Concrete implementation of {@link org.apache.catalina.User} for the
 
32
 * {@link MemoryUserDatabase} implementation of {@link UserDatabase}.</p>
 
33
 *
 
34
 * @author Craig R. McClanahan
 
35
 * @version $Id: MemoryUser.java 939353 2010-04-29 15:50:43Z kkolinko $
 
36
 * @since 4.1
 
37
 */
 
38
 
 
39
public class MemoryUser extends AbstractUser {
 
40
 
 
41
 
 
42
    // ----------------------------------------------------------- Constructors
 
43
 
 
44
 
 
45
    /**
 
46
     * Package-private constructor used by the factory method in
 
47
     * {@link MemoryUserDatabase}.
 
48
     *
 
49
     * @param database The {@link MemoryUserDatabase} that owns this user
 
50
     * @param username Logon username of the new user
 
51
     * @param password Logon password of the new user
 
52
     * @param fullName Full name of the new user
 
53
     */
 
54
    MemoryUser(MemoryUserDatabase database, String username,
 
55
               String password, String fullName) {
 
56
 
 
57
        super();
 
58
        this.database = database;
 
59
        setUsername(username);
 
60
        setPassword(password);
 
61
        setFullName(fullName);
 
62
 
 
63
    }
 
64
 
 
65
 
 
66
    // ----------------------------------------------------- Instance Variables
 
67
 
 
68
 
 
69
    /**
 
70
     * The {@link MemoryUserDatabase} that owns this user.
 
71
     */
 
72
    protected MemoryUserDatabase database = null;
 
73
 
 
74
 
 
75
    /**
 
76
     * The set of {@link Group}s that this user is a member of.
 
77
     */
 
78
    protected ArrayList groups = new ArrayList();
 
79
 
 
80
 
 
81
    /**
 
82
     * The set of {@link Role}s associated with this user.
 
83
     */
 
84
    protected ArrayList roles = new ArrayList();
 
85
 
 
86
 
 
87
    // ------------------------------------------------------------- Properties
 
88
 
 
89
 
 
90
    /**
 
91
     * Return the set of {@link Group}s to which this user belongs.
 
92
     */
 
93
    public Iterator getGroups() {
 
94
 
 
95
        synchronized (groups) {
 
96
            return (groups.iterator());
 
97
        }
 
98
 
 
99
    }
 
100
 
 
101
 
 
102
    /**
 
103
     * Return the set of {@link Role}s assigned specifically to this user.
 
104
     */
 
105
    public Iterator getRoles() {
 
106
 
 
107
        synchronized (roles) {
 
108
            return (roles.iterator());
 
109
        }
 
110
 
 
111
    }
 
112
 
 
113
 
 
114
    /**
 
115
     * Return the {@link UserDatabase} within which this User is defined.
 
116
     */
 
117
    public UserDatabase getUserDatabase() {
 
118
 
 
119
        return (this.database);
 
120
 
 
121
    }
 
122
 
 
123
 
 
124
    // --------------------------------------------------------- Public Methods
 
125
 
 
126
 
 
127
    /**
 
128
     * Add a new {@link Group} to those this user belongs to.
 
129
     *
 
130
     * @param group The new group
 
131
     */
 
132
    public void addGroup(Group group) {
 
133
 
 
134
        synchronized (groups) {
 
135
            if (!groups.contains(group)) {
 
136
                groups.add(group);
 
137
            }
 
138
        }
 
139
 
 
140
    }
 
141
 
 
142
 
 
143
    /**
 
144
     * Add a new {@link Role} to those assigned specifically to this user.
 
145
     *
 
146
     * @param role The new role
 
147
     */
 
148
    public void addRole(Role role) {
 
149
 
 
150
        synchronized (roles) {
 
151
            if (!roles.contains(role)) {
 
152
                roles.add(role);
 
153
            }
 
154
        }
 
155
 
 
156
    }
 
157
 
 
158
 
 
159
    /**
 
160
     * Is this user in the specified group?
 
161
     *
 
162
     * @param group The group to check
 
163
     */
 
164
    public boolean isInGroup(Group group) {
 
165
 
 
166
        synchronized (groups) {
 
167
            return (groups.contains(group));
 
168
        }
 
169
 
 
170
    }
 
171
 
 
172
 
 
173
    /**
 
174
     * Is this user specifically assigned the specified {@link Role}?  This
 
175
     * method does <strong>NOT</strong> check for roles inherited based on
 
176
     * {@link Group} membership.
 
177
     *
 
178
     * @param role The role to check
 
179
     */
 
180
    public boolean isInRole(Role role) {
 
181
 
 
182
        synchronized (roles) {
 
183
            return (roles.contains(role));
 
184
        }
 
185
 
 
186
    }
 
187
 
 
188
 
 
189
    /**
 
190
     * Remove a {@link Group} from those this user belongs to.
 
191
     *
 
192
     * @param group The old group
 
193
     */
 
194
    public void removeGroup(Group group) {
 
195
 
 
196
        synchronized (groups) {
 
197
            groups.remove(group);
 
198
        }
 
199
 
 
200
    }
 
201
 
 
202
 
 
203
    /**
 
204
     * Remove all {@link Group}s from those this user belongs to.
 
205
     */
 
206
    public void removeGroups() {
 
207
 
 
208
        synchronized (groups) {
 
209
            groups.clear();
 
210
        }
 
211
 
 
212
    }
 
213
 
 
214
 
 
215
    /**
 
216
     * Remove a {@link Role} from those assigned to this user.
 
217
     *
 
218
     * @param role The old role
 
219
     */
 
220
    public void removeRole(Role role) {
 
221
 
 
222
        synchronized (roles) {
 
223
            roles.remove(role);
 
224
        }
 
225
 
 
226
    }
 
227
 
 
228
 
 
229
    /**
 
230
     * Remove all {@link Role}s from those assigned to this user.
 
231
     */
 
232
    public void removeRoles() {
 
233
 
 
234
        synchronized (roles) {
 
235
            roles.clear();
 
236
        }
 
237
 
 
238
    }
 
239
 
 
240
 
 
241
    /**
 
242
     * <p>Return a String representation of this user in XML format.</p>
 
243
     *
 
244
     * <p><strong>IMPLEMENTATION NOTE</strong> - For backwards compatibility,
 
245
     * the reader that processes this entry will accept either
 
246
     * <code>username</code> or </code>name</code> for the username
 
247
     * property.</p>
 
248
     */
 
249
    public String toString() {
 
250
 
 
251
        StringBuffer sb = new StringBuffer("<user username=\"");
 
252
        sb.append(RequestUtil.filter(username));
 
253
        sb.append("\" password=\"");
 
254
        sb.append(RequestUtil.filter(password));
 
255
        sb.append("\"");
 
256
        if (fullName != null) {
 
257
            sb.append(" fullName=\"");
 
258
            sb.append(RequestUtil.filter(fullName));
 
259
            sb.append("\"");
 
260
        }
 
261
        synchronized (groups) {
 
262
            if (groups.size() > 0) {
 
263
                sb.append(" groups=\"");
 
264
                int n = 0;
 
265
                Iterator values = groups.iterator();
 
266
                while (values.hasNext()) {
 
267
                    if (n > 0) {
 
268
                        sb.append(',');
 
269
                    }
 
270
                    n++;
 
271
                    sb.append(RequestUtil.filter(((Group) values.next()).getGroupname()));
 
272
                }
 
273
                sb.append("\"");
 
274
            }
 
275
        }
 
276
        synchronized (roles) {
 
277
            if (roles.size() > 0) {
 
278
                sb.append(" roles=\"");
 
279
                int n = 0;
 
280
                Iterator values = roles.iterator();
 
281
                while (values.hasNext()) {
 
282
                    if (n > 0) {
 
283
                        sb.append(',');
 
284
                    }
 
285
                    n++;
 
286
                    sb.append(RequestUtil.filter(((Role) values.next()).getRolename()));
 
287
                }
 
288
                sb.append("\"");
 
289
            }
 
290
        }
 
291
        sb.append("/>");
 
292
        return (sb.toString());
 
293
 
 
294
    }
 
295
 
 
296
 
 
297
}