LOG4J2-435 prevent unconditional deletion

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/eb1f7a2a
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/eb1f7a2a
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/eb1f7a2a

Branch: refs/heads/master
Commit: eb1f7a2a51bb3c6970a304d540d97f6f4393714b
Parents: c337f9b
Author: rpopma <[email protected]>
Authored: Fri Nov 27 13:02:26 2015 +0900
Committer: rpopma <[email protected]>
Committed: Fri Nov 27 13:02:26 2015 +0900

----------------------------------------------------------------------
 .../logging/log4j/core/appender/rolling/action/IfAll.java     | 3 +++
 .../logging/log4j/core/appender/rolling/action/IfAllTest.java | 5 +++++
 .../logging/log4j/core/appender/rolling/action/IfAnyTest.java | 5 +++++
 .../logging/log4j/core/appender/rolling/action/IfNotTest.java | 7 ++++++-
 4 files changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/eb1f7a2a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
index 8e086cd..84a9388 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
@@ -48,6 +48,9 @@ public final class IfAll implements PathCondition {
      */
     @Override
     public boolean accept(final Path baseDir, final Path relativePath, final 
BasicFileAttributes attrs) {
+        if (components == null || components.length == 0) {
+            return false; // unconditional delete not supported
+        }
         for (final PathCondition component : components) {
             if (!component.accept(baseDir, relativePath, attrs)) {
                 return false;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/eb1f7a2a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
index 545c856..12d5a05 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
@@ -39,6 +39,11 @@ public class IfAllTest {
     }
     
     @Test
+    public void testEmptyIsFalse() {
+        assertFalse(IfAll.createAndCondition().accept(null, null, null));
+    }
+    
+    @Test
     public void testBeforeTreeWalk() {
         final CountingCondition counter = new CountingCondition(true);
         final IfAll and = IfAll.createAndCondition(counter, counter, counter);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/eb1f7a2a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
index a90aa70..52a8b27 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
@@ -37,6 +37,11 @@ public class IfAnyTest {
     }
     
     @Test
+    public void testEmptyIsFalse() {
+        assertFalse(IfAny.createOrCondition().accept(null, null, null));
+    }
+    
+    @Test
     public void testBeforeTreeWalk() {
         final CountingCondition counter = new CountingCondition(true);
         final IfAny or = IfAny.createOrCondition(counter, counter, counter);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/eb1f7a2a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
index 3f2a89a..c5abfb9 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
@@ -35,7 +35,12 @@ public class IfNotTest {
         assertFalse(new FixedCondition(false).accept(null, null, null));
         assertTrue(IfNot.createNotCondition(new 
FixedCondition(false)).accept(null, null, null));
     }
-    
+
+    @Test(expected = NullPointerException.class)
+    public void testEmptyIsFalse() {
+        assertFalse(IfNot.createNotCondition(null).accept(null, null, null));
+    }
+
     @Test
     public void testBeforeTreeWalk() {
         final CountingCondition counter = new CountingCondition(true);

Reply via email to