日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bundle/Intent传递序列化参数暗藏杀机

發(fā)布時間:2024/4/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bundle/Intent传递序列化参数暗藏杀机 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前幾天一個朋友跟我說了一個詭異且恐怖的事情,有個人用了幾行代碼就讓他們的app歇菜了。 這勾起了我極大的興趣,于是我親自嘗試了一下。代碼非常簡單,如下: Intent intent = new Intent(); intent.setComponent(new ComponentName("com.test.test", "com.test.test.MainActivity")); intent.putExtra("anykey", new Boom()); startActivity(intent);

其中Boom是一個序列化類(serializable),而且extra的key可以是任何值。

而com.test.test.MainActivity則是另外一個app中允許外部調(diào)起的activity,即MainActivity有一個為android.intent.action.MAIN的action,否則代碼會報錯。 還需要滿足一個條件,MainActivity代碼中有從intent(getIntent或newIntent的參數(shù))取參數(shù)的操作,如 Bundle bundle = intent.getExtras(); if (bundle != null) {int sd = bundle.getInt("key"); }或int sd = intent.getIntExtra("key", -1);

注意,不僅僅是getInt,任何類型的都會出問題,而且key不必與之前的anykey一樣!

崩潰日志如下: E/AndroidRuntime: FATAL EXCEPTION: main ? Process: xxx, PID: 1688 ? java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.example.Boom) ? at android.os.Parcel.readSerializable(Parcel.java:2630) ? at android.os.Parcel.readValue(Parcel.java:2416) ? at android.os.Parcel.readArrayMapInternal(Parcel.java:2732) ? at android.os.BaseBundle.unparcel(BaseBundle.java:271) ? at android.os.BaseBundle.get(BaseBundle.java:364) ? at?com.test.test.MainActivity.onNewIntent(MainActivity.java:128) ? ... ? Caused by: java.lang.ClassNotFoundException: com.example.Boom ? at java.lang.Class.classForName(Native Method) ? at java.lang.Class.forName(Class.java:400) ? at android.os.Parcel$2.resolveClass(Parcel.java:2616) ? at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613) ? at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518) ? at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1772) ? at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351) ? at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) ? at android.os.Parcel.readSerializable(Parcel.java:2624) ? at android.os.Parcel.readValue(Parcel.java:2416) ? at android.os.Parcel.readArrayMapInternal(Parcel.java:2732) ? at android.os.BaseBundle.unparcel(BaseBundle.java:271) ? at android.os.BaseBundle.get(BaseBundle.java:364) ? at?com.test.test.MainActivity.onNewIntent(MainActivity.java:128) ? ... 02-27 17:33:33.799 1688-1688/? E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.Boom" on path: DexPathList[...] ? at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) ? at java.lang.ClassLoader.loadClass(ClassLoader.java:380) ? at java.lang.ClassLoader.loadClass(ClassLoader.java:312) ? ... 27 more 02-27 17:33:33.813 1688-1688/? E/MobclickAgent: onPause called before onResume 可以看到是因為應(yīng)用中沒有Boom這個類,反序列化時找不到,那么既然應(yīng)用中沒有用到anykey,為什么會去做反序列化的操作呢? 查看Intent及Bundle源碼可以發(fā)現(xiàn),那些get函數(shù)最終都會調(diào)用BaseBundle的相應(yīng)的get函數(shù)。 在BaseBundle中不論get函數(shù)還是put函數(shù)中都會先調(diào)用unparcel函數(shù),如: public int getInt(String key, int defaultValue) {unparcel();Object o = mMap.get(key);if (o == null) {return defaultValue;}try {return (Integer) o;} catch (ClassCastException e) {typeWarning(key, o, "Integer", defaultValue, e);return defaultValue;} }public void putString(@Nullable String key, @Nullable String value) {unparcel();mMap.put(key, value); }

unparcel函數(shù)我們后面再說,先看看在這兩種函數(shù)中存取數(shù)據(jù)實際上都是在mMap中做的,這是BaseBundle中一個重要的參數(shù),它存儲著Bundle的數(shù)據(jù)。

那么這個mMap中的數(shù)據(jù)又是哪里來的呢? 下面我們就來看看這個unparcel函數(shù),關(guān)鍵源碼如下: /* package */ synchronized void unparcel() {synchronized (this) {...ArrayMap<String, Object> map = mMap;if (map == null) {map = new ArrayMap<>(N);} else {map.erase();map.ensureCapacity(N);}try {mParcelledData.readArrayMapInternal(map, N, mClassLoader);} catch (BadParcelableException e) {if (sShouldDefuse) {Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e);map.erase();} else {throw e;}} finally {mMap = map;mParcelledData.recycle();mParcelledData = null;}if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))+ " final map: " + mMap);} }

這里面涉及到了Bundle中的兩個重要參數(shù)mMap和mParcelledData,mMap我們上面說過,另外一個mParcelledData則是一個Parcel對象。它是怎么來的呢?

這要從activity的啟動過程來說,參見探索startActivity流程及在Activity間是如何傳遞Intent的。在這篇文章的最后,我們看到在ActivityManagerNative中onTransact函數(shù)中處理binder接收的消息,其中就有這么一行: Bundle options = data.readInt() != 0? Bundle.CREATOR.createFromParcel(data) : null;

這行的作用就是從binder的消息中解析出傳送過來的Bundle數(shù)據(jù),繼續(xù)看來Bundle.CREATOR:

public static final Parcelable.Creator<Bundle> CREATOR =new Parcelable.Creator<Bundle>() {@Overridepublic Bundle createFromParcel(Parcel in) {return in.readBundle();}@Overridepublic Bundle[] newArray(int size) {return new Bundle[size];} };

createFromParcel函數(shù)其實就是調(diào)用來Parcel的readBundle函數(shù),代碼如下:

public final Bundle readBundle() {return readBundle(null); }public final Bundle readBundle(ClassLoader loader) {int length = readInt();...final Bundle bundle = new Bundle(this, length);...return bundle; }

