Skip to content

Commit 05e56ad

Browse files
garyrussellartembilan
authored andcommitted
GH-1483: Trust target class sub-packages
Resolves #1483
1 parent be3c642 commit 05e56ad

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

spring-kafka/src/main/java/org/springframework/kafka/support/converter/DefaultJackson2JavaTypeMapper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019 the original author or authors.
2+
* Copyright 2017-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@
2626
import org.springframework.messaging.converter.MessageConversionException;
2727
import org.springframework.util.Assert;
2828
import org.springframework.util.ClassUtils;
29+
import org.springframework.util.PatternMatchUtils;
2930

3031
import com.fasterxml.jackson.databind.JavaType;
3132
import com.fasterxml.jackson.databind.type.TypeFactory;
@@ -149,7 +150,7 @@ private boolean isTrustedPackage(String requestedType) {
149150
if (!this.trustedPackages.isEmpty()) {
150151
String packageName = ClassUtils.getPackageName(requestedType).replaceFirst("\\[L", "");
151152
for (String trustedPackage : this.trustedPackages) {
152-
if (packageName.equals(trustedPackage)) {
153+
if (PatternMatchUtils.simpleMatch(trustedPackage, packageName)) {
153154
return true;
154155
}
155156
}

spring-kafka/src/main/java/org/springframework/kafka/support/serializer/JsonDeserializer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ private void addTargetPackageToTrusted() {
419419
String targetPackageName = getTargetPackageName();
420420
if (targetPackageName != null) {
421421
doAddTrustedPackages(targetPackageName);
422+
doAddTrustedPackages(targetPackageName + ".*");
422423
}
423424
}
424425

spring-kafka/src/test/java/org/springframework/kafka/support/serializer/JsonSerializationTests.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
2121
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
2222

23+
import java.io.IOException;
2324
import java.util.Arrays;
2425
import java.util.Collections;
2526
import java.util.HashMap;
@@ -44,6 +45,8 @@
4445
import com.fasterxml.jackson.core.JsonParseException;
4546
import com.fasterxml.jackson.core.type.TypeReference;
4647
import com.fasterxml.jackson.databind.JavaType;
48+
import com.fasterxml.jackson.databind.JsonNode;
49+
import com.fasterxml.jackson.databind.ObjectMapper;
4750
import com.fasterxml.jackson.databind.type.TypeFactory;
4851

4952
/**
@@ -221,6 +224,19 @@ void testDeserializerTypeReference() {
221224
de.close();
222225
}
223226

227+
@Test
228+
void jsonNode() throws IOException {
229+
JsonSerializer<Object> ser = new JsonSerializer<>();
230+
JsonDeserializer<JsonNode> de = new JsonDeserializer<>();
231+
de.configure(Collections.singletonMap(JsonDeserializer.VALUE_DEFAULT_TYPE, JsonNode.class), false);
232+
DummyEntity dummy = new DummyEntity();
233+
byte[] serialized = ser.serialize("foo", dummy);
234+
JsonNode node = new ObjectMapper().reader().readTree(serialized);
235+
Headers headers = new RecordHeaders();
236+
serialized = ser.serialize("foo", headers, node);
237+
de.deserialize("foo", headers, serialized);
238+
}
239+
224240
@Test
225241
void testPreExistingHeaders() {
226242
JsonSerializer<? super Foo> ser = new JsonSerializer<>();

0 commit comments

Comments
 (0)