User: stark   
  Date: 01/01/23 18:51:43

  Modified:    src/main/org/jboss/security/plugins JaasSecurityManager.java
  Log:
  Need to synchronize on the LoginContext during the construction of a
  LoginContext because the load of the login config file is not thread safe.
  
  Revision  Changes    Path
  1.2       +16 -11    
jboss/src/main/org/jboss/security/plugins/JaasSecurityManager.java
  
  Index: JaasSecurityManager.java
  ===================================================================
  RCS file: 
/products/cvs/ejboss/jboss/src/main/org/jboss/security/plugins/JaasSecurityManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JaasSecurityManager.java  2001/01/10 01:24:11     1.1
  +++ JaasSecurityManager.java  2001/01/24 02:51:43     1.2
  @@ -152,19 +152,24 @@
           Principal beanPrincipal;
   
           try {
  -            lc = new LoginContext(beanName, new CallbackHandler() {
  -                public void handle(Callback[] callbacks) throws 
UnsupportedCallbackException {
  -                    for (int i = 0; i < callbacks.length; i++) {
  -                        if (callbacks[i] instanceof NameCallback) {
  -                            ((NameCallback) callbacks[i]).setName(userName);
  -                        } else if (callbacks[i] instanceof PasswordCallback) {
  -                            ((PasswordCallback) callbacks[i]).setPassword(password);
  -                        } else {
  -                            throw new UnsupportedCallbackException(callbacks[i], 
"Unrecognized Callback");
  +            synchronized( LoginContext.class )
  +            {   /* Need to synchronize on the LoginContext because the load of
  +                    is not thread safe.
  +                */
  +                lc = new LoginContext(beanName, new CallbackHandler() {
  +                    public void handle(Callback[] callbacks) throws 
UnsupportedCallbackException {
  +                        for (int i = 0; i < callbacks.length; i++) {
  +                            if (callbacks[i] instanceof NameCallback) {
  +                                ((NameCallback) callbacks[i]).setName(userName);
  +                            } else if (callbacks[i] instanceof PasswordCallback) {
  +                                ((PasswordCallback) 
callbacks[i]).setPassword(password);
  +                            } else {
  +                                throw new 
UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
  +                            }
                           }
                       }
  -                }
  -            });
  +                });
  +            }
               lc.login();
               _passwords.put(principal, password);
               subj = lc.getSubject();
  
  
  

Reply via email to