diff --git a/.travis.yml b/.travis.yml index 522341600..656a6d651 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ script: - git clone https://github.com/WebGoat/WebGoat-Lessons.git - mvn -file ./WebGoat-Lessons/pom.xml package - cp -fa ./WebGoat-Lessons/target/plugins/*.jar ./webgoat-container/src/main/webapp/plugin_lessons/ - - if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then mvn -Prun-integration-tests clean install; else mvn clean install; fi + - if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then mvn "-Dbuild.number=$TRAVIS_BUILD_NUMBER" -Prun-integration-tests clean install; else mvn clean install; fi before_deploy: - export WEBGOAT_CONTAINTER_TARGET_DIR=$HOME/build/$TRAVIS_REPO_SLUG/webgoat-container/target - export WEBGOAT_ARTIFACTS_FOLDER=$HOME/build/$TRAVIS_REPO_SLUG/Deployable_Artifacts/ diff --git a/pom.xml b/pom.xml index 50b033c9c..226d490fa 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ - mayher64 + mayhew64 Bruce Mayhew webgoat@owasp.org OWASP @@ -108,58 +108,58 @@ build - 1.1 - 1.2 - 1.2 - 1.2 - 1.2 - 1.7 + 1.1.1 + 1.4 + 1.4 + 1.4 + 1.4 + 1.9.1 2.7 - 3.1 - 1.8.1 + 3.2.1 + 2.1 0.2 - 1.2.2 - 1.4 - 3.3.2 - 1.1.3 + 1.3.1 + 2.4 + 3.4 + 1.2 4.0.0 1.4.2 18.0 - 1.4.187 + 1.4.190 1.8.0.10 1.3.1 - 2.0.4 - 2.0.4 + 2.6.3 + 2.6.3 6.0 1.2 1.7.7 1.2 - 1.2.2 + 1.3.1 4.12 1.2.17 - 1.4.2 - 3.1 + 1.4.3 + 3.3 2.19 1.6 2.6 2.10.3 2.5.2 2.4 - 2.18.1 - 2.4 + 2.19 + 2.6 1.6.6 3.2.4.RELEASE - 2.1.18 - 2.47.1 - 1.7.7 - 1.7.7 + 2.1.20 + 2.48.2 + 1.7.12 + 1.7.12 3.2.4.RELEASE 1.1.2 - 2.2.2 + 3.0.5 + 7.0.65 2.3-SNAPSHOT - 1.5.1 - 7.0.63 3.5.1 + 1.6.3 diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/application/WebGoatServletListener.java b/webgoat-container/src/main/java/org/owasp/webgoat/application/WebGoatServletListener.java index 8b770cff5..a0f6c937d 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/application/WebGoatServletListener.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/application/WebGoatServletListener.java @@ -10,6 +10,10 @@ import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import java.io.IOException; import java.io.InputStream; +import java.sql.Driver; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Enumeration; import java.util.jar.Attributes; import java.util.jar.Manifest; @@ -34,6 +38,27 @@ public class WebGoatServletListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent sce) { ServletContext context = sce.getServletContext(); context.log("WebGoat is stopping"); + + // Unregister JDBC drivers in this context's ClassLoader: + // Get the webapp's ClassLoader + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + // Loop through all drivers + Enumeration drivers = DriverManager.getDrivers(); + while (drivers.hasMoreElements()) { + java.sql.Driver driver = drivers.nextElement(); + if (driver.getClass().getClassLoader() == cl) { + // This driver was registered by the webapp's ClassLoader, so deregister it: + try { + context.log("Unregister JDBC driver {}"); + DriverManager.deregisterDriver(driver); + } catch (SQLException ex) { + context.log("Error unregistering JDBC driver {}"); + } + } else { + // driver was not registered by the webapp's ClassLoader and may be in use elsewhere + context.log("Not unregistering JDBC driver {} as it does not belong to this webapp's ClassLoader"); + } + } } private void setApplicationVariables(ServletContext context) {