From e380b83026b3737be7b566cbc88be6dce5e20e3d Mon Sep 17 00:00:00 2001 From: ramaiahkk Date: Mon, 6 Aug 2018 12:51:43 -0400 Subject: [PATCH] #1103 java.lang.NullPointerException (#1104) java.lang.NullPointerException while decrypting due to value is null and still looking for cipher string. #1103 --- .../encryption/CipherEnvironmentEncryptor.java | 4 ++-- .../encryption/CipherEnvironmentEncryptorTests.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptor.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptor.java index 04578abd..0e5b40fa 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptor.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptor.java @@ -64,8 +64,8 @@ public class CipherEnvironmentEncryptor implements EnvironmentEncryptor { for (Map.Entry entry : new LinkedHashSet<>(map.entrySet())) { Object key = entry.getKey(); String name = key.toString(); - String value = entry.getValue().toString(); - if (value.startsWith("{cipher}")) { + if(entry.getValue() != null && entry.getValue().toString().startsWith("{cipher}")){ + String value = entry.getValue().toString(); map.remove(key); try { value = value.substring("{cipher}".length()); diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptorTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptorTests.java index f41c051f..ceddb803 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptorTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/CipherEnvironmentEncryptorTests.java @@ -90,5 +90,18 @@ public class CipherEnvironmentEncryptorTests { assertEquals(secret, this.encryptor.decrypt(environment).getPropertySources() .get(0).getSource().get(environment.getName())); } + @Test + public void shouldBeAbleToUseNullAsPropertyValue() { + + // when + Environment environment = new Environment("name", "profile", "label"); + environment.add(new PropertySource("a", + Collections.singletonMap(environment.getName(), + null))); + + // then + assertEquals(null, this.encryptor.decrypt(environment).getPropertySources() + .get(0).getSource().get(environment.getName())); + } }