From 3720c8623687d7a3fb978492ecd1ab2180823cf4 Mon Sep 17 00:00:00 2001 From: Robin Opletal Date: Tue, 12 Jan 2021 21:58:54 +0100 Subject: [PATCH] save: if part name is a path, only use the filename --- commands/msgview/save.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/commands/msgview/save.go b/commands/msgview/save.go index ef6bba8..5d01e4d 100644 --- a/commands/msgview/save.go +++ b/commands/msgview/save.go @@ -182,9 +182,17 @@ func generateFilename(part *models.BodyStructure) string { filename = fn } else if fn, ok := part.Params["name"]; ok { filename = fn - } else { + } + // Some MUAs send attachments with names like /some/stupid/idea/happy.jpeg + // Assuming non hostile intent it does make sense to use just the last + // portion of the pathname as the filename for saving it. + filename = filename[strings.LastIndex(filename, "/")+1:] + switch filename { + case "", ".", "..": timestamp := time.Now().Format("2006-01-02-150405") filename = fmt.Sprintf("aerc_%v", timestamp) + default: + // already have a valid name } return filename }