From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH v4 10/12] fuzz/x86_emulate: Add --rerun option to try to track down instability Date: Wed, 11 Oct 2017 18:52:41 +0100 Message-ID: <20171011175243.19871-10-george.dunlap@citrix.com> References: <20171011175243.19871-1-george.dunlap@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e2LBg-0000Zv-4F for xen-devel@lists.xenproject.org; Wed, 11 Oct 2017 17:52:56 +0000 In-Reply-To: <20171011175243.19871-1-george.dunlap@citrix.com> 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: Ian Jackson , Wei Liu , George Dunlap , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org Q3VycmVudCBzdGFiaWxpdHkgbnVtYmVycyBhcmUgbm90IDEwMCUuICBJbiBvcmRlciB0byBoZWxw IHRyYWNrIHRoaXMKZG93biwgYWRkIGEgLS1yZXJ1biBvcHRpb24gd2hpY2ggd2lsbCBydW4gdGhl IHNhbWUgaW5wdXQgdHdpY2UsCnJlc2V0dGluZyB0aGUgc3RhdGUgYmV0d2VlbiBlYWNoIHJ1biwg YW5kIGNvbXBhcmluZyB0aGUgc3RhdGUKYWZ0ZXJ3YXJkcy4gIElmIHRoZSBzdGF0ZSBkaWZmZXJz LCBjYWxsIGFib3J0KCkuCgpUaGlzIGFsbG93cyBBRkwgdG8gaGVscCB0aGUgcHJvY2VzcyBvZiB0 cmFja2luZyBkb3duIHdoYXQgc3RhdGUgaXMgbm90CmJlaW5nIHJlc2V0IHByb3Blcmx5IGJldHdl ZW4gcnVucyBieSBwcm92aW5nIHRlc3RjYXNlcyB0aGF0CmRlbW9uc3RyYXRlIHRoZSBiZWhhdmlv ci4KClRvIGRvIHRoaXM6CgotIE1vdmUgY3R4dCBpbnRvIHN0cnVjdCBmdXp6LXN0YXRlIHRvIHNp bXBsaWZ5IGhhbmRsaW5nCgotIFJhdGhlciB0aGFuIGNvcHlpbmcgdGhlIGRhdGEgaW50byBpbnB1 dCwgdHJlYXQgdGhlIGRhdGEgaGFuZGVkIGFzCiAgaW1tdXRhYmxlIGFuZCBwb2ludCBlYWNoICJj b3B5IiB0byBpdAoKLSBGYWN0b3Igb3V0IHZhcmlvdXMgc3RlcHMgKHNldHRpbmcgdXAgZnV6eiBz dGF0ZSwgcnVubmluZyBhbgogIGluZGl2aWR1YWwgdGVzdCkgc28gdGhhdCB0aGV5IGNhbiBiZSBl ZmZpY2llbnRseSBydW4gZWl0aGVyIG9uY2Ugb3IKICB0d2ljZSAoYXMgbmVjZXNzYXJ5KQoKLSBD b21wYXJlIHRoZSBzdGF0ZXMgYWZ0ZXJ3YXJkcywgcHJpbnRpbmcgd2hhdCdzIGRpZmZlcmVudCBh bmQgY2FsbGluZwogIGFib3J0KCkgaWYgYW55dGhpbmcgaXMgZm91bmQuCgpTaWduZWQtb2ZmLWJ5 OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Ci0tLQp2NDoKLSBGaXgg c29tZSBzdHlsaXN0aWMgaXNzdWVzCi0gUmVuYW1lIFBJTkUgbWFjcm8gdG8gUFJJTlRfTkUKLSBS ZW1vdmUgdW5uZWNlc3NhcnkgcHJpbnRmCi0gRml4IHNpemVfdCBmb3JtYXQgc3RyaW5nCnYzOgot IE1ha2UgbmV3IGxvY2FsIGZ1bmN0aW9ucyBzdGF0aWMKLSBBdm9pZCBsb3NpbmcgY29uc3QtbmVz cyBvZiBwb2ludGVyIGluIHNldHVwX2Z1enpfc3RhdGUoKQotIFJlbW92ZSB1c2VsZXNzICpfc2l6 ZSBpbml0aWFsaXphdGlvbgotIFJlbW92ZSBleHRyYSBibGFuayBsaW5lCi0gVXNlIEFSUkFZX1NJ WkUoKSB3aGVuIGFwcHJvcHJpYXRlCi0gTW92ZSBvcHRfcmVydW4gZGVjbGFyYXRpb24gaW50byBm dXp6LWVtdWwuaAotIENoYW5nZSBsb29wIHZhcmlhYmxlIHRvIHVuc2lnbmVkIGludAotIFByaW50 IHNlZ21lbnQgY29udGVudHMgd2hlbiBzZWdtZW50cyBkaWZmZXIKdjI6Ci0gRml4IHNvbWUgY29k aW5nIHN0eWxlIGlzc3VlcwotIFBvcnQgb3ZlciBwcmV2aW91cyBjaGFuZ2VzCgpDQzogSWFuIEph Y2tzb24gPGlhbi5qYWNrc29uQGNpdHJpeC5jb20+CkNDOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRy aXguY29tPgpDQzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ0M6 IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB0b29scy9mdXp6L3g4Nl9pbnN0 cnVjdGlvbl9lbXVsYXRvci9hZmwtaGFybmVzcy5jIHwgICA4ICstCiB0b29scy9mdXp6L3g4Nl9p bnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYyAgIHwgMTg4ICsrKysrKysrKysrKysrKysr Ky0tLS0KIHRvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5oICAg fCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvYWZs LWhhcm5lc3MuYyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2FmbC1oYXJu ZXNzLmMKaW5kZXggMjNhNzdhNzNjMC4uMDQ4OTAzNDY0MiAxMDA2NDQKLS0tIGEvdG9vbHMvZnV6 ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvYWZsLWhhcm5lc3MuYworKysgYi90b29scy9mdXp6 L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9hZmwtaGFybmVzcy5jCkBAIC0yMywxMCArMjMsMTIg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICBlbnVtIHsKICAgICAg ICAgICAgIE9QVF9NSU5fU0laRSwKICAgICAgICAgICAgIE9QVF9DT01QQUNULAorICAgICAgICAg ICAgT1BUX1JFUlVOLAogICAgICAgICB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IG9w dGlvbiBsb3B0c1tdID0gewogICAgICAgICAgICAgeyAibWluLWlucHV0LXNpemUiLCBub19hcmd1 bWVudCwgTlVMTCwgT1BUX01JTl9TSVpFIH0sCiAgICAgICAgICAgICB7ICJjb21wYWN0IiwgcmVx dWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVF9DT01QQUNUIH0sCisgICAgICAgICAgICB7ICJyZXJ1 biIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRfUkVSVU4gfSwKICAgICAgICAgICAgIHsgMCwgMCwg MCwgMCB9CiAgICAgICAgIH07CiAgICAgICAgIGludCBjID0gZ2V0b3B0X2xvbmdfb25seShhcmdj LCBhcmd2LCAiIiwgbG9wdHMsIE5VTEwpOwpAQCAtNDUsOCArNDcsMTIgQEAgaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAgb3B0X2NvbXBhY3QgPSBhdG9pKG9wdGFy Zyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIE9QVF9S RVJVTjoKKyAgICAgICAgICAgIG9wdF9yZXJ1biA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK KwogICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgIHByaW50ZigiVXNhZ2U6ICVzIFstLWNv bXBhY3Q9MHwxXSAkRklMRSBbJEZJTEUuLi5dIHwgWy0tbWluLWlucHV0LXNpemVdXG4iLCBhcmd2 WzBdKTsKKyAgICAgICAgICAgIHByaW50ZigiVXNhZ2U6ICVzIFstLWNvbXBhY3Q9MHwxXSBbLS1y ZXJ1bl0gJEZJTEUgWyRGSUxFLi4uXSB8IFstLW1pbi1pbnB1dC1zaXplXVxuIiwgYXJndlswXSk7 CiAgICAgICAgICAgICBleGl0KC0xKTsKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQg YS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYyBiL3Rvb2xz L2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCmluZGV4IDNlYThhOGI3 MjYuLmYxNjIxZjk4ZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2Vt dWxhdG9yL2Z1enotZW11bC5jCisrKyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxh dG9yL2Z1enotZW11bC5jCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCBmdXp6X3N0YXRlCiAKICAg ICAvKiBFbXVsYXRpb24gb3BzLCBzb21lIG9mIHdoaWNoIGFyZSBkaXNhYmxlZCBiYXNlZCBvbiBv cHRpb25zLiAqLwogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgb3BzOworICAgIHN0cnVjdCB4 ODZfZW11bGF0ZV9jdHh0IGN0eHQ7CiB9OwogCiBib29sIG9wdF9jb21wYWN0ID0gdHJ1ZTsKQEAg LTQ5Myw2ICs0OTQsMTIgQEAgc3RhdGljIGludCBmdXp6X3JlYWRfbXNyKAogICAgIGNvbnN0IHN0 cnVjdCBmdXp6X3N0YXRlICpzID0gY3R4dC0+ZGF0YTsKICAgICB1bnNpZ25lZCBpbnQgaWR4Owog CisgICAgLyogCisgICAgICogTkIgYXQgdGhlIG1vbWVudCBkdW1wX3N0YXRlKCkgcmVsaWVzIG9u IHRoZSBmYWN0IHRoYXQgdGhpcworICAgICAqIGNhbm5vdCBmYWlsLiAgSWYgd2UgYWRkIGluIGZ1 enplZCBmYWlsdXJlcyB3ZSdsbCBoYXZlIHRvIGhhbmRsZQorICAgICAqIHRoYXQgZGlmZmVyZW50 bHkuCisgICAgICovCisgICAgCiAgICAgc3dpdGNoICggcmVnICkKICAgICB7CiAgICAgY2FzZSBN U1JfVFNDX0FVWDoKQEAgLTYxMyw2ICs2MjAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX3N0YXRlKHN0 cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogCiAgICAgcHJpbnRmKCIgcmlwOiAlIlBSSXg2 NCJcbiIsIHJlZ3MtPnJpcCk7CiAKKyAgICAvKiByZWFkX21zcigpIG5ldmVyIGZhaWxzIGF0IHRo ZSBtb21lbnQgKi8KICAgICBmdXp6X3JlYWRfbXNyKE1TUl9FRkVSLCAmdmFsLCBjdHh0KTsKICAg ICBwcmludGYoIkVGRVI6ICUiUFJJeDY0IlxuIiwgdmFsKTsKIH0KQEAgLTc4Nyw5ICs3OTUsOCBA QCBlbnVtIHsKICAgICAgICAgcHJpbnRmKCJEaXNhYmxpbmcgaG9vayAiI2giXG4iKTsgICAgICAg ICAgICAgICBcCiAgICAgfQogCi1zdGF0aWMgdm9pZCBkaXNhYmxlX2hvb2tzKHN0cnVjdCB4ODZf ZW11bGF0ZV9jdHh0ICpjdHh0KQorc3RhdGljIHZvaWQgZGlzYWJsZV9ob29rcyhzdHJ1Y3QgZnV6 el9zdGF0ZSAqcykKIHsKLSAgICBzdHJ1Y3QgZnV6el9zdGF0ZSAqcyA9IGN0eHQtPmRhdGE7CiAg ICAgdW5zaWduZWQgbG9uZyBiaXRtYXAgPSBzLT5vcHRpb25zOwogCiAgICAgLyogU2VlIGFsc28g c2FuaXRpemVfaW5wdXQsIHNvbWUgaG9va3MgY2FuJ3QgYmUgZGlzYWJsZWQuICovCkBAIC04Mzcs NyArODQ0LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJsZV9ob29rcyhzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCkKICAqICAtIC4uLmJhc2VzIHRvIGJlbG93IDFNYiwgMTYtYnl0ZSBhbGlnbmVk CiAgKiAgLSAuLi5zZWxlY3RvcnMgdG8gKGJhc2UgPj4gNCkKICAqLwotc3RhdGljIHZvaWQgc2Fu aXRpemVfaW5wdXQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCitzdGF0aWMgdm9pZCBz YW5pdGl6ZV9zdGF0ZShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKICAgICBzdHJ1 Y3QgZnV6el9zdGF0ZSAqcyA9IGN0eHQtPmRhdGE7CiAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3Mg KnJlZ3MgPSBjdHh0LT5yZWdzOwpAQCAtODg0LDIwICs4OTEsMTQ2IEBAIGludCBMTFZNRnV6emVy SW5pdGlhbGl6ZShpbnQgKmFyZ2MsIGNoYXIgKioqYXJndikKICAgICByZXR1cm4gMDsKIH0KIAot aW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9wLCBzaXplX3Qg c2l6ZSkKK3N0YXRpYyB2b2lkIHNldHVwX2Z1enpfc3RhdGUoc3RydWN0IGZ1enpfc3RhdGUgKnN0 YXRlLCBjb25zdCB2b2lkICpkYXRhX3AsIHNpemVfdCBzaXplKQogewotICAgIHN0cnVjdCBmdXp6 X3N0YXRlIHN0YXRlID0gewotICAgICAgICAub3BzID0gYWxsX2Z1enplcl9vcHMsCi0gICAgfTsK LSAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCBjdHh0ID0gewotICAgICAgICAuZGF0YSA9ICZz dGF0ZSwKLSAgICAgICAgLnJlZ3MgPSAmc3RhdGUucmVncywKLSAgICAgICAgLmFkZHJfc2l6ZSA9 IDggKiBzaXplb2Yodm9pZCAqKSwKLSAgICAgICAgLnNwX3NpemUgPSA4ICogc2l6ZW9mKHZvaWQg KiksCi0gICAgfTsKKyAgICBtZW1zZXQoc3RhdGUsIDAsIHNpemVvZigqc3RhdGUpKTsKKyAgICBz dGF0ZS0+Y29ycHVzID0gZGF0YV9wOworICAgIHN0YXRlLT5kYXRhX251bSA9IHNpemU7Cit9CisK K3N0YXRpYyBpbnQgcnVudGVzdChzdHJ1Y3QgZnV6el9zdGF0ZSAqc3RhdGUpIHsKICAgICBpbnQg cmM7CiAKLSAgICBpZiAoIHNpemUgPD0gZnV6el9taW5pbWFsX2lucHV0X3NpemUoKSApCisgICAg c3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQgPSAmc3RhdGUtPmN0eHQ7CisgICAgCisgICAg c3RhdGUtPm9wcyA9IGFsbF9mdXp6ZXJfb3BzOworCisgICAgY3R4dC0+ZGF0YSA9IHN0YXRlOwor ICAgIGN0eHQtPnJlZ3MgPSAmc3RhdGUtPnJlZ3M7CisKKyAgICBzZXR1cF9zdGF0ZShjdHh0KTsK KworICAgIHNhbml0aXplX3N0YXRlKGN0eHQpOworCisgICAgZGlzYWJsZV9ob29rcyhzdGF0ZSk7 CisKKyAgICBkbyB7CisgICAgICAgIC8qIEZJWE1FOiBVbnRpbCB3ZSBhY3R1YWxseSBpbXBsZW1l bnQgU0lHRlBFIGhhbmRsaW5nIHByb3Blcmx5ICovCisgICAgICAgIHNldHVwX2ZwdV9leGNlcHRp b25faGFuZGxlcigpOworCisgICAgICAgIHNldF9zaXplcyhjdHh0KTsKKyAgICAgICAgZHVtcF9z dGF0ZShjdHh0KTsKKworICAgICAgICByYyA9IHg4Nl9lbXVsYXRlKGN0eHQsICZzdGF0ZS0+b3Bz KTsKKyAgICAgICAgcHJpbnRmKCJFbXVsYXRpb24gcmVzdWx0OiAlZFxuIiwgcmMpOworICAgIH0g d2hpbGUgKCByYyA9PSBYODZFTVVMX09LQVkgKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0 aWMgdm9pZCBjb21wYXJlX3N0YXRlcyhzdHJ1Y3QgZnV6el9zdGF0ZSBzdGF0ZVsyXSkKK3sKKyAg ICAvKiBGaXJzdCB6ZXJvIGFueSAiaW50ZXJuYWwiIHBvaW50ZXJzICovCisgICAgc3RhdGVbMF0u Y29ycHVzID0gc3RhdGVbMV0uY29ycHVzID0gTlVMTDsKKyAgICBzdGF0ZVswXS5jdHh0LmRhdGEg PSBzdGF0ZVsxXS5jdHh0LmRhdGEgPSBOVUxMOworICAgIHN0YXRlWzBdLmN0eHQucmVncyA9IHN0 YXRlWzFdLmN0eHQucmVncyA9IE5VTEw7CisKKyAgICBpZiAoIG1lbWNtcCgmc3RhdGVbMF0sICZz dGF0ZVsxXSwgc2l6ZW9mKHN0cnVjdCBmdXp6X3N0YXRlKSkgKQorICAgIHsKKyAgICAgICAgdW5z aWduZWQgaW50IGk7CisKKyAgICAgICAgcHJpbnRmKCJTdGF0ZSBtaXNtYXRjaFxuIik7CisKKyAg ICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN0YXRlWzBdLmNyKTsgaSsrICkKKyAg ICAgICAgICAgIGlmICggc3RhdGVbMF0uY3JbaV0gIT0gc3RhdGVbMV0uY3JbaV0gKQorICAgICAg ICAgICAgICAgIHByaW50ZigiY3JbJXVdOiAlbHggIT0gJWx4XG4iLAorICAgICAgICAgICAgICAg ICAgICAgICBpLCBzdGF0ZVswXS5jcltpXSwgc3RhdGVbMV0uY3JbaV0pOworICAgICAgICAKKyAg ICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN0YXRlWzBdLm1zcik7IGkrKyApCisg ICAgICAgICAgICBpZiAoIHN0YXRlWzBdLm1zcltpXSAhPSBzdGF0ZVsxXS5tc3JbaV0gKQorICAg ICAgICAgICAgICAgIHByaW50ZigibXNyWyV1XTogJWx4ICE9ICVseFxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgaSwgc3RhdGVbMF0ubXNyW2ldLCBzdGF0ZVsxXS5tc3JbaV0pOworICAgICAg ICAKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN0YXRlWzBdLnNlZ21lbnRz KTsgaSsrICkKKyAgICAgICAgICAgIGlmICggbWVtY21wKCZzdGF0ZVswXS5zZWdtZW50c1tpXSwg JnN0YXRlWzFdLnNlZ21lbnRzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0 YXRlWzBdLnNlZ21lbnRzWzBdKSkgKQorICAgICAgICAgICAgICAgIHByaW50Zigic2VnbWVudHNb JXVdOiBbJXg6JXg6JXg6JWx4XSAhPSBbJXg6JXg6JXg6JWx4XSFcbiIsIGksCisgICAgICAgICAg ICAgICAgICAgICAgICh1bnNpZ25lZClzdGF0ZVswXS5zZWdtZW50c1tpXS5zZWwsCisgICAgICAg ICAgICAgICAgICAgICAgICh1bnNpZ25lZClzdGF0ZVswXS5zZWdtZW50c1tpXS5hdHRyLAorICAg ICAgICAgICAgICAgICAgICAgICBzdGF0ZVswXS5zZWdtZW50c1tpXS5saW1pdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgc3RhdGVbMF0uc2VnbWVudHNbaV0uYmFzZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgKHVuc2lnbmVkKXN0YXRlWzFdLnNlZ21lbnRzW2ldLnNlbCwKKyAgICAgICAgICAg ICAgICAgICAgICAgKHVuc2lnbmVkKXN0YXRlWzFdLnNlZ21lbnRzW2ldLmF0dHIsCisgICAgICAg ICAgICAgICAgICAgICAgIHN0YXRlWzFdLnNlZ21lbnRzW2ldLmxpbWl0LAorICAgICAgICAgICAg ICAgICAgICAgICBzdGF0ZVsxXS5zZWdtZW50c1tpXS5iYXNlKTsKKworICAgICAgICBpZiAoIHN0 YXRlWzBdLmRhdGFfbnVtICE9IHN0YXRlWzFdLmRhdGFfbnVtICkKKyAgICAgICAgICAgIHByaW50 ZigiZGF0YV9udW06ICVseCAhPSAgJWx4XG4iLCBzdGF0ZVswXS5kYXRhX251bSwKKyAgICAgICAg ICAgICAgICAgICBzdGF0ZVsxXS5kYXRhX251bSk7CisgICAgICAgIGlmICggc3RhdGVbMF0uZGF0 YV9pbmRleCAhPSBzdGF0ZVsxXS5kYXRhX2luZGV4ICkKKyAgICAgICAgICAgIHByaW50ZigiZGF0 YV9pbmRleDogJWx4ICE9ICAlbHhcbiIsIHN0YXRlWzBdLmRhdGFfaW5kZXgsCisgICAgICAgICAg ICAgICAgICAgc3RhdGVbMV0uZGF0YV9pbmRleCk7CisKKyAgICAgICAgaWYgKCBtZW1jbXAoJnN0 YXRlWzBdLnJlZ3MsICZzdGF0ZVsxXS5yZWdzLCBzaXplb2Yoc3RhdGVbMF0ucmVncykpICkKKyAg ICAgICAgeworICAgICAgICAgICAgcHJpbnRmKCJyZWdpc3RlcnMgZGlmZmVyIVxuIik7CisgICAg ICAgICAgICAvKiBQcmludCBJZiBOb3QgRXF1YWwgKi8KKyNkZWZpbmUgUFJJTlRfTkUoZWxlbSlc CisgICAgICAgICAgICBpZiAoIHN0YXRlWzBdLmVsZW0gIT0gc3RhdGVbMV0uZWxlbSApIFwKKyAg ICAgICAgICAgICAgICBwcmludGYoI2VsZW0gIiBkaWZmZXI6ICVseCAhPSAlbHhcbiIsIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpc3RhdGVbMF0uZWxlbSwgXAorICAg ICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylzdGF0ZVsxXS5lbGVtKQorICAgICAg ICAgICAgUFJJTlRfTkUocmVncy5yMTUpOworICAgICAgICAgICAgUFJJTlRfTkUocmVncy5yMTQp OworICAgICAgICAgICAgUFJJTlRfTkUocmVncy5yMTMpOworICAgICAgICAgICAgUFJJTlRfTkUo cmVncy5yMTIpOworICAgICAgICAgICAgUFJJTlRfTkUocmVncy5yYnApOworICAgICAgICAgICAg UFJJTlRfTkUocmVncy5yYngpOworICAgICAgICAgICAgUFJJTlRfTkUocmVncy5yMTApOworICAg ICAgICAgICAgUFJJTlRfTkUocmVncy5yMTEpOworICAgICAgICAgICAgUFJJTlRfTkUocmVncy5y OSk7CisgICAgICAgICAgICBQUklOVF9ORShyZWdzLnI4KTsKKyAgICAgICAgICAgIFBSSU5UX05F KHJlZ3MucmF4KTsKKyAgICAgICAgICAgIFBSSU5UX05FKHJlZ3MucmN4KTsKKyAgICAgICAgICAg IFBSSU5UX05FKHJlZ3MucmR4KTsKKyAgICAgICAgICAgIFBSSU5UX05FKHJlZ3MucnNpKTsKKyAg ICAgICAgICAgIFBSSU5UX05FKHJlZ3MucmRpKTsKKworICAgICAgICAgICAgZm9yICggaSA9IG9m ZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCBlcnJvcl9jb2RlKSAvIHNpemVvZih1bnNpZ25l ZCk7CisgICAgICAgICAgICAgICAgICBpIDwgc2l6ZW9mKHN0YXRlWzFdLnJlZ3MpL3NpemVvZih1 bnNpZ25lZCk7IGkrKyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJb JTA0enVdICUwOHggJTA4eFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKiBzaXplb2Yo dW5zaWduZWQpLCAoKHVuc2lnbmVkICopJnN0YXRlWzBdLnJlZ3MpW2ldLAorICAgICAgICAgICAg ICAgICAgICAgICAoKHVuc2lnbmVkICopJnN0YXRlWzFdLnJlZ3MpW2ldKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggbWVtY21wKCZzdGF0ZVswXS5vcHMsICZzdGF0 ZVsxXS5vcHMsIHNpemVvZihzdGF0ZVswXS5vcHMpKSApCisgICAgICAgICAgICBwcmludGYoIm9w cyBkaWZmZXIhXG4iKTsKKworICAgICAgICBpZiAoIG1lbWNtcCgmc3RhdGVbMF0uY3R4dCwgJnN0 YXRlWzFdLmN0eHQsIHNpemVvZihzdGF0ZVswXS5jdHh0KSkgKQorICAgICAgICB7CisgICAgICAg ICAgICBwcmludGYoImN0eHQgZGlmZmVycyFcbiIpOworICAgICAgICAgICAgZm9yICggaSA9IDA7 ICBpIDwgc2l6ZW9mKHN0YXRlWzBdLmN0eHQpL3NpemVvZih1bnNpZ25lZCk7IGkrKyApCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJbJTA0bHVdICUwOHggJTA4eFxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIGkgKiBzaXplb2YodW5zaWduZWQpLCAoKHVuc2lnbmVk ICopJnN0YXRlWzBdLmN0eHQpW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVk ICopJnN0YXRlWzFdLmN0eHQpW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg ICAgICB9CisKKyAgICAgICAgYWJvcnQoKTsKKyAgICB9Cit9CisKK2Jvb2wgb3B0X3JlcnVuID0g ZmFsc2U7CisKK2ludCBMTFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGFf cCwgc2l6ZV90IHNpemUpCit7CisgICAgc3RydWN0IGZ1enpfc3RhdGUgc3RhdGVbMl07CisKKyAg ICBpZiAoIHNpemUgPCBmdXp6X21pbmltYWxfaW5wdXRfc2l6ZSgpICkKICAgICB7CiAgICAgICAg IHByaW50ZigiSW5wdXQgdG9vIHNtYWxsXG4iKTsKICAgICAgICAgcmV0dXJuIDE7CkBAIC05MDks MjUgKzEwNDIsMjQgQEAgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAq ZGF0YV9wLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgc3Rh dGUuY29ycHVzID0gKHZvaWQqKWRhdGFfcDsKLSAgICBzdGF0ZS5kYXRhX251bSA9IHNpemU7Ci0K LSAgICBzZXR1cF9zdGF0ZSgmY3R4dCk7CisgICAgc2V0dXBfZnV6el9zdGF0ZSgmc3RhdGVbMF0s IGRhdGFfcCwgc2l6ZSk7CisgICAgCisgICAgaWYgKCBvcHRfcmVydW4gKQorICAgICAgICBwcmlu dGYoInx8fCBJTklUSUFMIFJVTiB8fHxcbiIpOworICAgIAorICAgIHJ1bnRlc3QoJnN0YXRlWzBd KTsKIAotICAgIHNhbml0aXplX2lucHV0KCZjdHh0KTsKKyAgICBpZiAoICFvcHRfcmVydW4gKQor ICAgICAgICByZXR1cm4gMDsKIAotICAgIGRpc2FibGVfaG9va3MoJmN0eHQpOworICAgIC8qIFJl c2V0IGFsbCBnbG9iYWwgc3RhdGUgdmFyaWFibGVzIGFnYWluICovCisgICAgc2V0dXBfZnV6el9z dGF0ZSgmc3RhdGVbMV0sIGRhdGFfcCwgc2l6ZSk7CiAKLSAgICBkbyB7Ci0gICAgICAgIC8qIEZJ WE1FOiBVbnRpbCB3ZSBhY3R1YWxseSBpbXBsZW1lbnQgU0lHRlBFIGhhbmRsaW5nIHByb3Blcmx5 ICovCi0gICAgICAgIHNldHVwX2ZwdV9leGNlcHRpb25faGFuZGxlcigpOworICAgIHByaW50Zigi fHx8IFNFQ09ORCBSVU4gfHx8XG4iKTsKIAotICAgICAgICBzZXRfc2l6ZXMoJmN0eHQpOwotICAg ICAgICBkdW1wX3N0YXRlKCZjdHh0KTsKKyAgICBydW50ZXN0KCZzdGF0ZVsxXSk7CiAKLSAgICAg ICAgcmMgPSB4ODZfZW11bGF0ZSgmY3R4dCwgJnN0YXRlLm9wcyk7Ci0gICAgICAgIHByaW50Zigi RW11bGF0aW9uIHJlc3VsdDogJWRcbiIsIHJjKTsKLSAgICB9IHdoaWxlICggcmMgPT0gWDg2RU1V TF9PS0FZICk7CisgICAgY29tcGFyZV9zdGF0ZXMoc3RhdGUpOwogCiAgICAgcmV0dXJuIDA7CiB9 CmRpZmYgLS1naXQgYS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVt dWwuaCBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5oCmlu ZGV4IDg1ZDIxY2JmMGYuLjQ4NjNiZjIxNjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Z1enoveDg2X2lu c3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5oCisrKyBiL3Rvb2xzL2Z1enoveDg2X2luc3Ry dWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5oCkBAIC02LDYgKzYsNyBAQCBleHRlcm4gaW50IExM Vk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9wLCBzaXplX3Qgc2l6ZSk7 CiBleHRlcm4gdW5zaWduZWQgaW50IGZ1enpfbWluaW1hbF9pbnB1dF9zaXplKHZvaWQpOwogCiBl eHRlcm4gYm9vbCBvcHRfY29tcGFjdDsKK2V4dGVybiBib29sIG9wdF9yZXJ1bjsKIAogI2RlZmlu ZSBJTlBVVF9TSVpFICA0MDk2CiAKLS0gCjIuMTQuMgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=