OOZIE-3078 PasswordMasker throws NPE with null arguments (asasvari) (cherry picked from commit be293c046d7d83765c65140921c3de5ca3d7b55a)
sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/PasswordMasker.java Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/f409c2d8 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/f409c2d8 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/f409c2d8 Branch: refs/heads/branch-4.3 Commit: f409c2d8af1ea2868d8c505059dc52e8acfe5dc8 Parents: a979185 Author: Attila Sasvari <asasv...@cloudera.com> Authored: Mon Oct 9 16:55:44 2017 +0200 Committer: satishsaley <satishsa...@apache.org> Committed: Mon Dec 18 16:12:33 2017 -0800 ---------------------------------------------------------------------- release-log.txt | 1 + .../org/apache/oozie/action/hadoop/PasswordMasker.java | 7 +++---- .../apache/oozie/action/hadoop/TestPasswordMasker.java | 10 ++++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/f409c2d8/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 455f527..c682dfa 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 4.3.1 release +OOZIE-3078 PasswordMasker throws NPE with null arguments (asasvari) OOZIE-3127 Remove redundant check for user (satishsaley) OOZIE-2885 Running Spark actions should not need Hive on the classpath (satishsaley) OOZIE-3058 nocleanup option is missing in oozie-coordinator-0.5.xsd (satishsaley) http://git-wip-us.apache.org/repos/asf/oozie/blob/f409c2d8/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/PasswordMasker.java ---------------------------------------------------------------------- diff --git a/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/PasswordMasker.java b/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/PasswordMasker.java index eb60aac..a755672 100644 --- a/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/PasswordMasker.java +++ b/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/PasswordMasker.java @@ -25,8 +25,6 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static com.google.common.base.Preconditions.checkNotNull; - /** * A generic password masker that masks {@code Map<String, String>} values given that its keys are considered password keys. * <p/> @@ -82,8 +80,6 @@ public class PasswordMasker { return Maps.transformEntries(unmasked, new Maps.EntryTransformer<String, String, String>() { @Override public String transformEntry(@Nonnull String key, @Nonnull String value) { - checkNotNull(key, "key has to be set"); - checkNotNull(value, "value has to be set"); if (isPasswordKey(key)) { return PASSWORD_MASK; @@ -116,6 +112,9 @@ public class PasswordMasker { } private boolean containsPasswordFragment(String maybePasswordFragments) { + if (maybePasswordFragments == null || maybePasswordFragments.length() == 0) { + return false; + } return PASSWORD_CONTAINING_PATTERN .matcher(maybePasswordFragments) .matches(); http://git-wip-us.apache.org/repos/asf/oozie/blob/f409c2d8/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestPasswordMasker.java ---------------------------------------------------------------------- diff --git a/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestPasswordMasker.java b/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestPasswordMasker.java index 08e55e1..e362759 100644 --- a/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestPasswordMasker.java +++ b/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestPasswordMasker.java @@ -102,6 +102,16 @@ public class TestPasswordMasker { passwordMasker.maskPasswordsIfNecessary("aa -Djava.sysprop.password=1234 bb DUMMY_PASSWORD=dummy cc")); } + @Test + public void testMaskNullArgument() { + assertEquals(null, passwordMasker.maskPasswordsIfNecessary(null)); + } + + @Test + public void testMaskEmptyArgument() { + assertEquals("", passwordMasker.maskPasswordsIfNecessary("")); + } + @SuppressWarnings("unchecked") private Map<String, String> jsonToMap(String jsonPath) throws IOException { return new ObjectMapper().readValue(getClass().getResourceAsStream(jsonPath), HashMap.class);