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

madhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new d09e78b2f RANGER-4571: update handling of expressions that evaluate to 
null
d09e78b2f is described below

commit d09e78b2ff8f0da2ccbf35837394d008b15f7128
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Thu Nov 30 21:41:40 2023 -0800

    RANGER-4571: update handling of expressions that evaluate to null
---
 .../org/apache/ranger/plugin/util/RangerRequestExprResolver.java | 6 ++++--
 .../apache/ranger/plugin/util/RangerRequestExprResolverTest.java | 9 +++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRequestExprResolver.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRequestExprResolver.java
index 0caa4f0e0..acf606aca 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRequestExprResolver.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRequestExprResolver.java
@@ -70,7 +70,8 @@ public class RangerRequestExprResolver {
 
             while (matcher.find()) {
                 String expr = matcher.group(REGEX_GROUP_EXPR);
-                String val  = Objects.toString(exprValues.get(expr));
+                Object oVal = exprValues.get(expr);
+                String val  = oVal == null ? "" : Objects.toString(oVal);
 
                 matcher.appendReplacement(sb, val);
             }
@@ -105,7 +106,8 @@ public class RangerRequestExprResolver {
 
             while (matcher.find()) {
                 String expr = matcher.group(REGEX_GROUP_EXPR);
-                String val  = 
Objects.toString(scriptEvaluator.evaluateScript(expr));
+                Object oVal = scriptEvaluator.evaluateScript(expr);
+                String val  = oVal == null ? "" : Objects.toString(oVal);
 
                 matcher.appendReplacement(sb, val);
             }
diff --git 
a/agents-common/src/test/java/org/apache/ranger/plugin/util/RangerRequestExprResolverTest.java
 
b/agents-common/src/test/java/org/apache/ranger/plugin/util/RangerRequestExprResolverTest.java
index a062f0e9b..e0e593be2 100644
--- 
a/agents-common/src/test/java/org/apache/ranger/plugin/util/RangerRequestExprResolverTest.java
+++ 
b/agents-common/src/test/java/org/apache/ranger/plugin/util/RangerRequestExprResolverTest.java
@@ -57,8 +57,8 @@ public class RangerRequestExprResolverTest {
         exprValue.put("${{UG['test-group1'].site}}", "10");
         exprValue.put("${{UG['test-group2'].dept}}", "PROD");
         exprValue.put("${{UG['test-group2'].site}}", "20");
-        exprValue.put("${{UG['test-group3']}}", "null");
-        exprValue.put("${{UG['test-group1'].notExists}}", "null");
+        exprValue.put("${{UG['test-group3']}}", "");
+        exprValue.put("${{UG['test-group1'].notExists}}", "");
 
         exprValue.put("${{URNAMES.indexOf('test-role1') != -1}}", "true");
         exprValue.put("${{URNAMES.indexOf('test-role2') != -1}}", "true");
@@ -66,10 +66,10 @@ public class RangerRequestExprResolverTest {
 
         exprValue.put("${{UGA.sVal.dept}}", "ENGG");
         exprValue.put("${{UGA.sVal.site}}", "10");
-        exprValue.put("${{UGA.sVal.notExists}}", "null");
+        exprValue.put("${{UGA.sVal.notExists}}", "");
         exprValue.put("${{J(UGA.mVal.dept)}}", "[\"ENGG\",\"PROD\"]");
         exprValue.put("${{J(UGA.mVal.site)}}", "[\"10\",\"20\"]");
-        exprValue.put("${{J(UGA.mVal.notExists)}}", "null");
+        exprValue.put("${{J(UGA.mVal.notExists)}}", "");
         exprValue.put("${{UGA.mVal['dept'].indexOf('ENGG') != -1}}", "true");
         exprValue.put("${{UGA.mVal['dept'].indexOf('PROD') != -1}}", "true");
         exprValue.put("${{UGA.mVal['dept'].indexOf('EXEC') == -1}}", "true");
@@ -93,6 +93,7 @@ public class RangerRequestExprResolverTest {
         exprValue.put("${{TAGNAMES.length}}", "2");
         exprValue.put("${{TAGNAMES.indexOf('PII') != -1}}", "true");
         exprValue.put("${{TAGNAMES.indexOf('PCI') != -1}}", "true");
+        exprValue.put("${{var s=USER['state'];}}state == '${{s}}'", "state == 
'CA'");
 
         for (Map.Entry<String, String> entry : exprValue.entrySet()) {
             String                    expr        = entry.getKey();

Reply via email to