Repository: oozie Updated Branches: refs/heads/master 7bda35784 -> be293c046
OOZIE-3078 PasswordMasker throws NPE with null arguments (asasvari) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/be293c04 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/be293c04 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/be293c04 Branch: refs/heads/master Commit: be293c046d7d83765c65140921c3de5ca3d7b55a Parents: 7bda357 Author: Attila Sasvari <asasv...@cloudera.com> Authored: Mon Oct 9 16:55:44 2017 +0200 Committer: Attila Sasvari <asasv...@cloudera.com> Committed: Mon Oct 9 16:55:44 2017 +0200 ---------------------------------------------------------------------- release-log.txt | 1 + .../org/apache/oozie/action/hadoop/PasswordMasker.java | 10 ++++++---- .../apache/oozie/action/hadoop/TestPasswordMasker.java | 10 ++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/be293c04/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 600a732..13d3a97 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 5.0.0 release (trunk - unreleased) +OOZIE-3078 PasswordMasker throws NPE with null arguments (asasvari) OOZIE-3075 Follow-up on OOZIE-3054: create the lib directory if it doesn't exist (pbacsko) OOZIE-3072 oozie.service.HadoopAccessorService.action.configurations should overwrite default values set in Hadoop's configuration files (gezapeti) OOZIE-2963 Use net.hydromatic instead of org.pentaho aggdesigner-algorithmin pomfilesi (dbist13 via gezapeti) http://git-wip-us.apache.org/repos/asf/oozie/blob/be293c04/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 fd265e8..b5f7a86 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/> @@ -116,8 +114,9 @@ public class PasswordMasker { * @return The value of the entry changed based on the replace algorithm described above */ private String mask(String key, String value) { - checkNotNull(key, "key has to be set"); - checkNotNull(value, "value has to be set"); + if (key == null || value == null || value.isEmpty()) { + return value; + } if (isPasswordKey(key)) { return PASSWORD_MASK; @@ -147,6 +146,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/be293c04/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);