From 175c9d30959d5a68ca1e72605a3c99dd02836faf Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 16 Apr 2025 11:24:45 +0100 Subject: [PATCH] Polish "Prevent stack overflow when writing Path" See gh-44507 --- .../springframework/boot/json/JsonValueWriter.java | 1 - .../boot/json/JsonValueWriterTests.java | 12 +++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java index c0270e2173..1d8046a0f6 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java @@ -115,7 +115,6 @@ class JsonValueWriter { throw new UncheckedIOException(ex); } } - // https://github.com/spring-projects/spring-boot/issues/44502 else if (value instanceof Path p) { writeString(p.toString()); } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java index 4c4d4314de..f2966b3e7a 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java @@ -241,16 +241,14 @@ class JsonValueWriterTests { .isThrownBy(() -> valueWriter.end(Series.ARRAY))); } - // https://github.com/spring-projects/spring-boot/issues/44502 - @Test + @Test // gh-44502 void writeJavaNioPathWhenSingleElementShouldBeSerializedAsString() { - assertThat(doWrite((valueWriter) -> valueWriter.write(Path.of("overflow")))).isEqualTo(quoted("overflow")); + assertThat(doWrite((valueWriter) -> valueWriter.write(Path.of("a")))).isEqualTo(quoted("a")); } - @Test - void writeJavaNioPathShouldShouldBeSerializedAsString() { - assertThat(doWrite((valueWriter) -> valueWriter.write(Path.of("stack/overflow/error")))) - .isEqualTo(quoted("stack\\/overflow\\/error")); + @Test // gh-44502 + void writeJavaNioPathShouldBeSerializedAsString() { + assertThat(doWrite((valueWriter) -> valueWriter.write(Path.of("a/b/c")))).isEqualTo(quoted("a\\/b\\/c")); } private String write(V value) {