Merge "Messaging doesn\'t allow sharing of its own files" into nyc-dev am: ca5fc9fa7d

am: 65e8a2d330

* commit '65e8a2d33005760f03bb0ca2c412332ab82f7413':
  Messaging doesn't allow sharing of its own files

Change-Id: I5b3a6ffadacd8da1c8db1a626f78ca2bc65a2f7e
This commit is contained in:
Tavis Bohne
2016-05-16 18:21:17 +00:00
committed by android-build-merger
2 changed files with 24 additions and 2 deletions
@@ -34,6 +34,7 @@ import com.android.messaging.util.Assert;
import com.android.messaging.util.ContentType; import com.android.messaging.util.ContentType;
import com.android.messaging.util.LogUtil; import com.android.messaging.util.LogUtil;
import com.android.messaging.util.MediaMetadataRetrieverWrapper; import com.android.messaging.util.MediaMetadataRetrieverWrapper;
import com.android.messaging.util.FileUtil;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@@ -158,8 +159,12 @@ public class ShareIntentActivity extends BaseBugleActivity implements
} }
private void addSharedImagePartToDraft(final String contentType, final Uri imageUri) { private void addSharedImagePartToDraft(final String contentType, final Uri imageUri) {
mDraftMessage.addPart(PendingAttachmentData.createPendingAttachmentData(contentType, if (FileUtil.isInPrivateDir(getBaseContext(), imageUri)) {
imageUri)); Assert.fail("Cannot send private file " + imageUri.toString());
} else {
mDraftMessage.addPart(PendingAttachmentData.createPendingAttachmentData(contentType,
imageUri));
}
} }
@Override @Override
@@ -16,7 +16,10 @@
package com.android.messaging.util; package com.android.messaging.util;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.net.Uri;
import android.text.TextUtils;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import com.android.messaging.Factory; import com.android.messaging.Factory;
@@ -116,6 +119,20 @@ public class FileUtil {
} }
} }
private static boolean isFileUri(final Uri uri) {
return TextUtils.equals(uri.getScheme(), ContentResolver.SCHEME_FILE);
}
// Checks if the file is in /data/data/com.android.messaging
// The other app folders are either symlinks to this, or hold non-private data like binaries.
public static boolean isInPrivateDir(Context context, Uri uri) {
if (!isFileUri(uri)) {
return false;
}
final File file = new File(uri.getPath());
return FileUtil.isSameOrSubDirectory(new File(context.getApplicationInfo().dataDir), file);
}
/** /**
* Checks, whether the child directory is the same as, or a sub-directory of the base * Checks, whether the child directory is the same as, or a sub-directory of the base
* directory. * directory.