From eff6928930d2174c8903506e65d017e8028bf56a Mon Sep 17 00:00:00 2001 From: AmirHossein Abdolmotallebi Date: Mon, 26 Aug 2024 13:55:57 +0330 Subject: [PATCH] fix some URLEncoded filenames are not decoded properly --- CHANGELOG.md | 2 ++ .../connection/response/headers/fileNameExtractor.kt | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0310c76..fbfe1f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ ### Fixed +- some URLEncoded filenames are not decoded properly + ### Security ## 1.0.7 diff --git a/downloader/core/src/main/kotlin/ir/amirab/downloader/connection/response/headers/fileNameExtractor.kt b/downloader/core/src/main/kotlin/ir/amirab/downloader/connection/response/headers/fileNameExtractor.kt index 222b8b7..7585dd9 100644 --- a/downloader/core/src/main/kotlin/ir/amirab/downloader/connection/response/headers/fileNameExtractor.kt +++ b/downloader/core/src/main/kotlin/ir/amirab/downloader/connection/response/headers/fileNameExtractor.kt @@ -1,4 +1,5 @@ package ir.amirab.downloader.connection.response.headers + import java.net.URLDecoder fun extractFileNameFromContentDisposition(contentDispositionValue: String): String? { @@ -16,6 +17,9 @@ fun extractFileNameFromContentDisposition(contentDispositionValue: String): Stri ?.groups ?.get("fileName") ?.value?.let { + runCatching { URLDecoder.decode(it, Charsets.UTF_8) } + .getOrNull() + }?.let { return it } return null