Skip to content

Commit 6127999

Browse files
committed
Fix repeatedly adding rel values
(fixes issue #306) Signed-off-by: Sven Strickroth <email@cs-ware.de>
1 parent 91c5fdc commit 6127999

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/main/java/org/owasp/html/HtmlPolicyBuilder.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,6 +1038,7 @@ public String apply(String elementName, List<String> attrs) {
10381038
if (relIndex < 0 && hasTarget && extra.isEmpty() && skip.isEmpty()) {
10391039
relValue = DEFAULT_RELS_ON_TARGETTED_LINKS_STR;
10401040
} else {
1041+
final Set<String> usedRels = new HashSet<>();
10411042
StringBuilder sb = new StringBuilder();
10421043
if (relIndex >= 0) {
10431044
// Preserve values that are not explicitly skipped.
@@ -1046,21 +1047,23 @@ public String apply(String elementName, List<String> attrs) {
10461047
for (int i = 0; i <= n; ++i) {
10471048
if (i == n || Strings.isHtmlSpace(rels.charAt(i))) {
10481049
if (left < i) {
1049-
if (skip.isEmpty()
1050-
|| !skip.contains(
1051-
Strings.toLowerCase(rels.substring(left, i)))) {
1050+
final String rel = Strings.toLowerCase(rels.substring(left, i));
1051+
if (skip.isEmpty() || !skip.contains(rel)) {
10521052
sb.append(rels, left, i).append(' ');
1053+
usedRels.add(rel);
10531054
}
10541055
}
10551056
left = i + 1;
10561057
}
10571058
}
10581059
}
10591060
for (String s : extra) {
1061+
if (usedRels.contains(s)) { continue; }
10601062
sb.append(s).append(' ');
10611063
}
10621064
if (hasTarget) {
10631065
for (String s : whenTargetPresent) {
1066+
if (usedRels.contains(s)) { continue; }
10641067
sb.append(s).append(' ');
10651068
}
10661069
}

src/test/java/org/owasp/html/HtmlPolicyBuilderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@ public static final void testRelLinksWhenRelisPartOfData() {
810810
.allowStandardUrlProtocols()
811811
.toFactory();
812812
String toSanitize = "<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://google.com\">test</a>";
813-
assertTrue("Failure in testRelLinksWhenRelisPartOfData", pf.sanitize(toSanitize).equals(toSanitize));
813+
assertEquals(toSanitize, pf.sanitize(toSanitize));
814814
}
815815

816816
@Test

0 commit comments

Comments
 (0)