import org.springframework.validation.Errors; class ValidationErrorsTest { Object source() { return null; } Errors sourceErrs() { return (Errors)source(); } Errors errors() { return null; } void sink(Object o) {} void test() { Errors es0 = errors(); es0.addAllErrors(sourceErrs()); sink(es0); // $ hasTaintFlow sink(sourceErrs().getAllErrors()); // $ hasTaintFlow sink(sourceErrs().getFieldError()); // $ hasTaintFlow sink(sourceErrs().getFieldError("field")); // $ hasTaintFlow sink(sourceErrs().getGlobalError()); // $ hasTaintFlow sink(sourceErrs().getGlobalErrors()); // $ hasTaintFlow Errors es1 = errors(); es1.reject((String)source()); sink(es1); // $ hasTaintFlow Errors es2 = errors(); es2.reject((String)source(), null, ""); sink(es2); // $ hasTaintFlow Errors es3 = errors(); es3.reject((String)source(), null, ""); sink(es3); // $ hasTaintFlow { Errors es4 = errors(); Object[] in = { (String)source() }; es4.reject("", in, ""); sink(in); // $ hasTaintFlow } { Errors es5 = errors(); es5.reject("", null, (String)source()); sink(es5); // $ hasTaintFlow } Errors es6 = errors(); es6.reject((String)source(), ""); sink(es6); // $ hasTaintFlow Errors es7 = errors(); es7.reject("", (String)source()); sink(es7); // $ hasTaintFlow Errors es8 = errors(); es8.rejectValue("", (String)source(), null, ""); sink(es8); // $ hasTaintFlow Errors es9 = errors(); Object[] in = {source()}; es9.rejectValue("", "", in, ""); sink(es9); // $ hasTaintFlow Errors es10 = errors(); es10.rejectValue("", "", null, (String)source()); sink(es10); // $ hasTaintFlow Errors es11 = errors(); es11.rejectValue("", (String)source(), ""); sink(es11); // $ hasTaintFlow Errors es12 = errors(); es12.rejectValue("", "", (String)source()); sink(es12); // $ hasTaintFlow } }