Monotone-Parent: e3f0ba86e1168ac7457fd47477e96ee5177b581a

Monotone-Revision: 5ced3caff6941c97131463243328da8efd133cf1

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-04-20T17:45:17
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-04-20 17:45:17 +00:00
parent 1112a46b7b
commit b9e50361c3
3 changed files with 62 additions and 18 deletions

View File

@@ -107,7 +107,7 @@ _xmlCharsetForCharset (NSString *charset)
NSMutableString *result;
NSMutableString *css;
NSDictionary *attachmentIds;
BOOL ignoreContent;
int ignoredContent;
NSString *ignoreTag;
BOOL inBody;
BOOL inStyle;
@@ -125,11 +125,9 @@ _xmlCharsetForCharset (NSString *charset)
+ (void) initialize
{
if (!BannedTags)
{
BannedTags = [NSArray arrayWithObjects: @"script", @"link", @"base",
@"meta", @"title", nil];
[BannedTags retain];
}
BannedTags = [[NSArray alloc] initWithObjects: @"script", @"frameset",
@"frame", @"iframe", @"applet", @"link",
@"base", @"meta", @"title", nil];
}
- (id) init
@@ -190,7 +188,7 @@ _xmlCharsetForCharset (NSString *charset)
result = [NSMutableString new];
css = [NSMutableString new];
ignoreContent = NO;
ignoredContent = 0;
[ignoreTag release];
ignoreTag = nil;
@@ -288,7 +286,7 @@ _xmlCharsetForCharset (NSString *charset)
showWhoWeAre();
lowerName = [_localName lowercaseString];
if (inStyle || ignoreContent)
if (inStyle || ignoredContent)
;
else if ([lowerName isEqualToString: @"base"])
;
@@ -302,8 +300,9 @@ _xmlCharsetForCharset (NSString *charset)
{
if ([BannedTags containsObject: lowerName])
{
ignoreTag = [lowerName copy];
ignoreContent = YES;
if (!ignoredContent)
ignoreTag = [lowerName copy];
ignoredContent++;
}
else
{
@@ -336,6 +335,13 @@ _xmlCharsetForCharset (NSString *charset)
else
skipAttribute = YES;
}
else if (([name isEqualToString: @"data"]
|| [name isEqualToString: @"classid"])
&& [lowerName isEqualToString: @"object"])
{
value = [_attributes valueAtIndex: count];
name = [NSString stringWithFormat: @"unsafe-%@", name];
}
else if ([name isEqualToString: @"href"]
|| [name isEqualToString: @"action"])
{
@@ -387,13 +393,16 @@ _xmlCharsetForCharset (NSString *charset)
lowerName = [_localName lowercaseString];
if (ignoreContent)
if (ignoredContent)
{
if ([lowerName isEqualToString: ignoreTag])
{
ignoreContent = NO;
[ignoreTag release];
ignoreTag = nil;
ignoredContent--;
if (!ignoredContent)
{
[ignoreTag release];
ignoreTag = nil;
}
}
}
else
@@ -427,7 +436,7 @@ _xmlCharsetForCharset (NSString *charset)
length: (int) _len
{
showWhoWeAre();
if (!ignoreContent)
if (!ignoredContent)
{
if (inStyle)
[self _appendStyle: _chars length: _len];