From 40b570cc12d58ae53469520c4f64384c60d7684e Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 3 Aug 2021 16:26:49 -0400 Subject: [PATCH] fix(mail): don't render SVG attachments Fix #5371 --- UI/MailPartViewers/UIxMailPartViewer.m | 17 +++++++++++------ UI/MailPartViewers/UIxMailRenderingContext.m | 7 +++---- .../MailPartViewers/UIxMailPartLinkViewer.wox | 4 ++-- .../js/Mailer/sgImageGallery.service.js | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/UI/MailPartViewers/UIxMailPartViewer.m b/UI/MailPartViewers/UIxMailPartViewer.m index 5eb2515f8..9bc68cd01 100644 --- a/UI/MailPartViewers/UIxMailPartViewer.m +++ b/UI/MailPartViewers/UIxMailPartViewer.m @@ -249,9 +249,10 @@ _st = [_st lowercaseString]; if ([_mt isEqualToString:@"image"]) { - if ([_st isEqualToString:@"gif"]) return @"gif"; - if ([_st isEqualToString:@"jpeg"]) return @"jpg"; - if ([_st isEqualToString:@"png"]) return @"png"; + if ([_st isEqualToString:@"gif"]) return @"gif"; + if ([_st isEqualToString:@"jpeg"]) return @"jpg"; + if ([_st isEqualToString:@"png"]) return @"png"; + if ([_st isEqualToString:@"svg+xml"]) return @"svg"; } else if ([_mt isEqualToString:@"text"]) { if ([_st isEqualToString:@"plain"]) return @"txt"; @@ -260,10 +261,10 @@ if ([_st isEqualToString:@"x-vcard"]) return @"vcf"; } else if ([_mt isEqualToString:@"message"]) { - if ([_st isEqualToString:@"rfc822"]) return @"eml"; + if ([_st isEqualToString:@"rfc822"]) return @"eml"; } else if ([_mt isEqualToString:@"application"]) { - if ([_st isEqualToString:@"pdf"]) return @"pdf"; + if ([_st isEqualToString:@"pdf"]) return @"pdf"; } return nil; } @@ -326,9 +327,13 @@ - (NSString *) _pathForAttachmentOrDownload: (BOOL) forDownload { SOGoMailBodyPart *bodyPart; - NSString *s, *attachment; + NSString *st, *s, *attachment; NSMutableString *url; + st = [[bodyInfo valueForKey:@"subtype"] lowercaseString]; + if (!forDownload && [st isEqualToString: @"svg+xml"]) + return nil; + bodyPart = [self clientPart]; s = [[self clientObject] baseURLInContext: [self context]]; diff --git a/UI/MailPartViewers/UIxMailRenderingContext.m b/UI/MailPartViewers/UIxMailRenderingContext.m index 683e1da46..672ee661f 100644 --- a/UI/MailPartViewers/UIxMailRenderingContext.m +++ b/UI/MailPartViewers/UIxMailRenderingContext.m @@ -47,8 +47,7 @@ s = [[info objectForKey:@"disposition"] objectForKey: @"type"]; - shouldDisplay = (s && ([s caseInsensitiveCompare: @"ATTACHMENT"] - == NSOrderedSame)); + shouldDisplay = (s && ([s caseInsensitiveCompare: @"ATTACHMENT"] == NSOrderedSame)); if (!shouldDisplay && !textPart) shouldDisplay = ([[info objectForKey: @"bodyId"] length] ? YES : NO); @@ -219,8 +218,8 @@ static BOOL showNamedTextAttachmentsInline = NO; if ([mt isEqualToString: @"image"] && !([st isEqualToString: @"tiff"] || [st isEqualToString: @"pdf"])) { - if ([self _shouldDisplayAsAttachment: _info textPart: NO]) - return [self linkViewer]; + if ([self _shouldDisplayAsAttachment: _info textPart: NO] || [st isEqualToString: @"svg+xml"]) + return [self linkViewer]; return [self imageViewer]; } diff --git a/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox b/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox index d4206b069..174dfbf08 100644 --- a/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox +++ b/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox @@ -15,10 +15,10 @@
- + open_in_new - + file_download diff --git a/UI/WebServerResources/js/Mailer/sgImageGallery.service.js b/UI/WebServerResources/js/Mailer/sgImageGallery.service.js index b0c466137..d5b37b9f3 100644 --- a/UI/WebServerResources/js/Mailer/sgImageGallery.service.js +++ b/UI/WebServerResources/js/Mailer/sgImageGallery.service.js @@ -81,7 +81,7 @@ partSrc = angular.element(this.message.$content()[partIndex].content).find('img')[0].src; var images = _.filter(this.message.attachmentAttrs, function(attrs) { - return attrs.mimetype.indexOf('image/') === 0; + return attrs.mimetype.indexOf('image/') === 0 && attrs.mimetype.indexOf('svg+xml') < 0; }); var selectedIndex = _.findIndex(images, function(image) {