mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 16:30:28 +00:00
Ensure consistent EscapedErrors field error escaping
Closes gh-37055
This commit is contained in:
committed by
Brian Clozel
parent
bb65d819a4
commit
8cb1151375
@@ -170,12 +170,12 @@ public class EscapedErrors implements Errors {
|
||||
|
||||
@Override
|
||||
public List<FieldError> getFieldErrors() {
|
||||
return this.source.getFieldErrors();
|
||||
return escapeObjectErrors(this.source.getFieldErrors());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable FieldError getFieldError() {
|
||||
return this.source.getFieldError();
|
||||
return escapeObjectError(this.source.getFieldError());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -94,4 +94,25 @@ class EscapedErrorsTests {
|
||||
assertThat(ageError2.getCode()).as("Age error 2 code not escaped").isEqualTo("AGE_NOT_32 <tag>");
|
||||
}
|
||||
|
||||
@Test
|
||||
void noArgFieldErrorAccessorsEscapeRejectedValueAndMessage() {
|
||||
TestBean tb = new TestBean();
|
||||
tb.setName("<script>alert(1)</script>");
|
||||
|
||||
Errors errors = new EscapedErrors(new BindException(tb, "tb"));
|
||||
errors.rejectValue("name", "NAME_INVALID", null, "message: <tag>");
|
||||
|
||||
FieldError fieldError = errors.getFieldError();
|
||||
assertThat(fieldError.getDefaultMessage()).as("No-arg getFieldError() message escaped")
|
||||
.isEqualTo("message: <tag>");
|
||||
assertThat(fieldError.getRejectedValue()).as("No-arg getFieldError() rejected value escaped")
|
||||
.isEqualTo("<script>alert(1)</script>");
|
||||
|
||||
FieldError fieldErrorInList = errors.getFieldErrors().get(0);
|
||||
assertThat(fieldErrorInList.getDefaultMessage()).as("No-arg getFieldErrors() message escaped")
|
||||
.isEqualTo("message: <tag>");
|
||||
assertThat(fieldErrorInList.getRejectedValue()).as("No-arg getFieldErrors() rejected value escaped")
|
||||
.isEqualTo("<script>alert(1)</script>");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user