You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pekko.apache.org by fa...@apache.org on 2024/07/19 17:47:20 UTC

(pekko-http) branch 1.0.x updated: fix parse broken when header value is null (#575) (#581)

This is an automated email from the ASF dual-hosted git repository.

fanningpj pushed a commit to branch 1.0.x
in repository https://gitbox.apache.org/repos/asf/pekko-http.git


The following commit(s) were added to refs/heads/1.0.x by this push:
     new eb43f5558 fix parse broken when header value is null (#575) (#581)
eb43f5558 is described below

commit eb43f5558769904436c904144702871c764184c4
Author: PJ Fanning <pj...@users.noreply.github.com>
AuthorDate: Fri Jul 19 18:47:15 2024 +0100

    fix parse broken when header value is null (#575) (#581)
    
    * fix parse broken when header value is null
    
    * fix style
    
    * revert not need change
    
    * improve match case
    
    * revert HttpHeader and update  HeaderParser.failure
    
    * update assert
    
    ---------
    
    Co-authored-by: Laglangyue <35...@users.noreply.github.com>
    Co-authored-by: tangjiafu <ta...@apache.org>
---
 .../org/apache/pekko/http/impl/model/parser/HeaderParser.scala     | 5 +++--
 .../org/apache/pekko/http/impl/model/parser/HttpHeaderSpec.scala   | 7 +++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/http-core/src/main/scala/org/apache/pekko/http/impl/model/parser/HeaderParser.scala b/http-core/src/main/scala/org/apache/pekko/http/impl/model/parser/HeaderParser.scala
index 6b7bd7029..68ae18e63 100644
--- a/http-core/src/main/scala/org/apache/pekko/http/impl/model/parser/HeaderParser.scala
+++ b/http-core/src/main/scala/org/apache/pekko/http/impl/model/parser/HeaderParser.scala
@@ -86,8 +86,9 @@ private[http] class HeaderParser(
   def failure(error: Throwable): HeaderParser.Failure =
     HeaderParser.Failure {
       error match {
-        case IllegalUriException(info) => info
-        case NonFatal(e)               => ErrorInfo.fromCompoundString(e.getMessage)
+        case IllegalUriException(info)           => info
+        case NonFatal(e) if e.getMessage == null => ErrorInfo.fromCompoundString(e.toString)
+        case NonFatal(e)                         => ErrorInfo.fromCompoundString(e.getMessage)
       }
     }
   def ruleNotFound(ruleName: String): Result = HeaderParser.RuleNotFound
diff --git a/http-core/src/test/scala/org/apache/pekko/http/impl/model/parser/HttpHeaderSpec.scala b/http-core/src/test/scala/org/apache/pekko/http/impl/model/parser/HttpHeaderSpec.scala
index 651277f43..1e9dcba50 100644
--- a/http-core/src/test/scala/org/apache/pekko/http/impl/model/parser/HttpHeaderSpec.scala
+++ b/http-core/src/test/scala/org/apache/pekko/http/impl/model/parser/HttpHeaderSpec.scala
@@ -876,6 +876,13 @@ class HttpHeaderSpec extends AnyFreeSpec with Matchers {
       parse("User-Agent", "(" * 10000).errors.head shouldEqual
       ErrorInfo("Illegal HTTP header 'User-Agent': Illegal header value", "Header comment nested too deeply")
     }
+
+    "should not broken when header-value is null" in {
+      val errors = parse("Content-Disposition", null).errors
+      errors should have size 1
+      errors.head shouldBe an[ErrorInfo]
+    }
+
   }
 
   implicit class TestLine(line: String) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pekko.apache.org
For additional commands, e-mail: commits-help@pekko.apache.org