通過Bundle的構(gòu)造函數(shù)來新建了一個對象,這個構(gòu)造函數(shù)則調(diào)用了父類BaseBundle對應(yīng)的構(gòu)造函數(shù)如下:

BaseBundle(Parcel parcelledData, int length) {readFromParcelInner(parcelledData, length); }private void readFromParcelInner(Parcel parcel, int length) {...Parcel p = Parcel.obtain();p.setDataPosition(0);p.appendFrom(parcel, offset, length);if (DEBUG) Log.d(TAG, "Retrieving "? + Integer.toHexString(System.identityHashCode(this))+ ": " + length + " bundle bytes starting at " + offset);p.setDataPosition(0);mParcelledData = p; }

這樣我們就在readFromParcelInner函數(shù)中找到了mParcelledData的來源,它實際上就是傳送過來的Bundle序列化后的數(shù)據(jù)。

那么就有了另外一個疑問,既然傳送過來的只有mParcelledData,那么mMap中其實是空的,那么get函數(shù)怎么取到值的? 這就是為什么每個get和put函數(shù)都先調(diào)用unparcel函數(shù)的原因。繼續(xù)觀察上面的unparcel函數(shù),我們發(fā)現(xiàn)“mParcelledData.readArrayMapInternal(map, N, mClassLoader);”這句代碼,調(diào)用了Parcel的readArrayMapInternal函數(shù),并且傳入了map,這個map后面會賦值給mMap,所以實際上兩者是一致的。函數(shù)的源碼如下: /* package */ void readArrayMapInternal(ArrayMap outVal, int N,ClassLoader loader) {if (DEBUG_ARRAY_MAP) {RuntimeException here =? new RuntimeException("here");here.fillInStackTrace();Log.d(TAG, "Reading " + N + " ArrayMap entries", here);}int startPos;while (N > 0) {if (DEBUG_ARRAY_MAP) startPos = dataPosition();String key = readString();Object value = readValue(loader);if (DEBUG_ARRAY_MAP) Log.d(TAG, "? Read #" + (N-1) + " "+ (dataPosition()-startPos) + " bytes: key=0x"+ Integer.toHexString((key != null ? key.hashCode() : 0)) + " " + key);outVal.append(key, value);N--;}outVal.validate(); }

在這個函數(shù)里就可以比較明顯的看出來,從Parcel中分別讀取出key和value,然后put進(jìn)map中。這樣就解決了之前的疑惑,unparcel函數(shù)的作用實際上是預(yù)處理,提前將序列化的數(shù)據(jù)反序列化并放入mMap中,然后Bundle再從mMap中存取數(shù)據(jù)。

我們越來越接近真相了!讀取value用的是readValue函數(shù),代碼如下: public final Object readValue(ClassLoader loader) {int type = readInt();switch (type) {case VAL_NULL:return null;case VAL_STRING:return readString();case VAL_INTEGER:return readInt();...case VAL_SERIALIZABLE:return readSerializable(loader);...default:int off = dataPosition() - 4;throw new RuntimeException("Parcel " + this + ": Unmarshalling unknown type code " + type + " at offset " + off);} }

根據(jù)不同的類型調(diào)用不同的函數(shù)來獲得value,這里我們只關(guān)注Serializable這個類型,readSerializable代碼如下:

private final Serializable readSerializable(final ClassLoader loader) {String name = readString();...try {ObjectInputStream ois = new ObjectInputStream(bais) {@Overrideprotected Class<?> resolveClass(ObjectStreamClass osClass)throws IOException, ClassNotFoundException {if (loader != null) {Class<?> c = Class.forName(osClass.getName(), false, loader);if (c != null) {return c;}}return super.resolveClass(osClass);}};return (Serializable) ois.readObject();} catch (IOException ioe) {throw new RuntimeException("Parcelable encountered " +"IOException reading a Serializable object (name = " + name +")", ioe);} catch (ClassNotFoundException cnfe) {throw new RuntimeException("Parcelable encountered " +"ClassNotFoundException reading a Serializable object (name = "+ name + ")", cnfe);} }

我們終于找到了最開始的崩潰錯誤的源頭,在這里反序列化時需要根據(jù)類名去找到Class對象,這時就出問題了,因為通過上面我們知道,unparcel函數(shù)預(yù)處理時會將mParcelledData中所有的數(shù)據(jù)都解析出來,這時當(dāng)解析到最開始的Boom類時,由于在本App中并不存在這個類,所以無法找到這個類,這樣就出問題了。這樣也解釋了為什么任意key都會出問題。


