This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
     new daaa6edc4e Fix various possible NPEs
daaa6edc4e is described below

commit daaa6edc4e74192cd2659ac0e1f7193931cbfcb3
Author: remm <r...@apache.org>
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 1da9ee31e9..b761c9bf6b 100644
--- a/java/org/apache/catalina/storeconfig/StandardContextSF.java
+++ b/java/org/apache/catalina/storeconfig/StandardContextSF.java
@@ -71,7 +71,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 4e0044b400..b06b7dbe6e 100644
--- a/java/org/apache/catalina/storeconfig/StoreConfig.java
+++ b/java/org/apache/catalina/storeconfig/StoreConfig.java
@@ -290,12 +290,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()));
             }
         }
     }
@@ -309,7 +313,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()));
+        }
     }
 
     /**
@@ -321,7 +329,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()));
+        }
     }
 
     /**
@@ -333,7 +345,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 920a482152..d266f9eac2 100644
--- a/java/org/apache/catalina/storeconfig/StoreContextAppender.java
+++ b/java/org/apache/catalina/storeconfig/StoreContextAppender.java
@@ -65,7 +65,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 7003519470..4ca991c589 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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to