com.android.cts.appsecurity.AppSecurityTests#testAppFailAccessPrivateData fail

本文介绍了一个安卓应用安全测试案例的失败情况,该测试检查应用程序是否能够非法访问其他应用的详细流量统计数据。文章提供了测试失败的具体错误信息,并指出该问题在6.0r8版本通过,但在6.0r9版本中失败。文章还提到了修复此问题所需的Google补丁及内核文件修改。

com.android.cts.appsecurity.AppSecurityTests
–testAppFailAccessPrivateData fail

java.lang.AssertionError: on-device tests failed:
com.android.cts.appaccessdata.AccessPrivateDataTest#testAccessPrivateData:
junit.framework.AssertionFailedError: Other apps detailed traffic stats leaked
at junit.framework.Assert.fail(Assert.java:50)
at com.android.cts.appaccessdata.AccessPrivateDataTest.accessPrivateTrafficStats(AccessPrivateDataTest.java:113)
at com.android.cts.appaccessdata.AccessPrivateDataTest.testAccessPrivateData(AccessPrivateDataTest.java:70)

此case在6.0r8pass,在6.0r9fail,需要合入Google Patch:
https://android.googlesource.com/kernel/msm/+/14d533d17af0ab150440d6431414680b36105783%5E%21/#F0
修改:kernel/net/netfilter/xt_qtaguid.c

@@ -2521,7 +2521,7 @@
    uid_t stat_uid = get_uid_from_tag(tag);
    struct proc_print_info *ppi = m->private;
    /* Detailed tags are not available to everybody */
-   if (get_atag_from_tag(tag) && !can_read_other_uid_stats(stat_uid)) {
+   if (!can_read_other_uid_stats(stat_uid)) {
        CT_DEBUG("qtaguid: stats line: "
             "%s 0x%llx %u: insufficient priv "
             "from pid=%u tgid=%u uid=%u stats.gid=%u\n",
@@ -1923,7 +1923,7 @@
            );
        f_count = atomic_long_read(
            &sock_tag_entry->socket->file->f_count);
-       seq_printf(m, "sock=%p tag=0x%llx (uid=%u) pid=%u "
+       seq_printf(m, "sock=%pK tag=0x%llx (uid=%u) pid=%u "
               "f_count=%lu\n",
               sock_tag_entry->sk,
               sock_tag_entry->tag, uid,
由于没有直接关于 `android.appsecurity.cts.ExternalStorageHostTest` 类中 `testCreateRequest_noRESAndMES_showConfirmDialog` 方法的具体引用信息,以下是一般性的推测介绍。 通常,在 AndroidCTS(兼容性测试套件)中,类名带有 `HostTest` 的往往是在测试主机端运行的测试类,用于对设备进行特定功能或安全方面的测试。`testCreateRequest_noRESAndMES_showConfirmDialog` 这个方法名推测其功能可能与外部存储的请求创建相关。 `noRESAndMES` 可能表示在没有某种特定资源(RES)和某种特定权限或状态(MES)的情况下进行测试。而 `showConfirmDialog` 表明该方法可能会弹出一个确认对话框,用于在测试过程中提示用户进行某些操作或者确认某些信息,比如在外部存储请求的测试流程中,可能需要用户确认是否允许某些操作。 例如,在测试外部存储访问请求时,可能会在创建请求且没有满足某些特定条件(noRESAndMES)时,弹出确认对话框询问用户是否继续进行测试或者是否同意某些权限操作。 由于缺乏实际代码,以下是一个简单的伪代码示例,展示这种方法可能的实现形式: ```java import android.app.AlertDialog; import android.content.Context; public class ExternalStorageHostTest { public void testCreateRequest_noRESAndMES_showConfirmDialog(Context context) { // 模拟没有 RES 和 MES 的情况 boolean hasRES = false; boolean hasMES = false; if (!hasRES && !hasMES) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("测试提示") .setMessage("当前没有 RES 和 MES,是否继续测试?") .setPositiveButton("是", (dialog, which) -> { // 继续测试的逻辑 }) .setNegativeButton("否", (dialog, which) -> { // 停止测试的逻辑 }) .show(); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值