上面我們只說到了序列化的一種:serializable,我們知道在Android中還有另外一種推薦的序列化:Parcelable。 至于這兩種序列化的差別,請參考:Android中Intent/Bundle的通信原理及大小限制(Parcelable原理及與Serializable的區(qū)別) 那么Parcelable會出現(xiàn)這種crash么,經(jīng)測試也會出現(xiàn)這樣的問題,但是報出的錯誤是不同的: E/AndroidRuntime:?FATAL EXCEPTION: main ? ? java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.test/com.test.test.MainActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.Boom ? at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) ? at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2431) ? ... ? Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.bennu.testapp.Boom ? at android.os.Parcel.readParcelableCreator(Parcel.java:2295) ? at android.os.Parcel.readParcelable(Parcel.java:2245) ? at android.os.Parcel.readValue(Parcel.java:2152) ? at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) ? at android.os.BaseBundle.unparcel(BaseBundle.java:221) ? at android.os.BaseBundle.get(BaseBundle.java:280) ? at?com.test.test.MainActivity.onCreate(MainActivity.java:142) ? ... 情況其實與serializable差不多,差別在readValue函數(shù)這一步調(diào)用了另外一個函數(shù)readParcelable,源碼如下: public final <T extends Parcelable> T readParcelable(ClassLoader loader) {Parcelable.Creator<?> creator = readParcelableCreator(loader);if (creator == null) {return null;}if (creator instanceof Parcelable.ClassLoaderCreator<?>) {Parcelable.ClassLoaderCreator<?> classLoaderCreator =(Parcelable.ClassLoaderCreator<?>) creator;return (T) classLoaderCreator.createFromParcel(this, loader);}return (T) creator.createFromParcel(this); }/** @hide */ public final Parcelable.Creator<?> readParcelableCreator(ClassLoader loader) {String name = readString();if (name == null) {return null;}Parcelable.Creator<?> creator;synchronized (mCreators) {HashMap<String,Parcelable.Creator<?>> map = mCreators.get(loader);if (map == null) {map = new HashMap<>();mCreators.put(loader, map);}creator = map.get(name);if (creator == null) {try {ClassLoader parcelableClassLoader =(loader == null ? getClass().getClassLoader() : loader);Class<?> parcelableClass = Class.forName(name, false /* initialize */,parcelableClassLoader);if (!Parcelable.class.isAssignableFrom(parcelableClass)) {throw new BadParcelableException("Parcelable protocol requires that the "+ "class implements Parcelable");}Field f = parcelableClass.getField("CREATOR");if ((f.getModifiers() & Modifier.STATIC) == 0) {throw new BadParcelableException("Parcelable protocol requires "+ "the CREATOR object to be static on class " + name);}Class<?> creatorType = f.getType();if (!Parcelable.Creator.class.isAssignableFrom(creatorType)) {throw new BadParcelableException("Parcelable protocol requires a "+ "Parcelable.Creator object called "+ "CREATOR on class " + name);}creator = (Parcelable.Creator<?>) f.get(null);}catch (IllegalAccessException e) {Log.e(TAG, "Illegal access when unmarshalling: " + name, e);throw new BadParcelableException("IllegalAccessException when unmarshalling: " + name);}catch (ClassNotFoundException e) {Log.e(TAG, "Class not found when unmarshalling: " + name, e);throw new BadParcelableException("ClassNotFoundException when unmarshalling: " + name);}catch (NoSuchFieldException e) {throw new BadParcelableException("Parcelable protocol requires a "+ "Parcelable.Creator object called "+ "CREATOR on class " + name);}if (creator == null) {throw new BadParcelableException("Parcelable protocol requires a "+ "non-null Parcelable.Creator object called "+ "CREATOR on class " + name);}map.put(name, creator);}}return creator; }

在readParcelable函數(shù)中調(diào)用readParcelableCreator函數(shù)來解析數(shù)據(jù),在這個函數(shù)中就可以看到同樣需要查找class來反序列化,而不同的是對Expection沒有直接拋出,而是包裝成BadParcelableException拋出的,這也是為什么crash信息有區(qū)別。

你以為這樣就結(jié)束了?還沒有! 讓我們回到之前的unparcel函數(shù),看看最后部分的代碼: /* package */ synchronized void unparcel() {synchronized (this) {...try {mParcelledData.readArrayMapInternal(map, N, mClassLoader);} catch (BadParcelableException e) {if (sShouldDefuse) {Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e);map.erase();} else {throw e;}} finally {mMap = map;mParcelledData.recycle();mParcelledData = null;}if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))+ " final map: " + mMap);} }

可以看到mParcelledData.readArrayMapInternal是在一個try-catch中的,而是catch部分又catch了BadParcelableException,這里就有了一個小彩蛋:當(dāng)sShouldDefuse為true時,這個錯誤就被吞掉了,而為false時繼續(xù)拋出。

那么這個sShouldDefuse的值怎么來的? 在BaseBundle中sShouldDefuse默認(rèn)是false,但是有一個函數(shù)可以設(shè)值,如下: /** * Set global variable indicating that any Bundles parsed in this process * should be "defused." That is, any {@link BadParcelableException} * encountered will be suppressed and logged, leaving an empty Bundle * instead of crashing. * * @hide */ public static void setShouldDefuse(boolean shouldDefuse) {sShouldDefuse = shouldDefuse; }

這個函數(shù)是static的,但是是隱藏的,所以我們不能直接使用。通過這個函數(shù)的注釋我們可以知道,當(dāng)設(shè)為true的時候,會吞掉所有BadParcelableException錯誤,這時會返回一個空的Bundle代替crash。

根據(jù)網(wǎng)上相關(guān)android framwork層源碼來看,高版本的android系統(tǒng)中默認(rèn)將其設(shè)置為true,應(yīng)該是google做的一步優(yōu)化。具體那個版本開始的還有待調(diào)查。
經(jīng)過測試發(fā)現(xiàn),不論serializable還是Parcelable在部分華為手機(jī)上并不會crash,估計是華為系統(tǒng)對此進(jìn)行了優(yōu)化,將問題直接吞掉了。 serializable的情況,android各個版本(8.0未測試)都還存在這個問題。 Parcelable則像上面說的,高版本已經(jīng)處理了,具體那個版本還需要調(diào)查一下。 目前想到的解決方法是,在對外的Activity中如果獲取bundle數(shù)據(jù),try-catch一下。

?

總結(jié)

以上是生活随笔為你收集整理的Bundle/Intent传递序列化参数暗藏杀机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

