Skip to content

Commit 8312b9f

Browse files
Merge pull request nextcloud#15802 from nextcloud/backport/15799/stable-3.34
[stable-3.34] fix: incomplete trailing space during decoding filename
2 parents 89fbb98 + d9ba842 commit 8312b9f

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

app/src/main/java/com/owncloud/android/utils/FileStorageUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ public static boolean containsBidiControlCharacters(String filename) {
8080
String decoded;
8181
try {
8282
decoded = URLDecoder.decode(filename, StandardCharsets.UTF_8.toString());
83-
} catch (UnsupportedEncodingException e) {
84-
return false;
83+
} catch (Exception e) {
84+
decoded = filename;
8585
}
8686

8787
int[] bidiControlCharacters = {

app/src/test/java/com/nextcloud/client/utils/FileStorageUtilsTest.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,4 +304,22 @@ class FileStorageUtilsTest {
304304
val result = FileStorageUtils.containsBidiControlCharacters("/Foo%e2%80%aedm.exe")
305305
assertTrue(result)
306306
}
307+
308+
@Test
309+
fun testContainsBidiControlCharactersWhenGivenMalformedEncodedSequenceShouldNotThrowAndReturnFalse() {
310+
val result = FileStorageUtils.containsBidiControlCharacters("file%")
311+
assertFalse(result)
312+
}
313+
314+
@Test
315+
fun testContainsBidiControlCharactersWhenGivenBrokenUrlEncodedPatternShouldHandleGracefully() {
316+
val result = FileStorageUtils.containsBidiControlCharacters("file%2")
317+
assertFalse(result)
318+
}
319+
320+
@Test
321+
fun testContainsBidiControlCharactersWhenGivenMultipleBidiCharactersShouldReturnTrue() {
322+
val result = FileStorageUtils.containsBidiControlCharacters("safe\u202Ebad\u202Bname.txt")
323+
assertTrue(result)
324+
}
307325
}

0 commit comments

Comments
 (0)