summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHamster Tian <th0928@126.com>2014-04-30 16:13:57 +0200
committerMichael Bestas <mikeioannina@gmail.com>2016-12-30 16:49:00 +0200
commitfdfd51a84f7181a9de84916c3b6d69b969a651ab (patch)
tree2d6c6e69339803510b9176ed28ed32c945f8c09e
parent6f63413577dcc240ec74e133e6187b1e71ffa011 (diff)
downloadandroid_packages_apps_Bluetooth-fdfd51a84f7181a9de84916c3b6d69b969a651ab.tar.gz
android_packages_apps_Bluetooth-fdfd51a84f7181a9de84916c3b6d69b969a651ab.tar.bz2
android_packages_apps_Bluetooth-fdfd51a84f7181a9de84916c3b6d69b969a651ab.zip
[2/3]Bluetooth: add "Accept all files" option for incoming files
* Renamed some variable. * Re-organized the comment. * Reworded the commit message. This patch will make OBEX server respect the "accept all files" setting. If enabled, it will skip checking MIME type of incoming file, so the file types not present in whitelist can be accepted. Blacklist will be ignored as well. (There's nothing in blacklist in fact) If it's disabled, the check will be performed as usual. Change-Id: I3904a25914d16d040126de43f5e6ed51993494c4 Bluetooth : Move ACCEPT_ALL_FILES to CMSettings Change-Id: Ia07553e08e6f228c6082b80d0bb2732dcd3465dd Change-Id: I3904a25914d16d040126de43f5e6ed51993494c4
-rwxr-xr-xAndroid.mk2
-rw-r--r--src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java94
2 files changed, 59 insertions, 37 deletions
diff --git a/Android.mk b/Android.mk
index 6bbbc9bb9..b8eaaddbb 100755
--- a/Android.mk
+++ b/Android.mk
@@ -24,7 +24,7 @@ LOCAL_CERTIFICATE := platform
LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
LOCAL_JAVA_LIBRARIES := javax.obex telephony-common libprotobuf-java-micro services.net
LOCAL_STATIC_JAVA_LIBRARIES := com.android.vcard bluetooth.mapsapi sap-api-java-static android-support-v4 services.net
-LOCAL_STATIC_JAVA_LIBRARIES += com.android.emailcommon
+LOCAL_STATIC_JAVA_LIBRARIES += com.android.emailcommon org.cyanogenmod.platform.internal
LOCAL_PROTOC_OPTIMIZE_TYPE := micro
LOCAL_REQUIRED_MODULES := bluetooth.default
diff --git a/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java b/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
index d636423e0..4517ec8ef 100644
--- a/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
+++ b/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
@@ -58,6 +58,8 @@ import javax.obex.ServerSession;
import com.android.bluetooth.BluetoothObexTransport;
+import cyanogenmod.providers.CMSettings;
+
/**
* This class runs as an OBEX server
*/
@@ -258,6 +260,8 @@ public class BluetoothOppObexServerSession extends ServerRequestHandler implemen
}
boolean isWhitelisted = BluetoothOppManager.getInstance(mContext).
isWhitelisted(destination);
+ boolean isAcceptAllFilesEnabled = CMSettings.System.getInt(mContext.getContentResolver(),
+ CMSettings.System.BLUETOOTH_ACCEPT_ALL_FILES, 0) == 1;
try {
boolean pre_reject = false;
@@ -280,47 +284,65 @@ public class BluetoothOppObexServerSession extends ServerRequestHandler implemen
obexResponse = ResponseCodes.OBEX_HTTP_BAD_REQUEST;
}
- if (!pre_reject) {
- /* first we look for Mimetype in Android map */
- String extension, type;
- int dotIndex = name.lastIndexOf(".");
- if (dotIndex < 0 && mimeType == null) {
- if (D) Log.w(TAG, "There is no file extension or mime type," +
- "reject the transfer");
- pre_reject = true;
- obexResponse = ResponseCodes.OBEX_HTTP_BAD_REQUEST;
- } else {
- extension = name.substring(dotIndex + 1).toLowerCase();
- MimeTypeMap map = MimeTypeMap.getSingleton();
- type = map.getMimeTypeFromExtension(extension);
- if (V) Log.v(TAG, "Mimetype guessed from extension " + extension + " is " + type);
- if (type != null) {
- mimeType = type;
-
+ if (!isAcceptAllFilesEnabled) {
+ if (!pre_reject) {
+ /* first we look for Mimetype in Android map */
+ String extension, type;
+ int dotIndex = name.lastIndexOf(".");
+ if (dotIndex < 0 && mimeType == null) {
+ if (D)
+ Log.w(TAG, "There is no file extension or mime type," +
+ "reject the transfer. File name:" + name);
+ pre_reject = true;
+ obexResponse = ResponseCodes.OBEX_HTTP_BAD_REQUEST;
} else {
- if (mimeType == null) {
- if (D) Log.w(TAG, "Can't get mimetype, reject the transfer");
- pre_reject = true;
- obexResponse = ResponseCodes.OBEX_HTTP_UNSUPPORTED_TYPE;
+ extension = name.substring(dotIndex + 1).toLowerCase();
+ MimeTypeMap map = MimeTypeMap.getSingleton();
+ type = map.getMimeTypeFromExtension(extension);
+ if (V)
+ Log.v(TAG, "Mimetype guessed from extension " + extension + " is "
+ + type);
+ if (type != null) {
+ mimeType = type;
+
+ } else {
+ if (mimeType == null) {
+ if (D)
+ Log.w(TAG, "Can't get mimetype, reject the transfer");
+ pre_reject = true;
+ obexResponse = ResponseCodes.OBEX_HTTP_UNSUPPORTED_TYPE;
+ }
+ }
+ if (mimeType != null) {
+ mimeType = mimeType.toLowerCase();
}
- }
- if (mimeType != null) {
- mimeType = mimeType.toLowerCase();
}
}
- }
- // Reject policy: anything outside the "white list" plus unspecified
- // MIME Types. Also reject everything in the "black list".
- if (!pre_reject
- && (mimeType == null
- || (!isWhitelisted && !Constants.mimeTypeMatches(mimeType,
- Constants.ACCEPTABLE_SHARE_INBOUND_TYPES))
- || Constants.mimeTypeMatches(mimeType,
- Constants.UNACCEPTABLE_SHARE_INBOUND_TYPES))) {
- if (D) Log.w(TAG, "mimeType is null or in unacceptable list, reject the transfer");
- pre_reject = true;
- obexResponse = ResponseCodes.OBEX_HTTP_UNSUPPORTED_TYPE;
+ // Reject policy: anything outside the "white list" plus
+ // unspecified MIME Types.
+ // Also reject everything in the "black list".
+ if (!pre_reject
+ && (mimeType == null
+ || (!isWhitelisted && !Constants.mimeTypeMatches(mimeType,
+ Constants.ACCEPTABLE_SHARE_INBOUND_TYPES))
+ || Constants.mimeTypeMatches(mimeType,
+ Constants.UNACCEPTABLE_SHARE_INBOUND_TYPES))) {
+ if (D)
+ Log.w(TAG,
+ "mimeType is null or in unacceptable list, reject the transfer. mimeType is "
+ + ((mimeType == null) ? "null" : mimeType));
+ pre_reject = true;
+ obexResponse = ResponseCodes.OBEX_HTTP_UNSUPPORTED_TYPE;
+ }
+ } else {
+ if (D)
+ Log.i(TAG, "isAcceptAllFilesEnabled == true, skipped check of mime type");
+ if (mimeType == null) {
+ mimeType = "*/*";
+ if (D)
+ Log.i(TAG, "mimeType is null. Fixed to */*");
+ }
}
if (pre_reject && obexResponse != ResponseCodes.OBEX_HTTP_OK) {