Repository: ranger
Updated Branches:
  refs/heads/master c85ef5476 -> aca4c3b54


RANGER-2000: NPE in ValiditySchedule validation


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

Branch: refs/heads/master
Commit: aca4c3b5438e0e52b1e2d24a7e322278d36c7ffc
Parents: c85ef54
Author: Abhay Kulkarni <akulka...@hortonworks.com>
Authored: Thu Mar 8 11:00:31 2018 -0800
Committer: Abhay Kulkarni <akulka...@hortonworks.com>
Committed: Thu Mar 8 11:00:31 2018 -0800

----------------------------------------------------------------------
 .../RangerValidityScheduleValidator.java        | 21 +++---
 .../test-validity-schedules-invalid.json        | 70 +++++++++++++++++++-
 ...validity-schedules-valid-and-applicable.json |  6 +-
 3 files changed, 83 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ranger/blob/aca4c3b5/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidityScheduleValidator.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidityScheduleValidator.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidityScheduleValidator.java
index 63e8bc0..4557b9f 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidityScheduleValidator.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidityScheduleValidator.java
@@ -141,7 +141,7 @@ public class RangerValidityScheduleValidator {
         for (RangerValidityRecurrence recurrence : 
validitySchedule.getRecurrences()) {
             ret = validateValidityInterval(recurrence, validationFailures) && 
ret;
 
-            if 
(RangerValidityRecurrence.ValidityInterval.getValidityIntervalInMinutes(recurrence.getInterval())
 > 0) {
+            if (ret) {
                 ret = validateFieldSpec(recurrence, 
RangerValidityRecurrence.RecurrenceSchedule.ScheduleFieldSpec.minute, 
validationFailures) && ret;
                 ret = validateFieldSpec(recurrence, 
RangerValidityRecurrence.RecurrenceSchedule.ScheduleFieldSpec.hour, 
validationFailures) && ret;
                 ret = validateFieldSpec(recurrence, 
RangerValidityRecurrence.RecurrenceSchedule.ScheduleFieldSpec.dayOfMonth, 
validationFailures) && ret;
@@ -156,7 +156,6 @@ public class RangerValidityScheduleValidator {
                             getNormalizedValue(recurrence, 
RangerValidityRecurrence.RecurrenceSchedule.ScheduleFieldSpec.month), 
getNormalizedValue(recurrence, 
RangerValidityRecurrence.RecurrenceSchedule.ScheduleFieldSpec.year));
                     RangerValidityRecurrence normalizedRecurrence = new 
RangerValidityRecurrence(schedule, recurrence.getInterval());
                     
normalizedValiditySchedule.getRecurrences().add(normalizedRecurrence);
-
                 }
             }
         }
@@ -174,22 +173,24 @@ public class RangerValidityScheduleValidator {
     }
 
     private boolean validateValidityInterval(RangerValidityRecurrence 
recurrence, List<ValidationFailureDetails> validationFailures) {
-        boolean ret = true;
-        RangerValidityRecurrence.ValidityInterval validityInterval = 
recurrence.getInterval();
-        if (validityInterval != null) {
+        boolean ret = recurrence.getInterval() != null && 
recurrence.getSchedule() != null;
+
+        if (ret) {
+            RangerValidityRecurrence.ValidityInterval validityInterval = 
recurrence.getInterval();
+
             if (validityInterval.getDays() < 0
-                    || (validityInterval.getHours() < 0 || 
validityInterval.getHours() > 23)
-                    || (validityInterval.getMinutes() < 0 || 
validityInterval.getMinutes() > 59)) {
+                        || (validityInterval.getHours() < 0 || 
validityInterval.getHours() > 23)
+                        || (validityInterval.getMinutes() < 0 || 
validityInterval.getMinutes() > 59)) {
                 validationFailures.add(new ValidationFailureDetails(0, 
"interval", "", false, true, false, "invalid interval"));
                 ret = false;
             }
-        }
-        int validityIntervalInMinutes = 
RangerValidityRecurrence.ValidityInterval.getValidityIntervalInMinutes(validityInterval);
-        if (validityIntervalInMinutes > 0) {
+
             if (StringUtils.isBlank(recurrence.getSchedule().getDayOfMonth()) 
&& StringUtils.isBlank(recurrence.getSchedule().getDayOfWeek())) {
                 validationFailures.add(new ValidationFailureDetails(0, 
"validitySchedule", "", false, true, false, "empty dayOfMonth and dayOfWeek"));
                 ret = false;
             }
+        } else {
+               validationFailures.add(new ValidationFailureDetails(0, 
"recurrence", "schedule/interval", true, true, false, "empty schedule/interval 
in recurrence spec"));
         }
         return ret;
     }

http://git-wip-us.apache.org/repos/asf/ranger/blob/aca4c3b5/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-invalid.json
----------------------------------------------------------------------
diff --git 
a/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-invalid.json
 
b/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-invalid.json
index ed62828..321df65 100644
--- 
a/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-invalid.json
+++ 
b/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-invalid.json
@@ -95,7 +95,7 @@
     "result": {
       "isValid": false,
       "isApplicable": false,
-      "validationFailureCount": 1
+      "validationFailureCount": 2
     }
   },
   {
@@ -143,4 +143,72 @@
       "validationFailureCount": 1
     }
   }
+  ,
+  {
+    "name": "schedule blank",
+
+    "validitySchedules": [
+      {
+        "startTime": "2018/01/12 14:32:00",
+        "endTime": "2020/01/23 06:30:00",
+        "recurrences": [
+          {
+            "interval": {"minutes": 10 }
+          }
+        ]
+      }
+    ],
+    "accessTime": "20180112-14:32:27.000-0800",
+    "result": {
+      "isValid": false,
+      "isApplicable": false,
+      "validationFailureCount": 1
+    }
+  }
+  ,
+  {
+    "name": "interval blank",
+
+    "validitySchedules": [
+      {
+        "startTime": "2018/01/12 14:32:00",
+        "endTime": "2020/01/23 06:30:00",
+        "recurrences": [
+          {
+            "schedule": {"minute": "45, 30, 1, 14", "hour": "*, 0,20, 21", 
"dayOfMonth": "", "dayOfWeek": "2", "month": "12, 1-2", "year": "2018"}
+          }
+        ]
+      }
+    ],
+    "accessTime": "20180112-14:32:27.000-0800",
+    "result": {
+      "isValid": false,
+      "isApplicable": false,
+      "validationFailureCount": 1
+    }
+  },
+  {
+    "name": "schedule and interval blank",
+
+    "validitySchedules": [
+      {
+        "startTime": "2018/01/12 14:32:00",
+        "endTime": "2020/01/23 06:30:00",
+        "recurrences": [
+          {
+            "schedule": {"minute": "45, 30, 1, 14", "hour": "*, 0,20, 21", 
"dayOfMonth": "", "dayOfWeek": "2", "month": "12, 1-2", "year": "2018"}
+          },
+          {
+            "interval": {"minutes": 10 }
+          }
+        ]
+      }
+    ],
+    "accessTime": "20180112-14:32:27.000-0800",
+    "result": {
+      "isValid": false,
+      "isApplicable": false,
+      "validationFailureCount": 2
+    }
+  }
 ]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ranger/blob/aca4c3b5/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-valid-and-applicable.json
----------------------------------------------------------------------
diff --git 
a/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-valid-and-applicable.json
 
b/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-valid-and-applicable.json
index 38921d7..7df6fcf 100644
--- 
a/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-valid-and-applicable.json
+++ 
b/agents-common/src/test/resources/policyengine/validityscheduler/test-validity-schedules-valid-and-applicable.json
@@ -8,7 +8,7 @@
         "recurrences": [
           {
             "schedule": {
-              "minute": "60",
+              "minute": "30",
               "hour": "*",
               "dayOfMonth": "*",
               "dayOfWeek": "5, 7",
@@ -16,7 +16,7 @@
               "year": "2018"
             },
             "interval": {
-              "minutes": 0
+              "minutes": 10
             }
           }
         ]
@@ -45,7 +45,7 @@
               "month": "*",
               "year": "2018"
             },
-            "inteval": {
+            "interval": {
               "minutes": 9
             }
           }

Reply via email to