android新bug,解析app配置文件时出错

本文分析了一段导致Android应用崩溃的manifest配置代码,并探讨了可能的原因。当使用通配符设置mimeType、host且scheme为空时,会导致系统解析错误,进而引发应用崩溃。


1. 下面这段manifest代码,你可以扔到你的某个activity中去,然后跑一下这个app,看看效果

<intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <data android:mimeType="*/*"/>
                <data android:host="*"/>
                <data android:scheme=""/>
            </intent-filter>

2.分析:

(1)你看到的现象应该是,android framework 停止运行,google+停止运行之类的。

(2)为什么呢?下面是无根据的推敲,尚未有心思看源码,但是经过试验,大概差不多吧。

首先mimeType,host这两个全局匹配,在加上一个scheme=“”,系统解析的时候肯定是没处理好,只要这三个条件并存,必定会解析出错。

出错的入口:通过上面三个data中任一个startActivity都会crash,使用packageManager使用以上任一data作为filter来queryIntent也会崩,实际上就是只要packageManager去读取存在这个filter的包的信息的时候,就会抛出Parcel解析异常,类型是空指针。


有兴趣的猿们可以去看看源码的实现,利用这个bug配合root权限可能会对手机上所有app的正常功能造成影响,所以赶紧给google提bug啊。

BTW,谁扒出了真正原因,麻烦给我分享一下哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值