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