diff --git a/source/de/anomic/htmlFilter/htmlFilterWriter.java b/source/de/anomic/htmlFilter/htmlFilterWriter.java
index 059f0c151..be7a5e6a7 100644
--- a/source/de/anomic/htmlFilter/htmlFilterWriter.java
+++ b/source/de/anomic/htmlFilter/htmlFilterWriter.java
@@ -68,6 +68,7 @@ public final class htmlFilterWriter extends Writer {
private boolean inDoubleQuote;
private boolean inComment;
private boolean inScript;
+ private boolean inStyle;
private boolean binaryUnsuspect;
private final boolean passbyIfBinarySuspect;
@@ -89,6 +90,7 @@ public final class htmlFilterWriter extends Writer {
this.inDoubleQuote = false;
this.inComment = false;
this.inScript = false;
+ this.inStyle = false;
this.binaryUnsuspect = true;
this.passbyIfBinarySuspect = passbyIfBinarySuspect;
@@ -411,6 +413,23 @@ public final class htmlFilterWriter extends Writer {
// buffer = new serverByteBuffer();
buffer.reset();
}
+ } else if (inStyle) {
+ buffer.append(c);
+ final int bufferLength = buffer.length();
+ if ((c == rb) && (bufferLength > 13) &&
+ (buffer.charAt(bufferLength - 8) == lb) &&
+ (buffer.charAt(bufferLength - 7) == '/') &&
+ (buffer.charAt(bufferLength - 6) == 's') &&
+ (buffer.charAt(bufferLength - 5) == 't') &&
+ (buffer.charAt(bufferLength - 4) == 'y') &&
+ (buffer.charAt(bufferLength - 3) == 'l') &&
+ (buffer.charAt(bufferLength - 2) == 'e')) {
+ // style is at end
+ inStyle = false;
+ if (out != null) out.write(buffer.getChars());
+ // buffer = new serverByteBuffer();
+ buffer.reset();
+ }
} else {
if (buffer.length() == 0) {
if (c == rb) {
@@ -435,9 +454,18 @@ public final class htmlFilterWriter extends Writer {
(buffer.charAt(4) == 'i') &&
(buffer.charAt(5) == 'p') &&
(c == 't')) {
- // this is the start of a comment
+ // this is the start of a javascript
inScript = true;
buffer.append(c);
+ } else if ((buffer.length() >= 5) &&
+ (buffer.charAt(1) == 's') &&
+ (buffer.charAt(2) == 't') &&
+ (buffer.charAt(3) == 'y') &&
+ (buffer.charAt(4) == 'l') &&
+ (c == 'e')) {
+ // this is the start of a css-style
+ inStyle = true;
+ buffer.append(c);
} else if (c == rb) {
buffer.append(c);
// the tag ends here. after filtering: pass on