From 5e9a02df66c6044bd4a06b9d53e6cdbd8ad22606 Mon Sep 17 00:00:00 2001 From: Edward Savage-Jones Date: Tue, 28 Sep 2010 14:39:44 +0200 Subject: Sanitise Bluetooth file name hint when receiving a contact If a contact name is entered with any of the following characters :"<>*?|\n\t the transfer of that contact fails. This is due to the underlying filesystem (FAT) not being able to handle these characters in a file name. This fix corrects that situation by replacing any whitespace characters with a space and illegal FAT filesystem characters with underscore. Change-Id: I5021bd26a16c31810a61bac3f70439c1153451c2 --- src/com/android/bluetooth/opp/BluetoothOppReceiveFileInfo.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/android/bluetooth/opp/BluetoothOppReceiveFileInfo.java b/src/com/android/bluetooth/opp/BluetoothOppReceiveFileInfo.java index b5ac2742d..913e28c17 100644 --- a/src/com/android/bluetooth/opp/BluetoothOppReceiveFileInfo.java +++ b/src/com/android/bluetooth/opp/BluetoothOppReceiveFileInfo.java @@ -244,6 +244,11 @@ public class BluetoothOppReceiveFileInfo { // Prevent abuse of path backslashes by converting all backlashes '\\' chars // to UNIX-style forward-slashes '/' hint = hint.replace('\\', '/'); + // Convert all whitespace characters to spaces. + hint = hint.replaceAll("\\s", " "); + // Replace illegal fat filesystem characters from the + // filename hint i.e. :"<>*?| with something safe. + hint = hint.replaceAll("[:\"<>*?|]", "_"); if (V) Log.v(Constants.TAG, "getting filename from hint"); int index = hint.lastIndexOf('/') + 1; if (index > 0) { -- cgit v1.2.3