diff --git a/SOURCES/tomcat-7.0-jsvc.wrapper b/SOURCES/tomcat-7.0-jsvc.wrapper deleted file mode 100644 index 56fcc09..0000000 --- a/SOURCES/tomcat-7.0-jsvc.wrapper +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -if [ -r /usr/share/java-utils/java-functions ]; then - . /usr/share/java-utils/java-functions -else - echo "Can't read Java functions library, aborting" - exit 1 -fi - -# Get the tomcat config (use this for environment specific settings) -#if [ -z "${TOMCAT_CFG}" ]; then -# TOMCAT_CFG="/etc/tomcat/tomcat.conf" -#fi - -#if [ -r "$TOMCAT_CFG" ]; then -# . $TOMCAT_CFG -#fi - -set_javacmd - -# CLASSPATH munging -if [ -n "$JSSE_HOME" ]; then - CLASSPATH="${CLASSPATH}:$(build-classpath jcert jnet jsse 2>/dev/null)" -fi -CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/bootstrap.jar" -CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar" -CLASSPATH="${CLASSPATH}:$(build-classpath commons-daemon 2>/dev/null)" - -# if jsvc installed and USE_JSVC=true -# then use jsvc instead of calling java directly -if [ -x /usr/bin/jsvc ]; then - JAVACMD="/usr/bin/jsvc -nodetach -user ${TOMCAT_USER} -outfile ${CATALINA_BASE}/logs/catalina.out -errfile ${CATALINA_BASE}/logs/catalina.out" - if [ "$1" = "stop" ]; then - JAVACMD="${JAVACMD} -stop" - fi -fi - -if [ "$1" = "start" ]; then - ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ - -classpath "$CLASSPATH" \ - -Dcatalina.base="$CATALINA_BASE" \ - -Dcatalina.home="$CATALINA_HOME" \ - -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ - -Djava.io.tmpdir="$CATALINA_TMPDIR" \ - -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ - -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ - org.apache.catalina.startup.Bootstrap start \ - >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & - if [ ! -z "$CATALINA_PID" ]; then - echo $! > $CATALINA_PID - fi -elif [ "$1" = "start-security" ]; then - ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ - -classpath "$CLASSPATH" \ - -Dcatalina.base="$CATALINA_BASE" \ - -Dcatalina.home="$CATALINA_HOME" \ - -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ - -Djava.io.tmpdir="$CATALINA_TMPDIR" \ - -Djava.security.manager \ - -Djava.security.policy=="${CATALINA_BASE}/conf/catalina.policy" \ - -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ - -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ - org.apache.catalina.startup.Bootstrap start \ - >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & - if [ ! -z "$CATALINA_PID" ]; then - echo $! > $CATALINA_PID - fi -elif [ "$1" = "stop" ]; then - ${JAVACMD} $JAVA_OPTS \ - -classpath "$CLASSPATH" \ - -Dcatalina.base="$CATALINA_BASE" \ - -Dcatalina.home="$CATALINA_HOME" \ - -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ - -Djava.io.tmpdir="$CATALINA_TMPDIR" \ - org.apache.catalina.startup.Bootstrap stop \ - >> ${CATALINA_BASE}/logs/catalina.out 2>&1 -elif [ "$1" = "version" ]; then - ${JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \ - org.apache.catalina.util.ServerInfo -else - echo "Usage: $0 {start|start-security|stop|version}" - exit 1 -fi diff --git a/SOURCES/tomcat-7.0-tomcat-jsvc-sysd b/SOURCES/tomcat-7.0-tomcat-jsvc-sysd deleted file mode 100644 index 9134d5b..0000000 --- a/SOURCES/tomcat-7.0-tomcat-jsvc-sysd +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash -# -# This script provides systemd activation of the tomcat service -# To create clones of this service: -# 1) SERVICE_NAME must be defined before calling this script -# 2) Create /etc/sysconfig/${SERVICE_NAME} from /etc/sysconfig/tomcat -# to override tomcat defaults - -# SERVICE_NAME is a required value only if the service name is -# different from 'tomcat' -# -NAME="${SERVICE_NAME:-tomcat}" - -#I'll bet this isn't required. -# unset ISBOOT - -# For SELinux we need to use 'runuser' not 'su' -if [ -x "/sbin/runuser" ]; then - SU="/sbin/runuser -s /bin/sh" -else - SU="/bin/su -s /bin/sh" -fi - -# Path to the tomcat launch script -TOMCAT_SCRIPT="/usr/sbin/tomcat-jsvc" - -# Define the tomcat username -TOMCAT_USER="${TOMCAT_USER:-tomcat}" - -# TOMCAT_LOG should be different from catalina.out. -# Usually the below config is all that is necessary -TOMCAT_LOG=/var/log/${NAME}/${NAME}-sysd.log - -# Get the tomcat config (use this for environment specific settings) -TOMCAT_CFG="/etc/tomcat/tomcat.conf" -if [ -r "$TOMCAT_CFG" ]; then - . $TOMCAT_CFG -fi - -# Get instance specific config file -if [ -r "/etc/sysconfig/${NAME}" ]; then - . /etc/sysconfig/${NAME} -fi - -function parseOptions() { - options="" - options="$options $( - awk '!/^#/ && !/^$/ { ORS=" "; print "export ", $0, ";" }' \ - $TOMCAT_CFG - )" - if [ -r "/etc/sysconfig/${NAME}" ]; then - options="$options $( - awk '!/^#/ && !/^$/ { ORS=" "; - print "export ", $0, ";" }' \ - /etc/sysconfig/${NAME} - )" - fi - TOMCAT_SCRIPT="$options ${TOMCAT_SCRIPT}" -} - -# See how we were called. -function start() { - # fix permissions on the log and pid files - export CATALINA_PID="/var/run/${NAME}.pid" - touch $CATALINA_PID 2>&1 - if [ "$?" -eq "0" ]; then - chown ${TOMCAT_USER}:${TOMCAT_USER} $CATALINA_PID - fi - - touch $TOMCAT_LOG 2>&1 - if [ "$?" -eq "0" ]; then - chown ${TOMCAT_USER}:${TOMCAT_USER} $TOMCAT_LOG - fi - - # if jsvc installed and USE_JSVC=true - # then start as root and use jsvc to drop privileges - if [ -x /usr/bin/jsvc ]; then - TOMCAT_USER="root" - fi - - parseOptions - if [ "$SECURITY_MANAGER" = "true" ]; then - $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} start-security" >> $TOMCAT_LOG 2>&1 - else - $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} start" >> $TOMCAT_LOG 2>&1 - fi -} - -function stop() { - # if jsvc installed and USE_JSVC=true - # then start as root and use jsvc to drop privileges - if [ -x /usr/bin/jsvc ]; then - TOMCAT_USER="root" - fi - - parseOptions - $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} stop" >> $TOMCAT_LOG 2>&1 -} - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - stop - start - ;; -esac - diff --git a/SOURCES/tomcat-7.0-tomcat-sysd b/SOURCES/tomcat-7.0-tomcat-sysd deleted file mode 100644 index 192329c..0000000 --- a/SOURCES/tomcat-7.0-tomcat-sysd +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -# -# This script provides systemd activation of the tomcat service -# To create clones of this service: -# 1) SERVICE_NAME must be defined before calling this script -# 2) Create /etc/sysconfig/${SERVICE_NAME} from /etc/sysconfig/tomcat -# to override tomcat defaults - -# SERVICE_NAME is a required value only if the service name is -# different from 'tomcat' -# -export NAME="${SERVICE_NAME:-tomcat}" - -#I'll bet this isn't required. -# unset ISBOOT - -# For SELinux we need to use 'runuser' not 'su' -if [ -x "/sbin/runuser" ]; then - SU="/sbin/runuser -s /bin/sh" -else - SU="/bin/su -s /bin/sh" -fi - -# Path to the tomcat launch script -TOMCAT_SCRIPT="/usr/sbin/tomcat" - -# Define the tomcat username -TOMCAT_USER="${TOMCAT_USER:-tomcat}" - -# TOMCAT_LOG should be different from catalina.out. -# Usually the below config is all that is necessary -TOMCAT_LOG=/var/log/${NAME}/${NAME}-sysd.log - -# Get the tomcat config (use this for environment specific settings) -TOMCAT_CFG="/etc/tomcat/tomcat.conf" -if [ -r "$TOMCAT_CFG" ]; then - . $TOMCAT_CFG -fi - -# Get instance specific config file -if [ -r "/etc/sysconfig/${NAME}" ]; then - . /etc/sysconfig/${NAME} -fi - -# See how we were called. -function start() { - # fix permissions on the log and pid files - export CATALINA_PID="/var/run/${NAME}.pid" - - touch $TOMCAT_LOG 2>&1 - if [ "$?" -eq "0" ]; then - chown ${TOMCAT_USER}:${TOMCAT_USER} $TOMCAT_LOG - fi - - if [ "$SECURITY_MANAGER" = "true" ]; then - ${TOMCAT_SCRIPT} start-security >> $TOMCAT_LOG 2>&1 - else - ${TOMCAT_SCRIPT} start #>> $TOMCAT_LOG 2>&1 - fi -} - -function stop() { - ${TOMCAT_SCRIPT} stop >> $TOMCAT_LOG 2>&1 -} - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - stop - start - ;; -esac - diff --git a/SOURCES/tomcat-7.0.54-CVE-2014-0227.patch b/SOURCES/tomcat-7.0.54-CVE-2014-0227.patch old mode 100644 new mode 100755 diff --git a/SOURCES/tomcat-7.0.54-CVE-2014-7810.patch b/SOURCES/tomcat-7.0.54-CVE-2014-7810.patch new file mode 100644 index 0000000..32ca660 --- /dev/null +++ b/SOURCES/tomcat-7.0.54-CVE-2014-7810.patch @@ -0,0 +1,120 @@ +--- java/javax/el/BeanELResolver.java.orig 2016-06-02 09:46:15.019196027 -0400 ++++ java/javax/el/BeanELResolver.java 2016-06-02 09:46:15.025196055 -0400 +@@ -251,15 +251,39 @@ + try { + BeanInfo info = Introspector.getBeanInfo(this.type); + PropertyDescriptor[] pds = info.getPropertyDescriptors(); +- for (int i = 0; i < pds.length; i++) { +- this.properties.put(pds[i].getName(), new BeanProperty( +- type, pds[i])); ++ for (PropertyDescriptor pd: pds) { ++ this.properties.put(pd.getName(), new BeanProperty(type, pd)); ++ } ++ if (System.getSecurityManager() != null) { ++ // When running with SecurityManager, some classes may be ++ // not accessible, but have accessible interfaces. ++ populateFromInterfaces(type); + } + } catch (IntrospectionException ie) { + throw new ELException(ie); + } + } + ++ private void populateFromInterfaces(Class aClass) throws IntrospectionException { ++ Class interfaces[] = aClass.getInterfaces(); ++ if (interfaces.length > 0) { ++ for (Class ifs : interfaces) { ++ BeanInfo info = Introspector.getBeanInfo(ifs); ++ PropertyDescriptor[] pds = info.getPropertyDescriptors(); ++ for (PropertyDescriptor pd : pds) { ++ if (!this.properties.containsKey(pd.getName())) { ++ this.properties.put(pd.getName(), new BeanProperty( ++ this.type, pd)); ++ } ++ } ++ } ++ } ++ Class superclass = aClass.getSuperclass(); ++ if (superclass != null) { ++ populateFromInterfaces(superclass); ++ } ++ } ++ + private BeanProperty get(ELContext ctx, String name) { + BeanProperty property = this.properties.get(name); + if (property == null) { +--- java/org/apache/jasper/runtime/PageContextImpl.java.orig 2016-06-02 09:46:15.020196032 -0400 ++++ java/org/apache/jasper/runtime/PageContextImpl.java 2016-06-02 09:46:15.026196060 -0400 +@@ -937,37 +937,11 @@ + final Class expectedType, final PageContext pageContext, + final ProtectedFunctionMapper functionMap, final boolean escape) + throws ELException { +- Object retValue; + final ExpressionFactory exprFactory = jspf.getJspApplicationContext(pageContext.getServletContext()).getExpressionFactory(); +- if (SecurityUtil.isPackageProtectionEnabled()) { +- try { +- retValue = AccessController +- .doPrivileged(new PrivilegedExceptionAction() { +- +- @Override +- public Object run() throws Exception { +- ELContextImpl ctx = (ELContextImpl) pageContext.getELContext(); +- ctx.setFunctionMapper(new FunctionMapperImpl(functionMap)); +- ValueExpression ve = exprFactory.createValueExpression(ctx, expression, expectedType); +- return ve.getValue(ctx); +- } +- }); +- } catch (PrivilegedActionException ex) { +- Exception realEx = ex.getException(); +- if (realEx instanceof ELException) { +- throw (ELException) realEx; +- } else { +- throw new ELException(realEx); +- } +- } +- } else { +- ELContextImpl ctx = (ELContextImpl) pageContext.getELContext(); +- ctx.setFunctionMapper(new FunctionMapperImpl(functionMap)); +- ValueExpression ve = exprFactory.createValueExpression(ctx, expression, expectedType); +- retValue = ve.getValue(ctx); +- } +- +- return retValue; ++ ELContextImpl ctx = (ELContextImpl) pageContext.getELContext(); ++ ctx.setFunctionMapper(new FunctionMapperImpl(functionMap)); ++ ValueExpression ve = exprFactory.createValueExpression(ctx, expression, expectedType); ++ return ve.getValue(ctx); + } + + @Override +--- java/org/apache/jasper/security/SecurityClassLoad.java.orig 2016-06-02 09:46:15.020196032 -0400 ++++ java/org/apache/jasper/security/SecurityClassLoad.java 2016-06-02 09:46:15.027196065 -0400 +@@ -93,8 +93,6 @@ + "runtime.PageContextImpl$11"); + loader.loadClass( basePackage + + "runtime.PageContextImpl$12"); +- loader.loadClass( basePackage + +- "runtime.PageContextImpl$13"); + + loader.loadClass( basePackage + + "runtime.JspContextWrapper"); +--- webapps/docs/changelog.xml.orig 2016-06-02 09:46:15.022196041 -0400 ++++ webapps/docs/changelog.xml 2016-06-02 09:48:48.443915711 -0400 +@@ -55,6 +55,17 @@ + They eventually become mixed with the numbered issues. (I.e., numbered + issues to not "pop up" wrt. others). + --> ++
++ ++ ++ ++ Fix potential issue with BeanELresolver when running under a security ++ manager. Some classes may not be accessible but may have accessible ++ interfaces. (markt) ++ ++ ++ ++
+
+ + diff --git a/SOURCES/tomcat-7.0.54-CVE-2015-5346.patch b/SOURCES/tomcat-7.0.54-CVE-2015-5346.patch new file mode 100644 index 0000000..48c38b7 --- /dev/null +++ b/SOURCES/tomcat-7.0.54-CVE-2015-5346.patch @@ -0,0 +1,84 @@ +--- java/org/apache/catalina/connector/CoyoteAdapter.java.orig 2016-07-06 14:53:28.217385543 -0400 ++++ java/org/apache/catalina/connector/CoyoteAdapter.java 2016-07-06 15:02:49.045710268 -0400 +@@ -750,6 +750,10 @@ + version = ctxt.getWebappVersion(); + // Reset mapping + request.getMappingData().recycle(); ++ mapRequired = true; ++ // Recycle session info in case the correct ++ // context is configured with different settings ++ request.recycleSessionInfo(); + break; + } + } +--- java/org/apache/catalina/connector/Request.java.orig 2016-07-06 14:53:28.218385547 -0400 ++++ java/org/apache/catalina/connector/Request.java 2016-07-06 14:53:28.222385563 -0400 +@@ -494,18 +494,7 @@ + notes.clear(); + cookies = null; + +- if (session != null) { +- try { +- session.endAccess(); +- } catch (Throwable t) { +- ExceptionUtils.handleThrowable(t); +- log.warn(sm.getString("coyoteRequest.sessionEndAccessFail"), t); +- } +- } +- session = null; +- requestedSessionCookie = false; +- requestedSessionId = null; +- requestedSessionURL = false; ++ recycleSessionInfo(); + + if (Globals.IS_SECURITY_ENABLED || Connector.RECYCLE_FACADES) { + parameterMap = new ParameterMap(); +@@ -553,11 +542,24 @@ + } + + +- /** +- * Clear cached encoders (to save memory for Comet requests). +- */ +- public boolean read() +- throws IOException { ++ protected void recycleSessionInfo() { ++ if (session != null) { ++ try { ++ session.endAccess(); ++ } catch (Throwable t) { ++ ExceptionUtils.handleThrowable(t); ++ log.warn(sm.getString("coyoteRequest.sessionEndAccessFail"), t); ++ } ++ } ++ session = null; ++ requestedSessionCookie = false; ++ requestedSessionId = null; ++ requestedSessionURL = false; ++ requestedSessionSSL = false; ++ } ++ ++ ++ public boolean read() throws IOException { + return (inputBuffer.realReadBytes(null, 0, 0) > 0); + } + +--- webapps/docs/changelog.xml.orig 2016-07-06 14:53:28.219385551 -0400 ++++ webapps/docs/changelog.xml 2016-07-06 15:04:26.761927698 -0400 +@@ -55,6 +55,16 @@ + They eventually become mixed with the numbered issues. (I.e., numbered + issues to not "pop up" wrt. others). + --> ++
++ ++ ++ ++ Handle the unlikely case where different versions of a web application ++ are deployed with different session settings. (markt) ++ ++ ++ ++
+
+ + diff --git a/SOURCES/tomcat-7.0.54-CVE-2016-5388.patch b/SOURCES/tomcat-7.0.54-CVE-2016-5388.patch new file mode 100644 index 0000000..f420b57 --- /dev/null +++ b/SOURCES/tomcat-7.0.54-CVE-2016-5388.patch @@ -0,0 +1,117 @@ +--- conf/web.xml.orig 2016-08-23 14:53:40.388143818 -0400 ++++ conf/web.xml 2016-08-23 14:53:40.393143812 -0400 +@@ -325,6 +325,15 @@ + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -348,7 +357,7 @@ + cgiPathPrefix + WEB-INF/cgi + +- 5 ++ 5 + + --> + +--- java/org/apache/catalina/servlets/CGIServlet.java.orig 2016-08-23 14:53:40.388143818 -0400 ++++ java/org/apache/catalina/servlets/CGIServlet.java 2016-08-23 14:55:47.393989981 -0400 +@@ -36,6 +36,7 @@ + import java.util.Locale; + import java.util.StringTokenizer; + import java.util.Vector; ++import java.util.regex.Pattern; + + import javax.servlet.RequestDispatcher; + import javax.servlet.ServletConfig; +@@ -268,6 +269,16 @@ + */ + private long stderrTimeout = 2000; + ++ /** ++ * The regular expression used to select HTTP headers to be passed to the ++ * CGI process as environment variables. The name of the environment ++ * variable will be the name of the HTTP header converter to upper case, ++ * prefixed with HTTP_ and with all - characters ++ * converted to _. ++ */ ++ private Pattern envHttpHeadersPattern = Pattern.compile( ++ "ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|IF-[-0-9A-Z]*|REFERER|USER-AGENT"); ++ + /** object used to ensure multiple threads don't try to expand same file */ + static Object expandFileLock = new Object(); + +@@ -331,6 +342,10 @@ + "stderrTimeout")); + } + ++ if (getServletConfig().getInitParameter("envHttpHeaders") != null) { ++ envHttpHeadersPattern = ++ Pattern.compile(getServletConfig().getInitParameter("envHttpHeaders")); ++ } + } + + +@@ -1072,12 +1087,8 @@ + //REMIND: rewrite multiple headers as if received as single + //REMIND: change character set + //REMIND: I forgot what the previous REMIND means +- if ("AUTHORIZATION".equalsIgnoreCase(header) || +- "PROXY_AUTHORIZATION".equalsIgnoreCase(header)) { +- //NOOP per CGI specification section 11.2 +- } else { +- envp.put("HTTP_" + header.replace('-', '_'), +- req.getHeader(header)); ++ if (envHttpHeadersPattern.matcher(header).matches()) { ++ envp.put("HTTP_" + header.replace('-', '_'), req.getHeader(header)); + } + } + +--- webapps/docs/cgi-howto.xml.orig 2016-08-23 14:53:40.389143817 -0400 ++++ webapps/docs/cgi-howto.xml 2016-08-23 14:57:37.634856451 -0400 +@@ -86,6 +86,12 @@ +
  • executable-arg-1, executable-arg-2, + and so on - additional arguments for the executable. These precede the + CGI script name. By default there are no additional arguments.
  • ++
  • envHttpHeaders - A regular expression used to select the ++HTTP headers passed to the CGI process as environment variables. Note that ++headers are converted to upper case before matching and that the entire header ++name must match the pattern. Default is ++ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|IF-[-0-9A-Z]*|REFERER|USER-AGENT ++
  • +
  • parameterEncoding - Name of the parameter encoding + to be used with the CGI servlet. Default is + System.getProperty("file.encoding","UTF-8").
  • +--- webapps/docs/changelog.xml.orig 2016-08-23 14:53:40.390143815 -0400 ++++ webapps/docs/changelog.xml 2016-08-23 14:57:09.959889972 -0400 +@@ -55,6 +55,19 @@ + They eventually become mixed with the numbered issues. (I.e., numbered + issues to not "pop up" wrt. others). + --> ++
    ++ ++ ++ ++ Add a new initialisation parameter, envHttpHeaders, to ++ the CGI Servlet to mitigate httpoxy ++ (CVE-2016-5388) by default and to provide a mechanism that can be ++ used to mitigate any future, similar issues. (markt) ++ ++ ++ ++
    +
    + + diff --git a/SOURCES/tomcat-7.0.sysconfig b/SOURCES/tomcat-7.0.sysconfig index c1337e8..4d2c297 100644 --- a/SOURCES/tomcat-7.0.sysconfig +++ b/SOURCES/tomcat-7.0.sysconfig @@ -44,9 +44,6 @@ # Whether to annoy the user with "attempting to shut down" messages or not #SHUTDOWN_VERBOSE="false" -# Set the TOMCAT_PID location -#CATALINA_PID="/var/run/tomcat.pid" - # Connector port is 8080 for this tomcat instance #CONNECTOR_PORT="8080" diff --git a/SOURCES/tomcat-7.0.wrapper b/SOURCES/tomcat-7.0.wrapper index 8d35a2f..c97cb85 100644 --- a/SOURCES/tomcat-7.0.wrapper +++ b/SOURCES/tomcat-7.0.wrapper @@ -1,83 +1,24 @@ #!/bin/bash -if [ -r /usr/share/java-utils/java-functions ]; then - . /usr/share/java-utils/java-functions -else - echo "Can't read Java functions library, aborting" - exit 1 -fi - -# Get the tomcat config (use this for environment specific settings) -if [ -z "${TOMCAT_CFG}" ]; then - TOMCAT_CFG="/etc/tomcat/tomcat.conf" -fi - -if [ -r "$TOMCAT_CFG" ]; then - . $TOMCAT_CFG -fi - -# Get instance specific config file -if [ -r "/etc/sysconfig/${NAME}" ]; then - . /etc/sysconfig/${NAME} -fi - -set_javacmd -cd ${CATALINA_HOME} -# CLASSPATH munging -if [ ! -z "$CLASSPATH" ] ; then - CLASSPATH="$CLASSPATH": +if [ "$1" = "version" ]; then + . /usr/libexec/tomcat/preamble + exec ${JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \ + org.apache.catalina.util.ServerInfo fi -if [ -n "$JSSE_HOME" ]; then - CLASSPATH="${CLASSPATH}$(build-classpath jcert jnet jsse 2>/dev/null):" +SRV="tomcat" +if [ -n "$2" ]; then + SRV="tomcat@$2" fi -CLASSPATH="${CLASSPATH}${CATALINA_HOME}/bin/bootstrap.jar" -CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar" -CLASSPATH="${CLASSPATH}:$(build-classpath commons-daemon 2>/dev/null)" if [ "$1" = "start" ]; then - ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ - -classpath "$CLASSPATH" \ - -Dcatalina.base="$CATALINA_BASE" \ - -Dcatalina.home="$CATALINA_HOME" \ - -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ - -Djava.io.tmpdir="$CATALINA_TMPDIR" \ - -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ - -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ - org.apache.catalina.startup.Bootstrap start \ - >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & - if [ ! -z "$CATALINA_PID" ]; then - echo $! > $CATALINA_PID - fi -elif [ "$1" = "start-security" ]; then - ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ - -classpath "$CLASSPATH" \ - -Dcatalina.base="$CATALINA_BASE" \ - -Dcatalina.home="$CATALINA_HOME" \ - -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ - -Djava.io.tmpdir="$CATALINA_TMPDIR" \ - -Djava.security.manager \ - -Djava.security.policy=="${CATALINA_BASE}/conf/catalina.policy" \ - -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ - -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ - org.apache.catalina.startup.Bootstrap start \ - >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & - if [ ! -z "$CATALINA_PID" ]; then - echo $! > $CATALINA_PID - fi + systemctl start ${SRV}.service elif [ "$1" = "stop" ]; then - ${JAVACMD} $JAVA_OPTS \ - -classpath "$CLASSPATH" \ - -Dcatalina.base="$CATALINA_BASE" \ - -Dcatalina.home="$CATALINA_HOME" \ - -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ - -Djava.io.tmpdir="$CATALINA_TMPDIR" \ - org.apache.catalina.startup.Bootstrap stop \ - >> ${CATALINA_BASE}/logs/catalina.out 2>&1 + systemctl stop ${SRV}.service elif [ "$1" = "version" ]; then ${JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \ org.apache.catalina.util.ServerInfo else - echo "Usage: $0 {start|start-security|stop|version}" + echo "Usage: $0 {start|stop|version} [server-id]" exit 1 fi diff --git a/SPECS/tomcat.spec b/SPECS/tomcat.spec index 71eaf13..d8816a4 100644 --- a/SPECS/tomcat.spec +++ b/SPECS/tomcat.spec @@ -54,7 +54,7 @@ Name: tomcat Epoch: 0 Version: %{major_version}.%{minor_version}.%{micro_version} -Release: 2%{?dist} +Release: 8%{?dist} Summary: Apache Servlet/JSP Engine, RI for Servlet %{servletspec}/JSP %{jspspec} API Group: System Environment/Daemons @@ -62,7 +62,6 @@ License: ASL 2.0 URL: http://tomcat.apache.org/ Source0: http://www.apache.org/dist/tomcat/tomcat-%{major_version}/v%{version}/src/%{packdname}.tar.gz Source1: %{name}-%{major_version}.%{minor_version}.conf -#Source2: %{name}-%{major_version}.%{minor_version}.init Source3: %{name}-%{major_version}.%{minor_version}.sysconfig Source4: %{name}-%{major_version}.%{minor_version}.wrapper Source5: %{name}-%{major_version}.%{minor_version}.logrotate @@ -77,9 +76,6 @@ Source13: jasper-el-OSGi-MANIFEST.MF Source14: jasper-OSGi-MANIFEST.MF Source15: tomcat-api-OSGi-MANIFEST.MF Source16: tomcat-juli-OSGi-MANIFEST.MF -Source17: %{name}-%{major_version}.%{minor_version}-tomcat-sysd -Source18: %{name}-%{major_version}.%{minor_version}-tomcat-jsvc-sysd -Source19: %{name}-%{major_version}.%{minor_version}-jsvc.wrapper Source20: %{name}-%{major_version}.%{minor_version}-jsvc.service Source21: tomcat-functions Source22: tomcat-preamble @@ -91,15 +87,9 @@ Patch0: %{name}-%{major_version}.%{minor_version}-bootstrap-MANIFEST.MF.patch Patch1: %{name}-%{major_version}.%{minor_version}-tomcat-users-webapp.patch Patch2: tomcat-7.0.54-rebase.patch Patch3: %{name}-7.0.54-CVE-2014-0227.patch -#Patch2: %{name}-%{version}-CVE-2013-4286.patch -#Patch3: %{name}-%{version}-CVE-2013-4322.patch -#Patch4: %{name}-%{version}-CVE-2014-0050.patch -#Patch5: %{name}-%{version}-CVE-2014-0099.patch -#Patch6: %{name}-%{version}-CVE-2014-0096.patch -#Patch7: %{name}-%{version}-CVE-2014-0075.patch - -# Postponed -#Patch5: %{name}-%{version}-CVE-2013-4590.patch +Patch4: %{name}-7.0.54-CVE-2014-7810.patch +Patch5: %{name}-7.0.54-CVE-2015-5346.patch +Patch6: %{name}-7.0.54-CVE-2016-5388.patch BuildArch: noarch @@ -248,6 +238,9 @@ find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name " %patch1 -p0 %patch2 -p0 %patch3 -p0 +%patch4 -p0 +%patch5 -p0 +%patch6 -p0 %{__ln_s} $(build-classpath jakarta-taglibs-core) webapps/examples/WEB-INF/lib/jstl.jar %{__ln_s} $(build-classpath jakarta-taglibs-standard) webapps/examples/WEB-INF/lib/standard.jar @@ -339,9 +332,7 @@ zip -u output/build/bin/tomcat-juli.jar META-INF/MANIFEST.MF %{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{libdir} %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{logdir} /bin/touch ${RPM_BUILD_ROOT}%{logdir}/catalina.out -%{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{_localstatedir}/run %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{_localstatedir}/lib/tomcats -/bin/touch ${RPM_BUILD_ROOT}%{_localstatedir}/run/%{name}.pid /bin/echo "%{name}-%{major_version}.%{minor_version}.%{micro_version} RPM installed" >> ${RPM_BUILD_ROOT}%{logdir}/catalina.out %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{homedir} %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{tempdir} @@ -506,11 +497,6 @@ done # replace temporary copy with link %{__ln_s} -f %{bindir}/tomcat-juli.jar ${RPM_BUILD_ROOT}%{libdir}/ -mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/tmpfiles.d -cat > ${RPM_BUILD_ROOT}%{_prefix}/lib/tmpfiles.d/%{name}.conf < - 0:7.0.54-8 +- Resolves: rhbz#1368121 + +* Tue Aug 23 2016 Coty Sutherland - 0:7.0.54-7 +- Resolves: rhbz#1362212 Tomcat: CGI sets environmental variable based on user supplied Proxy request header +- Resolves: rhbz#1368121 + +* Wed Aug 03 2016 Coty Sutherland - 0:7.0.54-5 +- Resolves: rhbz#1362567 + +* Wed Jul 06 2016 Coty Sutherland 0:7.0.54-4 +- Resolves: CVE-2015-5346 + +* Thu Jun 02 2016 Coty Sutherland 0:7.0.54-3 +- Resolves: CVE-2014-7810 + * Tue Mar 24 2015 David Knox - 0:7.0.54-2 -- Resovles: CVE-2014-0227 +- Resolves: CVE-2014-0227 * Wed Sep 17 2014 David Knox - 0:7.0.54-1 - Resolves: rhbz#1141372 - Remove systemv artifacts. Add new systemd