diff --git a/SoObjects/SOGo/NSString+Utilities.h b/SoObjects/SOGo/NSString+Utilities.h index 2164b2bd3..cdec73f75 100644 --- a/SoObjects/SOGo/NSString+Utilities.h +++ b/SoObjects/SOGo/NSString+Utilities.h @@ -92,6 +92,9 @@ - (NSString *) encryptWithKey: (NSString *) theKey; - (NSString *) decryptWithKey: (NSString *) theKey; +/* HTML */ +- (NSString *) cleanInvalidHTMLTags; + @end #endif /* NSSTRING_URL_H */ diff --git a/SoObjects/SOGo/NSString+Utilities.m b/SoObjects/SOGo/NSString+Utilities.m index fb888fb0f..682be7e71 100644 --- a/SoObjects/SOGo/NSString+Utilities.m +++ b/SoObjects/SOGo/NSString+Utilities.m @@ -1001,4 +1001,15 @@ static int cssEscapingCount; return result; } +- (NSString *) cleanInvalidHTMLTags { + // Clean HTML invalid tags as reported in https://bugs.sogo.nu/view.php?id=5755 + NSString *s; + + s = [NSString stringWithString: self]; + s = [s stringByReplacingOccurrencesOfString:@"" withString:@""]; + s = [s stringByReplacingOccurrencesOfString:@""] cleanInvalidHTMLTags], @"
Test
"); + testEquals([[NSString stringWithString:@"
"] cleanInvalidHTMLTags], @"
"); +} + @end diff --git a/UI/MailPartViewers/UIxMailPartHTMLViewer.m b/UI/MailPartViewers/UIxMailPartHTMLViewer.m index be794fa67..b4eff9f03 100644 --- a/UI/MailPartViewers/UIxMailPartHTMLViewer.m +++ b/UI/MailPartViewers/UIxMailPartHTMLViewer.m @@ -845,7 +845,7 @@ _xmlCharsetForCharset (NSString *charset) if (!s) s = [[NSString alloc] initWithData: preparsedContent encoding: NSISOLatin1StringEncoding]; - preparsedContent = [[s safeString] dataUsingEncoding: NSUTF8StringEncoding]; + preparsedContent = [[[s cleanInvalidHTMLTags] safeString] dataUsingEncoding: NSUTF8StringEncoding]; RELEASE(s); }