mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-05 04:56:02 +01:00
Return 400 error for invalid query string (#3672)
This commit is contained in:
@@ -4,15 +4,15 @@ import java.io.{File, FileInputStream, FileOutputStream}
|
|||||||
import gitbucket.core.api.{ApiError, JsonFormat}
|
import gitbucket.core.api.{ApiError, JsonFormat}
|
||||||
import gitbucket.core.model.Account
|
import gitbucket.core.model.Account
|
||||||
import gitbucket.core.service.{AccountService, RepositoryService, SystemSettingsService}
|
import gitbucket.core.service.{AccountService, RepositoryService, SystemSettingsService}
|
||||||
import gitbucket.core.util.SyntaxSugars._
|
import gitbucket.core.util.SyntaxSugars.*
|
||||||
import gitbucket.core.util.Directory._
|
import gitbucket.core.util.Directory.*
|
||||||
import gitbucket.core.util.Implicits._
|
import gitbucket.core.util.Implicits.*
|
||||||
import gitbucket.core.util._
|
import gitbucket.core.util.*
|
||||||
import org.json4s._
|
import org.json4s.*
|
||||||
import org.scalatra._
|
import org.scalatra.{MultiParams, *}
|
||||||
import org.scalatra.i18n._
|
import org.scalatra.i18n.*
|
||||||
import org.scalatra.json._
|
import org.scalatra.json.*
|
||||||
import org.scalatra.forms._
|
import org.scalatra.forms.*
|
||||||
|
|
||||||
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
|
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
|
||||||
import javax.servlet.{FilterChain, ServletRequest, ServletResponse}
|
import javax.servlet.{FilterChain, ServletRequest, ServletResponse}
|
||||||
@@ -24,7 +24,7 @@ import net.coobird.thumbnailator.Thumbnails
|
|||||||
import org.eclipse.jgit.api.Git
|
import org.eclipse.jgit.api.Git
|
||||||
import org.eclipse.jgit.lib.ObjectId
|
import org.eclipse.jgit.lib.ObjectId
|
||||||
import org.eclipse.jgit.revwalk.RevCommit
|
import org.eclipse.jgit.revwalk.RevCommit
|
||||||
import org.eclipse.jgit.treewalk._
|
import org.eclipse.jgit.treewalk.*
|
||||||
import org.apache.commons.io.IOUtils
|
import org.apache.commons.io.IOUtils
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.json4s.Formats
|
import org.json4s.Formats
|
||||||
@@ -48,11 +48,21 @@ abstract class ControllerBase
|
|||||||
|
|
||||||
implicit val jsonFormats: Formats = gitbucket.core.api.JsonFormat.jsonFormats
|
implicit val jsonFormats: Formats = gitbucket.core.api.JsonFormat.jsonFormats
|
||||||
|
|
||||||
|
private case class HttpException(status: Int) extends RuntimeException
|
||||||
|
|
||||||
before("/api/v3/*") {
|
before("/api/v3/*") {
|
||||||
contentType = formats("json")
|
contentType = formats("json")
|
||||||
request.setAttribute(Keys.Request.APIv3, true)
|
request.setAttribute(Keys.Request.APIv3, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override def multiParams(implicit request: HttpServletRequest): MultiParams = {
|
||||||
|
try {
|
||||||
|
super.multiParams
|
||||||
|
} catch {
|
||||||
|
case _: Exception => throw HttpException(400)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override def requestPath(uri: String, idx: Int): String = {
|
override def requestPath(uri: String, idx: Int): String = {
|
||||||
val path = super.requestPath(uri, idx)
|
val path = super.requestPath(uri, idx)
|
||||||
if (path != "/" && path.endsWith("/")) {
|
if (path != "/" && path.endsWith("/")) {
|
||||||
@@ -178,7 +188,9 @@ abstract class ControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
error {
|
error {
|
||||||
case e => {
|
case e: HttpException =>
|
||||||
|
ActionResult(e.status, (), Map.empty)
|
||||||
|
case e =>
|
||||||
logger.error(s"Catch unhandled error in request: ${request}", e)
|
logger.error(s"Catch unhandled error in request: ${request}", e)
|
||||||
if (request.hasAttribute(Keys.Request.Ajax)) {
|
if (request.hasAttribute(Keys.Request.Ajax)) {
|
||||||
org.scalatra.InternalServerError()
|
org.scalatra.InternalServerError()
|
||||||
@@ -188,7 +200,6 @@ abstract class ControllerBase
|
|||||||
} else {
|
} else {
|
||||||
org.scalatra.InternalServerError(gitbucket.core.html.error("Internal Server Error", Some(e)))
|
org.scalatra.InternalServerError(gitbucket.core.html.error("Internal Server Error", Some(e)))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override def url(
|
override def url(
|
||||||
@@ -487,5 +498,4 @@ trait AccountManagementControllerBase extends ControllerBase {
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user