97精品免费视频 | 精品一区二区影视 | 在线观看视频亚洲 | 久草综合视频 | 精品福利网站 | 成年人在线视频观看 | www.香蕉视频 | 亚洲欧美日韩国产一区二区 | 亚洲精品综合在线 | 欧美色图30p| 精品久久久久国产免费第一页 | 成年人免费在线观看网站 | 日产乱码一二三区别免费 | 成av在线 | 久久五月天综合 | 国产一级电影在线 | 免费在线观看亚洲视频 | 成人国产精品免费 | 狠狠色丁香婷婷综合久小说久 | 麻豆视频在线免费 | 四虎影视精品永久在线观看 | 丁香激情网 | 精品国产电影 | 国产二区免费视频 | 一区二区三区www | 婷婷精品国产欧美精品亚洲人人爽 | 色99之美女主播在线视频 | 久久一区二 | 国产韩国精品一区二区三区 | 中文av影院 | 蜜臀精品久久久久久蜜臀 | 欧洲精品二区 | 国产精品9999久久久久仙踪林 | 天天操天天添天天吹 | 九九热.com | 日韩r级电影在线观看 | 99久久精品国产亚洲 | 一级片在线 | 在线观看免费视频你懂的 | 亚洲狠狠婷婷 | 五月婷婷欧美 | 一区中文字幕电影 | 日韩精品一区二区三区丰满 | 久久首页| 日韩两性视频 | 日本精品视频一区二区 | 欧美日韩在线视频免费 | 亚洲人天堂 | 亚洲精品国精品久久99热一 | 欧美成人精品三级在线观看播放 | 综合久久网站 | 亚洲另类交 | 国产一区在线视频观看 | 国产自产高清不卡 | 日韩欧美高清视频在线观看 | 在线观看国产亚洲 | 99视频国产精品免费观看 | 深爱激情站 | 五月天中文字幕 | 国产精品久久久久毛片大屁完整版 | 婷婷六月在线 | 国产第页 | 91av国产视频 | 中文字幕在线色 | 丰满少妇在线 | 在线观看免费视频 | 精品你懂的 | 久久成| 天天色天天射综合网 | 97在线观 | 美女黄频网站 | 午夜影视一区 | 亚洲资源在线观看 | 久色免费视频 | 久艹视频在线免费观看 | 成人av网页 | 国产97视频 | 欧美电影黄色 | 日韩av影视在线 | 人人干干人人 | av电影不卡在线 | 亚洲精品国产精品国 | 97狠狠操| 韩国av电影网 | 国产在线视频资源 | 91视频91自拍 | 在线观看视频97 | av黄色在线观看 | 久久久久这里只有精品 | 特级毛片网| 在线最新av | 色婷婷激情四射 | 中文字幕亚洲精品在线观看 | 日韩高清在线一区二区三区 | 伊人久久一区 | h视频在线看 | 国产精品久久久久久久久久三级 | 欧洲精品久久久久毛片完整版 | 免费观看成人 | 在线影视 一区 二区 三区 | 欧美日韩视频在线观看免费 | 激情视频区 | 日女人电影 | 9999毛片 | 五月天综合网站 | 欧美日韩高清在线一区 | 日韩中文三级 | 97成人资源 | 色婷婷一区 | 亚洲在线免费视频 | 亚洲成人av片在线观看 | 噜噜色官网 | 天天操狠狠操网站 | 少妇精品久久久一区二区免费 | 激情婷婷色 | 国产精品麻豆91 | 国语麻豆 | a久久免费视频 | 豆豆色资源网xfplay | 午夜在线资源 | 欧美日韩在线精品一区二区 | 日韩 精品 一区 国产 麻豆 | av888.com| 在线观看免费国产小视频 | 国产日韩欧美在线看 | 久久国产精品视频 | 激情综合五月婷婷 | 欧美日韩精品综合 | 亚洲激情p| 成人黄色av免费在线观看 | 亚洲手机天堂 | 超碰日韩 | 91在线资源| 成人影视免费看 | 日本午夜在线观看 | 成人免费在线看片 | 爱射综合 | 久久综合九色 | 久久久久伦理电影 | 久久草精品 | 国产精品国产三级国产aⅴ入口 | 欧美日韩中文国产一区发布 | 亚洲精品www久久久 www国产精品com | 五月婷网站| a午夜电影 | 国产精品mv | 国产在线a免费观看 | 亚洲狠狠操 | 成人午夜精品久久久久久久3d | 69av国产| 久久在线| 特级a老妇做爰全过程 | 九九电影在线 | 四虎成人精品永久免费av九九 | 中文字幕在线国产 | 狠狠色综合网站久久久久久久 | 日韩一区视频在线 | 婷婷网在线 | 国产亚洲精品美女久久 | 国产欧美在线一区二区三区 | 国产精品资源在线观看 | av黄在线播放 | 国产精品自在线 | 国产亚洲婷婷 | 日韩中文字幕在线 | 久久艹精品 | 成人av在线资源 | 久久在线免费视频 | 日韩欧美高清在线观看 | 午夜精选视频 | 91看片淫黄大片一级在线观看 | 久久久久久久久久久久久国产精品 | 亚洲黄色av网址 | 婷婷六月网 | 中文在线字幕观看电影 | 日韩在线视频网站 | 国产一区二区三精品久久久无广告 | 成人网页在线免费观看 | 日韩视频 一区 | av日韩不卡 | 99自拍视频在线观看 | 免费的国产精品 | 狠狠网站 | 视频在线一区二区三区 | 91国内产香蕉| 91探花在线视频 | 亚洲永久精品国产 | 国产三级在线播放 | 一区二区精品在线观看 | 中国老女人日b | 久久精品亚洲一区二区三区观看模式 | 2024国产精品视频 | 亚洲免费成人 | 超碰在线9 | 免费www视频 | 视频直播国产精品 | 一二区精品 | 中文字幕日韩电影 | 日韩精品欧美一区 | 久久免费国产电影 | 久草视频在线免费看 | 8x成人免费视频 | 黄色大片国产 | 日韩字幕在线 | 日韩字幕 | 欧美日韩3p | 中文字幕av免费 | 国产一区二区三区高清播放 | 最新精品视频在线 | 丝袜一区在线 | 久久精品中文字幕少妇 | 日韩欧美一区二区三区在线观看 | 韩日精品在线 | 免费观看一级一片 | 中文字幕人成乱码在线观看 | 国产麻豆精品免费视频 | 天天透天天插 | 中文字幕在线免费 | 国产高清日韩欧美 | 国产 中文 日韩 欧美 | av免费网页| 欧美不卡视频在线 | 激情综合电影网 | 日韩精品一区二区在线视频 | 久久综合网色—综合色88 | 五月婷婷六月丁香激情 | 黄色电影在线免费观看 | 操久久免费视频 | 久久国产视频网 | 日韩一区正在播放 | 天天狠狠| 久久69av| 2019免费中文字幕 | 午夜精选视频 | 国产网红在线观看 | 在线免费观看国产精品 | 婷婷丁香在线视频 | 亚洲视频资源在线 | 狠狠色噜噜狠狠狠合久 | 国产免费亚洲高清 | 久久久这里有精品 | 国产精品久久久久久久久免费看 | 婷婷综合 | 嫩嫩影院理论片 | 欧美网址在线观看 | 黄污在线观看 | 久久在线 | 五月天综合激情网 | 四虎小视频 | 国产九九九精品视频 | 日韩精品一区二区三区在线播放 | 国产精品成人免费一区久久羞羞 | 婷婷久久久| 天天操天天舔天天干 | 在线色亚洲 | 97香蕉久久超级碰碰高清版 | 久久亚洲人 | 国产成人精品999在线观看 | 久久精品一二区 | 精品久久久久国产 | av片子在线观看 | 人人涩| 激情图片久久 | www.五月天婷婷 | 国产99久久久国产精品免费二区 | 天天干天天做 | 青青河边草免费观看完整版高清 | 中文字幕中文字幕在线中文字幕三区 | 国产精品国内免费一区二区三区 | 欧美日韩高清 | 韩国av一区二区三区 | 91夫妻视频 | 黄色福利网站 | 国产精品毛片久久久 | 成年人看片网站 | 99在线精品视频 | 国产伦精品一区二区三区四区视频 | 日本久久久久久久久久久 | 国产精品成人一区 | 波多野结衣在线观看一区二区三区 | 午夜视频亚洲 | 国产福利小视频在线 | 99精品一区二区 | 在线视频1卡二卡三卡 | 中文字幕一区二区三区乱码不卡 | 免费看黄色毛片 | 91色偷偷| 麻豆影视网站 | 精品中文字幕在线观看 | 久久电影国产免费久久电影 | h视频在线看 | 一区二区激情 | 久草在线视频免费资源观看 | 国产一性一爱一乱一交 | 九九热视频在线免费观看 | 久久精品免费电影 | 国产午夜麻豆影院在线观看 | 国产亚州精品视频 | 久久国产精品久久精品 | 伊人狠狠干 | 不卡视频一区二区三区 | 香蕉国产91| 九九亚洲视频 | 久久综合影音 | 超碰免费久久 | 精品久久久精品 | 精品久久1 | 国产精品成人免费精品自在线观看 | 在线 视频 一区二区 | 日韩三级视频在线观看 | 国内一级片在线观看 | 色婷婷狠狠五月综合天色拍 | 亚洲国产福利视频 | 日韩a在线播放 | 在线a人v观看视频 | www色综合| 久久久www成人免费精品 | 午夜aaaa| 成人免费视频在线观看 | 亚洲a网 | 911久久| 国产在线精品视频 | 国产欧美精品一区二区三区 | 岛国片在线 | 国产精品久久久一区二区三区网站 | 免费影视大全推荐 | 久久久久久久久久久黄色 | 波多野结衣电影一区二区三区 | 91九色国产 | 日日爱999| 亚洲精品资源在线 | 日韩中文字幕亚洲一区二区va在线 | 99视频一区 | 又大又硬又黄又爽视频在线观看 | 91 在线视频播放 | 欧美色婷| 男女视频91 | 久久综合欧美精品亚洲一区 | 久久久国产精品网站 | 久久久久伊人 | 97免费视频在线播放 | 久草免费在线 | 九九九热精品免费视频观看网站 | 国产精品igao视频网网址 | 在线亚洲小视频 | 黄色1级毛片 | 国内精品在线看 | 中文字幕日韩av | 久久久久日本精品一区二区三区 | 国产美女无遮挡永久免费 | 日韩一区二区免费在线观看 | 免费看成年人 | 欧美日韩中文字幕在线视频 | 亚洲另类视频在线 | 亚洲涩涩色 | 日韩欧美国产激情在线播放 | 亚洲欧美日韩在线一区二区 | 国产精品男女 | 国产精品露脸在线 | 在线一二三区 | 国产成人精品免高潮在线观看 | 日韩啪啪小视频 | 免费在线观看av的网站 | 午夜av一区 | 久草在线官网 | 玖玖在线观看视频 | 国产精品免费在线观看视频 | 久久毛片高清国产 | 免费在线观看日韩视频 | 91丨精品丨蝌蚪丨白丝jk | 亚洲午夜久久久综合37日本 | 99精品国产一区二区三区麻豆 | 日韩,精品电影 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲最大在线视频 | 日韩欧美在线综合网 | 少妇视频一区 | 日日爱夜夜爱 | 狂野欧美激情性xxxx | 国产成人精品一区二区 | 欧美一区二区三区在线观看 | 免费黄色网址网站 | 天天做日日做天天爽视频免费 | 午夜骚影 | 国产午夜精品一区二区三区嫩草 | 开心激情五月网 | 91成人网页版 | 国产高清视频免费在线观看 | 久久欧美综合 | 国产精品久久久999 国产91九色视频 | 日韩精品欧美专区 | 最近免费中文字幕mv在线视频3 | 欧美韩日在线 | 免费观看成人av | 欧美黑人巨大xxxxx | 日韩女同av | 久久99中文字幕 | 草免费视频 | 亚洲 成人 欧美 | 五月天,com | 成人av在线一区二区 | 99c视频高清免费观看 | 日韩欧美在线视频一区二区 | 国产精品久久久久久69 | 久久精品久久久精品美女 | 欧美日韩一区二区久久 | 国产高清视频在线 | 免费看网站在线 | 日日夜夜亚洲 | 一区二区三区四区精品 | 亚洲视频第一页 | 国产黄色精品网站 | 国产精品入口66mio女同 | 九九欧美视频 | 日日操日日 | 999久久国精品免费观看网站 | 免费国产亚洲视频 | 亚洲午夜久久久久久久久电影网 | 国产伦理精品一区二区 | 国产精品乱码高清在线看 | 日韩一区精品 | 天天天天爱天天躁 | 美女久久一区 | 99精品区 | 精品久久一区二区三区 | 日韩美女av在线 | 国产精品嫩草在线 | 亚洲一二三久久 | 不卡精品 | 99热最新精品 | 久久电影网站中文字幕 | 日本在线中文 | 国产精品美女久久久久久 | 婷婷丁香国产 | 国产又粗又猛又黄视频 | 国产精品日韩久久久久 | 精品国产综合区久久久久久 | 久久不见久久见免费影院 | 国产999精品久久久 免费a网站 | 国产精品乱码在线 | 在线成人一区 | 日韩爱爱网站 | 视频91 | 99精品视频播放 | 国产精品人人做人人爽人人添 | 久久99国产综合精品 | 天天插天天狠 | 国产精品久久久久久69 | 四虎国产精品成人免费影视 | 在线观看亚洲精品 | 操夜夜操| 青青河边草观看完整版高清 | 精品国产一区二区三区日日嗨 | 99亚洲精品视频 | 一区二区久久久久 | 麻豆视频国产精品 | av网站免费看 | 视频直播国产精品 | 黄色亚洲大片免费在线观看 | 午夜久久久影院 | 欧美日韩精品在线免费观看 | 欧美999 | 国产亚洲成av人片在线观看桃 | 五月婷婷六月综合 | 69精品久久 | 美女久久99 | 最近2019年日本中文免费字幕 | 黄色在线免费观看网址 | 97成人免费视频 | 91在线免费播放视频 | 天天色影院 | 黄色一级免费网站 | 国产伦理一区二区三区 | a黄色大片 | 天天操夜夜看 | 狠狠干夜夜爱 | 欧美午夜激情网 | 精品国产欧美一区二区 | 天天色图 | 天天爽天天爽 | 国产女人18毛片水真多18精品 | 国产一级黄色免费看 | 成人黄色电影在线播放 | 久久久一本精品99久久精品 | 色免费在线 | 国产精品久久免费看 | 亚洲日韩中文字幕 | 中文字幕免费高清 | 激情丁香 | 免费三级黄 | 欧美日韩18 | a级成人毛片 | 黄色在线观看免费网站 | 久久免费视频在线观看30 | 天天干,夜夜操 | 午夜久久网站 | 国产精品久久久久久久免费观看 | 久久综合九色综合欧美就去吻 | 国产一级片播放 | 亚洲天堂网在线观看视频 | 日日操天天射 | 免费在线中文字幕 | 色视频网站在线观看一=区 a视频免费在线观看 | 99热这里只有精品1 av中文字幕日韩 | 国产精选在线观看 | 免费av大片 | 成人动漫精品一区二区 | 国产一区二区三区在线免费观看 | 黄色aaaaa| 亚洲视频电影在线 | 精品国产乱码久久久久久天美 | 丁香五月亚洲综合在线 | 丁香激情五月婷婷 | 色综合久久久久综合 | 69xxxx欧美 | 国产视频日本 | www黄色软件 | 久久天天躁| 国产精品久久久久久999 | 在线亚洲人成电影网站色www | 成人黄色小说在线观看 | 中字幕视频在线永久在线观看免费 | 深爱五月网 | 色小说av | 日本精品在线看 | 高清视频一区 | 亚洲精品视频在线看 | 日本mv大片欧洲mv大片 | 国产午夜精品福利视频 | 91精品在线观看视频 | 亚州av成人 | 99久久电影 | 久久视频在线观看 | 日韩在线视频播放 | 欧美激情精品久久 | 久久精品美女 | 五月开心网 | 国产精品自产拍在线观看网站 | 午夜免费福利视频 | 精品国精品自拍自在线 | 国产特级毛片aaaaaa毛片 | 超碰国产在线播放 | 色多多视频在线 | av中文字幕网站 | 免费欧美高清视频 | 亚洲午夜久久久久久久久 | 亚洲v精品| 韩国av一区二区 | av三级av| 国产精品自产拍在线观看蜜 | 日韩在线观看中文 | 天天操天天艹 | 国产资源精品 | 欧美日韩在线第一页 | 久久99久久99精品免观看软件 | 久久优 | 伊人黄色网 | 久久草在线视频国产 | 亚洲人人爱 | 九九精品视频在线观看 | 国内精自线一二区永久 | av日韩不卡| 欧美久久久久久久久久久 | 四虎成人精品在永久免费 | 亚洲精品久久激情国产片 | 99色免费视频 | 国产福利a | 91视频成人免费 | 黄色视屏免费在线观看 | 亚洲精品中文字幕在线 | 国内小视频 | 精品一区二区在线免费观看 | 日韩精品中文字幕久久臀 | jizz999 | 久久午夜国产精品 | 在线一二区 | 国产中文字幕网 | 91在线看视频 | 国产精品系列在线观看 | 欧美日本不卡视频 | 97人人模人人爽人人喊网 | 狠狠狠色丁香婷婷综合久久88 | 又湿又紧又大又爽a视频国产 | 夜夜爱av | 久色婷婷 | 天天爱天天射 | 最新av电影网站 | 精壮的侍卫呻吟h | 亚洲精品国产日韩 | 中文字幕 国产视频 | 免费色视频 | 欧美视频网址 | 国产精品日韩在线观看 | 久久久久久久久久网站 | 成人在线网站观看 | 欧美日韩在线精品一区二区 | 欧美少妇xxx | 综合精品久久 | 91在线成人 | av免费看网站 | 操高跟美女 | 日韩欧美99 | 精品亚洲欧美一区 | 成人黄在线观看 | 九九久久国产 | 久久国产精品久久w女人spa | 激情久久久久久久久久久久久久久久 | 久久久久久在线观看 | 不卡中文字幕av | 久久久久伦理电影 | 国产成人一区二区三区影院在线 | 国产91学生粉嫩喷水 | 免费日韩一区 | 天天躁日日躁狠狠躁 | 精品久久久久久亚洲综合网 | 日日操夜夜操狠狠操 | 国产精品v欧美精品v日韩 | 日韩精品免费一区二区 | 久草在线在线精品观看 | 婷婷激情在线观看 | 午夜视频在线观看网站 | 国产美女精品视频 | 黄色www在线观看 | 97视频在线看| 91成人免费视频 | 黄av免费| 国产精品视频永久免费播放 | 最近日本韩国中文字幕 | 精品在线视频观看 | 在线观看中文字幕第一页 | 97av色| 日产乱码一二三区别免费 | 五月天亚洲综合小说网 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 岛国大片免费视频 | 国产一区网 | 97成人在线视频 | 午夜av电影 | 天天射天天干天天爽 | av电影在线不卡 | 在线观看国产日韩 | 久久久久久毛片 | 亚洲一区二区视频在线播放 | 奇米7777狠狠狠琪琪视频 | 日韩视频中文 | 96视频在线 | 免费色网站 | 91九色视频在线观看 | 成人免费91 | 超碰成人网 | 天天干,狠狠干 | 不卡视频国产 | www.com.黄| 麻豆国产精品va在线观看不卡 | 免费男女羞羞的视频网站中文字幕 | 久久黄网站 | 91九色免费视频 | 探花视频在线观看免费 | 五月婷在线播放 | 在线欧美最极品的av | 国内99视频 | 精品国产免费观看 | 国产在线综合视频 | 91网在线看 | 久久久国产电影 | 国产日韩精品久久 | 日韩在线观看 | 欧美性久久久久久 | 日韩精品一区二 | 国产99久久九九精品免费 | 青青河边草免费直播 | 久久久久影视 | 免费av在线 | 99久久久国产精品 | 久久999精品 | 亚洲视频中文 | 午夜少妇一区二区三区 | 亚洲最大av网 | 一区三区视频在线观看 | 99久久99久久精品免费 | 91插插插网站 | 国产破处视频在线播放 | 精品国产伦一区二区三区观看方式 | 成人黄色在线 | 在线观看91视频 | 51久久成人国产精品麻豆 | 日韩v在线91成人自拍 | 国产高清在线一区 | 国产日韩精品一区二区 | 91久久精 | 国产精品久久久久久电影 | 激情www | 欧洲在线免费视频 | 精品久久一区二区 | www久久国产| 欧美精品一区二区蜜臀亚洲 | 国产一二区免费视频 | 99久久精品免费看国产一区二区三区 | 日韩在线视频精品 | 探花视频在线观看免费 | 国产黄a三级三级三级三级三级 | 青青河边草免费直播 | 在线免费观看涩涩 | 天天操网址 | 一二区av | 九色精品免费永久在线 | 欧美成人精品在线 | 日韩一区二区三区免费电影 | 久久综合久久久久88 | 日本一区二区免费在线观看 | 精品国产欧美一区二区 | 国产黄色视 | 国产精品久久久久久久久久新婚 | 国产成人不卡 | 人人要人人澡人人爽人人dvd | 四虎影视www | 国产精品av电影 | 久久久久久欧美二区电影网 | av蜜桃在线 | 色综合天天综合 | 国产一级精品在线观看 | 国产精品黄色影片导航在线观看 | 亚洲免费不卡 | 夜夜骑首页 | 欧美日bb | 亚洲无吗视频在线 | 在线亚洲免费视频 | 激情网站五月天 | 欧美国产三区 | 中文字幕在线免费97 | av千婊在线免费观看 | 精品一区二三区 | 欧美国产精品一区二区 | 精品国产一区二区三区久久久 | 91最新中文字幕 | 久久视频一区 | avwww在线观看| 日韩v在线 | 婷婷综合五月天 | 国产又粗又猛又爽又黄的视频免费 | 欧美成天堂网地址 | 最近中文字幕高清字幕免费mv | 婷婷视频 | 一区二区三区在线免费 | www五月| 国产精品视频资源 | 麻花传媒mv免费观看 | 国产精品手机在线观看 | 久久久久五月 | 日本中文字幕在线 | 国产1区2区 | 99色免费视频 | 精品999在线 | 最近中文字幕视频网 | 中文字幕亚洲情99在线 | 欧美日韩一区二区三区不卡 | 又大又硬又黄又爽视频在线观看 | 亚洲码国产日韩欧美高潮在线播放 | 992tv在线观看 | 天天综合导航 | 久久在线免费观看 | 亚洲成aⅴ人在线观看 | 91精品国产91p65 | 色婷婷六月天 | 青青河边草免费观看完整版高清 | 日本中文不卡 | 视频国产一区二区三区 | 国产精品一级视频 | 亚洲精品午夜视频 | 亚洲精品女| 999成人| 国产成人一区二区三区影院在线 | 国产欧美精品在线观看 | 国产在线观看黄 | 91在线精品一区二区 | 五月天久久久久久 | 成人18视频 | 欧美91精品久久久久国产性生爱 | 麻花豆传媒mv在线观看 | 999久久久免费视频 午夜国产在线观看 | 日日夜夜操av | 国产在线最新 | 欧美日韩另类视频 | 中文字幕在线乱 | www.玖玖玖 | av视屏在线播放 | 四虎在线永久免费观看 | 国产91九色蝌蚪 | 丁香激情五月婷婷 | 国产精品九九久久99视频 | 最近中文字幕在线播放 | 国产 精品 资源 | 97色视频在线 | 亚洲成人av一区二区 | 免费三级黄 | 岛国大片免费视频 | 色综合夜色一区 | av 一区 二区 久久 | 97视频在线观看视频免费视频 | 亚洲成人av一区 | 91精品999 | 麻豆国产网站 | 成人91视频 | 国产不卡网站 | 五月婷婷毛片 | 九九久久久 | 日韩三级.com | 狠狠的操你 | av中文字幕网站 | 久久久午夜剧场 | 免费电影播放 | av 一区 二区 久久 | 一色屋精品视频在线观看 | 超碰人人草| 一区二区国产精品 | 五月亚洲 | 色综合久久天天 | 一区二区精品在线视频 | 日韩黄色一级电影 | 国产欧美精品xxxx另类 | 探花视频免费观看高清视频 | 亚州欧美精品 | 激情婷婷在线 | www.久久视频| 婷婷色视频 | 欧美日韩国产精品久久 | 91成人精品观看 | 国产视频不卡一区 | 国产视频精品在线 | 久草视频在线看 | 西西大胆免费视频 | 久久男人影院 | 1024手机在线看 | 在线观看日本韩国电影 | 国产精品免费久久久久久 | h视频在线看 | 亚洲精品玖玖玖av在线看 | 久久看视频 | 夜夜躁狠狠躁日日躁视频黑人 | 在线精品视频在线观看高清 | 91av免费看| 99精品影视| 91精品视频在线看 | 亚洲精品视频网址 | 深爱激情五月综合 | 色综合狠狠干 | 国产高清专区 | 日韩小视频 | 中文字幕一区二区三区四区久久 | 99re国产 | 亚洲激情综合网 | 一二区av | 亚洲最新在线 | 色综合天天视频在线观看 | 久久婷婷色 | 麻花豆传媒一二三产区 | а天堂中文最新一区二区三区 | 国产精品密入口果冻 | 婷婷激情站 | 五月婷婷在线观看视频 | 首页国产精品 | 中文字幕大全 | 国产成人精品一区二区 | 久久久久久久久精 | 久久精品99久久久久久 | 国产婷婷久久 | 日本黄色免费播放 | 激情 婷婷| 亚洲女欲精品久久久久久久18 | 亚洲精品高清视频在线观看 | 99视频在线播放 | 日韩av在线资源 | 国色综合 | 久久免费电影 | 91看片在线看片 | 五月婷婷丁香激情 | 国产综合小视频 | 久久久久一区二区三区 | 国产黄免费在线观看 | 久久avav | 国产不卡在线视频 | 三级在线视频播放 | 成人久久毛片 | 操操操av| 97人人视频| 一级理论片在线观看 | 欧美国产一区二区 | 国产成人精品av | 亚洲国产精品va在线 | 午夜影院一级片 | 久久久久久久久久久精 | 久久激五月天综合精品 | 91成人短视频在线观看 | 97在线精品国自产拍中文 | 91精品国产综合久久福利不卡 | 国产日韩欧美在线播放 | 久久九九网站 | 亚洲色图av| 亚洲九九爱 | 亚洲人成人在线 | 成人网页在线免费观看 | 欧美久久久久久久久久久久 | 国产98色在线 | 日韩 | 黄色毛片一级 | www国产精品com | 国产无遮挡又黄又爽馒头漫画 | 国际精品网| 精油按摩av | 玖草在线观看 | 狠狠躁日日躁狂躁夜夜躁av | 一级特黄av | 久久午夜电影院 | 在线成人国产 | 在线观看日本高清mv视频 | 中文字幕在线视频网站 | 精品播放| 欧美99热 | 五月婷在线视频 | 国产主播大尺度精品福利免费 | 久久成年人 | 人人揉人人揉人人揉人人揉97 | 亚洲 欧美日韩 国产 中文 | 天天视频色 | 免费在线播放黄色 | 国产99久久久国产精品成人免费 | 日韩一区二区三区在线观看 | 韩日精品在线 | 成人黄色av网站 | 成人一级在线观看 | 97国产在线播放 | 最新av电影网站 | 久久久久国产精品一区二区 | 欧美日韩国产成人 | 99视频在线精品国自产拍免费观看 | 一区二区精品国产 | 在线观看av麻豆 | 麻豆视频免费播放 | 97手机电影网 | 国产精品9999久久久久仙踪林 | 国产精品黄网站在线观看 | 色综合天天狠天天透天天伊人 | 国产网站色 | 久久免费成人网 | 欧美人交a欧美精品 | 天天综合区 | 亚洲少妇久久 | 精品国产91亚洲一区二区三区www | 国产亚洲精品bv在线观看 | 成人午夜网址 | 免费久草视频 | 成人免费视频视频在线观看 免费 | 日日干 天天干 | 久久欧洲视频 | 国产精品va在线播放 | 伊人天天干 | 97精品国产97久久久久久春色 | a级国产乱理论片在线观看 特级毛片在线观看 | 欧美日韩一区久久 | 婷婷深爱 | 国产精品久久一区二区三区, | 久久69精品久久久久久久电影好 | 深夜免费小视频 | 久草综合视频 | 久福利 | 激情久久久久 | 久久久一本精品99久久精品 | 91九色老| 婷婷av网站| 国产又黄又爽又猛视频日本 | 亚洲一区二区三区四区在线视频 | 国产精品高清免费在线观看 | 欧美一级在线观看视频 | 亚洲不卡av一区二区三区 | 国产婷婷一区二区 | 色网站在线观看 | 草久久久久久久 | 国产精品手机在线播放 | 又紧又大又爽精品一区二区 | 不卡电影免费在线播放一区 | 亚洲免费在线视频 | 日韩有码欧美 | 成人电影毛片 | 91成年人网站 | 成人wwwxxx视频 | av大片网址 | 综合五月 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 日日日操 | 99在线精品视频 | 精品国产一区二区三区久久久久久 | 天天干天天拍天天操天天拍 | 久久久久久看片 | 免费在线电影网址大全 | 99精品欧美一区二区 | 在线免费亚洲 | 亚洲视频专区在线 | 午夜精品成人一区二区三区 | www夜夜操com |