Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gfnCi-0001Zq-6v for pgsql-hackers@arkaria.postgresql.org; Sat, 05 Jan 2019 14:45:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gfnBi-0002SG-3b for pgsql-hackers@arkaria.postgresql.org; Sat, 05 Jan 2019 14:44:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gfnBg-0002IC-Rq for pgsql-hackers@lists.postgresql.org; Sat, 05 Jan 2019 14:44:33 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gfnBb-0007cp-3R for pgsql-hackers@postgresql.org; Sat, 05 Jan 2019 14:44:32 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 6991822121; Sat, 5 Jan 2019 09:44:23 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Sat, 05 Jan 2019 09:44:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=kdbDKT I6bn3TlD7Uk+8vRXMS3zUV6T2NZkrCLhIf36A=; b=jWCLmvz28TUDef/OfL49FQ upMUJfFMj44sODh9aE9+RLOBnT+2yeNHxF6Pbs+IPypnsjOykUQjr/hftg6qya0N lIr9pBlXIPeFWx6uCvaNYxYFy0CWD/fWGwAHfD1dMvIjN8b1Y/TpRNAeH2pIbQLS C4+0VP5m7y7TxiPC3uIcjJpIalASAsGiMTZBHyp80x9ubP/HIW9BKyDX5KYOHnvR AQUARP1c2ULc9pcJIQ9PkQ3HPoi23UKzovriuROg+VvWnYMomAXEwDxqrmx2zYqA 3SaXRQ8KY0Olb3H/mRlEntgE6NUTDRBCZCmr8742rY+hkMrXBMOl8wdY8y/Q75IQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtledrvdefgdeileculddtuddrgedtkedrtddtmd cutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfhuthen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhohfkffgfgggjtgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqh hurggurhgrnhhtrdgtohhmqeenucffohhmrghinhepvdhnughquhgrughrrghnthdrtgho mhenucfkphepleefrddvgeefrdduudelrddvfeelnecurfgrrhgrmhepmhgrihhlfhhroh hmpehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomhen ucevlhhushhtvghrufhiiigvpedt X-ME-Proxy: Received: from april.pezone.net (p5df377ef.dip0.t-ipconnect.de [93.243.119.239]) by mail.messagingengine.com (Postfix) with ESMTPA id 991F5E479B; Sat, 5 Jan 2019 09:44:15 -0500 (EST) Subject: Re: Use atexit() in initdb and pg_basebackup To: Alvaro Herrera References: <201901041935.aqi5ogzbyiak@alvherre.pgsql> Cc: pgsql-hackers From: Peter Eisentraut Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 3jI= Organization: 2ndQuadrant Message-ID: <3d072ada-198a-f5ee-8769-bc51823d4f19@2ndquadrant.com> Date: Sat, 5 Jan 2019 15:44:11 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <201901041935.aqi5ogzbyiak@alvherre.pgsql> Content-Type: multipart/mixed; boundary="------------27F4A942800D639ACDDA3063" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------27F4A942800D639ACDDA3063 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 04/01/2019 20:35, Alvaro Herrera wrote: > Seems you're registering the atexit cb twice here; you should only do so > in the first "!conn" block. OK, fixed. >> @@ -3438,5 +3437,8 @@ main(int argc, char *argv[]) >> >> destroyPQExpBuffer(start_db_cmd); >> >> + /* prevent cleanup */ >> + made_new_pgdata = found_existing_pgdata = made_new_xlogdir = found_existing_xlogdir = false; >> + >> return 0; >> } > > This is a bit ugly, but meh. Yeah. Actually, we already have a solution of this in pg_basebackup, with a bool success variable. I rewrote it like that. At least it's better for uniformity. I also added an atexit() conversion in isolationtester. It's mostly the same thing. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------27F4A942800D639ACDDA3063 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-pg_basebackup-Use-atexit.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-pg_basebackup-Use-atexit.patch" RnJvbSAxY2IwMzEwYTAxMmU5YjFjMzMyNGNhOWRmNGJmZDZlZGU1MWM1ZDk2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogU2F0LCAyOSBEZWMgMjAxOCAxMzoyMTo0NyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMS8zXSBwZ19iYXNlYmFja3VwOiBVc2UgYXRleGl0KCkKCkluc3RlYWQg b2YgdXNpbmcgb3VyIGN1c3RvbSBkaXNjb25uZWN0X2FuZF9leGl0KCksIGp1c3QgcmVnaXN0 ZXIgdGhlCmRlc2lyZWQgY2xlYW51cCB1c2luZyBhdGV4aXQoKSBhbmQgdXNlIHRoZSBzdGFu ZGFyZCBleGl0KCkgdG8gbGVhdmUKdGhlIHByb2dyYW0uCi0tLQogc3JjL2Jpbi9wZ19iYXNl YmFja3VwL3BnX2Jhc2ViYWNrdXAuYyAgfCAxNDIgKysrKysrKysrKysrKy0tLS0tLS0tLS0t LQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX3JlY2VpdmV3YWwuYyAgfCAgNDUgKysrKy0t LS0KIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2bG9naWNhbC5jIHwgIDE4ICsrLS0K IDMgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDEwMSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jIGIv c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYwppbmRleCA4ODQyMWM3ODkz Li5lNTFlZjkxZDY2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFz ZWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMK QEAgLTEzNiw3ICsxMzYsNiBAQCBzdGF0aWMgUFFFeHBCdWZmZXIgcmVjb3Zlcnljb25mY29u dGVudHMgPSBOVUxMOwogCiAvKiBGdW5jdGlvbiBoZWFkZXJzICovCiBzdGF0aWMgdm9pZCB1 c2FnZSh2b2lkKTsKLXN0YXRpYyB2b2lkIGRpc2Nvbm5lY3RfYW5kX2V4aXQoaW50IGNvZGUp IHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwogc3RhdGljIHZvaWQgdmVyaWZ5X2Rpcl9pc19l bXB0eV9vcl9jcmVhdGUoY2hhciAqZGlybmFtZSwgYm9vbCAqY3JlYXRlZCwgYm9vbCAqZm91 bmQpOwogc3RhdGljIHZvaWQgcHJvZ3Jlc3NfcmVwb3J0KGludCB0YWJsZXNwYWNlbnVtLCBj b25zdCBjaGFyICpmaWxlbmFtZSwgYm9vbCBmb3JjZSk7CiAKQEAgLTIxNywyNSArMjE2LDI1 IEBAIGNsZWFudXBfZGlyZWN0b3JpZXNfYXRleGl0KHZvaWQpCiB9CiAKIHN0YXRpYyB2b2lk Ci1kaXNjb25uZWN0X2FuZF9leGl0KGludCBjb2RlKQorZGlzY29ubmVjdF9hdGV4aXQodm9p ZCkKIHsKIAlpZiAoY29ubiAhPSBOVUxMKQogCQlQUWZpbmlzaChjb25uKTsKK30KIAogI2lm bmRlZiBXSU4zMgotCi0JLyoKLQkgKiBPbiB3aW5kb3dzLCBvdXIgYmFja2dyb3VuZCB0aHJl YWQgZGllcyBhbG9uZyB3aXRoIHRoZSBwcm9jZXNzLiBCdXQgb24KLQkgKiBVbml4LCBpZiB3 ZSBoYXZlIHN0YXJ0ZWQgYSBzdWJwcm9jZXNzLCB3ZSB3YW50IHRvIGtpbGwgaXQgb2ZmIHNv IGl0Ci0JICogZG9lc24ndCByZW1haW4gcnVubmluZyB0cnlpbmcgdG8gc3RyZWFtIGRhdGEu Ci0JICovCisvKgorICogT24gd2luZG93cywgb3VyIGJhY2tncm91bmQgdGhyZWFkIGRpZXMg YWxvbmcgd2l0aCB0aGUgcHJvY2Vzcy4gQnV0IG9uCisgKiBVbml4LCBpZiB3ZSBoYXZlIHN0 YXJ0ZWQgYSBzdWJwcm9jZXNzLCB3ZSB3YW50IHRvIGtpbGwgaXQgb2ZmIHNvIGl0CisgKiBk b2Vzbid0IHJlbWFpbiBydW5uaW5nIHRyeWluZyB0byBzdHJlYW0gZGF0YS4KKyAqLworc3Rh dGljIHZvaWQKK2tpbGxfYmdjaGlsZF9hdGV4aXQodm9pZCkKK3sKIAlpZiAoYmdjaGlsZCA+ IDApCiAJCWtpbGwoYmdjaGlsZCwgU0lHVEVSTSk7Ci0jZW5kaWYKLQotCWV4aXQoY29kZSk7 CiB9Ci0KKyNlbmRpZgogCiAvKgogICogU3BsaXQgYXJndW1lbnQgaW50byBvbGRfZGlyIGFu ZCBuZXdfZGlyIGFuZCBhcHBlbmQgdG8gdGFibGVzcGFjZSBtYXBwaW5nCkBAIC01NjIsNyAr NTYxLDcgQEAgU3RhcnRMb2dTdHJlYW1lcihjaGFyICpzdGFydHBvcywgdWludDMyIHRpbWVs aW5lLCBjaGFyICpzeXNpZGVudGlmaWVyKQogCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQlfKCIl czogY291bGQgbm90IHBhcnNlIHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCJcbiIp LAogCQkJCXByb2duYW1lLCBzdGFydHBvcyk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7 CisJCWV4aXQoMSk7CiAJfQogCXBhcmFtLT5zdGFydHB0ciA9ICgodWludDY0KSBoaSkgPDwg MzIgfCBsbzsKIAkvKiBSb3VuZCBvZmYgdG8gZXZlbiBzZWdtZW50IHBvc2l0aW9uICovCkBA IC01NzUsNyArNTc0LDcgQEAgU3RhcnRMb2dTdHJlYW1lcihjaGFyICpzdGFydHBvcywgdWlu dDMyIHRpbWVsaW5lLCBjaGFyICpzeXNpZGVudGlmaWVyKQogCQlmcHJpbnRmKHN0ZGVyciwK IAkJCQlfKCIlczogY291bGQgbm90IGNyZWF0ZSBwaXBlIGZvciBiYWNrZ3JvdW5kIHByb2Nl c3M6ICVzXG4iKSwKIAkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJZGlzY29u bmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhpdCgxKTsKIAl9CiAjZW5kaWYKIApAQCAtNjA0LDcg KzYwMyw3IEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVpbnQzMiB0aW1l bGluZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAl7CiAJCWlmICghQ3JlYXRlUmVwbGljYXRp b25TbG90KHBhcmFtLT5iZ2Nvbm4sIHJlcGxpY2F0aW9uX3Nsb3QsIE5VTEwsCiAJCQkJCQkJ CSAgIHRlbXBfcmVwbGljYXRpb25fc2xvdCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpKQotCQkJZGlz Y29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAKIAkJaWYgKHZlcmJvc2UpCiAJ CXsKQEAgLTYzNSw3ICs2MzQsNyBAQCBTdGFydExvZ1N0cmVhbWVyKGNoYXIgKnN0YXJ0cG9z LCB1aW50MzIgdGltZWxpbmUsIGNoYXIgKnN5c2lkZW50aWZpZXIpCiAJCQlmcHJpbnRmKHN0 ZGVyciwKIAkJCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjog JXNcbiIpLAogCQkJCQlwcm9nbmFtZSwgc3RhdHVzZGlyLCBzdHJlcnJvcihlcnJubykpOwot CQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAl9CiAKQEAg LTY1NCwxOSArNjUzLDIwIEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVp bnQzMiB0aW1lbGluZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAl7CiAJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBiYWNrZ3JvdW5kIHByb2Nlc3M6ICVzXG4i KSwKIAkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJZGlzY29ubmVjdF9hbmRf ZXhpdCgxKTsKKwkJZXhpdCgxKTsKIAl9CiAKIAkvKgogCSAqIEVsc2Ugd2UgYXJlIGluIHRo ZSBwYXJlbnQgcHJvY2VzcyBhbmQgYWxsIGlzIHdlbGwuCiAJICovCisJYXRleGl0KGtpbGxf YmdjaGlsZF9hdGV4aXQpOwogI2Vsc2UJCQkJCQkJLyogV0lOMzIgKi8KIAliZ2NoaWxkID0g X2JlZ2ludGhyZWFkZXgoTlVMTCwgMCwgKHZvaWQgKikgTG9nU3RyZWFtZXJNYWluLCBwYXJh bSwgMCwgTlVMTCk7CiAJaWYgKGJnY2hpbGQgPT0gMCkKIAl7CiAJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBiYWNrZ3JvdW5kIHRocmVhZDogJXNcbiIpLAog CQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOwotCQlkaXNjb25uZWN0X2FuZF9leGl0 KDEpOworCQlleGl0KDEpOwogCX0KICNlbmRpZgogfQpAQCAtNjkxLDcgKzY5MSw3IEBAIHZl cmlmeV9kaXJfaXNfZW1wdHlfb3JfY3JlYXRlKGNoYXIgKmRpcm5hbWUsIGJvb2wgKmNyZWF0 ZWQsIGJvb2wgKmZvdW5kKQogCQkJCWZwcmludGYoc3RkZXJyLAogCQkJCQkJXygiJXM6IGNv dWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAogCQkJCQkJcHJvZ25h bWUsIGRpcm5hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQkJZGlzY29ubmVjdF9hbmRfZXhp dCgxKTsKKwkJCQlleGl0KDEpOwogCQkJfQogCQkJaWYgKGNyZWF0ZWQpCiAJCQkJKmNyZWF0 ZWQgPSB0cnVlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIHZlcmlmeV9kaXJfaXNfZW1wdHlfb3Jf Y3JlYXRlKGNoYXIgKmRpcm5hbWUsIGJvb2wgKmNyZWF0ZWQsIGJvb2wgKmZvdW5kKQogCQkJ ZnByaW50ZihzdGRlcnIsCiAJCQkJCV8oIiVzOiBkaXJlY3RvcnkgXCIlc1wiIGV4aXN0cyBi dXQgaXMgbm90IGVtcHR5XG4iKSwKIAkJCQkJcHJvZ25hbWUsIGRpcm5hbWUpOwotCQkJZGlz Y29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJCWNhc2UgLTE6CiAKIAkJCS8q CkBAIC03MjIsNyArNzIyLDcgQEAgdmVyaWZ5X2Rpcl9pc19lbXB0eV9vcl9jcmVhdGUoY2hh ciAqZGlybmFtZSwgYm9vbCAqY3JlYXRlZCwgYm9vbCAqZm91bmQpCiAJCQkgKi8KIAkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wi OiAlc1xuIiksCiAJCQkJCXByb2duYW1lLCBkaXJuYW1lLCBzdHJlcnJvcihlcnJubykpOwot CQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJfQogfQogCkBAIC05 MzMsNyArOTMzLDcgQEAgd3JpdGVUYXJEYXRhKAogCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJ CV8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgdG8gY29tcHJlc3NlZCBmaWxlIFwiJXNcIjogJXNc biIpLAogCQkJCQlwcm9nbmFtZSwgY3VycmVudF9maWxlLCBnZXRfZ3pfZXJyb3IoenRhcmZp bGUpKTsKLQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCQlleGl0KDEpOwogCQl9CiAJ fQogCWVsc2UKQEAgLTk0Myw3ICs5NDMsNyBAQCB3cml0ZVRhckRhdGEoCiAJCXsKIAkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAl c1xuIiksCiAJCQkJCXByb2duYW1lLCBjdXJyZW50X2ZpbGUsIHN0cmVycm9yKGVycm5vKSk7 Ci0JCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOworCQkJZXhpdCgxKTsKIAkJfQogCX0KIH0K QEAgLTEwMDUsNyArMTAwNSw3IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdy ZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAkJCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJCQkJ XygiJXM6IGNvdWxkIG5vdCBzZXQgY29tcHJlc3Npb24gbGV2ZWwgJWQ6ICVzXG4iKSwKIAkJ CQkJCQlwcm9nbmFtZSwgY29tcHJlc3NsZXZlbCwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7 Ci0JCQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCQkJCWV4aXQoMSk7CiAJCQkJfQog CQkJfQogCQkJZWxzZQpAQCAtMTAyNiw3ICsxMDI2LDcgQEAgUmVjZWl2ZVRhckZpbGUoUEdj b25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJCQlmcHJpbnRmKHN0 ZGVyciwKIAkJCQkJCQlfKCIlczogY291bGQgbm90IHNldCBjb21wcmVzc2lvbiBsZXZlbCAl ZDogJXNcbiIpLAogCQkJCQkJCXByb2duYW1lLCBjb21wcmVzc2xldmVsLCBnZXRfZ3pfZXJy b3IoenRhcmZpbGUpKTsKLQkJCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCQkJZXhp dCgxKTsKIAkJCQl9CiAJCQl9CiAJCQllbHNlCkBAIC0xMDU0LDcgKzEwNTQsNyBAQCBSZWNl aXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJ CQkJZnByaW50ZihzdGRlcnIsCiAJCQkJCQlfKCIlczogY291bGQgbm90IHNldCBjb21wcmVz c2lvbiBsZXZlbCAlZDogJXNcbiIpLAogCQkJCQkJcHJvZ25hbWUsIGNvbXByZXNzbGV2ZWws IGdldF9nel9lcnJvcih6dGFyZmlsZSkpOwotCQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7 CisJCQkJZXhpdCgxKTsKIAkJCX0KIAkJfQogCQllbHNlCkBAIC0xMDc1LDcgKzEwNzUsNyBA QCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3du dW0pCiAJCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUg Y29tcHJlc3NlZCBmaWxlIFwiJXNcIjogJXNcbiIpLAogCQkJCQlwcm9nbmFtZSwgZmlsZW5h bWUsIGdldF9nel9lcnJvcih6dGFyZmlsZSkpOwotCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgx KTsKKwkJCWV4aXQoMSk7CiAJCX0KIAl9CiAJZWxzZQpAQCAtMTA4Niw3ICsxMDg2LDcgQEAg UmVjZWl2ZVRhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVt KQogCQl7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgZmls ZSBcIiVzXCI6ICVzXG4iKSwKIAkJCQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihl cnJubykpOwotCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJCX0K IAl9CiAKQEAgLTEwOTgsNyArMTA5OCw3IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAqY29u biwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAl7CiAJCWZwcmludGYoc3RkZXJyLCBf KCIlczogY291bGQgbm90IGdldCBDT1BZIGRhdGEgc3RyZWFtOiAlcyIpLAogCQkJCXByb2du YW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7 CisJCWV4aXQoMSk7CiAJfQogCiAJd2hpbGUgKDEpCkBAIC0xMTY3LDcgKzExNjcsNyBAQCBS ZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0p CiAJCQkJCWZwcmludGYoc3RkZXJyLAogCQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgY2xvc2Ug Y29tcHJlc3NlZCBmaWxlIFwiJXNcIjogJXNcbiIpLAogCQkJCQkJCXByb2duYW1lLCBmaWxl bmFtZSwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7Ci0JCQkJCWRpc2Nvbm5lY3RfYW5kX2V4 aXQoMSk7CisJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJfQogCQkJZWxzZQpAQCAtMTE4MCw3 ICsxMTgwLDcgQEAgUmVjZWl2ZVRhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVz LCBpbnQgcm93bnVtKQogCQkJCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJCQkJCV8oIiVzOiBj b3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVzXG4iKSwKIAkJCQkJCQkJcHJvZ25hbWUs IGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwotCQkJCQkJZGlzY29ubmVjdF9hbmRfZXhp dCgxKTsKKwkJCQkJCWV4aXQoMSk7CiAJCQkJCX0KIAkJCQl9CiAJCQl9CkBAIC0xMTkxLDcg KzExOTEsNyBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMs IGludCByb3dudW0pCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IHJlYWQgQ09QWSBkYXRhOiAlcyIpLAogCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwotCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJCX0K IAogCQlpZiAoIXdyaXRlcmVjb3Zlcnljb25mIHx8ICFiYXNldGFibGVzcGFjZSkKQEAgLTE0 MjcsNyArMTQyNyw3IEBAIFJlY2VpdmVBbmRVbnBhY2tUYXJGaWxlKFBHY29ubiAqY29ubiwg UEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAl7CiAJCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IGdldCBDT1BZIGRhdGEgc3RyZWFtOiAlcyIpLAogCQkJCXByb2duYW1l LCBQUWVycm9yTWVzc2FnZShjb25uKSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJ CWV4aXQoMSk7CiAJfQogCiAJd2hpbGUgKDEpCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBSZWNl aXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCBy b3dudW0pCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQg Q09QWSBkYXRhOiAlcyIpLAogCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikp OwotCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAogCQlp ZiAoZmlsZSA9PSBOVUxMKQpAQCAtMTQ3MCw3ICsxNDcwLDcgQEAgUmVjZWl2ZUFuZFVucGFj a1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJ ewogCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCB0YXIgYmxvY2sgaGVhZGVy IHNpemU6ICVkXG4iKSwKIAkJCQkJCXByb2duYW1lLCByKTsKLQkJCQlkaXNjb25uZWN0X2Fu ZF9leGl0KDEpOworCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQl0b3RhbGRvbmUgKz0gNTEyOwog CkBAIC0xNTIwLDcgKzE1MjAsNyBAQCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4g KmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCQkJCQkJZnByaW50ZihzdGRl cnIsCiAJCQkJCQkJCQlfKCIlczogY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wi OiAlc1xuIiksCiAJCQkJCQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5v KSk7Ci0JCQkJCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCQkJCQlleGl0KDEpOwog CQkJCQkJfQogCQkJCQl9CiAjaWZuZGVmIFdJTjMyCkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBS ZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGlu dCByb3dudW0pCiAJCQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxp bmsgZnJvbSBcIiVzXCIgdG8gXCIlc1wiOiAlc1xuIiksCiAJCQkJCQkJCXByb2duYW1lLCBm aWxlbmFtZSwgbWFwcGVkX3RibHNwY19wYXRoLAogCQkJCQkJCQlzdHJlcnJvcihlcnJubykp OwotCQkJCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCQkJCWV4aXQoMSk7CiAJCQkJ CX0KIAkJCQl9CiAJCQkJZWxzZQpAQCAtMTU2MSw3ICsxNTYxLDcgQEAgUmVjZWl2ZUFuZFVu cGFja1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQog CQkJCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJCQlfKCIlczogdW5yZWNvZ25pemVkIGxpbmsg aW5kaWNhdG9yIFwiJWNcIlxuIiksCiAJCQkJCQkJcHJvZ25hbWUsIGNvcHlidWZbMTU2XSk7 Ci0JCQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCQkJCWV4aXQoMSk7CiAJCQkJfQog CQkJCWNvbnRpbnVlOwkJLyogZGlyZWN0b3J5IG9yIGxpbmsgaGFuZGxlZCAqLwogCQkJfQpA QCAtMTU3NCw3ICsxNTc0LDcgQEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpj b25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJewogCQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAogCQkJ CQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwotCQkJCWRpc2Nvbm5l Y3RfYW5kX2V4aXQoMSk7CisJCQkJZXhpdCgxKTsKIAkJCX0KIAogI2lmbmRlZiBXSU4zMgpA QCAtMTYxNCw3ICsxNjE0LDcgQEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpj b25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJewogCQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlc1xuIiksCiAJ CQkJCQlwcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQkJZGlzY29u bmVjdF9hbmRfZXhpdCgxKTsKKwkJCQlleGl0KDEpOwogCQkJfQogCQkJdG90YWxkb25lICs9 IHI7CiAJCQlwcm9ncmVzc19yZXBvcnQocm93bnVtLCBmaWxlbmFtZSwgZmFsc2UpOwpAQCAt MTY0MCw3ICsxNjQwLDcgQEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpjb25u LCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQlf KCIlczogQ09QWSBzdHJlYW0gZW5kZWQgYmVmb3JlIGxhc3QgZmlsZSB3YXMgZmluaXNoZWRc biIpLAogCQkJCXByb2duYW1lKTsKLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhp dCgxKTsKIAl9CiAKIAlpZiAoY29weWJ1ZiAhPSBOVUxMKQpAQCAtMTY4NywxNCArMTY4Nywx NCBAQCBHZW5lcmF0ZVJlY292ZXJ5Q29uZihQR2Nvbm4gKmNvbm4pCiAJaWYgKCFyZWNvdmVy eWNvbmZjb250ZW50cykKIAl7CiAJCWZwcmludGYoc3RkZXJyLCBfKCIlczogb3V0IG9mIG1l bW9yeVxuIiksIHByb2duYW1lKTsKLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhp dCgxKTsKIAl9CiAKIAljb25uT3B0aW9ucyA9IFBRY29ubmluZm8oY29ubik7CiAJaWYgKGNv bm5PcHRpb25zID09IE5VTEwpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG91dCBv ZiBtZW1vcnlcbiIpLCBwcm9nbmFtZSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJ CWV4aXQoMSk7CiAJfQogCiAJaW5pdFBRRXhwQnVmZmVyKCZjb25uaW5mb19idWYpOwpAQCAt MTc0NSw3ICsxNzQ1LDcgQEAgR2VuZXJhdGVSZWNvdmVyeUNvbmYoUEdjb25uICpjb25uKQog CQlQUUV4cEJ1ZmZlckRhdGFCcm9rZW4oY29ubmluZm9fYnVmKSkKIAl7CiAJCWZwcmludGYo c3RkZXJyLCBfKCIlczogb3V0IG9mIG1lbW9yeVxuIiksIHByb2duYW1lKTsKLQkJZGlzY29u bmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhpdCgxKTsKIAl9CiAKIAl0ZXJtUFFFeHBCdWZmZXIo JmNvbm5pbmZvX2J1Zik7CkBAIC0xNzcxLDcgKzE3NzEsNyBAQCBXcml0ZVJlY292ZXJ5Q29u Zih2b2lkKQogCWlmIChjZiA9PSBOVUxMKQogCXsKIAkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXNcbiIpLCBwcm9nbmFtZSwgZmlsZW5h bWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCWV4 aXQoMSk7CiAJfQogCiAJaWYgKGZ3cml0ZShyZWNvdmVyeWNvbmZjb250ZW50cy0+ZGF0YSwg cmVjb3Zlcnljb25mY29udGVudHMtPmxlbiwgMSwgY2YpICE9IDEpCkBAIC0xNzc5LDcgKzE3 NzksNyBAQCBXcml0ZVJlY292ZXJ5Q29uZih2b2lkKQogCQlmcHJpbnRmKHN0ZGVyciwKIAkJ CQlfKCIlczogY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlc1xuIiksCiAJCQkJ cHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwotCQlkaXNjb25uZWN0X2Fu ZF9leGl0KDEpOworCQlleGl0KDEpOwogCX0KIAogCWZjbG9zZShjZik7CkBAIC0xNzg5LDcg KzE3ODksNyBAQCBXcml0ZVJlY292ZXJ5Q29uZih2b2lkKQogCWlmIChjZiA9PSBOVUxMKQog CXsKIAkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIl c1wiOiAlc1xuIiksIHByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJ ZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhpdCgxKTsKIAl9CiAKIAlmY2xvc2UoY2Yp OwpAQCAtMTgzMCw3ICsxODMwLDcgQEAgQmFzZUJhY2t1cCh2b2lkKQogCiAJCWZwcmludGYo c3RkZXJyLCBfKCIlczogaW5jb21wYXRpYmxlIHNlcnZlciB2ZXJzaW9uICVzXG4iKSwKIAkJ CQlwcm9nbmFtZSwgc2VydmVydmVyID8gc2VydmVydmVyIDogIid1bmtub3duJyIpOwotCQlk aXNjb25uZWN0X2FuZF9leGl0KDEpOworCQlleGl0KDEpOwogCX0KIAogCS8qCkBAIC0xODQ0 LDcgKzE4NDQsNyBAQCBCYXNlQmFja3VwKHZvaWQpCiAJCSAqIGJ1dCBhZGQgYSBoaW50IGFi b3V0IHVzaW5nIC1YIG5vbmUuCiAJCSAqLwogCQlmcHJpbnRmKHN0ZGVyciwgXygiSElOVDog dXNlIC1YIG5vbmUgb3IgLVggZmV0Y2ggdG8gZGlzYWJsZSBsb2cgc3RyZWFtaW5nXG4iKSk7 Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCWV4aXQoMSk7CiAJfQogCiAJLyoKQEAg LTE4NTcsNyArMTg1Nyw3IEBAIEJhc2VCYWNrdXAodm9pZCkKIAkgKiBSdW4gSURFTlRJRllf U1lTVEVNIHNvIHdlIGNhbiBnZXQgdGhlIHRpbWVsaW5lCiAJICovCiAJaWYgKCFSdW5JZGVu dGlmeVN5c3RlbShjb25uLCAmc3lzaWRlbnRpZmllciwgJmxhdGVzdHRsaSwgTlVMTCwgTlVM TCkpCi0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCWV4aXQoMSk7CiAKIAkvKgogCSAq IFN0YXJ0IHRoZSBhY3R1YWwgYmFja3VwCkBAIC0xODk2LDcgKzE4OTYsNyBAQCBCYXNlQmFj a3VwKHZvaWQpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZW5k IHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAogCQkJCXByb2duYW1lLCAiQkFT RV9CQUNLVVAiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4 aXQoMSk7CisJCWV4aXQoMSk7CiAJfQogCiAJLyoKQEAgLTE5MDcsMTQgKzE5MDcsMTQgQEAg QmFzZUJhY2t1cCh2b2lkKQogCXsKIAkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgaW5pdGlhdGUgYmFzZSBiYWNrdXA6ICVzIiksCiAJCQkJcHJvZ25hbWUsIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhpdCgxKTsK IAl9CiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwK IAkJCQlfKCIlczogc2VydmVyIHJldHVybmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgdG8gQkFT RV9CQUNLVVAgY29tbWFuZDsgZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQg JWQgcm93cyBhbmQgJWQgZmllbGRzXG4iKSwKIAkJCQlwcm9nbmFtZSwgUFFudHVwbGVzKHJl cyksIFBRbmZpZWxkcyhyZXMpLCAxLCAyKTsKLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsK KwkJZXhpdCgxKTsKIAl9CiAKIAlzdHJsY3B5KHhsb2dzdGFydCwgUFFnZXR2YWx1ZShyZXMs IDAsIDApLCBzaXplb2YoeGxvZ3N0YXJ0KSk7CkBAIC0xOTQ2LDEyICsxOTQ2LDEyIEBAIEJh c2VCYWNrdXAodm9pZCkKIAl7CiAJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90 IGdldCBiYWNrdXAgaGVhZGVyOiAlcyIpLAogCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCWV4aXQoMSk7CiAJfQog CWlmIChQUW50dXBsZXMocmVzKSA8IDEpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IG5vIGRhdGEgcmV0dXJuZWQgZnJvbSBzZXJ2ZXJcbiIpLCBwcm9nbmFtZSk7Ci0JCWRpc2Nv bm5lY3RfYW5kX2V4aXQoMSk7CisJCWV4aXQoMSk7CiAJfQogCiAJLyoKQEAgLTE5ODQsNyAr MTk4NCw3IEBAIEJhc2VCYWNrdXAodm9pZCkKIAkJZnByaW50ZihzdGRlcnIsCiAJCQkJXygi JXM6IGNhbiBvbmx5IHdyaXRlIHNpbmdsZSB0YWJsZXNwYWNlIHRvIHN0ZG91dCwgZGF0YWJh c2UgaGFzICVkXG4iKSwKIAkJCQlwcm9nbmFtZSwgUFFudHVwbGVzKHJlcykpOwotCQlkaXNj b25uZWN0X2FuZF9leGl0KDEpOworCQlleGl0KDEpOwogCX0KIAogCS8qCkBAIC0yMDI4LDE0 ICsyMDI4LDE0IEBAIEJhc2VCYWNrdXAodm9pZCkKIAkJZnByaW50ZihzdGRlcnIsCiAJCQkJ XygiJXM6IGNvdWxkIG5vdCBnZXQgd3JpdGUtYWhlYWQgbG9nIGVuZCBwb3NpdGlvbiBmcm9t IHNlcnZlcjogJXMiKSwKIAkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwot CQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOworCQlleGl0KDEpOwogCX0KIAlpZiAoUFFudHVw bGVzKHJlcykgIT0gMSkKIAl7CiAJCWZwcmludGYoc3RkZXJyLAogCQkJCV8oIiVzOiBubyB3 cml0ZS1haGVhZCBsb2cgZW5kIHBvc2l0aW9uIHJldHVybmVkIGZyb20gc2VydmVyXG4iKSwK IAkJCQlwcm9nbmFtZSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCWV4aXQoMSk7 CiAJfQogCXN0cmxjcHkoeGxvZ2VuZCwgUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBzaXplb2Yo eGxvZ2VuZCkpOwogCWlmICh2ZXJib3NlICYmIGluY2x1ZGV3YWwgIT0gTk9fV0FMKQpAQCAt MjA1OSw3ICsyMDU5LDcgQEAgQmFzZUJhY2t1cCh2b2lkKQogCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBmaW5hbCByZWNlaXZlIGZhaWxlZDogJXMiKSwKIAkJCQkJcHJvZ25hbWUsIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJfQotCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOwor CQlleGl0KDEpOwogCX0KIAogCWlmIChiZ2NoaWxkID4gMCkKQEAgLTIwODksNyArMjA4OSw3 IEBAIEJhc2VCYWNrdXAodm9pZCkKIAkJCWZwcmludGYoc3RkZXJyLAogCQkJCQlfKCIlczog Y291bGQgbm90IHNlbmQgY29tbWFuZCB0byBiYWNrZ3JvdW5kIHBpcGU6ICVzXG4iKSwKIAkJ CQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlkaXNjb25uZWN0X2FuZF9leGl0 KDEpOworCQkJZXhpdCgxKTsKIAkJfQogCiAJCS8qIEp1c3Qgd2FpdCBmb3IgdGhlIGJhY2tn cm91bmQgcHJvY2VzcyB0byBleGl0ICovCkBAIC0yMDk4LDE5ICsyMDk4LDE5IEBAIEJhc2VC YWNrdXAodm9pZCkKIAkJewogCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg d2FpdCBmb3IgY2hpbGQgcHJvY2VzczogJXNcbiIpLAogCQkJCQlwcm9nbmFtZSwgc3RyZXJy b3IoZXJybm8pKTsKLQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCQlleGl0KDEpOwog CQl9CiAJCWlmIChyICE9IGJnY2hpbGQpCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogY2hpbGQgJWQgZGllZCwgZXhwZWN0ZWQgJWRcbiIpLAogCQkJCQlwcm9nbmFtZSwgKGlu dCkgciwgKGludCkgYmdjaGlsZCk7Ci0JCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOworCQkJ ZXhpdCgxKTsKIAkJfQogCQlpZiAoc3RhdHVzICE9IDApCiAJCXsKIAkJCWZwcmludGYoc3Rk ZXJyLCAiJXM6ICVzXG4iLAogCQkJCQlwcm9nbmFtZSwgd2FpdF9yZXN1bHRfdG9fc3RyKHN0 YXR1cykpOwotCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJCX0K IAkJLyogRXhpdGVkIG5vcm1hbGx5LCB3ZSdyZSBoYXBweSEgKi8KICNlbHNlCQkJCQkJCS8q IFdJTjMyICovCkBAIC0yMTI1LDcgKzIxMjUsNyBAQCBCYXNlQmFja3VwKHZvaWQpCiAJCQlm cHJpbnRmKHN0ZGVyciwKIAkJCQkJXygiJXM6IGNvdWxkIG5vdCBwYXJzZSB3cml0ZS1haGVh ZCBsb2cgbG9jYXRpb24gXCIlc1wiXG4iKSwKIAkJCQkJcHJvZ25hbWUsIHhsb2dlbmQpOwot CQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAkJeGxvZ2Vu ZHB0ciA9ICgodWludDY0KSBoaSkgPDwgMzIgfCBsbzsKIAkJSW50ZXJsb2NrZWRJbmNyZW1l bnQoJmhhc194bG9nZW5kcHRyKTsKQEAgLTIxMzcsMjAgKzIxMzcsMjAgQEAgQmFzZUJhY2t1 cCh2b2lkKQogCQkJX2Rvc21hcGVycihHZXRMYXN0RXJyb3IoKSk7CiAJCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCB3YWl0IGZvciBjaGlsZCB0aHJlYWQ6ICVzXG4iKSwK IAkJCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlkaXNjb25uZWN0X2FuZF9l eGl0KDEpOworCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAoR2V0RXhpdENvZGVUaHJlYWQoKEhB TkRMRSkgYmdjaGlsZF9oYW5kbGUsICZzdGF0dXMpID09IDApCiAJCXsKIAkJCV9kb3NtYXBl cnIoR2V0TGFzdEVycm9yKCkpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgZ2V0IGNoaWxkIHRocmVhZCBleGl0IHN0YXR1czogJXNcbiIpLAogCQkJCQlwcm9nbmFt ZSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCQll eGl0KDEpOwogCQl9CiAJCWlmIChzdGF0dXMgIT0gMCkKIAkJewogCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjaGlsZCB0aHJlYWQgZXhpdGVkIHdpdGggZXJyb3IgJXVcbiIpLAogCQkJ CQlwcm9nbmFtZSwgKHVuc2lnbmVkIGludCkgc3RhdHVzKTsKLQkJCWRpc2Nvbm5lY3RfYW5k X2V4aXQoMSk7CisJCQlleGl0KDEpOwogCQl9CiAJCS8qIEV4aXRlZCBub3JtYWxseSwgd2Un cmUgaGFwcHkgKi8KICNlbmRpZgpAQCAtMjE2NCw2ICsyMTY0LDcgQEAgQmFzZUJhY2t1cCh2 b2lkKQogCSAqLwogCVBRY2xlYXIocmVzKTsKIAlQUWZpbmlzaChjb25uKTsKKwljb25uID0g TlVMTDsKIAogCS8qCiAJICogTWFrZSBkYXRhIHBlcnNpc3RlbnQgb24gZGlzayBvbmNlIGJh Y2t1cCBpcyBjb21wbGV0ZWQuIEZvciB0YXIgZm9ybWF0CkBAIC0yNTQyLDYgKzI1NDMsNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJLyogRXJyb3IgbWVzc2FnZSBhbHJl YWR5IHdyaXR0ZW4gaW4gR2V0Q29ubmVjdGlvbigpICovCiAJCWV4aXQoMSk7CiAJfQorCWF0 ZXhpdChkaXNjb25uZWN0X2F0ZXhpdCk7CiAKIAkvKgogCSAqIFNldCB1bWFzayBzbyB0aGF0 IGRpcmVjdG9yaWVzL2ZpbGVzIGFyZSBjcmVhdGVkIHdpdGggdGhlIHNhbWUKQEAgLTI1NjMs NyArMjU2NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJLyogZGV0ZXJt aW5lIHJlbW90ZSBzZXJ2ZXIncyB4bG9nIHNlZ21lbnQgc2l6ZSAqLwogCWlmICghUmV0cmll dmVXYWxTZWdTaXplKGNvbm4pKQotCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOworCQlleGl0 KDEpOwogCiAJLyogQ3JlYXRlIHBnX3dhbCBzeW1saW5rLCBpZiByZXF1aXJlZCAqLwogCWlm ICh4bG9nX2RpcikKQEAgLTI1ODUsMTEgKzI1ODcsMTEgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNy ZWF0ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJXNcbiIpLAogCQkJCQlwcm9nbmFtZSwgbGlu a2xvYywgc3RyZXJyb3IoZXJybm8pKTsKLQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJ CQlleGl0KDEpOwogCQl9CiAjZWxzZQogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHN5bWxp bmtzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1cbiIpLCBwcm9nbmFtZSk7 Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJCWV4aXQoMSk7CiAjZW5kaWYKIAkJZnJl ZShsaW5rbG9jKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdf cmVjZWl2ZXdhbC5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX3JlY2VpdmV3YWwuYwpp bmRleCA1MmIyNThiNjFmLi5kYzY3MDVjMzMwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jh c2ViYWNrdXAvcGdfcmVjZWl2ZXdhbC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9w Z19yZWNlaXZld2FsLmMKQEAgLTU1LDExICs1NSwxMiBAQCBzdGF0aWMgdm9pZCBTdHJlYW1M b2codm9pZCk7CiBzdGF0aWMgYm9vbCBzdG9wX3N0cmVhbWluZyhYTG9nUmVjUHRyIHNlZ2Vu ZHBvcywgdWludDMyIHRpbWVsaW5lLAogCQkJICAgYm9vbCBzZWdtZW50X2ZpbmlzaGVkKTsK IAotI2RlZmluZSBkaXNjb25uZWN0X2FuZF9leGl0KGNvZGUpCQkJCVwKLQl7CQkJCQkJCQkJ CQlcCi0JaWYgKGNvbm4gIT0gTlVMTCkgUFFmaW5pc2goY29ubik7CQkJXAotCWV4aXQoY29k ZSk7CQkJCQkJCQkJXAotCX0KK3N0YXRpYyB2b2lkCitkaXNjb25uZWN0X2F0ZXhpdCh2b2lk KQoreworCWlmIChjb25uICE9IE5VTEwpCisJCVBRZmluaXNoKGNvbm4pOworfQogCiAvKiBS b3V0aW5lcyB0byBldmFsdWF0ZSBzZWdtZW50IGZpbGUgZm9ybWF0ICovCiAjZGVmaW5lIElz Q29tcHJlc3NYTG9nRmlsZU5hbWUoZm5hbWUpCSBcCkBAIC0xNjgsNyArMTY5LDcgQEAgZ2V0 X2Rlc3RpbmF0aW9uX2RpcihjaGFyICpkZXN0X2ZvbGRlcikKIAl7CiAJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAog CQkJCXByb2duYW1lLCBiYXNlZGlyLCBzdHJlcnJvcihlcnJubykpOwotCQlkaXNjb25uZWN0 X2FuZF9leGl0KDEpOworCQlleGl0KDEpOwogCX0KIAogCXJldHVybiBkaXI7CkBAIC0xODYs NyArMTg3LDcgQEAgY2xvc2VfZGVzdGluYXRpb25fZGlyKERJUiAqZGVzdF9kaXIsIGNoYXIg KmRlc3RfZm9sZGVyKQogCXsKIAkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg Y2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAogCQkJCXByb2duYW1lLCBkZXN0X2Zv bGRlciwgc3RyZXJyb3IoZXJybm8pKTsKLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJ ZXhpdCgxKTsKIAl9CiB9CiAKQEAgLTI2Nyw3ICsyNjgsNyBAQCBGaW5kU3RyZWFtaW5nU3Rh cnQodWludDMyICp0bGkpCiAJCQl7CiAJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3Vs ZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJXNcbiIpLAogCQkJCQkJcHJvZ25hbWUsIGZ1bGxw YXRoLCBzdHJlcnJvcihlcnJubykpOwotCQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7CisJ CQkJZXhpdCgxKTsKIAkJCX0KIAogCQkJaWYgKHN0YXRidWYuc3Rfc2l6ZSAhPSBXYWxTZWdT eikKQEAgLTI5MywxMyArMjk0LDEzIEBAIEZpbmRTdHJlYW1pbmdTdGFydCh1aW50MzIgKnRs aSkKIAkJCXsKIAkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGNv bXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKIAkJCQkJCXByb2duYW1lLCBmdWxscGF0 aCwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOworCQkJ CWV4aXQoMSk7CiAJCQl9CiAJCQlpZiAobHNlZWsoZmQsIChvZmZfdCkgKC00KSwgU0VFS19F TkQpIDwgMCkKIAkJCXsKIAkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBz ZWVrIGluIGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKIAkJCQkJCXByb2duYW1l LCBmdWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCQlkaXNjb25uZWN0X2FuZF9leGl0 KDEpOworCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlyID0gcmVhZChmZCwgKGNoYXIgKikgYnVm LCBzaXplb2YoYnVmKSk7CiAJCQlpZiAociAhPSBzaXplb2YoYnVmKSkKQEAgLTMxMCw3ICsz MTEsNyBAQCBGaW5kU3RyZWFtaW5nU3RhcnQodWludDMyICp0bGkpCiAJCQkJZWxzZQogCQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGNvbXByZXNzZWQgZmls ZSBcIiVzXCI6IHJlYWQgJWQgb2YgJXp1XG4iKSwKIAkJCQkJCQlwcm9nbmFtZSwgZnVsbHBh dGgsIHIsIHNpemVvZihidWYpKTsKLQkJCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOworCQkJ CWV4aXQoMSk7CiAJCQl9CiAKIAkJCWNsb3NlKGZkKTsKQEAgLTM0MSw3ICszNDIsNyBAQCBG aW5kU3RyZWFtaW5nU3RhcnQodWludDMyICp0bGkpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKIAkJCQlw cm9nbmFtZSwgYmFzZWRpciwgc3RyZXJyb3IoZXJybm8pKTsKLQkJZGlzY29ubmVjdF9hbmRf ZXhpdCgxKTsKKwkJZXhpdCgxKTsKIAl9CiAKIAljbG9zZV9kZXN0aW5hdGlvbl9kaXIoZGly LCBiYXNlZGlyKTsKQEAgLTM5NSw3ICszOTYsNyBAQCBTdHJlYW1Mb2codm9pZCkKIAkJICog VGhlcmUncyBubyBob3BlIG9mIHJlY292ZXJpbmcgZnJvbSBhIHZlcnNpb24gbWlzbWF0Y2gs IHNvIGRvbid0CiAJCSAqIHJldHJ5LgogCQkgKi8KLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgx KTsKKwkJZXhpdCgxKTsKIAl9CiAKIAkvKgpAQCAtNDA0LDcgKzQwNSw3IEBAIFN0cmVhbUxv Zyh2b2lkKQogCSAqIGV4aXN0aW5nIG91dHB1dCBkaXJlY3RvcnkuCiAJICovCiAJaWYgKCFS dW5JZGVudGlmeVN5c3RlbShjb25uLCBOVUxMLCAmc2VydmVydGxpLCAmc2VydmVycG9zLCBO VUxMKSkKLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhpdCgxKTsKIAogCS8qCiAJ ICogRmlndXJlIG91dCB3aGVyZSB0byBzdGFydCBzdHJlYW1pbmcuCkBAIC00NTIsNiArNDUz LDcgQEAgU3RyZWFtTG9nKHZvaWQpCiAJfQogCiAJUFFmaW5pc2goY29ubik7CisJY29ubiA9 IE5VTEw7CiAKIAlGcmVlV2FsRGlyZWN0b3J5TWV0aG9kKCk7CiAJcGdfZnJlZShzdHJlYW0u d2FsbWV0aG9kKTsKQEAgLTcwMSw2ICs3MDMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAlpZiAoIWNvbm4pCiAJCS8qIGVycm9yIG1lc3NhZ2UgYWxyZWFkeSB3cml0dGVu IGluIEdldENvbm5lY3Rpb24oKSAqLwogCQlleGl0KDEpOworCWF0ZXhpdChkaXNjb25uZWN0 X2F0ZXhpdCk7CiAKIAkvKgogCSAqIFJ1biBJREVOVElGWV9TWVNURU0gdG8gbWFrZSBzdXJl IHdlJ3ZlIHN1Y2Nlc3NmdWxseSBoYXZlIGVzdGFibGlzaGVkIGEKQEAgLTcwOCw3ICs3MTEs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKiBjb25uZWN0aW9uLgogCSAq LwogCWlmICghUnVuSWRlbnRpZnlTeXN0ZW0oY29ubiwgTlVMTCwgTlVMTCwgTlVMTCwgJmRi X25hbWUpKQotCQlkaXNjb25uZWN0X2FuZF9leGl0KDEpOworCQlleGl0KDEpOwogCiAJLyoK IAkgKiBTZXQgdW1hc2sgc28gdGhhdCBkaXJlY3Rvcmllcy9maWxlcyBhcmUgY3JlYXRlZCB3 aXRoIHRoZSBzYW1lCkBAIC03MjIsNyArNzI1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAKIAkvKiBkZXRlcm1pbmUgcmVtb3RlIHNlcnZlcidzIHhsb2cgc2VnbWVudCBz aXplICovCiAJaWYgKCFSZXRyaWV2ZVdhbFNlZ1NpemUoY29ubikpCi0JCWRpc2Nvbm5lY3Rf YW5kX2V4aXQoMSk7CisJCWV4aXQoMSk7CiAKIAkvKgogCSAqIENoZWNrIHRoYXQgdGhlcmUg aXMgYSBkYXRhYmFzZSBhc3NvY2lhdGVkIHdpdGggY29ubmVjdGlvbiwgbm9uZSBzaG91bGQK QEAgLTczMyw3ICs3MzYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJZnBy aW50ZihzdGRlcnIsCiAJCQkJXygiJXM6IHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gdXNpbmcg c2xvdCBcIiVzXCIgaXMgdW5leHBlY3RlZGx5IGRhdGFiYXNlIHNwZWNpZmljXG4iKSwKIAkJ CQlwcm9nbmFtZSwgcmVwbGljYXRpb25fc2xvdCk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQo MSk7CisJCWV4aXQoMSk7CiAJfQogCiAJLyoKQEAgLTc0Nyw4ICs3NTAsOCBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJcHJvZ25hbWUsIHJlcGxpY2F0aW9uX3Nsb3Qp OwogCiAJCWlmICghRHJvcFJlcGxpY2F0aW9uU2xvdChjb25uLCByZXBsaWNhdGlvbl9zbG90 KSkKLQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7Ci0JCWRpc2Nvbm5lY3RfYW5kX2V4aXQo MCk7CisJCQlleGl0KDEpOworCQlleGl0KDApOwogCX0KIAogCS8qIENyZWF0ZSBhIHJlcGxp Y2F0aW9uIHNsb3QgKi8KQEAgLTc2MSw4ICs3NjQsOCBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAogCQlpZiAoIUNyZWF0ZVJlcGxpY2F0aW9uU2xvdChjb25uLCByZXBsaWNh dGlvbl9zbG90LCBOVUxMLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsCiAJCQkJCQkJCSAgIHNsb3Rf ZXhpc3RzX29rKSkKLQkJCWRpc2Nvbm5lY3RfYW5kX2V4aXQoMSk7Ci0JCWRpc2Nvbm5lY3Rf YW5kX2V4aXQoMCk7CisJCQlleGl0KDEpOworCQlleGl0KDApOwogCX0KIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVjdmxvZ2ljYWwuYyBiL3NyYy9i aW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2bG9naWNhbC5jCmluZGV4IDQ3MWI2YjExYmUuLmQ3 NWI2NmYxZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2bG9n aWNhbC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2bG9naWNhbC5jCkBA IC02NSw3ICs2NSw2IEBAIHN0YXRpYyBYTG9nUmVjUHRyIG91dHB1dF9mc3luY19sc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKIAogc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCk7CiBzdGF0aWMg dm9pZCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpOwotc3RhdGljIHZvaWQgZGlzY29ubmVjdF9h bmRfZXhpdChpbnQgY29kZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CiBzdGF0aWMgYm9v bCBmbHVzaEFuZFNlbmRGZWVkYmFjayhQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6ICpub3cp Owogc3RhdGljIHZvaWQgcHJlcGFyZVRvVGVybWluYXRlKFBHY29ubiAqY29ubiwgWExvZ1Jl Y1B0ciBlbmRwb3MsCiAJCQkJICAgYm9vbCBrZWVwYWxpdmUsIFhMb2dSZWNQdHIgbHNuKTsK QEAgLTE2NywxMiArMTY2LDEwIEBAIHNlbmRGZWVkYmFjayhQR2Nvbm4gKmNvbm4sIFRpbWVz dGFtcFR6IG5vdywgYm9vbCBmb3JjZSwgYm9vbCByZXBseVJlcXVlc3RlZCkKIH0KIAogc3Rh dGljIHZvaWQKLWRpc2Nvbm5lY3RfYW5kX2V4aXQoaW50IGNvZGUpCitkaXNjb25uZWN0X2F0 ZXhpdCh2b2lkKQogewogCWlmIChjb25uICE9IE5VTEwpCiAJCVBRZmluaXNoKGNvbm4pOwot Ci0JZXhpdChjb2RlKTsKIH0KIAogc3RhdGljIGJvb2wKQEAgLTk0NCwyMCArOTQxLDIxIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmICghY29ubikKIAkJLyogRXJyb3Ig bWVzc2FnZSBhbHJlYWR5IHdyaXR0ZW4gaW4gR2V0Q29ubmVjdGlvbigpICovCiAJCWV4aXQo MSk7CisJYXRleGl0KGRpc2Nvbm5lY3RfYXRleGl0KTsKIAogCS8qCiAJICogUnVuIElERU5U SUZZX1NZU1RFTSB0byBtYWtlIHN1cmUgd2UgY29ubmVjdGVkIHVzaW5nIGEgZGF0YWJhc2Ug c3BlY2lmaWMKIAkgKiByZXBsaWNhdGlvbiBjb25uZWN0aW9uLgogCSAqLwogCWlmICghUnVu SWRlbnRpZnlTeXN0ZW0oY29ubiwgTlVMTCwgTlVMTCwgTlVMTCwgJmRiX25hbWUpKQotCQlk aXNjb25uZWN0X2FuZF9leGl0KDEpOworCQlleGl0KDEpOwogCiAJaWYgKGRiX25hbWUgPT0g TlVMTCkKIAl7CiAJCWZwcmludGYoc3RkZXJyLAogCQkJCV8oIiVzOiBjb3VsZCBub3QgZXN0 YWJsaXNoIGRhdGFiYXNlLXNwZWNpZmljIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb25cbiIpLAog CQkJCXByb2duYW1lKTsKLQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJZXhpdCgxKTsK IAl9CiAKIAkvKgpAQCAtOTc5LDcgKzk3Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQkJCQlwcm9nbmFtZSwgcmVwbGljYXRpb25fc2xvdCk7CiAKIAkJaWYgKCFEcm9w UmVwbGljYXRpb25TbG90KGNvbm4sIHJlcGxpY2F0aW9uX3Nsb3QpKQotCQkJZGlzY29ubmVj dF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQoMSk7CiAJfQogCiAJLyogQ3JlYXRlIGEgcmVwbGlj YXRpb24gc2xvdC4gKi8KQEAgLTk5MiwxMiArOTkwLDEyIEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCiAJCWlmICghQ3JlYXRlUmVwbGljYXRpb25TbG90KGNvbm4sIHJlcGxp Y2F0aW9uX3Nsb3QsIHBsdWdpbiwgZmFsc2UsCiAJCQkJCQkJCSAgIGZhbHNlLCBmYWxzZSwg c2xvdF9leGlzdHNfb2spKQotCQkJZGlzY29ubmVjdF9hbmRfZXhpdCgxKTsKKwkJCWV4aXQo MSk7CiAJCXN0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJfQogCiAJaWYgKCFkb19z dGFydF9zbG90KQotCQlkaXNjb25uZWN0X2FuZF9leGl0KDApOworCQlleGl0KDApOwogCiAJ LyogU3RyZWFtIGxvb3AgKi8KIAl3aGlsZSAodHJ1ZSkKQEAgLTEwMDksNyArMTAwNyw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJICogV2UndmUgYmVlbiBDdHJsLUMn ZWQgb3IgcmVhY2hlZCBhbiBleGl0IGxpbWl0IGNvbmRpdGlvbi4gVGhhdCdzCiAJCQkgKiBu b3QgYW4gZXJyb3IsIHNvIGV4aXQgd2l0aG91dCBhbiBlcnJvcmNvZGUuCiAJCQkgKi8KLQkJ CWRpc2Nvbm5lY3RfYW5kX2V4aXQoMCk7CisJCQlleGl0KDApOwogCQl9CiAJCWVsc2UgaWYg KG5vbG9vcCkKIAkJewoKYmFzZS1jb21taXQ6IGM1YzdmYTI2MWY1N2ZhZGQ5M2YxNjZkYzMz Y2UyYjFkMTg4YWQ0ZTcKLS0gCjIuMjAuMQoK --------------27F4A942800D639ACDDA3063 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0002-initdb-Use-atexit.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0002-initdb-Use-atexit.patch" RnJvbSBmNDAyYjBkZGQ5NzhlMjVkNDU4N2U4M2Y5NjU0NzNhODI4YWNkYjlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogU2F0LCAyOSBEZWMgMjAxOCAxMzoyMTo1NyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMi8zXSBpbml0ZGI6IFVzZSBhdGV4aXQoKQoKUmVwbGFjZSBleGl0X25p Y2VseSgpIGNhbGxzIHdpdGggc3RhbmRhcmQgZXhpdCgpIGFuZCByZWdpc3RlciB0aGUKY2xl YW51cCBhY3Rpb25zIHVzaW5nIGF0ZXhpdCgpLgotLS0KIHNyYy9iaW4vaW5pdGRiL2luaXRk Yi5jIHwgODIgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRk Yi5jCmluZGV4IDNlYmUwNWRiZjAuLmU1NWJhNjY4Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v aW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0xNTks NiArMTU5LDcgQEAgc3RhdGljIGNoYXIgKmRpY3Rpb25hcnlfZmlsZTsKIHN0YXRpYyBjaGFy ICppbmZvX3NjaGVtYV9maWxlOwogc3RhdGljIGNoYXIgKmZlYXR1cmVzX2ZpbGU7CiBzdGF0 aWMgY2hhciAqc3lzdGVtX3ZpZXdzX2ZpbGU7CitzdGF0aWMgYm9vbCBzdWNjZXNzID0gZmFs c2U7CiBzdGF0aWMgYm9vbCBtYWRlX25ld19wZ2RhdGEgPSBmYWxzZTsKIHN0YXRpYyBib29s IGZvdW5kX2V4aXN0aW5nX3BnZGF0YSA9IGZhbHNlOwogc3RhdGljIGJvb2wgbWFkZV9uZXdf eGxvZ2RpciA9IGZhbHNlOwpAQCAtMjM3LDcgKzIzOCw2IEBAIHN0YXRpYyBjaGFyICoqZmls dGVyX2xpbmVzX3dpdGhfdG9rZW4oY2hhciAqKmxpbmVzLCBjb25zdCBjaGFyICp0b2tlbik7 CiBzdGF0aWMgY2hhciAqKnJlYWRmaWxlKGNvbnN0IGNoYXIgKnBhdGgpOwogc3RhdGljIHZv aWQgd3JpdGVmaWxlKGNoYXIgKnBhdGgsIGNoYXIgKipsaW5lcyk7CiBzdGF0aWMgRklMRSAq cG9wZW5fY2hlY2soY29uc3QgY2hhciAqY29tbWFuZCwgY29uc3QgY2hhciAqbW9kZSk7Ci1z dGF0aWMgdm9pZCBleGl0X25pY2VseSh2b2lkKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsK IHN0YXRpYyBjaGFyICpnZXRfaWQodm9pZCk7CiBzdGF0aWMgaW50CWdldF9lbmNvZGluZ19p ZChjb25zdCBjaGFyICplbmNvZGluZ19uYW1lKTsKIHN0YXRpYyB2b2lkIHNldF9pbnB1dChj aGFyICoqZGVzdCwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwpAQCAtMjkxLDEzICsyOTEsMTMg QEAgdm9pZAkJaW5pdGlhbGl6ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKTsKIGRvIHsgXAogCWNt ZGZkID0gcG9wZW5fY2hlY2soY21kLCAidyIpOyBcCiAJaWYgKGNtZGZkID09IE5VTEwpIFwK LQkJZXhpdF9uaWNlbHkoKTsgLyogbWVzc2FnZSBhbHJlYWR5IHByaW50ZWQgYnkgcG9wZW5f Y2hlY2sgKi8gXAorCQlleGl0KDEpOyAvKiBtZXNzYWdlIGFscmVhZHkgcHJpbnRlZCBieSBw b3Blbl9jaGVjayAqLyBcCiB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFBHX0NNRF9DTE9TRSBc CiBkbyB7IFwKIAlpZiAocGNsb3NlX2NoZWNrKGNtZGZkKSkgXAotCQlleGl0X25pY2VseSgp OyAvKiBtZXNzYWdlIGFscmVhZHkgcHJpbnRlZCBieSBwY2xvc2VfY2hlY2sgKi8gXAorCQll eGl0KDEpOyAvKiBtZXNzYWdlIGFscmVhZHkgcHJpbnRlZCBieSBwY2xvc2VfY2hlY2sgKi8g XAogfSB3aGlsZSAoMCkKIAogI2RlZmluZSBQR19DTURfUFVUUyhsaW5lKSBcCkBAIC00OTMs NyArNDkzLDcgQEAgcmVhZGZpbGUoY29uc3QgY2hhciAqcGF0aCkKIAl7CiAJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6 ICVzXG4iKSwKIAkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLQkJZXhp dF9uaWNlbHkoKTsKKwkJZXhpdCgxKTsKIAl9CiAKIAkvKiBwYXNzIG92ZXIgdGhlIGZpbGUg dHdpY2UgLSB0aGUgZmlyc3QgdGltZSB0byBzaXplIHRoZSByZXN1bHQgKi8KQEAgLTU0OSw3 ICs1NDksNyBAQCB3cml0ZWZpbGUoY2hhciAqcGF0aCwgY2hhciAqKmxpbmVzKQogCXsKIAkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3Ig d3JpdGluZzogJXNcbiIpLAogCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykp OwotCQlleGl0X25pY2VseSgpOworCQlleGl0KDEpOwogCX0KIAlmb3IgKGxpbmUgPSBsaW5l czsgKmxpbmUgIT0gTlVMTDsgbGluZSsrKQogCXsKQEAgLTU1Nyw3ICs1NTcsNyBAQCB3cml0 ZWZpbGUoY2hhciAqcGF0aCwgY2hhciAqKmxpbmVzKQogCQl7CiAJCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAogCQkJCQlw cm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCWV4aXRfbmljZWx5KCk7CisJ CQlleGl0KDEpOwogCQl9CiAJCWZyZWUoKmxpbmUpOwogCX0KQEAgLTU2NSw3ICs1NjUsNyBA QCB3cml0ZWZpbGUoY2hhciAqcGF0aCwgY2hhciAqKmxpbmVzKQogCXsKIAkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwKIAkJ CQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLQkJZXhpdF9uaWNlbHkoKTsK KwkJZXhpdCgxKTsKIAl9CiB9CiAKQEAgLTU5Miw4ICs1OTIsMTEgQEAgcG9wZW5fY2hlY2so Y29uc3QgY2hhciAqY29tbWFuZCwgY29uc3QgY2hhciAqbW9kZSkKICAqIGlmIHdlIGNyZWF0 ZWQgdGhlIGRhdGEgZGlyZWN0b3J5IHJlbW92ZSBpdCB0b28KICAqLwogc3RhdGljIHZvaWQK LWV4aXRfbmljZWx5KHZvaWQpCitjbGVhbnVwX2RpcmVjdG9yaWVzX2F0ZXhpdCh2b2lkKQog eworCWlmIChzdWNjZXNzKQorCQlyZXR1cm47CisKIAlpZiAoIW5vY2xlYW4pCiAJewogCQlp ZiAobWFkZV9uZXdfcGdkYXRhKQpAQCAtNjQ1LDggKzY0OCw2IEBAIGV4aXRfbmljZWx5KHZv aWQpCiAJCQkJCV8oIiVzOiBXQUwgZGlyZWN0b3J5IFwiJXNcIiBub3QgcmVtb3ZlZCBhdCB1 c2VyJ3MgcmVxdWVzdFxuIiksCiAJCQkJCXByb2duYW1lLCB4bG9nX2Rpcik7CiAJfQotCi0J ZXhpdCgxKTsKIH0KIAogLyoKQEAgLTg3NywxNCArODc4LDE0IEBAIHdyaXRlX3ZlcnNpb25f ZmlsZShjb25zdCBjaGFyICpleHRyYXBhdGgpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB3cml0aW5nOiAlc1xuIiksCiAJ CQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0JCWV4aXRfbmljZWx5KCk7 CisJCWV4aXQoMSk7CiAJfQogCWlmIChmcHJpbnRmKHZlcnNpb25fZmlsZSwgIiVzXG4iLCBQ R19NQUpPUlZFUlNJT04pIDwgMCB8fAogCQlmY2xvc2UodmVyc2lvbl9maWxlKSkKIAl7CiAJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAl c1xuIiksCiAJCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0JCWV4aXRf bmljZWx5KCk7CisJCWV4aXQoMSk7CiAJfQogCWZyZWUocGF0aCk7CiB9CkBAIC05MDUsMTMg KzkwNiwxMyBAQCBzZXRfbnVsbF9jb25mKHZvaWQpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB3cml0aW5nOiAlc1xuIiks CiAJCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0JCWV4aXRfbmljZWx5 KCk7CisJCWV4aXQoMSk7CiAJfQogCWlmIChmY2xvc2UoY29uZl9maWxlKSkKIAl7CiAJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlc1xu IiksCiAJCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0JCWV4aXRfbmlj ZWx5KCk7CisJCWV4aXQoMSk7CiAJfQogCWZyZWUocGF0aCk7CiB9CkBAIC0xMjYyLDcgKzEy NjMsNyBAQCBzZXR1cF9jb25maWcodm9pZCkKIAl7CiAJCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBcIiVzXCI6ICVzXG4iKSwKIAkJ CQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLQkJZXhpdF9uaWNlbHkoKTsK KwkJZXhpdCgxKTsKIAl9CiAKIAkvKgpAQCAtMTI4Miw3ICsxMjgzLDcgQEAgc2V0dXBfY29u ZmlnKHZvaWQpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFu Z2UgcGVybWlzc2lvbnMgb2YgXCIlc1wiOiAlc1xuIiksCiAJCQkJcHJvZ25hbWUsIHBhdGgs IHN0cmVycm9yKGVycm5vKSk7Ci0JCWV4aXRfbmljZWx5KCk7CisJCWV4aXQoMSk7CiAJfQog CiAJZnJlZShjb25mbGluZXMpOwpAQCAtMTM2OSw3ICsxMzcwLDcgQEAgc2V0dXBfY29uZmln KHZvaWQpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFuZ2Ug cGVybWlzc2lvbnMgb2YgXCIlc1wiOiAlc1xuIiksCiAJCQkJcHJvZ25hbWUsIHBhdGgsIHN0 cmVycm9yKGVycm5vKSk7Ci0JCWV4aXRfbmljZWx5KCk7CisJCWV4aXQoMSk7CiAJfQogCiAJ ZnJlZShjb25mbGluZXMpOwpAQCAtMTM4NSw3ICsxMzg2LDcgQEAgc2V0dXBfY29uZmlnKHZv aWQpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFuZ2UgcGVy bWlzc2lvbnMgb2YgXCIlc1wiOiAlc1xuIiksCiAJCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVy cm9yKGVycm5vKSk7Ci0JCWV4aXRfbmljZWx5KCk7CisJCWV4aXQoMSk7CiAJfQogCiAJZnJl ZShjb25mbGluZXMpOwpAQCAtMTQyMyw3ICsxNDI0LDcgQEAgYm9vdHN0cmFwX3RlbXBsYXRl MSh2b2lkKQogCQkJCSAgIkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uIG9yIHNwZWNpZnkgdGhl IGNvcnJlY3QgcGF0aCAiCiAJCQkJICAidXNpbmcgdGhlIG9wdGlvbiAtTC5cbiIpLAogCQkJ CXByb2duYW1lLCBia2lfZmlsZSwgUEdfVkVSU0lPTik7Ci0JCWV4aXRfbmljZWx5KCk7CisJ CWV4aXQoMSk7CiAJfQogCiAJLyogU3Vic3RpdHV0ZSBmb3IgdmFyaW91cyBzeW1ib2xzIHVz ZWQgaW4gdGhlIEJLSSBmaWxlICovCkBAIC0xNTQxLDcgKzE1NDIsNyBAQCBnZXRfc3VfcHdk KHZvaWQpCiAJCWlmIChzdHJjbXAocHdkMSwgcHdkMikgIT0gMCkKIAkJewogCQkJZnByaW50 ZihzdGRlcnIsIF8oIlBhc3N3b3JkcyBkaWRuJ3QgbWF0Y2guXG4iKSk7Ci0JCQlleGl0X25p Y2VseSgpOworCQkJZXhpdCgxKTsKIAkJfQogCX0KIAllbHNlCkBAIC0xNTYxLDcgKzE1NjIs NyBAQCBnZXRfc3VfcHdkKHZvaWQpCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKIAkJCQkJ cHJvZ25hbWUsIHB3ZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlleGl0X25pY2Vs eSgpOworCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAoIWZnZXRzKHB3ZDEsIHNpemVvZihwd2Qx KSwgcHdmKSkKIAkJewpAQCAtMTU3MSw3ICsxNTcyLDcgQEAgZ2V0X3N1X3B3ZCh2b2lkKQog CQkJZWxzZQogCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcGFzc3dvcmQgZmlsZSBcIiVz XCIgaXMgZW1wdHlcbiIpLAogCQkJCQkJcHJvZ25hbWUsIHB3ZmlsZW5hbWUpOwotCQkJZXhp dF9uaWNlbHkoKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAkJZmNsb3NlKHB3Zik7CiAKQEAgLTIx MDQsNyArMjEwNSw3IEBAIG1ha2VfcG9zdGdyZXMoRklMRSAqY21kZmQpCiAgKiBpZiB5b3Ug YXJlIGhhbmRsaW5nIFNJR0ZQRS4KICAqCiAgKiBJIGF2b2lkZWQgZG9pbmcgdGhlIGZvcmJp ZGRlbiB0aGluZ3MgYnkgc2V0dGluZyBhIGZsYWcgaW5zdGVhZCBvZiBjYWxsaW5nCi0gKiBl eGl0X25pY2VseSgpIGRpcmVjdGx5LgorICogZXhpdCgpIGRpcmVjdGx5LgogICoKICAqIEFs c28gbm90ZSB0aGUgYmVoYXZpb3VyIG9mIFdpbmRvd3Mgd2l0aCBTSUdJTlQsIHdoaWNoIHNh eXMgdGhpczoKICAqCSBOb3RlCVNJR0lOVCBpcyBub3Qgc3VwcG9ydGVkIGZvciBhbnkgV2lu MzIgYXBwbGljYXRpb24sIGluY2x1ZGluZwpAQCAtMjEyNSw3ICsyMTI2LDcgQEAgdHJhcHNp ZyhpbnQgc2lnbnVtKQogfQogCiAvKgotICogY2FsbCBleGl0X25pY2VseSgpIGlmIHdlIGdv dCBhIHNpZ25hbCwgb3IgZWxzZSBvdXRwdXQgIm9rIi4KKyAqIGNhbGwgZXhpdCgpIGlmIHdl IGdvdCBhIHNpZ25hbCwgb3IgZWxzZSBvdXRwdXQgIm9rIi4KICAqLwogc3RhdGljIHZvaWQK IGNoZWNrX29rKHZvaWQpCkBAIC0yMTM0LDE0ICsyMTM1LDE0IEBAIGNoZWNrX29rKHZvaWQp CiAJewogCQlwcmludGYoXygiY2F1Z2h0IHNpZ25hbFxuIikpOwogCQlmZmx1c2goc3Rkb3V0 KTsKLQkJZXhpdF9uaWNlbHkoKTsKKwkJZXhpdCgxKTsKIAl9CiAJZWxzZSBpZiAob3V0cHV0 X2ZhaWxlZCkKIAl7CiAJCXByaW50ZihfKCJjb3VsZCBub3Qgd3JpdGUgdG8gY2hpbGQgcHJv Y2VzczogJXNcbiIpLAogCQkJICAgc3RyZXJyb3Iob3V0cHV0X2Vycm5vKSk7CiAJCWZmbHVz aChzdGRvdXQpOwotCQlleGl0X25pY2VseSgpOworCQlleGl0KDEpOwogCX0KIAllbHNlCiAJ ewpAQCAtMjc3NSw3ICsyNzc2LDcgQEAgY3JlYXRlX2RhdGFfZGlyZWN0b3J5KHZvaWQpCiAJ CQl7CiAJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGRpcmVj dG9yeSBcIiVzXCI6ICVzXG4iKSwKIAkJCQkJCXByb2duYW1lLCBwZ19kYXRhLCBzdHJlcnJv cihlcnJubykpOwotCQkJCWV4aXRfbmljZWx5KCk7CisJCQkJZXhpdCgxKTsKIAkJCX0KIAkJ CWVsc2UKIAkJCQljaGVja19vaygpOwpAQCAtMjc5Myw3ICsyNzk0LDcgQEAgY3JlYXRlX2Rh dGFfZGlyZWN0b3J5KHZvaWQpCiAJCQl7CiAJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4i KSwKIAkJCQkJCXByb2duYW1lLCBwZ19kYXRhLCBzdHJlcnJvcihlcnJubykpOwotCQkJCWV4 aXRfbmljZWx5KCk7CisJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCWVsc2UKIAkJCQljaGVja19v aygpOwpAQCAtMjgyMiw3ICsyODIzLDcgQEAgY3JlYXRlX2RhdGFfZGlyZWN0b3J5KHZvaWQp CiAJCQkvKiBUcm91YmxlIGFjY2Vzc2luZyBkaXJlY3RvcnkgKi8KIAkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiks CiAJCQkJCXByb2duYW1lLCBwZ19kYXRhLCBzdHJlcnJvcihlcnJubykpOwotCQkJZXhpdF9u aWNlbHkoKTsKKwkJCWV4aXQoMSk7CiAJfQogfQogCkBAIC0yODQ1LDcgKzI4NDYsNyBAQCBj cmVhdGVfeGxvZ19vcl9zeW1saW5rKHZvaWQpCiAJCWlmICghaXNfYWJzb2x1dGVfcGF0aCh4 bG9nX2RpcikpCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogV0FMIGRpcmVjdG9y eSBsb2NhdGlvbiBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGhcbiIpLCBwcm9nbmFtZSk7Ci0J CQlleGl0X25pY2VseSgpOworCQkJZXhpdCgxKTsKIAkJfQogCiAJCS8qIGNoZWNrIGlmIHRo ZSBzcGVjaWZpZWQgeGxvZyBkaXJlY3RvcnkgZXhpc3RzL2lzIGVtcHR5ICovCkBAIC0yODYx LDcgKzI4NjIsNyBAQCBjcmVhdGVfeGxvZ19vcl9zeW1saW5rKHZvaWQpCiAJCQkJewogCQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwi JXNcIjogJXNcbiIpLAogCQkJCQkJCXByb2duYW1lLCB4bG9nX2Rpciwgc3RyZXJyb3IoZXJy bm8pKTsKLQkJCQkJZXhpdF9uaWNlbHkoKTsKKwkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJ ZWxzZQogCQkJCQljaGVja19vaygpOwpAQCAtMjg3OSw3ICsyODgwLDcgQEAgY3JlYXRlX3hs b2dfb3Jfc3ltbGluayh2b2lkKQogCQkJCXsKIAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVz XG4iKSwKIAkJCQkJCQlwcm9nbmFtZSwgeGxvZ19kaXIsIHN0cmVycm9yKGVycm5vKSk7Ci0J CQkJCWV4aXRfbmljZWx5KCk7CisJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWVsc2UKIAkJ CQkJY2hlY2tfb2soKTsKQEAgLTI5MDEsMTMgKzI5MDIsMTMgQEAgY3JlYXRlX3hsb2dfb3Jf c3ltbGluayh2b2lkKQogCQkJCQkJCV8oIklmIHlvdSB3YW50IHRvIHN0b3JlIHRoZSBXQUwg dGhlcmUsIGVpdGhlciByZW1vdmUgb3IgZW1wdHkgdGhlIGRpcmVjdG9yeVxuIgogCQkJCQkJ CSAgIlwiJXNcIi5cbiIpLAogCQkJCQkJCXhsb2dfZGlyKTsKLQkJCQlleGl0X25pY2VseSgp OworCQkJCWV4aXQoMSk7CiAKIAkJCWRlZmF1bHQ6CiAJCQkJLyogVHJvdWJsZSBhY2Nlc3Np bmcgZGlyZWN0b3J5ICovCiAJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg YWNjZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKIAkJCQkJCXByb2duYW1lLCB4bG9n X2Rpciwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCQlleGl0X25pY2VseSgpOworCQkJCWV4aXQo MSk7CiAJCX0KIAogI2lmZGVmIEhBVkVfU1lNTElOSwpAQCAtMjkxNSwxMSArMjkxNiwxMSBA QCBjcmVhdGVfeGxvZ19vcl9zeW1saW5rKHZvaWQpCiAJCXsKIAkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJXNcbiIp LAogCQkJCQlwcm9nbmFtZSwgc3ViZGlybG9jLCBzdHJlcnJvcihlcnJubykpOwotCQkJZXhp dF9uaWNlbHkoKTsKKwkJCWV4aXQoMSk7CiAJCX0KICNlbHNlCiAJCWZwcmludGYoc3RkZXJy LCBfKCIlczogc3ltbGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxu IiksIHByb2duYW1lKTsKLQkJZXhpdF9uaWNlbHkoKTsKKwkJZXhpdCgxKTsKICNlbmRpZgog CX0KIAllbHNlCkBAIC0yOTI5LDcgKzI5MzAsNyBAQCBjcmVhdGVfeGxvZ19vcl9zeW1saW5r KHZvaWQpCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0 ZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCiAJCQkJCXByb2duYW1lLCBzdWJkaXJsb2Ms IHN0cmVycm9yKGVycm5vKSk7Ci0JCQlleGl0X25pY2VseSgpOworCQkJZXhpdCgxKTsKIAkJ fQogCX0KIApAQCAtMjk5MSw3ICsyOTkyLDcgQEAgaW5pdGlhbGl6ZV9kYXRhX2RpcmVjdG9y eSh2b2lkKQogCQl7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjcmVh dGUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAogCQkJCQlwcm9nbmFtZSwgcGF0aCwgc3Ry ZXJyb3IoZXJybm8pKTsKLQkJCWV4aXRfbmljZWx5KCk7CisJCQlleGl0KDEpOwogCQl9CiAK IAkJZnJlZShwYXRoKTsKQEAgLTMyNjYsNiArMzI2Nyw4IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJZXhpdCgxKTsKIAl9CiAKKwlhdGV4aXQoY2xlYW51cF9kaXJlY3Rv cmllc19hdGV4aXQpOworCiAJLyogSWYgd2Ugb25seSBuZWVkIHRvIGZzeW5jLCBqdXN0IGRv IGl0IGFuZCBleGl0ICovCiAJaWYgKHN5bmNfb25seSkKIAl7CkBAIC0zMjc2LDcgKzMyNzks NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXsKIAkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiks CiAJCQkJCXByb2duYW1lLCBwZ19kYXRhLCBzdHJlcnJvcihlcnJubykpOwotCQkJZXhpdF9u aWNlbHkoKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAogCQlmcHV0cyhfKCJzeW5jaW5nIGRhdGEg dG8gZGlzayAuLi4gIiksIHN0ZG91dCk7CkBAIC0zNDEyLDUgKzM0MTUsNiBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlkZXN0cm95UFFFeHBCdWZmZXIoc3RhcnRfZGJf Y21kKTsKIAorCXN1Y2Nlc3MgPSB0cnVlOwogCXJldHVybiAwOwogfQotLSAKMi4yMC4xCgo= --------------27F4A942800D639ACDDA3063 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0003-isolationtester-Use-atexit.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0003-isolationtester-Use-atexit.patch" RnJvbSA4NjJjMTFjZmQ3YzBkMTc4NGUyM2NlYjkwNzRiNzg0NmQ5NjRiN2QxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogU2F0LCA1IEphbiAyMDE5IDE1OjA1OjQ5ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2MiAzLzNdIGlzb2xhdGlvbnRlc3RlcjogVXNlIGF0ZXhpdCgpCgpSZXBsYWNl IGV4aXRfbmljZWx5KCkgY2FsbHMgd2l0aCBzdGFuZGFyZCBleGl0KCkgYW5kIHJlZ2lzdGVy IHRoZQpjbGVhbnVwIGFjdGlvbnMgdXNpbmcgYXRleGl0KCkuCi0tLQogc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jIHwgNDIgKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYwppbmRleCA5MTM0YjA1MDVl Li5lNTljZjY2N2JhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u dGVzdGVyLmMKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCkBA IC0zMiw3ICszMiw2IEBAIHN0YXRpYyBpbnQJbmNvbm5zID0gMDsKIC8qIEluIGRyeSBydW4g b25seSBvdXRwdXQgcGVybXV0YXRpb25zIHRvIGJlIHJ1biBieSB0aGUgdGVzdGVyLiAqLwog c3RhdGljIGludAlkcnlfcnVuID0gZmFsc2U7CiAKLXN0YXRpYyB2b2lkIGV4aXRfbmljZWx5 KHZvaWQpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwogc3RhdGljIHZvaWQgcnVuX3Rlc3Rz cGVjKFRlc3RTcGVjICp0ZXN0c3BlYyk7CiBzdGF0aWMgdm9pZCBydW5fYWxsX3Blcm11dGF0 aW9ucyhUZXN0U3BlYyAqdGVzdHNwZWMpOwogc3RhdGljIHZvaWQgcnVuX2FsbF9wZXJtdXRh dGlvbnNfcmVjdXJzZShUZXN0U3BlYyAqdGVzdHNwZWMsIGludCBuc3RlcHMsCkBAIC01MSwx NSArNTAsMTQgQEAgc3RhdGljIHZvaWQgcHJpbnRSZXN1bHRTZXQoUEdyZXN1bHQgKnJlcyk7 CiBzdGF0aWMgdm9pZCBpc290ZXN0ZXJOb3RpY2VQcm9jZXNzb3Iodm9pZCAqYXJnLCBjb25z dCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIGJsYWNraG9sZU5vdGljZVByb2Nlc3Nv cih2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCi0vKiBjbG9zZSBhbGwgY29u bmVjdGlvbnMgYW5kIGV4aXQgKi8KIHN0YXRpYyB2b2lkCi1leGl0X25pY2VseSh2b2lkKQor ZGlzY29ubmVjdF9hdGV4aXQodm9pZCkKIHsKIAlpbnQJCQlpOwogCiAJZm9yIChpID0gMDsg aSA8IG5jb25uczsgaSsrKQotCQlQUWZpbmlzaChjb25uc1tpXSk7Ci0JZXhpdCgxKTsKKwkJ aWYgKGNvbm5zW2ldKQorCQkJUFFmaW5pc2goY29ubnNbaV0pOwogfQogCiBpbnQKQEAgLTE0 MCw3ICsxMzgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJewogCQkJZnBy aW50ZihzdGRlcnIsICJkdXBsaWNhdGUgc3RlcCBuYW1lOiAlc1xuIiwKIAkJCQkJdGVzdHNw ZWMtPmFsbHN0ZXBzW2ldLT5uYW1lKTsKLQkJCWV4aXRfbmljZWx5KCk7CisJCQlleGl0KDEp OwogCQl9CiAJfQogCkBAIC0xNjIsNiArMTYwLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJICovCiAJbmNvbm5zID0gMSArIHRlc3RzcGVjLT5uc2Vzc2lvbnM7CiAJY29u bnMgPSBjYWxsb2MobmNvbm5zLCBzaXplb2YoUEdjb25uICopKTsKKwlhdGV4aXQoZGlzY29u bmVjdF9hdGV4aXQpOwogCWJhY2tlbmRfcGlkcyA9IGNhbGxvYyhuY29ubnMsIHNpemVvZigq YmFja2VuZF9waWRzKSk7CiAJZm9yIChpID0gMDsgaSA8IG5jb25uczsgaSsrKQogCXsKQEAg LTE3MCw3ICsxNjksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJewogCQkJ ZnByaW50ZihzdGRlcnIsICJDb25uZWN0aW9uICVkIHRvIGRhdGFiYXNlIGZhaWxlZDogJXMi LAogCQkJCQlpLCBQUWVycm9yTWVzc2FnZShjb25uc1tpXSkpOwotCQkJZXhpdF9uaWNlbHko KTsKKwkJCWV4aXQoMSk7CiAJCX0KIAogCQkvKgpAQCAtMTk2LDcgKzE5NSw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19DT01NQU5EX09LKQogCQl7CiAJCQlmcHJpbnRmKHN0ZGVyciwgIm1lc3NhZ2UgbGV2 ZWwgc2V0dXAgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm5zW2ldKSk7Ci0JCQll eGl0X25pY2VseSgpOworCQkJZXhpdCgxKTsKIAkJfQogCQlQUWNsZWFyKHJlcyk7CiAKQEAg LTIxMCwxNCArMjA5LDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJewog CQkJCWZwcmludGYoc3RkZXJyLCAiYmFja2VuZCBwaWQgcXVlcnkgcmV0dXJuZWQgJWQgcm93 cyBhbmQgJWQgY29sdW1ucywgZXhwZWN0ZWQgMSByb3cgYW5kIDEgY29sdW1uIiwKIAkJCQkJ CVBRbnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSk7Ci0JCQkJZXhpdF9uaWNlbHkoKTsK KwkJCQlleGl0KDEpOwogCQkJfQogCQl9CiAJCWVsc2UKIAkJewogCQkJZnByaW50ZihzdGRl cnIsICJiYWNrZW5kIHBpZCBxdWVyeSBmYWlsZWQ6ICVzIiwKIAkJCQkJUFFlcnJvck1lc3Nh Z2UoY29ubnNbaV0pKTsKLQkJCWV4aXRfbmljZWx5KCk7CisJCQlleGl0KDEpOwogCQl9CiAJ CVBRY2xlYXIocmVzKTsKIAl9CkBAIC0yNTQsNyArMjUzLDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgInByZXBhcmUgb2YgbG9jayB3 YWl0IHF1ZXJ5IGZhaWxlZDogJXMiLAogCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm5zWzBdKSk7 Ci0JCWV4aXRfbmljZWx5KCk7CisJCWV4aXQoMSk7CiAJfQogCVBRY2xlYXIocmVzKTsKIAl0 ZXJtUFFFeHBCdWZmZXIoJndhaXRfcXVlcnkpOwpAQCAtMjY1LDkgKzI2NCw2IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCXJ1bl90ZXN0c3BlYyh0ZXN0c3BlYyk7 CiAKLQkvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLwotCWZvciAoaSA9IDA7IGkgPCBuY29ubnM7 IGkrKykKLQkJUFFmaW5pc2goY29ubnNbaV0pOwogCXJldHVybiAwOwogfQogCkBAIC0zNzUs NyArMzcxLDcgQEAgcnVuX25hbWVkX3Blcm11dGF0aW9ucyhUZXN0U3BlYyAqdGVzdHNwZWMp CiAJCQl7CiAJCQkJZnByaW50ZihzdGRlcnIsICJ1bmRlZmluZWQgc3RlcCBcIiVzXCIgc3Bl Y2lmaWVkIGluIHBlcm11dGF0aW9uXG4iLAogCQkJCQkJcC0+c3RlcG5hbWVzW2pdKTsKLQkJ CQlleGl0X25pY2VseSgpOworCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlzdGVwc1tqXSA9ICp0 aGlzOwogCQl9CkBAIC01MTAsNyArNTA2LDcgQEAgcnVuX3Blcm11dGF0aW9uKFRlc3RTcGVj ICp0ZXN0c3BlYywgaW50IG5zdGVwcywgU3RlcCAqKnN0ZXBzKQogCQllbHNlIGlmIChQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCXsKIAkJCWZwcmludGYo c3RkZXJyLCAic2V0dXAgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm5zWzBdKSk7 Ci0JCQlleGl0X25pY2VseSgpOworCQkJZXhpdCgxKTsKIAkJfQogCQlQUWNsZWFyKHJlcyk7 CiAJfQpAQCAtNTMwLDcgKzUyNiw3IEBAIHJ1bl9wZXJtdXRhdGlvbihUZXN0U3BlYyAqdGVz dHNwZWMsIGludCBuc3RlcHMsIFN0ZXAgKipzdGVwcykKIAkJCQlmcHJpbnRmKHN0ZGVyciwg InNldHVwIG9mIHNlc3Npb24gJXMgZmFpbGVkOiAlcyIsCiAJCQkJCQl0ZXN0c3BlYy0+c2Vz c2lvbnNbaV0tPm5hbWUsCiAJCQkJCQlQUWVycm9yTWVzc2FnZShjb25uc1tpICsgMV0pKTsK LQkJCQlleGl0X25pY2VseSgpOworCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlQUWNsZWFyKHJl cyk7CiAJCX0KQEAgLTYxMiw3ICs2MDgsNyBAQCBydW5fcGVybXV0YXRpb24oVGVzdFNwZWMg KnRlc3RzcGVjLCBpbnQgbnN0ZXBzLCBTdGVwICoqc3RlcHMpCiAJCXsKIAkJCWZwcmludGYo c3Rkb3V0LCAiZmFpbGVkIHRvIHNlbmQgcXVlcnkgZm9yIHN0ZXAgJXM6ICVzXG4iLAogCQkJ CQlzdGVwLT5uYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7Ci0JCQlleGl0X25pY2VseSgp OworCQkJZXhpdCgxKTsKIAkJfQogCiAJCS8qIFRyeSB0byBjb21wbGV0ZSB0aGlzIHN0ZXAg d2l0aG91dCBibG9ja2luZy4gICovCkBAIC03MjMsNyArNzE5LDcgQEAgdHJ5X2NvbXBsZXRl X3N0ZXAoU3RlcCAqc3RlcCwgaW50IGZsYWdzKQogCWlmIChzb2NrIDwgMCkKIAl7CiAJCWZw cmludGYoc3RkZXJyLCAiaW52YWxpZCBzb2NrZXQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29u bikpOwotCQlleGl0X25pY2VseSgpOworCQlleGl0KDEpOwogCX0KIAogCWdldHRpbWVvZmRh eSgmc3RhcnRfdGltZSwgTlVMTCk7CkBAIC03NDEsNyArNzM3LDcgQEAgdHJ5X2NvbXBsZXRl X3N0ZXAoU3RlcCAqc3RlcCwgaW50IGZsYWdzKQogCQkJaWYgKGVycm5vID09IEVJTlRSKQog CQkJCWNvbnRpbnVlOwogCQkJZnByaW50ZihzdGRlcnIsICJzZWxlY3QgZmFpbGVkOiAlc1xu Iiwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCWV4aXRfbmljZWx5KCk7CisJCQlleGl0KDEpOwog CQl9CiAJCWVsc2UgaWYgKHJldCA9PSAwKQkJLyogc2VsZWN0KCkgdGltZW91dDogY2hlY2sg Zm9yIGxvY2sgd2FpdCAqLwogCQl7CkBAIC03NjEsNyArNzU3LDcgQEAgdHJ5X2NvbXBsZXRl X3N0ZXAoU3RlcCAqc3RlcCwgaW50IGZsYWdzKQogCQkJCXsKIAkJCQkJZnByaW50ZihzdGRl cnIsICJsb2NrIHdhaXQgcXVlcnkgZmFpbGVkOiAlcyIsCiAJCQkJCQkJUFFlcnJvck1lc3Nh Z2UoY29ubnNbMF0pKTsKLQkJCQkJZXhpdF9uaWNlbHkoKTsKKwkJCQkJZXhpdCgxKTsKIAkJ CQl9CiAJCQkJd2FpdGluZyA9ICgoUFFnZXR2YWx1ZShyZXMsIDAsIDApKVswXSA9PSAndCcp OwogCQkJCVBRY2xlYXIocmVzKTsKQEAgLTgxOCwxNCArODE0LDE0IEBAIHRyeV9jb21wbGV0 ZV9zdGVwKFN0ZXAgKnN0ZXAsIGludCBmbGFncykKIAkJCXsKIAkJCQlmcHJpbnRmKHN0ZGVy ciwgInN0ZXAgJXMgdGltZWQgb3V0IGFmdGVyIDIwMCBzZWNvbmRzXG4iLAogCQkJCQkJc3Rl cC0+bmFtZSk7Ci0JCQkJZXhpdF9uaWNlbHkoKTsKKwkJCQlleGl0KDEpOwogCQkJfQogCQl9 CiAJCWVsc2UgaWYgKCFQUWNvbnN1bWVJbnB1dChjb25uKSkgLyogc2VsZWN0KCk6IGRhdGEg YXZhaWxhYmxlICovCiAJCXsKIAkJCWZwcmludGYoc3RkZXJyLCAiUFFjb25zdW1lSW5wdXQg ZmFpbGVkOiAlc1xuIiwKIAkJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpOwotCQkJZXhpdF9u aWNlbHkoKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAl9CiAKLS0gCjIuMjAuMQoK --------------27F4A942800D639ACDDA3063--