提交 ffc5884a 编写于 作者: K kohsuke

[FIXED HUDSON-2771] fixed NPE, and added a regression test, which in turn...

[FIXED HUDSON-2771] fixed NPE, and added a regression test, which in turn required some fixes in HtmlUnit as well.

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@13936 71c3de6d-444a-0410-be80-ed276b4c234a
上级 f8f25c31
...@@ -231,7 +231,7 @@ ...@@ -231,7 +231,7 @@
<dependency> <dependency>
<groupId>org.kohsuke.stapler</groupId> <groupId>org.kohsuke.stapler</groupId>
<artifactId>stapler</artifactId> <artifactId>stapler</artifactId>
<version>1.89</version> <version>1.90</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jvnet.localizer</groupId> <groupId>org.jvnet.localizer</groupId>
......
...@@ -274,7 +274,7 @@ public class BuildTrigger extends Publisher implements DependecyDeclarer, Matrix ...@@ -274,7 +274,7 @@ public class BuildTrigger extends Publisher implements DependecyDeclarer, Matrix
*/ */
public void doCheck( StaplerRequest req, StaplerResponse rsp ) throws IOException, ServletException { public void doCheck( StaplerRequest req, StaplerResponse rsp ) throws IOException, ServletException {
// Require CONFIGURE permission on this project // Require CONFIGURE permission on this project
AccessControlled anc = (AccessControlled) req.findAncestor(AccessControlled.class).getObject(); AccessControlled anc = req.findAncestorObject(AccessControlled.class);
new FormFieldValidator(req,rsp,anc,Item.CONFIGURE) { new FormFieldValidator(req,rsp,anc,Item.CONFIGURE) {
protected void check() throws IOException, ServletException { protected void check() throws IOException, ServletException {
String list = request.getParameter("value"); String list = request.getParameter("value");
......
...@@ -228,7 +228,7 @@ public class AggregatedTestResultPublisher extends Publisher { ...@@ -228,7 +228,7 @@ public class AggregatedTestResultPublisher extends Publisher {
public void doCheck(StaplerRequest req, StaplerResponse rsp, @QueryParameter final String value) throws IOException, ServletException { public void doCheck(StaplerRequest req, StaplerResponse rsp, @QueryParameter final String value) throws IOException, ServletException {
// Require CONFIGURE permission on this project // Require CONFIGURE permission on this project
AbstractProject project = (AbstractProject) req.findAncestor(AbstractProject.class).getObject(); AbstractProject project = req.findAncestorObject(AbstractProject.class);
new FormFieldValidator(req,rsp,project,Item.CONFIGURE) { new FormFieldValidator(req,rsp,project,Item.CONFIGURE) {
protected void check() throws IOException, ServletException { protected void check() throws IOException, ServletException {
......
...@@ -7,7 +7,6 @@ import hudson.Util; ...@@ -7,7 +7,6 @@ import hudson.Util;
import hudson.model.AbstractProject; import hudson.model.AbstractProject;
import hudson.model.Hudson; import hudson.model.Hudson;
import hudson.model.Item; import hudson.model.Item;
import hudson.model.Job;
import hudson.security.Permission; import hudson.security.Permission;
import hudson.security.AccessControlled; import hudson.security.AccessControlled;
...@@ -77,6 +76,8 @@ public abstract class FormFieldValidator { ...@@ -77,6 +76,8 @@ public abstract class FormFieldValidator {
public final void process() throws IOException, ServletException { public final void process() throws IOException, ServletException {
if(permission!=null) if(permission!=null)
try { try {
if(subject==null)
throw new AccessDeniedException("No subject");
subject.checkPermission(permission); subject.checkPermission(permission);
} catch (AccessDeniedException e) { } catch (AccessDeniedException e) {
// if the user has hudson-wisde admin permission, all checks are allowed // if the user has hudson-wisde admin permission, all checks are allowed
...@@ -283,7 +284,7 @@ public abstract class FormFieldValidator { ...@@ -283,7 +284,7 @@ public abstract class FormFieldValidator {
public WorkspaceFileMask(StaplerRequest request, StaplerResponse response, boolean errorIfNotExist) { public WorkspaceFileMask(StaplerRequest request, StaplerResponse response, boolean errorIfNotExist) {
// Require CONFIGURE permission on the job // Require CONFIGURE permission on the job
super(request, response, (AbstractProject) request.findAncestor(AbstractProject.class).getObject(), Item.CONFIGURE); super(request, response, request.findAncestorObject(AbstractProject.class), Item.CONFIGURE);
this.errorIfNotExist = errorIfNotExist; this.errorIfNotExist = errorIfNotExist;
} }
...@@ -346,7 +347,7 @@ public abstract class FormFieldValidator { ...@@ -346,7 +347,7 @@ public abstract class FormFieldValidator {
public WorkspaceFilePath(StaplerRequest request, StaplerResponse response, boolean errorIfNotExist, boolean expectingFile) { public WorkspaceFilePath(StaplerRequest request, StaplerResponse response, boolean errorIfNotExist, boolean expectingFile) {
// Require CONFIGURE permission on this job // Require CONFIGURE permission on this job
super(request, response, (AbstractProject) request.findAncestor(AbstractProject.class).getObject(), Item.CONFIGURE); super(request, response, request.findAncestorObject(AbstractProject.class), Item.CONFIGURE);
this.errorIfNotExist = errorIfNotExist; this.errorIfNotExist = errorIfNotExist;
this.expectingFile = expectingFile; this.expectingFile = expectingFile;
} }
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
<dependency> <dependency>
<groupId>org.jvnet.hudson</groupId> <groupId>org.jvnet.hudson</groupId>
<artifactId>htmlunit</artifactId> <artifactId>htmlunit</artifactId>
<version>2.2-hudson-5</version> <version>2.2-hudson-7</version>
</dependency> </dependency>
<dependency> <dependency>
<!-- for testing JNLP launch. --> <!-- for testing JNLP launch. -->
......
package hudson.util;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.recipes.WithPlugin;
import hudson.model.FreeStyleProject;
/**
* @author Kohsuke Kawaguchi
*/
public class FormFieldValidatorTest extends HudsonTestCase {
@Bug(2771)
@WithPlugin("tasks.hpi")
public void test2771() throws Exception {
FreeStyleProject p = createFreeStyleProject();
new WebClient().getPage(p,"configure");
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册