You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@locus.apache.org on 2000/11/17 00:52:14 UTC

cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util SecurityTools.java

craigmcc    00/11/16 15:52:14

  Modified:    src/share/org/apache/tomcat/request Tag: tomcat_32
                        JDBCRealm.java
               src/share/org/apache/tomcat/util Tag: tomcat_32
                        SecurityTools.java
  Log:
  Avoid "index out of bound" exceptions in the following scenarios:
  * JDBCRealm is configured, user is authenticated successfully,
    user has no defined roles, debug output is enabled
  * JDBCRealm is configured, user is authenticated successfully,
    security constraint has no defined roles, debug output is enabled
  * Null is passed as an argument to either SecurityTools.haveRole() method.
  
  PR: BugRat Bug Report #372
  Submitted by:	Tero Piirainen <te...@legosoft.net>
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.9.2.2   +12 -2     jakarta-tomcat/src/share/org/apache/tomcat/request/JDBCRealm.java
  
  Index: JDBCRealm.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/JDBCRealm.java,v
  retrieving revision 1.9.2.1
  retrieving revision 1.9.2.2
  diff -u -r1.9.2.1 -r1.9.2.2
  --- JDBCRealm.java	2000/10/17 23:36:24	1.9.2.1
  +++ JDBCRealm.java	2000/11/16 23:52:13	1.9.2.2
  @@ -509,12 +509,22 @@
   	userRoles = getUserRoles( user );
   	req.setUserRoles( userRoles );
   
  -        if( debug > 0 ) log( "Auth ok, first role=" + userRoles[0] );
  +        if( debug > 0 ) {
  +            if ((userRoles != null) && (userRoles.length > 0))
  +                log( "Auth ok, first role=" + userRoles[0] );
  +            else
  +                log( "Auth ok, user has no roles");
  +        }
   
           if( SecurityTools.haveRole( userRoles, roles ))
               return 0;
   
  -        if( debug > 0 ) log( "UnAuthorized " + roles[0] );
  +        if( debug > 0 ) {
  +            if ((roles != null) && (roles.length > 0))
  +                log( "UnAuthorized " + roles[0] );
  +            else
  +                log( "UnAuthorized - no roles specified");
  +        }
   	return 401; //HttpServletResponse.SC_UNAUTHORIZED
           // XXX check transport
       }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.1   +5 -1      jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/SecurityTools.java
  
  Index: SecurityTools.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/SecurityTools.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- SecurityTools.java	2000/06/23 02:16:30	1.5
  +++ SecurityTools.java	2000/11/16 23:52:14	1.5.2.1
  @@ -192,6 +192,8 @@
       }
   
       public static boolean haveRole( String userRoles[], String requiredRoles[] ) {
  +        if ((userRoles == null) || (requiredRoles == null))
  +            return false;
   	for( int i=0; i< userRoles.length; i ++ ) {
   	    if( haveRole( userRoles[i], requiredRoles )) return true;
   	}
  @@ -199,8 +201,10 @@
       }
   
       public static boolean haveRole( String element, String set[] ) {
  +        if ((element == null) || (set == null))
  +            return false;
   	for( int i=0; i< set.length; i ++ ) {
  -	    if( element!=null && element.equals( set[i] ))
  +	    if( element.equals( set[i] ))
   		return true;
   	}
   	return false;