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())); + } }