summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvet Ganov <svetoslavganov@google.com>2015-08-26 00:05:47 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-26 00:05:47 +0000
commitd5ea888701c835d87004cd67eef4b438bac33417 (patch)
treec17549ffd0e3282f78a7068406812a0898689692
parent2f59cdfd0791693ea0b7a45a1bcd8af5d19d151f (diff)
parentc81c8bea0caf5dc5131a1de909aebf43662699ea (diff)
downloadandroid_packages_apps_PackageInstaller-d5ea888701c835d87004cd67eef4b438bac33417.tar.gz
android_packages_apps_PackageInstaller-d5ea888701c835d87004cd67eef4b438bac33417.tar.bz2
android_packages_apps_PackageInstaller-d5ea888701c835d87004cd67eef4b438bac33417.zip
am c81c8bea: am 32226cda: am b9a90048: am 372aad9e: am 0d93cfb9: Protect permission dialog from type jack attacks
* commit 'c81c8bea0caf5dc5131a1de909aebf43662699ea': Protect permission dialog from type jack attacks
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissions.java24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java
index 125a6bd8..d465ee09 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissions.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java
@@ -19,6 +19,9 @@ package com.android.packageinstaller.permission.model;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.text.BidiFormatter;
+import android.text.TextPaint;
+import android.text.TextUtils;
import java.util.ArrayList;
import java.util.Collections;
@@ -26,6 +29,16 @@ import java.util.LinkedHashMap;
import java.util.List;
public final class AppPermissions {
+ private static final float MAX_APP_LABEL_LENGTH_PIXELS = 500;
+
+ private static final TextPaint sAppLabelEllipsizePaint = new TextPaint();
+ static {
+ sAppLabelEllipsizePaint.setAntiAlias(true);
+ // Both text size and width are given in absolute pixels, for consistent truncation
+ // across devices; this value corresponds to the default 14dip size on an xdhpi device.
+ sAppLabelEllipsizePaint.setTextSize(42);
+ }
+
private final ArrayList<AppPermissionGroup> mGroups = new ArrayList<>();
private final LinkedHashMap<String, AppPermissionGroup> mNameToGroupMap = new LinkedHashMap<>();
@@ -47,7 +60,7 @@ public final class AppPermissions {
mContext = context;
mPackageInfo = packageInfo;
mFilterPermissions = permissions;
- mAppLabel = packageInfo.applicationInfo.loadLabel(context.getPackageManager());
+ mAppLabel = loadEllipsizedAppLabel(context, packageInfo);
mSortGroups = sortGroups;
mOnErrorCallback = onErrorCallback;
loadPermissionGroups();
@@ -148,4 +161,13 @@ public final class AppPermissions {
}
return false;
}
+
+ private static CharSequence loadEllipsizedAppLabel(Context context, PackageInfo packageInfo) {
+ String label = packageInfo.applicationInfo.loadLabel(
+ context.getPackageManager()).toString();
+ String noNewLineLabel = label.replace("\n", " ");
+ String ellipsizedLabel = TextUtils.ellipsize(noNewLineLabel, sAppLabelEllipsizePaint,
+ MAX_APP_LABEL_LENGTH_PIXELS, TextUtils.TruncateAt.END).toString();
+ return BidiFormatter.getInstance().unicodeWrap(ellipsizedLabel);
+ }
}