diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java index a7e2de1dad..8bd810a157 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java @@ -264,6 +264,10 @@ public static void setNullSafeSupplier(String supplier) { } } + public static List copyOrEmpty(List src) { + return src == null ? new ArrayList<>() : new ArrayList<>(src); + } + public abstract static class NullSafeSupplier { public abstract List toList(List coll); diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java index efc457eea1..8b8f3d2eff 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java @@ -921,7 +921,13 @@ public RangerPolicyItem() { } public RangerPolicyItem(RangerPolicyItem other) { - this(other.accesses, other.users, other.groups, other.roles, other.conditions, other.delegateAdmin); + this.accesses = copyOrEmpty(other.accesses); + this.users = copyOrEmpty(other.users); + this.groups = copyOrEmpty(other.groups); + this.roles = copyOrEmpty(other.roles); + this.conditions = copyOrEmpty(other.conditions); + + setDelegateAdmin(other.delegateAdmin); } public RangerPolicyItem(List accessTypes, List users, List groups, List roles, List conditions, Boolean delegateAdmin) {