diff --git a/src/main/scala/gitbucket/core/view/AvatarImageProvider.scala b/src/main/scala/gitbucket/core/view/AvatarImageProvider.scala index cd1b096..e74a4a8 100644 --- a/src/main/scala/gitbucket/core/view/AvatarImageProvider.scala +++ b/src/main/scala/gitbucket/core/view/AvatarImageProvider.scala @@ -45,11 +45,14 @@ if (tooltip) { Html( - s"""@${userName}""" + s"""@${StringUtil.escapeHtml(userName)}""".stripMargin ) } else { Html( - s"""@${userName}""" + s"""@${StringUtil.escapeHtml(userName)}""".stripMargin ) } } diff --git a/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala b/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala index facdbab..3596c9a 100644 --- a/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala +++ b/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala @@ -35,7 +35,8 @@ assert( provider.toHtml("user", 32).toString == - """@user""" + """@user""".stripMargin ) } @@ -47,7 +48,8 @@ assert( provider.toHtml("user", 32).toString == - s"""@user""" + s"""@user""".stripMargin ) } @@ -59,7 +61,8 @@ assert( provider.toHtml("user", 32).toString == - s"""@user""" + s"""@user""".stripMargin ) } @@ -69,7 +72,8 @@ assert( provider.toHtml("user", 20, "hoge@hoge.com").toString == - """@user""" + """@user""".stripMargin ) } @@ -79,7 +83,8 @@ assert( provider.toHtml("user", 20).toString == - """@user""" + """@user""".stripMargin ) } @@ -89,7 +94,8 @@ assert( provider.toHtml("user", 20, "hoge@hoge.com").toString == - """@user""" + """@user""".stripMargin ) } @@ -99,7 +105,27 @@ assert( provider.toHtml("user", 20, "hoge@hoge.com", true).toString == - """@user""" + """@user""".stripMargin + ) + } + + it("should escape user name") { + implicit val context = Context(createSystemSettings(false), None, request) + val provider = new AvatarImageProviderImpl(None) + + assert( + provider.toHtml(""""""", 20, "hoge@hoge.com").toString == + """@<user>"<name>""".stripMargin + ) + + assert( + provider.toHtml(""""""", 20, "hoge@hoge.com", true).toString == + """@<user>"<name>""".stripMargin ) } }