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

reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new c29b1c2  CXF-8572: Incorrectly parsed ETag when contains 'W/' as part 
of the content (#830)
c29b1c2 is described below

commit c29b1c23a7e09f9fe2c5412d0b9ece1bafb7c89c
Author: Andriy Redko <[email protected]>
AuthorDate: Wed Aug 4 09:11:49 2021 -0400

    CXF-8572: Incorrectly parsed ETag when contains 'W/' as part of the content 
(#830)
---
 .../org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java    | 11 ++++++-----
 .../apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java    |  4 +++-
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java
index 0deb1c3..cc24518 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProvider.java
@@ -39,16 +39,17 @@ public class EntityTagHeaderProvider implements 
HeaderDelegate<EntityTag> {
 
         String tag;
         boolean weak = false;
-        int i = header.indexOf(WEAK_PREFIX);
-        if (i != -1) {
+        final String trimmed = header.trim();
+        // See please 
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag for weak 
validator 
+        if (trimmed.startsWith(WEAK_PREFIX)) {
             weak = true;
-            if (i + 2 < header.length()) {
-                tag = header.substring(i + 2);
+            if (trimmed.length() > 2) {
+                tag = trimmed.substring(2);
             } else {
                 return new EntityTag("", weak);
             }
         }  else {
-            tag = header;
+            tag = trimmed;
         }
         if (tag.length() > 0 && !tag.startsWith("\"") && !tag.endsWith("\"")) {
             return new EntityTag(tag, weak);
diff --git 
a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java
 
b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java
index 777cb21..70edd7a 100644
--- 
a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java
+++ 
b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/EntityTagHeaderProviderTest.java
@@ -39,7 +39,9 @@ public class EntityTagHeaderProviderTest {
         tag = EntityTag.valueOf("W/\"12345\"");
         assertTrue(tag.isWeak() && "12345".equals(tag.getValue()));
         tag = EntityTag.valueOf("\"12345\"");
-        assertFalse(tag.isWeak() && "12345".equals(tag.getValue()));
+        assertTrue(!tag.isWeak() && "12345".equals(tag.getValue()));
+        tag = 
EntityTag.valueOf("\"wyoBLW/ye71RgN/0LNyj4eA5rfE1ovtlM03aakuGr2Y=\"");
+        assertTrue(!tag.isWeak() && 
"wyoBLW/ye71RgN/0LNyj4eA5rfE1ovtlM03aakuGr2Y=".equals(tag.getValue()));
     }
 
     @Test

Reply via email to