diff --git a/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java b/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java index 0bf62d58e31d..51b3b7df99a0 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java +++ b/spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java @@ -219,6 +219,10 @@ public static MimeType parseMimeType(String mimeType) { if (!StringUtils.hasLength(mimeType)) { throw new InvalidMimeTypeException(mimeType, "'mimeType' must not be empty"); } + if (mimeType.startsWith(";")) { + throw new InvalidMimeTypeException(mimeType, "does not contain any type"); + } + String[] parts = StringUtils.tokenizeToStringArray(mimeType, ";"); String fullType = parts[0].trim(); diff --git a/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java b/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java index b9d3480fd72f..ddbee82c5270 100644 --- a/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java +++ b/spring-core/src/test/java/org/springframework/util/MimeTypeTests.java @@ -164,6 +164,11 @@ public void parseMimeType() throws Exception { assertEquals("Invalid subtype", "*", mimeType.getSubtype()); } + @Test(expected = InvalidMimeTypeException.class) + public void parseMimeTypeNoType() { + MimeTypeUtils.parseMimeType(";"); + } + @Test(expected = InvalidMimeTypeException.class) public void parseMimeTypeNoSubtype() { MimeTypeUtils.parseMimeType("audio");