From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Schmoll Subject: [PATCH AFL] Fuzzing the hypervisor Date: Thu, 17 Aug 2017 12:15:00 +0200 Message-ID: <20170817101500.1410-1-eggi.innovations@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1diHpr-0003WJ-5c for xen-devel@lists.xenproject.org; Thu, 17 Aug 2017 10:15:31 +0000 Received: by mail-wr0-f195.google.com with SMTP id x43so7581890wrb.1 for ; Thu, 17 Aug 2017 03:15:29 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, Felix Schmoll List-Id: xen-devel@lists.xenproject.org Q2hhbmdlcyBiYXNlZCBvbiB2ZXJzaW9uIDIuNDNiIG9mIEFGTAotLS0KIE1ha2VmaWxlICAgfCAg IDIgKy0KIGFmbC1mdXp6LmMgfCAyMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogaGFzaF9tYXAuaCB8ICA4MiArKysrKysrKysr KysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspLCAxMSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBoYXNoX21hcC5oCgpkaWZmIC0tZ2l0IGEvTWFr ZWZpbGUgYi9NYWtlZmlsZQppbmRleCA0NGQxZmZhLi4zYTc1YzhjIDEwMDY0NAotLS0gYS9NYWtl ZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtNzAsNyArNzAsNyBAQCBhZmwtYXM6IGFmbC1hcy5jIGFm bC1hcy5oICQoQ09NTV9IRFIpIHwgdGVzdF94ODYKIAlsbiAtc2YgYWZsLWFzIGFzCiAKIGFmbC1m dXp6OiBhZmwtZnV6ei5jICQoQ09NTV9IRFIpIHwgdGVzdF94ODYKLQkkKENDKSAkKENGTEFHUykg JEAuYyAtbyAkQCAkKExERkxBR1MpCisJJChDQykgJChDRkxBR1MpICRALmMgLW8gJEAgJChMREZM QUdTKSAtbHhlbmN0cmwKIAogYWZsLXNob3dtYXA6IGFmbC1zaG93bWFwLmMgJChDT01NX0hEUikg fCB0ZXN0X3g4NgogCSQoQ0MpICQoQ0ZMQUdTKSAkQC5jIC1vICRAICQoTERGTEFHUykKZGlmZiAt LWdpdCBhL2FmbC1mdXp6LmMgYi9hZmwtZnV6ei5jCmluZGV4IDU2MmZkNTAuLjA4ZmEzNDYgMTAw NjQ0Ci0tLSBhL2FmbC1mdXp6LmMKKysrIGIvYWZsLWZ1enouYwpAQCAtNTYsNiArNTYsMTAgQEAK ICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICNpbmNsdWRlIDxzeXMvZmlsZS5oPgogCisjaW5jbHVk ZSA8eGVuY3RybC5oPgorI2luY2x1ZGUgPHhlbi9wdWJsaWMvdHJhY2VfcGMuaD4KKyNpbmNsdWRl ICJoYXNoX21hcC5oIgorCiAjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19GcmVl QlNEX18pIHx8IGRlZmluZWQgKF9fT3BlbkJTRF9fKQogIyAgaW5jbHVkZSA8c3lzL3N5c2N0bC5o PgogI2VuZGlmIC8qIF9fQVBQTEVfXyB8fCBfX0ZyZWVCU0RfXyB8fCBfX09wZW5CU0RfXyAqLwpA QCAtODAsNiArODQsMjUgQEAKICAgIHJlYWxseSBtYWtlcyBubyBzZW5zZSB0byBoYXVsIHRoZW0g YXJvdW5kIGFzIGZ1bmN0aW9uIHBhcmFtZXRlcnMuICovCiAKIAorLyogbnVtYmVyIG9mIGJ1Y2tl dHMgaW4gdGhlIGhhc2ggbWFwICovCisjZGVmaW5lIE5VTV9CVUNLRVRTIDEwMDAKKy8qIG51bWJl ciBvZiBieXRlcyB3cml0dGVuIHRvIHh0ZiAqLworI2RlZmluZSBTSVpFX01FTV9XUklURV9UT19U RVNUQ0FTRSA4MAorLyogcGF0aCBmb3IgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgbGFzdCB0ZXN0 IGNhc2UgKi8KKyNkZWZpbmUgVEVTVF9DQVNFX0xPR19QQVRIICIvdmFyL2xvZy90ZXN0Y2FzZSIK Ky8qIHBhdGggZm9yIHRoZSBmaWxlIGNvbnRhaW5pbmcgYWxsIHRlc3QgY2FzZXMgKi8KKyNkZWZp bmUgT1ZFUkFMTF9MT0dfUEFUSCAiL3Zhci9sb2cvYWZsLmxvZyIKKyNkZWZpbmUgWEVOQ09OU09M RV9QQVRIICIvdXNyL2xvY2FsL2xpYi94ZW4vYmluL3hlbmNvbnNvbGUiCisKK2ludCBwaXBlZmRf dG9feHRmWzJdOworaW50IHBpcGVmZF9mcm9tX3h0ZlsyXTsKK2NoYXIqIGRvbWFpbjsKK2hhc2hf bWFwKiBtYXA7CisKK2xvbmcgbWVtX3dyaXRlX3RvX3Rlc3RjYXNlW1NJWkVfTUVNX1dSSVRFX1RP X1RFU1RDQVNFXTsKKworRklMRSogbG9nX2ZpbGU7CisKIEVYUF9TVCB1OCAqaW5fZGlyLCAgICAg ICAgICAgICAgICAgICAgLyogSW5wdXQgZGlyZWN0b3J5IHdpdGggdGVzdCBjYXNlcyAgKi8KICAg ICAgICAgICAqb3V0X2ZpbGUsICAgICAgICAgICAgICAgICAgLyogRmlsZSB0byBmdXp6LCBpZiBh bnkgICAgICAgICAgICAgKi8KICAgICAgICAgICAqb3V0X2RpciwgICAgICAgICAgICAgICAgICAg LyogV29ya2luZyAmIG91dHB1dCBkaXJlY3RvcnkgICAgICAgKi8KQEAgLTIyNTMsNiArMjI3Niwx MDcgQEAgRVhQX1NUIHZvaWQgaW5pdF9mb3Jrc2VydmVyKGNoYXIqKiBhcmd2KSB7CiB9CiAKIAor LyoqIFByb2Nlc3MgcHJvZ3JhbSBjb3VudGVycyBpbnRvIGZvcm1hdCBleHBlY3RlZCBieSBBRkwg YW5kCisgICAgaW5zZXJ0IGludG8gdHJhY2VfYml0cy4KKworICAgIGN1cl9sb2NhdGlvbiA9IDxD T01QSUxFX1RJTUVfUkFORE9NPjsKKyAgICBzaGFyZWRfbWVtW2N1cl9sb2NhdGlvbiBeIHByZXZf bG9jYXRpb25dKys7CisgICAgcHJldl9sb2NhdGlvbiA9IGN1cl9sb2NhdGlvbiA+PiAxOworKi8K K3ZvaWQgcHJvY2Vzc19wcm9ncmFtX2NvdW50ZXJzKHVpbnQ2NF90KiBwY19idWZmZXIsIGxvbmcg cGNfbnVtKSB7CisKKyAgdTMyIGN1cl9sb2NhdGlvbiA9IDAsIHByZXZfbG9jYXRpb24gPSAwOwor ICBoYXNoX2J1Y2tldCogYnVja2V0OworCisgIGZvcihpbnQgaSA9IDA7IGkgPCBwY19udW07ICsr aSkgeworICAgIGJ1Y2tldCA9IF9oYXNoX21hcF9sb29rdXAobWFwLCBwY19idWZmZXJbaV0pOwor CisgICAgaWYoICFidWNrZXQgKSB7CisgICAgICAgY3VyX2xvY2F0aW9uID0gVVIoTUFQX1NJWkUp OworICAgICAgIGlmKCFfaGFzaF9tYXBfaW5zZXJ0KG1hcCwgcGNfYnVmZmVyW2ldLCBjdXJfbG9j YXRpb24pKQorICAgICAgICAgRkFUQUwoInByb2Nlc3NfcHJvZ3JhbV9jb3VudGVyczogQ291bGQg bm90IGluc2VydCBpbnRvIGhhc2ggbWFwXG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgY3VyX2xv Y2F0aW9uID0gYnVja2V0LT52YWw7CisgICAgfQorCisgICAgdHJhY2VfYml0c1soY3VyX2xvY2F0 aW9uIF4gcHJldl9sb2NhdGlvbikgJSBNQVBfU0laRV0rKzsKKyAgICBwcmV2X2xvY2F0aW9uID0g Y3VyX2xvY2F0aW9uID4+IDE7CisgIH0KKworfQorCisvKiBTZW5kIHRlc3QgY2FzZSB0byBYVEYt c2VydmVyLiAqLworCitzdGF0aWMgdTggc2VuZF90ZXN0X3RvX3h0ZihjaGFyKiogYXJndiwgdTMy IHRpbWVvdXQpIHsKKworICBzaXplX3QgYnVmX3NpemUgPSAxMDA7CisgIGNoYXIgYnVmZmVyW2J1 Zl9zaXplXTsKKworICBpbnQgcGNfYnVmZmVyX3NpemUgPSAxMDAwMDA7CisgIHVpbnQ2NF90IHBj X2J1ZmZlcltwY19idWZmZXJfc2l6ZV07CisgIGxvbmcgcmV0OworCisgIC8qIGxvZyB0aGUgdGVz dCBjYXNlIHRoYXQgaXMgYWJvdXQgdG8gYmUgc2VuZCAqLworICBpZiggZnByaW50Zihsb2dfZmls ZSwgImdldF9jdXJfdGltZSAlbGQgJWxpICVsaSAlbGQgJWxkICVsZFxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAobG9uZykgZ2V0X2N1cl90aW1lKCksCisgICAgICAgICAgICAgICAgICAg ICAgICAgbWVtX3dyaXRlX3RvX3Rlc3RjYXNlWzBdICUgNDEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgbWVtX3dyaXRlX3RvX3Rlc3RjYXNlWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAg IG1lbV93cml0ZV90b190ZXN0Y2FzZVsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZW1f d3JpdGVfdG9fdGVzdGNhc2VbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgbWVtX3dyaXRl X3RvX3Rlc3RjYXNlWzRdKSA8IDAgKQorICAgIEZBVEFMKCJzZW5kX3Rlc3RfdG9feHRmOiBDb3Vs ZG4ndCB3cml0ZSB0byBmaWxlXG4iKTsKKworICBmZmx1c2gobG9nX2ZpbGUpOworICBtZW1zZXQo dHJhY2VfYml0cywgMCwgTUFQX1NJWkUpOworCisgIHhjX2ludGVyZmFjZSAqeGNoID0geGNfaW50 ZXJmYWNlX29wZW4oTlVMTCwgTlVMTCwgMCk7CisgIGlmKCB4Y2ggPT0gTlVMTCApIHsKKyAgICBm Y2xvc2UobG9nX2ZpbGUpOworICAgIEZBVEFMKCJzZW5kX3Rlc3RfdG9feHRmOiBDb3VsZG4ndCBv cGVuIHhlbiBpbnRlcmZhY2VcbiIpOworICB9CisKKyAgaWYoIHhjX3RyYWNlX3BjKHhjaCwgYXRv aShkb21haW4pLCBYRU5fVFJBQ0VfUENfU1RBUlQsCisgICAgICAgICAgICAgICAgICBwY19idWZm ZXJfc2l6ZSwgcGNfYnVmZmVyKSA8IDAgKSB7CisgICAgZmNsb3NlKGxvZ19maWxlKTsKKyAgICB4 Y19pbnRlcmZhY2VfY2xvc2UoeGNoKTsKKyAgICBGQVRBTCgic2VuZF90ZXN0X3RvX3h0ZjogU3Rh cnQgZWRnZV90cmFjZSBmYWlsZWRcbiIpOworICB9CisKKyAgLyogc2VuZCB0ZXQgY2FzZSB0byBY VEYgKi8KKyAgaWYoIHdyaXRlKHBpcGVmZF90b194dGZbMV0sIChjaGFyKikgbWVtX3dyaXRlX3Rv X3Rlc3RjYXNlLAorICAgICAgICAgICAgICBTSVpFX01FTV9XUklURV9UT19URVNUQ0FTRSkgPD0g MCApIHsKKyAgICAgZmNsb3NlKGxvZ19maWxlKTsKKyAgICAgeGNfaW50ZXJmYWNlX2Nsb3NlKHhj aCk7CisgICAgIEZBVEFMKCJzZW5kX3Rlc3RfdG9feHRmOiBDb3VsZG4ndCB3cml0ZSB0byBYVEZc biIpOworICB9CisKKyAgLyogWFRGIHdpbGwgbWVzc2FnZSB1cyB3aGVuIGl0J3MgaHlwZXJjYWxs IHJldHVybmVkICovCisgIGlmKCByZWFkKHBpcGVmZF9mcm9tX3h0ZlswXSwgYnVmZmVyLCBidWZf c2l6ZSkgPCAwICkgeworICAgICBmY2xvc2UobG9nX2ZpbGUpOworICAgICB4Y19pbnRlcmZhY2Vf Y2xvc2UoeGNoKTsKKyAgICAgRkFUQUwoInNlbmRfdGVzdF90b194dGY6IENvdWxkbid0IHJlYWQg ZnJvbSBYVEZcbiIpOworICB9CisKKyAgcmV0ID0geGNfdHJhY2VfcGMoeGNoLCBhdG9pKGRvbWFp biksIDEsIHBjX2J1ZmZlcl9zaXplLCBwY19idWZmZXIpOworICB4Y19pbnRlcmZhY2VfY2xvc2Uo eGNoKTsKKworICBpZiggcmV0IDwgMCApIHsKKyAgICAgZmNsb3NlKGxvZ19maWxlKTsKKyAgICAg RkFUQUwoInNlbmRfdGVzdF90b194dGY6IFN0b3AgZWRnZV90cmFjZSBmYWlsZWRcbiIpOworICB9 CisKKyAgcHJvY2Vzc19wcm9ncmFtX2NvdW50ZXJzKHBjX2J1ZmZlciwgcmV0KTsKKworI2lmZGVm IF9feDg2XzY0X18KKyAgY2xhc3NpZnlfY291bnRzKCh1NjQqKXRyYWNlX2JpdHMpOworI2Vsc2UK KyAgY2xhc3NpZnlfY291bnRzKCh1MzIqKXRyYWNlX2JpdHMpOworI2VuZGlmIC8qIF5fX3g4Nl82 NF9fICovCisKKyAgcmV0dXJuIEZBVUxUX05PTkU7Cit9CisKKwogLyogRXhlY3V0ZSB0YXJnZXQg YXBwbGljYXRpb24sIG1vbml0b3JpbmcgZm9yIHRpbWVvdXRzLiBSZXR1cm4gc3RhdHVzCiAgICBp bmZvcm1hdGlvbi4gVGhlIGNhbGxlZCBwcm9ncmFtIHdpbGwgdXBkYXRlIHRyYWNlX2JpdHNbXS4g Ki8KIApAQCAtMjQ1NSwxMyArMjU3OSwyMSBAQCBzdGF0aWMgdTggcnVuX3RhcmdldChjaGFyKiog YXJndiwgdTMyIHRpbWVvdXQpIHsKIAogfQogCi0KIC8qIFdyaXRlIG1vZGlmaWVkIGRhdGEgdG8g ZmlsZSBmb3IgdGVzdGluZy4gSWYgb3V0X2ZpbGUgaXMgc2V0LCB0aGUgb2xkIGZpbGUKICAgIGlz IHVubGlua2VkIGFuZCBhIG5ldyBvbmUgaXMgY3JlYXRlZC4gT3RoZXJ3aXNlLCBvdXRfZmQgaXMg cmV3b3VuZCBhbmQKICAgIHRydW5jYXRlZC4gKi8KIAogc3RhdGljIHZvaWQgd3JpdGVfdG9fdGVz dGNhc2Uodm9pZCogbWVtLCB1MzIgbGVuKSB7CiAKKyAgbWVtc2V0KChjaGFyKikgbWVtX3dyaXRl X3RvX3Rlc3RjYXNlLCAwLCBTSVpFX01FTV9XUklURV9UT19URVNUQ0FTRSk7CisgIG1lbWNweSgo Y2hhciopIG1lbV93cml0ZV90b190ZXN0Y2FzZSwgbWVtLCAobGVuIDwgU0laRV9NRU1fV1JJVEVf VE9fVEVTVENBU0UpP2xlbjpTSVpFX01FTV9XUklURV9UT19URVNUQ0FTRSk7CisKKyAgcmVtb3Zl KFRFU1RfQ0FTRV9MT0dfUEFUSCk7CisgIHMzMiBteV9maWxlID0gb3BlbihURVNUX0NBU0VfTE9H X1BBVEgsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCAsIDA2MDApOworICBja193cml0ZSht eV9maWxlLCBtZW0sIFNJWkVfTUVNX1dSSVRFX1RPX1RFU1RDQVNFLCBURVNUX0NBU0VfTE9HX1BB VEgpOworICBmc3luYyhteV9maWxlKTsKKyAgY2xvc2UobXlfZmlsZSk7CisKICAgczMyIGZkID0g b3V0X2ZkOwogCiAgIGlmIChvdXRfZmlsZSkgewpAQCAtMjQ5MCw2ICsyNjIyLDE1IEBAIHN0YXRp YyB2b2lkIHdyaXRlX3RvX3Rlc3RjYXNlKHZvaWQqIG1lbSwgdTMyIGxlbikgewogCiBzdGF0aWMg dm9pZCB3cml0ZV93aXRoX2dhcCh2b2lkKiBtZW0sIHUzMiBsZW4sIHUzMiBza2lwX2F0LCB1MzIg c2tpcF9sZW4pIHsKIAorICBtZW1zZXQoKGNoYXIqKSBtZW1fd3JpdGVfdG9fdGVzdGNhc2UsIDAs IFNJWkVfTUVNX1dSSVRFX1RPX1RFU1RDQVNFKTsKKyAgbWVtY3B5KChjaGFyKikgbWVtX3dyaXRl X3RvX3Rlc3RjYXNlLCBtZW0sIChsZW4gPCBTSVpFX01FTV9XUklURV9UT19URVNUQ0FTRSk/bGVu OlNJWkVfTUVNX1dSSVRFX1RPX1RFU1RDQVNFKTsKKworICByZW1vdmUoVEVTVF9DQVNFX0xPR19Q QVRIKTsKKyAgczMyIG15X2ZpbGUgPSBvcGVuKFRFU1RfQ0FTRV9MT0dfUEFUSCwgT19XUk9OTFkg fCBPX0NSRUFUIHwgT19FWENMICwgMDYwMCk7CisgIGNrX3dyaXRlKG15X2ZpbGUsIG1lbSwgU0la RV9NRU1fV1JJVEVfVE9fVEVTVENBU0UsIFRFU1RfQ0FTRV9MT0dfUEFUSCk7CisgIGZzeW5jKG15 X2ZpbGUpOworICBjbG9zZShteV9maWxlKTsKKwogICBzMzIgZmQgPSBvdXRfZmQ7CiAgIHUzMiB0 YWlsX2xlbiA9IGxlbiAtIHNraXBfYXQgLSBza2lwX2xlbjsKIApAQCAtMjU2OCw3ICsyNzA5LDcg QEAgc3RhdGljIHU4IGNhbGlicmF0ZV9jYXNlKGNoYXIqKiBhcmd2LCBzdHJ1Y3QgcXVldWVfZW50 cnkqIHEsIHU4KiB1c2VfbWVtLAogCiAgICAgd3JpdGVfdG9fdGVzdGNhc2UodXNlX21lbSwgcS0+ bGVuKTsKIAotICAgIGZhdWx0ID0gcnVuX3RhcmdldChhcmd2LCB1c2VfdG1vdXQpOworICAgIGZh dWx0ID0gc2VuZF90ZXN0X3RvX3h0Zihhcmd2LCB1c2VfdG1vdXQpOwogCiAgICAgLyogc3RvcF9z b29uIGlzIHNldCBieSB0aGUgaGFuZGxlciBmb3IgQ3RybCtDLiBXaGVuIGl0J3MgcHJlc3NlZCwK ICAgICAgICB3ZSB3YW50IHRvIGJhaWwgb3V0IHF1aWNrbHkuICovCkBAIC0zMTk4LDcgKzMzMzks NyBAQCBzdGF0aWMgdTggc2F2ZV9pZl9pbnRlcmVzdGluZyhjaGFyKiogYXJndiwgdm9pZCogbWVt LCB1MzIgbGVuLCB1OCBmYXVsdCkgewogCiAgICAgICAgIHU4IG5ld19mYXVsdDsKICAgICAgICAg d3JpdGVfdG9fdGVzdGNhc2UobWVtLCBsZW4pOwotICAgICAgICBuZXdfZmF1bHQgPSBydW5fdGFy Z2V0KGFyZ3YsIGhhbmdfdG1vdXQpOworICAgICAgICBuZXdfZmF1bHQgPSBzZW5kX3Rlc3RfdG9f eHRmKGFyZ3YsIGhhbmdfdG1vdXQpOwogCiAgICAgICAgIGlmIChzdG9wX3Nvb24gfHwgbmV3X2Zh dWx0ICE9IEZBVUxUX1RNT1VUKSByZXR1cm4ga2VlcGluZzsKIApAQCAtNDQ3OSw3ICs0NjIwLDcg QEAgc3RhdGljIHU4IHRyaW1fY2FzZShjaGFyKiogYXJndiwgc3RydWN0IHF1ZXVlX2VudHJ5KiBx LCB1OCogaW5fYnVmKSB7CiAKICAgICAgIHdyaXRlX3dpdGhfZ2FwKGluX2J1ZiwgcS0+bGVuLCBy ZW1vdmVfcG9zLCB0cmltX2F2YWlsKTsKIAotICAgICAgZmF1bHQgPSBydW5fdGFyZ2V0KGFyZ3Ys IGV4ZWNfdG1vdXQpOworICAgICAgZmF1bHQgPSBzZW5kX3Rlc3RfdG9feHRmKGFyZ3YsIGV4ZWNf dG1vdXQpOwogICAgICAgdHJpbV9leGVjcysrOwogCiAgICAgICBpZiAoc3RvcF9zb29uIHx8IGZh dWx0ID09IEZBVUxUX0VSUk9SKSBnb3RvIGFib3J0X3RyaW1taW5nOwpAQCAtNDU3Miw3ICs0NzEz LDcgQEAgRVhQX1NUIHU4IGNvbW1vbl9mdXp6X3N0dWZmKGNoYXIqKiBhcmd2LCB1OCogb3V0X2J1 ZiwgdTMyIGxlbikgewogCiAgIHdyaXRlX3RvX3Rlc3RjYXNlKG91dF9idWYsIGxlbik7CiAKLSAg ZmF1bHQgPSBydW5fdGFyZ2V0KGFyZ3YsIGV4ZWNfdG1vdXQpOworICBmYXVsdCA9IHNlbmRfdGVz dF90b194dGYoYXJndiwgZXhlY190bW91dCk7CiAKICAgaWYgKHN0b3Bfc29vbikgcmV0dXJuIDE7 CiAKQEAgLTY3MDEsNyArNjg0Miw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZnV6emVycyhjaGFyKiog YXJndikgewogCiAgICAgICAgIHdyaXRlX3RvX3Rlc3RjYXNlKG1lbSwgc3Quc3Rfc2l6ZSk7CiAK LSAgICAgICAgZmF1bHQgPSBydW5fdGFyZ2V0KGFyZ3YsIGV4ZWNfdG1vdXQpOworICAgICAgICBm YXVsdCA9IHNlbmRfdGVzdF90b194dGYoYXJndiwgZXhlY190bW91dCk7CiAKICAgICAgICAgaWYg KHN0b3Bfc29vbikgcmV0dXJuOwogCkBAIC03NjY1LDYgKzc4MDYsNzMgQEAgc3RhdGljIHZvaWQg c2F2ZV9jbWRsaW5lKHUzMiBhcmdjLCBjaGFyKiogYXJndikgewogCiB9CiAKKy8qKgorICAqIEBw YXJhbSBkb21pZF9zIFBvaW50IHRvIGRvbWlkIG9mIFhURgorICAqCisgICogVGhpcyBmdW5jdGlv biBkb2VzIGluaXRpYWwgc2V0dXAgbmVlZGVkIGZvciB0aGUgZnV6emluZy4gSXQgYWxzbworICAq IHNldHMgdXAgcGlwZXMgc3VjaCB0aGF0IHN0ZG91dCBhbmQgc3RkaW4gY2FuIGJlIHVzZWQgdG8g Y29tbXVuaWNhdGUKKyAgKiB3aXRoIHRoZSBYVEYtc2VydmVyLgorICAqCisgICogVE9ETyAgICAg IG1ha2UgdGhpcyB0d28gc2VwYXJhdGUgZnVuY3Rpb25zCisgICovCitzdGF0aWMgdm9pZCBzZXR1 cF9waXBlX2FuZF9mb3JrKGNoYXIgKmRvbWlkX3MpIHsKKyAgbWFwID0gX2hhc2hfbWFwX2NyZWF0 ZShOVU1fQlVDS0VUUyk7CisKKyAgaWYoIW1hcCkgeworICAgIEZBVEFMKCJzZXR1cF9waXBlX2Fu ZF9mb3JrOiBIYXNoIG1hcCBjb3VsZCBub3QgYmUgY3JlYXRlZFxuIik7CisgIH0KKworICBsb2df ZmlsZSA9IGZvcGVuKE9WRVJBTExfTE9HX1BBVEgsICJ3Iik7CisKKyAgaWYobG9nX2ZpbGUgPCAw KQorICAgIGdvdG8gRkFJTDsKKworICBwaWRfdCBjaGlsZHBpZDsKKyAgaW50IHJldDsKKworICBp ZiggKHJldCA9IHBpcGUocGlwZWZkX3RvX3h0ZikpIDwgMCkKKyAgICBnb3RvIEZBSUw7CisKKyAg aWYoIChyZXQgPSBwaXBlKHBpcGVmZF9mcm9tX3h0ZikpIDwgMCkKKyAgICBnb3RvIEZBSUw7CisK KyAgaWYoKGNoaWxkcGlkID0gZm9yaygpKSA9PSAtMSkKKyAgICBGQVRBTCgic2V0dXBfcGlwZV9h bmRfZm9yazogZm9yayBmYWlsZWQiKTsKKworICBpZiAoY2hpbGRwaWQgPT0gMCkgeyAvKiBjaGls ZCAqLworCisgICAgLyogY2xvc2UgdW5uZWNlc3NhcnkgcGlwZSBlbmRzICovCisgICAgY2xvc2Uo cGlwZWZkX3RvX3h0ZlsxXSk7CisgICAgY2xvc2UocGlwZWZkX2Zyb21feHRmWzBdKTsKKworICAg IC8qIHN0ZGluICovCisgICAgY2xvc2UoMCk7CisgICAgaWYoIChyZXQgPSBkdXAocGlwZWZkX3Rv X3h0ZlswXSkpIDwgMCApCisgICAgICBnb3RvIEZBSUw7CisKKyAgICAvKiBzdGRvdXQgKi8KKyAg ICBjbG9zZSgxKTsKKyAgICBpZiggKHJldCA9IGR1cChwaXBlZmRfZnJvbV94dGZbMV0pKSA8IDAg KQorICAgICAgZ290byBGQUlMOworCisgICAgaWYoIGV4ZWNsKFhFTkNPTlNPTEVfUEFUSCwgWEVO Q09OU09MRV9QQVRILCBkb21pZF9zLCAiLS1udW0iLCAiMCIsCisgICAgICAgICAgICAgICItLXR5 cGUiLCAicHYiLCAiLS1pbnRlcmFjdGl2ZSIsICh2b2lkICopTlVMTCkgPCAwICkKKyAgICAgIEZB VEFMKCJzZXR1cF9waXBlX2FuZF9mb3JrOiBleGVjbCIpOworCisgIH0gZWxzZSB7IC8qIHBhcmVu dCAqLworCisgICAgLyogY2xvc2UgdW5uZWNlc3NhcnkgcGlwZSBlbmRzICovCisgICAgY2xvc2Uo cGlwZWZkX3RvX3h0ZlswXSk7CisgICAgY2xvc2UocGlwZWZkX2Zyb21feHRmWzFdKTsKKworICB9 CisKKyAgcmV0dXJuOworCisgIEZBSUw6CisgICAgRkFUQUwoInNldHVwX3BpcGVfYW5kX2Zvcms6 IEZhaWxlZCB0byBzZXR1cCBwaXBlc1xuIik7Cit9CisKIAogI2lmbmRlZiBBRkxfTElCCiAKQEAg LTc2OTAsNyArNzg5OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogICBn ZXR0aW1lb2ZkYXkoJnR2LCAmdHopOwogICBzcmFuZG9tKHR2LnR2X3NlYyBeIHR2LnR2X3VzZWMg XiBnZXRwaWQoKSk7CiAKLSAgd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgIitpOm86 ZjptOnQ6VDpkbkNCOlM6TTp4OlEiKSkgPiAwKQorICB3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdj LCBhcmd2LCAiK2k6bzpmOm06dDpUOmRuQ0I6UzpNOng6UXI6IikpID4gMCkKIAogICAgIHN3aXRj aCAob3B0KSB7CiAKQEAgLTc4NTgsNiArODA2NiwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh cioqIGFyZ3YpIHsKIAogICAgICAgICBicmVhazsKIAorICAgICAgY2FzZSAncic6IC8qIGRvbWFp biBpZCBmb3IgWFRGIHNlcnZlciAqLworCisgICAgICAgIGRvbWFpbiA9IG9wdGFyZzsKKyAgICAg ICAgcHJpbnRmKCJkb21haW4gc2V0OiAlc1xuIiwgZG9tYWluKTsKKyAgICAgICAgYnJlYWs7CisK ICAgICAgIGRlZmF1bHQ6CiAKICAgICAgICAgdXNhZ2UoYXJndlswXSk7CkBAIC03OTM1LDggKzgx NDksNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKIAogICBpZiAoIW91dF9m aWxlKSBzZXR1cF9zdGRpb19maWxlKCk7CiAKLSAgY2hlY2tfYmluYXJ5KGFyZ3Zbb3B0aW5kXSk7 Ci0KICAgc3RhcnRfdGltZSA9IGdldF9jdXJfdGltZSgpOwogCiAgIGlmIChxZW11X21vZGUpCkBA IC03OTQ0LDYgKzgxNTYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAg ZWxzZQogICAgIHVzZV9hcmd2ID0gYXJndiArIG9wdGluZDsKIAorICBzZXR1cF9waXBlX2FuZF9m b3JrKGRvbWFpbik7CisKICAgcGVyZm9ybV9kcnlfcnVuKHVzZV9hcmd2KTsKIAogICBjdWxsX3F1 ZXVlKCk7CkBAIC03OTY2LDcgKzgxODAsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy Z3YpIHsKICAgfQogCiAgIHdoaWxlICgxKSB7Ci0KICAgICB1OCBza2lwcGVkX2Z1eno7CiAKICAg ICBjdWxsX3F1ZXVlKCk7CmRpZmYgLS1naXQgYS9oYXNoX21hcC5oIGIvaGFzaF9tYXAuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWU2NjAyCi0tLSAvZGV2L251bGwKKysr IGIvaGFzaF9tYXAuaApAQCAtMCwwICsxLDgyIEBACisvKiBAZmlsZSBoYXNoX21hcC5oCisgKgor ICovCisKK3R5cGVkZWYgc3RydWN0IGhhc2hfYnVja2V0IHsKKyAgICBzdHJ1Y3QgaGFzaF9idWNr ZXQqIG5leHQ7CisgICAgdWludDY0X3Qga2V5OworICAgIHVpbnQ2NF90IHZhbDsKK30gaGFzaF9i dWNrZXQ7CisKK3R5cGVkZWYgc3RydWN0IGhhc2hfbWFwIHsKKyAgICBoYXNoX2J1Y2tldCoqIGJ1 Y2tldHM7CisgICAgaW50IG51bV9idWNrZXRzOworfSBoYXNoX21hcDsKKwordWludDY0X3QgX2hh c2hfZnVuY3Rpb24oaGFzaF9tYXAqIG1hcCwgdWludDY0X3Qga2V5KSB7CisgICAgcmV0dXJuIChr ZXkgJSBtYXAtPm51bV9idWNrZXRzKTsKK30KKworaGFzaF9tYXAqIF9oYXNoX21hcF9jcmVhdGUo aW50IG51bV9idWNrZXRzKSB7CisgICAgaGFzaF9tYXAqIG1hcCA9IChoYXNoX21hcCopIG1hbGxv YyhzaXplb2YoaGFzaF9tYXApKTsKKworICAgIGlmKCBtYXAgKSB7CisgICAgICBtYXAtPm51bV9i dWNrZXRzID0gbnVtX2J1Y2tldHM7CisgICAgICBtYXAtPmJ1Y2tldHMgPSAoaGFzaF9idWNrZXQq KikgbWFsbG9jKHNpemVvZihoYXNoX2J1Y2tldCopICogbnVtX2J1Y2tldHMpOworCisgICAgICAg aWYoICFtYXAtPmJ1Y2tldHMgKSB7CisgICAgICAgICBmcmVlKG1hcCk7CisgICAgICAgICByZXR1 cm4gTlVMTDsKKyAgICAgICB9CisKKyAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbnVtX2J1Y2tl dHM7ICsraSkKKyAgICAgICAgIG1hcC0+YnVja2V0c1tpXSA9IE5VTEw7CisgICAgfQorCisgICAg cmV0dXJuIG1hcDsKK30KKwordm9pZCBfaGFzaF9tYXBfZGVzdHJveShoYXNoX21hcCogbWFwKSB7 CisgIC8vbm90IGltcGxlbWVudGVkCit9CisKK2hhc2hfYnVja2V0KiBfaGFzaF9tYXBfbG9va3Vw KGhhc2hfbWFwKiBtYXAsIHVpbnQ2NF90IGtleSkgeworICAgIHVpbnQ2NF90IGhhc2ggPSBfaGFz aF9mdW5jdGlvbihtYXAsIGtleSk7CisKKyAgICBpZihtYXAtPmJ1Y2tldHNbaGFzaF0gPT0gTlVM TCkgeworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgIGhhc2hfYnVja2V0 KiBjdXIgPSBtYXAtPmJ1Y2tldHNbaGFzaF07CisKKyAgICAgIHdoaWxlKGN1ci0+a2V5ICE9IGtl eSAmJiBjdXItPm5leHQpCisgICAgICAgIGN1ciA9IGN1ci0+bmV4dDsKKworICAgICAgcmV0dXJu IGN1cjsKKyAgICB9Cit9CisKK2Jvb2wgX2hhc2hfbWFwX2luc2VydChoYXNoX21hcCogbWFwLCB1 aW50NjRfdCBrZXksIHVpbnQ2NF90IHZhbCkgeworICAgIHVpbnQ2NF90IGhhc2ggPSBfaGFzaF9m dW5jdGlvbihtYXAsIGtleSk7CisKKyAgICBoYXNoX2J1Y2tldCogYnVja2V0ID0gKGhhc2hfYnVj a2V0KikgbWFsbG9jKHNpemVvZihoYXNoX2J1Y2tldCkpOworCisgICAgaWYoIWJ1Y2tldCkKKyAg ICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ1Y2tldC0+bmV4dCA9IE5VTEw7CisgICAgYnVja2V0 LT5rZXkgPSBrZXk7CisgICAgYnVja2V0LT52YWwgPSB2YWw7CisKKyAgICBpZihtYXAtPmJ1Y2tl dHNbaGFzaF0gPT0gTlVMTCkgeworICAgICAgbWFwLT5idWNrZXRzW2hhc2hdID0gYnVja2V0Owor ICAgIH0gZWxzZSB7CisgICAgICBoYXNoX2J1Y2tldCogY3VyID0gbWFwLT5idWNrZXRzW2hhc2hd OworICAgICAgd2hpbGUoY3VyLT5uZXh0KSB7CisgICAgICAgIGN1ciA9IGN1ci0+bmV4dDsKKyAg ICAgIH0KKworICAgICAgY3VyLT5uZXh0ID0gYnVja2V0OworICAgIH0KKworICAgIHJldHVybiB0 cnVlOworfQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==