This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 1d633c89f2 Fix various possible NPEs
1d633c89f2 is described below
commit 1d633c89f28da0ecd025b6950dc64ac84f5a8d9f
Author: remm <[email protected]>
AuthorDate: Wed Sep 13 16:25:57 2023 +0200
Fix various possible NPEs
Found by Coverity.
---
.../catalina/storeconfig/StandardContextSF.java | 2 +-
.../apache/catalina/storeconfig/StoreConfig.java | 28 +++++++++++++++++-----
.../catalina/storeconfig/StoreContextAppender.java | 4 +++-
.../catalina/storeconfig/StoreFactoryBase.java | 9 +++++--
4 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/java/org/apache/catalina/storeconfig/StandardContextSF.java
b/java/org/apache/catalina/storeconfig/StandardContextSF.java
index 98a752717b..e1b9e9c440 100644
--- a/java/org/apache/catalina/storeconfig/StandardContextSF.java
+++ b/java/org/apache/catalina/storeconfig/StandardContextSF.java
@@ -72,7 +72,7 @@ public class StandardContextSF extends StoreFactoryBase {
if (aContext instanceof StandardContext) {
StoreDescription desc = getRegistry().findDescription(
aContext.getClass());
- if (desc.isStoreSeparate()) {
+ if (desc != null && desc.isStoreSeparate()) {
URL configFile = ((StandardContext) aContext)
.getConfigFile();
if (configFile != null) {
diff --git a/java/org/apache/catalina/storeconfig/StoreConfig.java
b/java/org/apache/catalina/storeconfig/StoreConfig.java
index 9bd1e893de..fe7e728d7b 100644
--- a/java/org/apache/catalina/storeconfig/StoreConfig.java
+++ b/java/org/apache/catalina/storeconfig/StoreConfig.java
@@ -271,12 +271,16 @@ public class StoreConfig implements IStoreConfig {
StoreDescription desc = null;
try {
desc = getRegistry().findDescription(aContext.getClass());
- oldSeparate = desc.isStoreSeparate();
- desc.setStoreSeparate(false);
- desc.getStoreFactory().store(aWriter, indent, aContext);
+ if (desc != null) {
+ oldSeparate = desc.isStoreSeparate();
+ desc.setStoreSeparate(false);
+ desc.getStoreFactory().store(aWriter, indent, aContext);
+ }
} finally {
if (desc != null) {
desc.setStoreSeparate(oldSeparate);
+ } else {
+ log.warn(sm.getString("factory.storeNoDescriptor",
aContext.getClass()));
}
}
}
@@ -290,7 +294,11 @@ public class StoreConfig implements IStoreConfig {
throws Exception {
StoreDescription desc = getRegistry().findDescription(
aHost.getClass());
- desc.getStoreFactory().store(aWriter, indent, aHost);
+ if (desc != null) {
+ desc.getStoreFactory().store(aWriter, indent, aHost);
+ } else {
+ log.warn(sm.getString("factory.storeNoDescriptor",
aHost.getClass()));
+ }
}
/**
@@ -302,7 +310,11 @@ public class StoreConfig implements IStoreConfig {
Service aService) throws Exception {
StoreDescription desc = getRegistry().findDescription(
aService.getClass());
- desc.getStoreFactory().store(aWriter, indent, aService);
+ if (desc != null) {
+ desc.getStoreFactory().store(aWriter, indent, aService);
+ } else {
+ log.warn(sm.getString("factory.storeNoDescriptor",
aService.getClass()));
+ }
}
/**
@@ -314,7 +326,11 @@ public class StoreConfig implements IStoreConfig {
Server aServer) throws Exception {
StoreDescription desc = getRegistry().findDescription(
aServer.getClass());
- desc.getStoreFactory().store(writer, indent, aServer);
+ if (desc != null) {
+ desc.getStoreFactory().store(writer, indent, aServer);
+ } else {
+ log.warn(sm.getString("factory.storeNoDescriptor",
aServer.getClass()));
+ }
}
}
diff --git a/java/org/apache/catalina/storeconfig/StoreContextAppender.java
b/java/org/apache/catalina/storeconfig/StoreContextAppender.java
index b52d20c1b7..d5d6aece2e 100644
--- a/java/org/apache/catalina/storeconfig/StoreContextAppender.java
+++ b/java/org/apache/catalina/storeconfig/StoreContextAppender.java
@@ -66,7 +66,9 @@ public class StoreContextAppender extends StoreAppender {
StandardContext context = ((StandardContext) bean);
if ("workDir".equals(attrName)) {
String defaultWorkDir = getDefaultWorkDir(context);
- isPrint = !defaultWorkDir.equals(context.getWorkDir());
+ if (defaultWorkDir != null) {
+ isPrint = !defaultWorkDir.equals(context.getWorkDir());
+ }
} else if ("path".equals(attrName)) {
isPrint = desc.isStoreSeparate()
&& desc.isExternalAllowed()
diff --git a/java/org/apache/catalina/storeconfig/StoreFactoryBase.java
b/java/org/apache/catalina/storeconfig/StoreFactoryBase.java
index 4ddefa5b68..afd872a47e 100644
--- a/java/org/apache/catalina/storeconfig/StoreFactoryBase.java
+++ b/java/org/apache/catalina/storeconfig/StoreFactoryBase.java
@@ -167,8 +167,13 @@ public class StoreFactoryBase implements IStoreFactory {
if (elementFactory != null) {
StoreDescription desc = getRegistry().findDescription(
aTagElement.getClass());
- if (!desc.isTransientChild(aTagElement.getClass().getName())) {
- elementFactory.store(aWriter, indent, aTagElement);
+ if (desc != null) {
+ if
(!desc.isTransientChild(aTagElement.getClass().getName())) {
+ elementFactory.store(aWriter, indent, aTagElement);
+ }
+ } else {
+ log.warn(sm.getString("factory.storeNoDescriptor",
aTagElement
+ .getClass()));
}
} else {
log.warn(sm.getString("factory.storeNoDescriptor", aTagElement
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]