Author: markt Date: Mon May 12 12:05:01 2014 New Revision: 1593939 URL: http://svn.apache.org/r1593939 Log: Fix regression introduced in r1239520 that broke loading of users from tomcat-users.xml when using the JASSMemoryLoginModule
Modified: tomcat/trunk/java/org/apache/catalina/realm/JAASCallbackHandler.java tomcat/trunk/java/org/apache/catalina/realm/JAASMemoryLoginModule.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/realm/JAASCallbackHandler.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JAASCallbackHandler.java?rev=1593939&r1=1593938&r2=1593939&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/realm/JAASCallbackHandler.java (original) +++ tomcat/trunk/java/org/apache/catalina/realm/JAASCallbackHandler.java Mon May 12 12:05:01 2014 @@ -215,6 +215,8 @@ public class JAASCallbackHandler impleme cb.setText(md5a2); } else if (cb.getPrompt().equals("authMethod")) { cb.setText(authMethod); + } else if (cb.getPrompt().equals("catalinaBase")) { + cb.setText(realm.getContainer().getCatalinaBase().getAbsolutePath()); } else { throw new UnsupportedCallbackException(callbacks[i]); } Modified: tomcat/trunk/java/org/apache/catalina/realm/JAASMemoryLoginModule.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JAASMemoryLoginModule.java?rev=1593939&r1=1593938&r2=1593939&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/realm/JAASMemoryLoginModule.java (original) +++ tomcat/trunk/java/org/apache/catalina/realm/JAASMemoryLoginModule.java Mon May 12 12:05:01 2014 @@ -338,8 +338,15 @@ public class JAASMemoryLoginModule exten // Validate the existence of our configuration file File file = new File(pathname); - if (!file.isAbsolute()) - file = new File(getContainer().getCatalinaBase(), pathname); + if (!file.isAbsolute()) { + String catalinaBase = getCatalinaBase(); + if (catalinaBase == null) { + log.warn("Unable to determine Catalina base to load file " + pathname); + return; + } else { + file = new File(catalinaBase, pathname); + } + } if (!file.exists() || !file.canRead()) { log.warn("Cannot load configuration file " + file.getAbsolutePath()); return; @@ -359,6 +366,29 @@ public class JAASMemoryLoginModule exten } finally { digester.reset(); } + } + + private String getCatalinaBase() { + // Have to get this via a callback as that is the only link we have back + // to the defining Realm. Can't use the system property as that may not + // be set/correct in an embedded scenario + + if (callbackHandler == null) { + return null; + } + + Callback callbacks[] = new Callback[1]; + callbacks[0] = new TextInputCallback("catalinaBase"); + + String result = null; + + try { + callbackHandler.handle(callbacks); + result = ((TextInputCallback) callbacks[0]).getText(); + } catch (IOException | UnsupportedCallbackException e) { + return null; + } + return result; } } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1593939&r1=1593938&r2=1593939&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon May 12 12:05:01 2014 @@ -182,6 +182,11 @@ trigger threads renewal for failed contexts. Do not ignore <code>threadRenewalDelay</code> setting. Improve documentation. (kkolinko) </fix> + <fix> + Fix regression introduced in <rev>1239520</rev> that broke loading of + users from <code>tomcat-users.xml</code> when using the + <code>JASSMemoryLoginModule</code>. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org