From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH v2 01/13] x86emul/fuzz: add rudimentary limit checking Date: Mon, 25 Sep 2017 15:26:36 +0100 Message-ID: <20170925142648.25959-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dwUM9-000429-JB for xen-devel@lists.xenproject.org; Mon, 25 Sep 2017 14:27:33 +0000 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 , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgoKZnV6el9pbnNuX2ZldGNoKCkg aXMgdGhlIG9ubHkgZGF0YSBhY2Nlc3MgaGVscGVyIHdoZXJlIGl0IGlzIHBvc3NpYmxlCnRvIHNl ZSBvZmZzZXRzIGxhcmdlciB0aGFuIDRHYiBpbiAxNi0gb3IgMzItYml0IG1vZGVzLCBhcyB3ZSBs ZWF2ZSB0aGUKaW5jb21pbmcgcklQIHVudG91Y2hlZCBpbiB0aGUgZW11bGF0b3IgaXRzZWxmLiBU aGUgY2hlY2sgaXMgbmVlZGVkIGhlcmUKYXMgb3RoZXJ3aXNlLCBhZnRlciBzdWNjZXNzZnVsbHkg ZmV0Y2hpbmcgaW5zbiBieXRlcywgd2UgbWF5IGVuZCB1cAp6ZXJvLWV4dGVuZGluZyBFSVAgc29v biBhZnRlciBjb21wbGV0ZV9pbnNuLCB3aGljaCBjb2xsaWRlcyB3aXRoIHRoZQpYODZFTVVMX0VY Q0VQVElPTi1jb25kaXRpb25hbCByZXNwZWN0aXZlIEFTU0VSVCgpIGluCng4Nl9lbXVsYXRlX3dy YXBwZXIoKS4gKE5COiBwdXRfcmVwX3ByZWZpeCgpIGlzIHdoYXQgYWxsb3dzCmNvbXBsZXRlX2lu c24gdG8gYmUgcmVhY2hlZCB3aXRoIHJjIHNldCB0byBvdGhlciB0aGFuIFg4NkVNVUxfT0tBWSBv cgpYODZFTVVMX0RPTkUuIFNlZSBhbHNvIGNvbW1pdCA1M2Y4N2MwM2I0IFsieDg2ZW11bDogZ2Vu ZXJhbGl6ZQpleGNlcHRpb24gaGFuZGxpbmcgZm9yIHJlcF8qIGhvb2tzIl0uKQoKQWRkIGFzc2Vy dCgpLXMgZm9yIGFsbCBvdGhlciAoZGF0YSkgYWNjZXNzIHJvdXRpbmVzLCBhcyBlZmZlY3RpdmUK YWRkcmVzcyBnZW5lcmF0aW9uIGluIHRoZSBlbXVsYXRvciBvdWdodCB0byBndWFyYW50ZWUgaW4t cmFuZ2UgdmFsdWVzLgpGb3IgdGhlbSB0byBub3QgdHJpZ2dlciwgc2V2ZXJhbCBhZGp1c3RtZW50 cyB0byB0aGUgZW11bGF0b3IncyBhZGRyZXNzCmNhbGN1bGF0aW9ucyBhcmUgbmVlZGVkOiBXaGls ZSBmb3IgRHN0Qml0QmFzZSBpdCBpcyByZWFsbHkgbWFuZGF0b3J5LAp0aGUgc3BlY2lmaWNhdGlv biBhbGxvd3MgZm9yIGVpdGhlciBiZWhhdmlvciBmb3IgdHdvLXBhcnQgYWNjZXNzZXMuCk9ic2Vy dmVkIGJlaGF2aW9yIG9uIHJlYWwgaGFyZHdhcmUsIGhvd2V2ZXIsIGlzIGZvciBzdWNoIGFjY2Vz c2VzIHRvCnNpbGVudGx5IHdyYXAgYXQgdGhlIDJeXjMyIGJvdW5kYXJ5IGluIG90aGVyIHRoYW4g NjQtYml0IG1vZGUsIGp1c3QKbGlrZSB0aGV5IGRvIGF0IHRoZSAyXl42NCBib3VuZGFyeSBpbiA2 NC1iaXQgbW9kZS4gV2hpbGUgYWRkaW5nCnRydW5jYXRlX2VhKCkgaW52b2NhdGlvbnMgdGhlcmUs IGFsc28gY29udmVydCBvcGVuIGNvZGVkIGluc3RhbmNlcyBvZgppdC4KClJlcG9ydGVkLWJ5OiBH ZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCkNDOiBJYW4gSmFja3NvbiA8aWFuLmph Y2tzb25AY2l0cml4LmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBB bmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDQzogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHRvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxh dG9yL2Z1enotZW11bC5jIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKy0tLQogeGVuL2FyY2gv eDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgICAgICAgICAgfCAyMiArKysrKysrKystLS0t LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVt dWwuYyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCmlu ZGV4IGEyMzI5Zjg0YTUuLjEwNTE0NWU5ZjkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Z1enoveDg2X2lu c3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCisrKyBiL3Rvb2xzL2Z1enoveDg2X2luc3Ry dWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCkBAIC0xMzksNyArMTM5LDE4IEBAIHN0YXRpYyBp bnQgZnV6el9yZWFkKAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewogICAg IC8qIFJlYWRzIGV4cGVjdGVkIGZvciBhbGwgdXNlciBhbmQgc3lzdGVtIHNlZ21lbnRzLiAqLwot ICAgIGFzc2VydChpc194ODZfdXNlcl9zZWdtZW50KHNlZykgfHwgaXNfeDg2X3N5c3RlbV9zZWdt ZW50KHNlZykpOworICAgIGlmICggaXNfeDg2X3VzZXJfc2VnbWVudChzZWcpICkKKyAgICAgICAg YXNzZXJ0KGN0eHQtPmFkZHJfc2l6ZSA9PSA2NCB8fCAhKG9mZnNldCA+PiAzMikpOworICAgIGVs c2UgaWYgKCBzZWcgPT0geDg2X3NlZ190ciApCisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSBU U1MgaXMgc3BlY2lhbCBpbiB0aGF0IGFjY2Vzc2VzIGJlbG93IHRoZSBzZWdtZW50IGJhc2UgYXJl CisgICAgICAgICAqIHBvc3NpYmxlLCBhcyB0aGUgSW50ZXJydXB0IFJlZGlyZWN0aW9uIEJpdG1h cCBzdGFydHMgMzIgYnl0ZXMKKyAgICAgICAgICogYWhlYWQgb2YgdGhlIEkvTyBCaXRtYXAsIHJl Z2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIHRoZSBsYXR0ZXIuCisgICAgICAgICAqLworICAgICAg ICBhc3NlcnQoKGxvbmcpb2Zmc2V0IDwgMCA/IChsb25nKW9mZnNldCA+IC0zMiA6ICEob2Zmc2V0 ID4+IDE3KSk7CisgICAgZWxzZQorICAgICAgICBhc3NlcnQoaXNfeDg2X3N5c3RlbV9zZWdtZW50 KHNlZykgJiYKKyAgICAgICAgICAgICAgIChjdHh0LT5sbWEgPyBvZmZzZXQgPD0gMHgxMDAwNyA6 ICEob2Zmc2V0ID4+IDE2KSkpOwogCiAgICAgcmV0dXJuIGRhdGFfcmVhZChjdHh0LCBzZWcsICJy ZWFkIiwgcF9kYXRhLCBieXRlcyk7CiB9CkBAIC0xNjIsNiArMTczLDEzIEBAIHN0YXRpYyBpbnQg ZnV6el9pbnNuX2ZldGNoKAogewogICAgIGFzc2VydChzZWcgPT0geDg2X3NlZ19jcyk7CiAKKyAg ICAvKiBNaW5pbWFsIHNlZ21lbnQgbGltaXQgY2hlY2tpbmcsIHVudGlsIGZ1bGwgb25lIGlzIGJl aW5nIHB1dCBpbiBwbGFjZS4gKi8KKyAgICBpZiAoIGN0eHQtPmFkZHJfc2l6ZSA8IDY0ICYmIChv ZmZzZXQgPj4gMzIpICkKKyAgICB7CisgICAgICAgIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbigxMywg MCwgY3R4dCk7CisgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKyAgICB9CisKICAg ICAvKgogICAgICAqIFplcm8tbGVuZ3RoIGluc3RydWN0aW9uIGZldGNoZXMgYXJlIG1hZGUgYXQg dGhlIGRlc3RpbmF0aW9uIG9mIGp1bXBzLAogICAgICAqIHRvIHBlcmZvcm0gc2VnbWVudGF0aW9u IGNoZWNrcy4gIE5vIGRhdGEgbmVlZHMgcmV0dXJuaW5nLgpAQCAtMjMyLDYgKzI1MCw3IEBAIHN0 YXRpYyBpbnQgZnV6el9yZXBfaW5zKAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0 KQogewogICAgIGFzc2VydChkc3Rfc2VnID09IHg4Nl9zZWdfZXMpOworICAgIGFzc2VydChjdHh0 LT5hZGRyX3NpemUgPT0gNjQgfHwgIShkc3Rfb2Zmc2V0ID4+IDMyKSk7CiAKICAgICByZXR1cm4g X2Z1enpfcmVwX3JlYWQoY3R4dCwgInJlcF9pbnMiLCByZXBzKTsKIH0KQEAgLTI0Nyw2ICsyNjYs NyBAQCBzdGF0aWMgaW50IGZ1enpfcmVwX21vdnMoCiB7CiAgICAgYXNzZXJ0KGlzX3g4Nl91c2Vy X3NlZ21lbnQoc3JjX3NlZykpOwogICAgIGFzc2VydChkc3Rfc2VnID09IHg4Nl9zZWdfZXMpOwor ICAgIGFzc2VydChjdHh0LT5hZGRyX3NpemUgPT0gNjQgfHwgISgoc3JjX29mZnNldCB8IGRzdF9v ZmZzZXQpID4+IDMyKSk7CiAKICAgICByZXR1cm4gX2Z1enpfcmVwX3JlYWQoY3R4dCwgInJlcF9t b3ZzIiwgcmVwcyk7CiB9CkBAIC0yNjAsNiArMjgwLDcgQEAgc3RhdGljIGludCBmdXp6X3JlcF9v dXRzKAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewogICAgIGFzc2VydChp c194ODZfdXNlcl9zZWdtZW50KHNyY19zZWcpKTsKKyAgICBhc3NlcnQoY3R4dC0+YWRkcl9zaXpl ID09IDY0IHx8ICEoc3JjX29mZnNldCA+PiAzMikpOwogCiAgICAgcmV0dXJuIF9mdXp6X3JlcF93 cml0ZShjdHh0LCAicmVwX291dHMiLCByZXBzKTsKIH0KQEAgLTI3Nyw2ICsyOTgsNyBAQCBzdGF0 aWMgaW50IGZ1enpfcmVwX3N0b3MoCiAgICAgICogZm9yIENMWkVSTy4KICAgICAgKi8KICAgICBh c3NlcnQoaXNfeDg2X3VzZXJfc2VnbWVudChzZWcpKTsKKyAgICBhc3NlcnQoY3R4dC0+YWRkcl9z aXplID09IDY0IHx8ICEob2Zmc2V0ID4+IDMyKSk7CiAKICAgICByZXR1cm4gX2Z1enpfcmVwX3dy aXRlKGN0eHQsICJyZXBfc3RvcyIsIHJlcHMpOwogfQpAQCAtMjkwLDYgKzMxMiw3IEBAIHN0YXRp YyBpbnQgZnV6el93cml0ZSgKIHsKICAgICAvKiBXcml0ZXMgbm90IGV4cGVjdGVkIGZvciBhbnkg c3lzdGVtIHNlZ21lbnRzLiAqLwogICAgIGFzc2VydChpc194ODZfdXNlcl9zZWdtZW50KHNlZykp OworICAgIGFzc2VydChjdHh0LT5hZGRyX3NpemUgPT0gNjQgfHwgIShvZmZzZXQgPj4gMzIpKTsK IAogICAgIHJldHVybiBtYXliZV9mYWlsKGN0eHQsICJ3cml0ZSIsIHRydWUpOwogfQpAQCAtMzA2 LDggKzMyOSwxMCBAQCBzdGF0aWMgaW50IGZ1enpfY21weGNoZygKICAgICAgKiBDbXB4Y2hnIGV4 cGVjdGVkIGZvciB1c2VyIHNlZ21lbnRzLCBhbmQgc2V0dGluZyBhY2Nlc3NlZC9idXN5IGJpdHMg aW4KICAgICAgKiBHRFQvTERUIGVudGllcywgYnV0IG5vdCBleHBlY3RlZCBmb3IgYW55IElEVCBv ciBUUiBhY2Nlc3Nlcy4KICAgICAgKi8KLSAgICBhc3NlcnQoaXNfeDg2X3VzZXJfc2VnbWVudChz ZWcpIHx8Ci0gICAgICAgICAgIHNlZyA9PSB4ODZfc2VnX2dkdHIgfHwgc2VnID09IHg4Nl9zZWdf bGR0cik7CisgICAgaWYgKCBpc194ODZfdXNlcl9zZWdtZW50KHNlZykgKQorICAgICAgICBhc3Nl cnQoY3R4dC0+YWRkcl9zaXplID09IDY0IHx8ICEob2Zmc2V0ID4+IDMyKSk7CisgICAgZWxzZQor ICAgICAgICBhc3NlcnQoKHNlZyA9PSB4ODZfc2VnX2dkdHIgfHwgc2VnID09IHg4Nl9zZWdfbGR0 cikgJiYgIShvZmZzZXQgPj4gMTYpKTsKIAogICAgIHJldHVybiBtYXliZV9mYWlsKGN0eHQsICJj bXB4Y2hnIiwgdHJ1ZSk7CiB9CkBAIC0zMTksNiArMzQ0LDcgQEAgc3RhdGljIGludCBmdXp6X2lu dmxwZygKIHsKICAgICAvKiBpbnZscGcoKSwgdW5saWtlIGFsbCBvdGhlciBob29rcywgbWF5IGJl IGNhbGxlZCB3aXRoIHg4Nl9zZWdfbm9uZS4gKi8KICAgICBhc3NlcnQoaXNfeDg2X3VzZXJfc2Vn bWVudChzZWcpIHx8IHNlZyA9PSB4ODZfc2VnX25vbmUpOworICAgIGFzc2VydChjdHh0LT5hZGRy X3NpemUgPT0gNjQgfHwgIShvZmZzZXQgPj4gMzIpKTsKIAogICAgIHJldHVybiBtYXliZV9mYWls KGN0eHQsICJpbnZscGciLCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2 X2VtdWxhdGUveDg2X2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11 bGF0ZS5jCmluZGV4IGMxZTIzMDBiMzkuLjMxZGY1YWViOTcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHN0YXRpYyB2b2lkIF9f cHV0X3JlcF9wcmVmaXgoCiAKIC8qIENsaXAgbWF4aW11bSByZXBldGl0aW9ucyBzbyB0aGF0IHRo ZSBpbmRleCByZWdpc3RlciBhdCBtb3N0IGp1c3Qgd3JhcHMuICovCiAjZGVmaW5lIHRydW5jYXRl X2VhX2FuZF9yZXBzKGVhLCByZXBzLCBieXRlc19wZXJfcmVwKSAoeyAgICAgICAgICAgICAgICAg IFwKLSAgICB1bnNpZ25lZCBsb25nIHRvZG9fXywgZWFfXyA9IHRydW5jYXRlX3dvcmQoZWEsIGFk X2J5dGVzKTsgICAgICAgICAgICAgXAorICAgIHVuc2lnbmVkIGxvbmcgdG9kb19fLCBlYV9fID0g dHJ1bmNhdGVfZWEoZWEpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKCAhKF9y ZWdzLmVmbGFncyAmIFg4Nl9FRkxBR1NfREYpICkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgdG9kb19fID0gdHJ1bmNhdGVfd29yZCgtKGVhKSwgYWRfYnl0ZXMpIC8g KGJ5dGVzX3Blcl9yZXApOyAgICAgICAgXAotICAgIGVsc2UgaWYgKCB0cnVuY2F0ZV93b3JkKChl YSkgKyAoYnl0ZXNfcGVyX3JlcCkgLSAxLCBhZF9ieXRlcykgPCBlYV9fIClcCisgICAgICAgIHRv ZG9fXyA9IHRydW5jYXRlX2VhKC1lYV9fKSAvIChieXRlc19wZXJfcmVwKTsgICAgICAgICAgICAg ICAgICAgIFwKKyAgICBlbHNlIGlmICggdHJ1bmNhdGVfZWEoZWFfXyArIChieXRlc19wZXJfcmVw KSAtIDEpIDwgZWFfXyApICAgICAgICAgICAgXAogICAgICAgICB0b2RvX18gPSAxOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZWxz ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICAgICAgdG9kb19fID0gZWFfXyAvIChieXRlc19wZXJfcmVwKSArIDE7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzEzNiw2ICszMTM2LDcgQEAgeDg2 X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgICAgIG9wX2J5dGVzICsgKCgoLXNyYy52YWwgLSAx KSA+PiAzKSAmIH4ob3BfYnl0ZXMgLSAxTCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgIGVhLm1lbS5vZmYgKz0gKHNyYy52YWwgPj4gMykgJiB+KG9wX2J5dGVzIC0gMUwpOwor ICAgICAgICAgICAgZWEubWVtLm9mZiA9IHRydW5jYXRlX2VhKGVhLm1lbS5vZmYpOwogICAgICAg ICB9CiAKICAgICAgICAgLyogQml0IGluZGV4IGFsd2F5cyB0cnVuY2F0ZWQgdG8gd2l0aGluIHJh bmdlLiAqLwpAQCAtMzM1NCw3ICszMzU1LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIHVuc2ln bmVkIGxvbmcgc3JjX3ZhbDI7CiAgICAgICAgIGludCBsYiwgdWIsIGlkeDsKICAgICAgICAgZ2Vu ZXJhdGVfZXhjZXB0aW9uX2lmKHNyYy50eXBlICE9IE9QX01FTSwgRVhDX1VEKTsKLSAgICAgICAg aWYgKCAocmMgPSByZWFkX3Vsb25nKHNyYy5tZW0uc2VnLCBzcmMubWVtLm9mZiArIG9wX2J5dGVz LAorICAgICAgICBpZiAoIChyYyA9IHJlYWRfdWxvbmcoc3JjLm1lbS5zZWcsIHRydW5jYXRlX2Vh KHNyYy5tZW0ub2ZmICsgb3BfYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnNyY192YWwyLCBvcF9ieXRlcywgY3R4dCwgb3BzKSkgKQogICAgICAgICAgICAgZ290byBkb25l OwogICAgICAgICB1YiAgPSAob3BfYnl0ZXMgPT0gMikgPyAoaW50MTZfdClzcmNfdmFsMiA6IChp bnQzMl90KXNyY192YWwyOwpAQCAtMzkwNSw3ICszOTA2LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAg ICAgIHNlZyA9IChiICYgMSkgKiAzOyAvKiBlcyA9IDAsIGRzID0gMyAqLwogICAgIGxlczoKICAg ICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHNyYy50eXBlICE9IE9QX01FTSwgRVhDX1VEKTsK LSAgICAgICAgaWYgKCAocmMgPSByZWFkX3Vsb25nKHNyYy5tZW0uc2VnLCBzcmMubWVtLm9mZiAr IHNyYy5ieXRlcywKKyAgICAgICAgaWYgKCAocmMgPSByZWFkX3Vsb25nKHNyYy5tZW0uc2VnLCB0 cnVuY2F0ZV9lYShzcmMubWVtLm9mZiArIHNyYy5ieXRlcyksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmZHN0LnZhbCwgMiwgY3R4dCwgb3BzKSkgIT0gWDg2RU1VTF9PS0FZICkKICAg ICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgQVNTRVJUKGlzX3g4Nl91c2VyX3NlZ21lbnQo c2VnKSk7CkBAIC00OTM5LDcgKzQ5NDAsOCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgY2FzZSA1 OiAvKiBqbXAgKGZhciwgYWJzb2x1dGUgaW5kaXJlY3QpICovCiAgICAgICAgICAgICBnZW5lcmF0 ZV9leGNlcHRpb25faWYoc3JjLnR5cGUgIT0gT1BfTUVNLCBFWENfVUQpOwogCi0gICAgICAgICAg ICBpZiAoIChyYyA9IHJlYWRfdWxvbmcoc3JjLm1lbS5zZWcsIHNyYy5tZW0ub2ZmICsgb3BfYnl0 ZXMsCisgICAgICAgICAgICBpZiAoIChyYyA9IHJlYWRfdWxvbmcoc3JjLm1lbS5zZWcsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVfZWEoc3JjLm1lbS5vZmYgKyBv cF9ieXRlcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltbTIsIDIsIGN0 eHQsIG9wcykpICkKICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICBpbW0x ID0gc3JjLnZhbDsKQEAgLTUxMjYsOCArNTEyOCw4IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAg ICAgfQogICAgICAgICAgICAgaWYgKCAocmMgPSBvcHMtPndyaXRlKGVhLm1lbS5zZWcsIGVhLm1l bS5vZmYsICZzcmVnLmxpbWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIs IGN0eHQpKSAhPSBYODZFTVVMX09LQVkgfHwKLSAgICAgICAgICAgICAgICAgKHJjID0gb3BzLT53 cml0ZShlYS5tZW0uc2VnLCBlYS5tZW0ub2ZmICsgMiwgJnNyZWcuYmFzZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvcF9ieXRlcywgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSAp CisgICAgICAgICAgICAgICAgIChyYyA9IG9wcy0+d3JpdGUoZWEubWVtLnNlZywgdHJ1bmNhdGVf ZWEoZWEubWVtLm9mZiArIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz cmVnLmJhc2UsIG9wX2J5dGVzLCBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAg ICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtNTEzNyw5ICs1MTM5LDkg QEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIW1vZGVf cmluZzAoKSwgRVhDX0dQLCAwKTsKICAgICAgICAgICAgIGZhaWxfaWYob3BzLT53cml0ZV9zZWdt ZW50ID09IE5VTEwpOwogICAgICAgICAgICAgbWVtc2V0KCZzcmVnLCAwLCBzaXplb2Yoc3JlZykp OwotICAgICAgICAgICAgaWYgKCAocmMgPSByZWFkX3Vsb25nKGVhLm1lbS5zZWcsIGVhLm1lbS5v ZmYrMCwKKyAgICAgICAgICAgIGlmICggKHJjID0gcmVhZF91bG9uZyhlYS5tZW0uc2VnLCBlYS5t ZW0ub2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW1pdCwgMiwgY3R4 dCwgb3BzKSkgfHwKLSAgICAgICAgICAgICAgICAgKHJjID0gcmVhZF91bG9uZyhlYS5tZW0uc2Vn LCBlYS5tZW0ub2ZmKzIsCisgICAgICAgICAgICAgICAgIChyYyA9IHJlYWRfdWxvbmcoZWEubWVt LnNlZywgdHJ1bmNhdGVfZWEoZWEubWVtLm9mZiArIDIpLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZiYXNlLCBtb2RlXzY0Yml0KCkgPyA4IDogNCwgY3R4dCwgb3BzKSkgKQog ICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9pZighaXNfY2Fub25pY2FsX2FkZHJlc3MoYmFzZSksIEVYQ19HUCwgMCk7Ci0tIAoyLjE0LjEK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK