OSDN Git Service

Sanitise Bluetooth file name hint when receiving a contact
authorEdward Savage-Jones <edward.savage-jones@sonyericsson.com>
Tue, 28 Sep 2010 12:39:44 +0000 (14:39 +0200)
committerJohan Redestig <johan.redestig@sonyericsson.com>
Wed, 22 Dec 2010 13:16:38 +0000 (14:16 +0100)
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

index b5ac274..913e28c 100644 (file)
@@ -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) {