Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rRteX-00A205-4F for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Jan 2024 12:43:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rRteV-003waz-Pa for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Jan 2024 12:43:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rRteU-003waq-DG for pgsql-hackers@lists.postgresql.org; Mon, 22 Jan 2024 12:43:47 +0000 Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rRteQ-002n1C-Kj for pgsql-hackers@postgresql.org; Mon, 22 Jan 2024 12:43:45 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 0A7A15C0164; Mon, 22 Jan 2024 07:43:41 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Mon, 22 Jan 2024 07:43:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1705927421; x= 1706013821; bh=T86P4x1Z/ntwXB+PNKYp0qTAc3zfeb9vbAoFF2efKQg=; b=e oK+W+xd32y7TBfxceHn7ZTO3vPVqMoQm7o2P+Mg9Xgm9HrIJH9v4zVRS2vemtEEo F/L5kdPdoiMjmjk92Rby0fQuvfZVUgCF325OEUWgXECTPt2/i5dUArZ1Df4W8FA5 KSDqX/Ezlp24dJTHR0QHAC0KzxcY+cqM2OUcWzBDPWabaou10qoRaWW6YsADnvQv uhDuK+KeW46owURQWXWD79vj89ghErCnEy8ePRH7VCf+KsYJoZflle3WJXsdwLfM yA9iz1/Ltksc5+8Xlmk3lfeVLUWvyEbGy75sjnyO0Hlj2I46qE2one7eJ0WkRH4E R1EvF+AUsCPUgoHIU86+Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1705927421; x=1706013821; bh=T86P4x1Z/ntwXB+PNKYp0qTAc3zf eb9vbAoFF2efKQg=; b=gwBc/QMkgNdtrk3fnvrbfgjBw0J8G37aNt2Gxa2ZujVw nQerpJH02yUQr+9QOCz4JufiVJZbqLQjAmt62Pd0INTD/SYE9A1GdkH0EHtz+wSB tANJu2T+YI48hqlSMTPbiIqlwensWpjr/BrU44BkaPJiYDlAdGLvpC98vLsSvnSX DgzuIYpQw3k0vamV0AWrNqeWmQDoc5xkF9n4G3gU5NxYbFiEA4X6lCCXbR+am+Oj vBanDpwaePaG2ZsXmBnDxIALNf+E3L51lDYBcTksvY/KcYYf7qwbKZB3jh9u+sdQ 2NXmXKsq4r6QIHr0P4iN+Aerqt45tGF8fY82OaXpOA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdekiedggedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuhffvvehfjgesmhdtreertddvjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhgqe enucggtffrrghtthgvrhhnpeffkedtffdvhfettdejvddtkeffieeiteeujeehudegvdei gfevhfegjeduledvhfenucffohhmrghinhepphhoshhtghhrvghsqhhlrdhorhhgnecuve hluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhes vghishgvnhhtrhgruhhtrdhorhhg X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 22 Jan 2024 07:43:39 -0500 (EST) Content-Type: multipart/mixed; boundary="------------KS4UqLjqWZrYIx7YEWn090IZ" Message-ID: <12e27bdb-1a3d-450f-923b-c36feea24f01@eisentraut.org> Date: Mon, 22 Jan 2024 13:43:38 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: tablecmds.c/MergeAttributes() cleanup Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers Cc: Alvaro Herrera References: <20230829112028.qhzse7chs3swqwqh@alvherre.pgsql> <60beec03-f14c-ea46-8e5f-f68773ce83f9@eisentraut.org> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------KS4UqLjqWZrYIx7YEWn090IZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 06.12.23 09:23, Peter Eisentraut wrote: > The (now) second patch is also still of interest to me, but I have since > noticed that I think [0] should be fixed first, but to make that fix > simpler, I would like the first patch from here. > > [0]: > https://www.postgresql.org/message-id/flat/24656cec-d6ef-4d15-8b5b-e8dfc9c833a7%40eisentraut.org The remaining patch in this series needed a rebase and adjustment. The above precondition still applies. --------------KS4UqLjqWZrYIx7YEWn090IZ Content-Type: text/plain; charset=UTF-8; name="v5-0001-MergeAttributes-convert-pg_attribute-back-to-Colu.patch" Content-Disposition: attachment; filename*0="v5-0001-MergeAttributes-convert-pg_attribute-back-to-Colu.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjNGM0NDYyZmE1OGM3M2ZjMzgzYzQ5MzVjOGQyNzUzYjdhMGI0YzlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMiBKYW4gMjAyNCAxMzoyMzo0MyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjVdIE1lcmdlQXR0cmlidXRlczogY29udmVydCBwZ19hdHRyaWJ1dGUgYmFj ayB0byBDb2x1bW5EZWYKIGJlZm9yZSBjb21wYXJpbmcKCk1lcmdlQXR0cmlidXRlcygpIGhh cyBhIGxvb3AgdG8gbWVyZ2UgbXVsdGlwbGUgaW5oZXJpdGFuY2UgcGFyZW50cwppbnRvIGEg Y29sdW1uIGNvbHVtbiBkZWZpbml0aW9uLiAgVGhlIG1lcmdlZC1zby1mYXIgZGVmaW5pdGlv biBpcwpzdG9yZWQgaW4gYSBDb2x1bW5EZWYgbm9kZS4gIElmIHdlIGhhdmUgdG8gbWVyZ2Ug Y29sdW1ucyBmcm9tIG11bHRpcGxlCmluaGVyaXRhbmNlIHBhcmVudHMgKGlmIHRoZSBuYW1l IG1hdGNoZXMpLCB0aGVuIHdlIGhhdmUgdG8gY2hlY2sKd2hldGhlciB2YXJpb3VzIGNvbHVt biBwcm9wZXJ0aWVzICh0eXBlLCBjb2xsYXRpb24sIGV0Yy4pIG1hdGNoLiAgVGhlCmN1cnJl bnQgY29kZSBleHRyYWN0cyB0aGUgcGdfYXR0cmlidXRlIHZhbHVlIG9mIHRoZQpjdXJyZW50 bHktY29uc2lkZXJlZCBpbmhlcml0YW5jZSBwYXJlbnQgYW5kIGNvbXBhcmVzIGl0IGFnYWlu c3QgdGhlCm1lcmdlZC1zby1mYXIgQ29sdW1uRGVmIHZhbHVlLiAgSWYgdGhlIGN1cnJlbnRs eSBjb25zaWRlcmVkIGNvbHVtbgpkb2Vzbid0IG1hdGNoIGFueSBwcmV2aW91c2x5IGluaGVy aXRlZCBjb2x1bW4sIHdlIG1ha2UgYSBuZXcgQ29sdW1uRGVmCm5vZGUgZnJvbSB0aGUgcGdf YXR0cmlidXRlIGluZm9ybWF0aW9uIGFuZCBhZGQgaXQgdG8gdGhlIGNvbHVtbiBsaXN0LgoK VGhpcyBwYXRjaCByZWFycmFuZ2VzIHRoaXMgc28gdGhhdCB3ZSBjcmVhdGUgdGhlIENvbHVt bkRlZiBub2RlIGZpcnN0CmluIGVpdGhlciBjYXNlLiAgVGhlbiB0aGUgY29kZSB0aGF0IGNo ZWNrcyB0aGUgY29sdW1uIHByb3BlcnRpZXMgZm9yCmNvbXBhdGliaWxpdHkgY29tcGFyZXMg Q29sdW1uRGVmIGFnYWluc3QgQ29sdW1uRGVmIChpbnN0ZWFkIG9mCkNvbHVtbkRlZiBhZ2Fp bnN0IHBnX2F0dHJpYnV0ZSkuICBUaGlzIG1ha2VzIHRoZSBjb2RlIG1vcmUgc3ltbWV0cmlj CmFuZCBlYXNpZXIgdG8gZm9sbG93LiAgQWxzbywgbGF0ZXIgaW4gTWVyZ2VBdHRyaWJ1dGVz KCksIHRoZXJlIGlzIGEKc2ltaWxhciBidXQgc2VwYXJhdGUgbG9vcCB0aGF0IG1lcmdlcyB0 aGUgbmV3IGxvY2FsIGNvbHVtbiBkZWZpbml0aW9uCndpdGggdGhlIGNvbWJpbmF0aW9uIG9m IHRoZSBpbmhlcml0YW5jZSBwYXJlbnRzIGVzdGFibGlzaGVkIGluIHRoZQpmaXJzdCBsb29w LiAgVGhhdCBjb21wYXJpc29uIGlzIGFscmVhZHkgQ29sdW1uRGVmLXZzLUNvbHVtbkRlZi4g IFdpdGgKdGhpcyBjaGFuZ2UsIGJvdGggb2YgdGhlc2UgY2FuIHVzZSBzaW1pbGFyLWxvb2tp bmcgbG9naWMuICAoQSBmdXR1cmUKcHJvamVjdCBtaWdodCBiZSB0byBleHRyYWN0IHRoZXNl IHR3byBzZXRzIG9mIGNvZGUgaW50byBhIGNvbW1vbgpyb3V0aW5lIHRoYXQgZW5jb2RlcyBh bGwgdGhlIGtub3dsZWRnZSBvZiB3aGV0aGVyIHR3byBjb2x1bW4KZGVmaW5pdGlvbnMgYXJl IGNvbXBhdGlibGUuICBCdXQgdGhpcyBpc24ndCBjdXJyZW50bHkgc3RyYWlnaHRmb3J3YXJk CmJlY2F1c2Ugd2Ugd2FudCB0byBnaXZlIGRpZmZlcmVudCBlcnJvciBtZXNzYWdlcyBpbiB0 aGUgdHdvIGNhc2VzLikKRnVydGhlcm1vcmUsIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgRm9y bV9wZ19hdHRyaWJ1dGUgaGVyZSwgd2UgbWFrZSBpdAplYXNpZXIgdG8gbWFrZSBjaGFuZ2Vz IGluIHRoZSBwZ19hdHRyaWJ1dGUgbGF5b3V0IHdpdGhvdXQgaGF2aW5nIHRvCndvcnJ5IGFi b3V0IHRoZSBsb2NhbCBuZWVkcyBvZiB0YWJsZWNtZHMuYy4KCkJlY2F1c2UgTWVyZ2VBdHRy aWJ1dGVzKCkgaXMgaHVnZWx5IGxvbmcsIGl0J3Mgc29tZXRpbWVzIGhhcmQgdG8ga25vdwp3 aGVyZSBpbiB0aGUgZnVuY3Rpb24geW91IGFyZSBjdXJyZW50bHkgbG9va2luZy4gIFRvIGhl bHAgd2l0aCB0aGF0LCBJCmFsc28gcmVuYW1lZCBzb21lIHZhcmlhYmxlcyB0byBtYWtlIGl0 IGNsZWFyZXIgd2hlcmUgeW91IGFyZSBjdXJyZW50bHkKbG9va2luZy4gIFRoZSBmaXJzdCBs b29rIGlzICJwcmV2IiB2cy4gIm5ldyIsIHRoZSBzZWNvbmQgbG9vcCBpcyAiaW5oIgp2cy4g Im5ldyIuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdl LWlkL2ZsYXQvNTJhMTI1ZTQtZmY5YS05NWY1LTlmNjEtYjg3Y2Y0NDdlNGRhQGVpc2VudHJh dXQub3JnCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgfCAxOTggKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwMiBpbnNl cnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IDJhNTZhNDM1N2M5Li4wNGU2NzRiYmRhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTI3MDQsNyArMjcwNCw4IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpj b2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJ CQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOwogCQkJY2hhcgkgICAqYXR0cmlidXRlTmFt ZSA9IE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKTsKIAkJCWludAkJCWV4aXN0X2F0dG5v OwotCQkJQ29sdW1uRGVmICAqZGVmOworCQkJQ29sdW1uRGVmICAqbmV3ZGVmOworCQkJQ29s dW1uRGVmICAqc2F2ZWRlZjsKIAogCQkJLyoKIAkJCSAqIElnbm9yZSBkcm9wcGVkIGNvbHVt bnMgaW4gdGhlIHBhcmVudC4KQEAgLTI3MTMsMTQgKzI3MTQsMzggQEAgTWVyZ2VBdHRyaWJ1 dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJzaXN0 ZW5jZSwKIAkJCQljb250aW51ZTsJCS8qIGxlYXZlIG5ld2F0dG1hcC0+YXR0bnVtcyBlbnRy eSBhcyB6ZXJvICovCiAKIAkJCS8qCi0JCQkgKiBEb2VzIGl0IGNvbmZsaWN0IHdpdGggc29t ZSBwcmV2aW91c2x5IGluaGVyaXRlZCBjb2x1bW4/CisJCQkgKiBDcmVhdGUgbmV3IGNvbHVt biBkZWZpbml0aW9uCisJCQkgKi8KKwkJCW5ld2RlZiA9IG1ha2VDb2x1bW5EZWYoYXR0cmli dXRlTmFtZSwgYXR0cmlidXRlLT5hdHR0eXBpZCwKKwkJCQkJCQkJICAgYXR0cmlidXRlLT5h dHR0eXBtb2QsIGF0dHJpYnV0ZS0+YXR0Y29sbGF0aW9uKTsKKwkJCW5ld2RlZi0+c3RvcmFn ZSA9IGF0dHJpYnV0ZS0+YXR0c3RvcmFnZTsKKwkJCW5ld2RlZi0+Z2VuZXJhdGVkID0gYXR0 cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisJCQlpZiAoQ29tcHJlc3Npb25NZXRob2RJc1ZhbGlk KGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQorCQkJCW5ld2RlZi0+Y29tcHJlc3Npb24g PQorCQkJCQlwc3RyZHVwKEdldENvbXByZXNzaW9uTWV0aG9kTmFtZShhdHRyaWJ1dGUtPmF0 dGNvbXByZXNzaW9uKSk7CisKKwkJCS8qCisJCQkgKiBSZWd1bGFyIGluaGVyaXRhbmNlIGNo aWxkcmVuIGFyZSBpbmRlcGVuZGVudCBlbm91Z2ggbm90IHRvCisJCQkgKiBpbmhlcml0IGlk ZW50aXR5IGNvbHVtbnMuICBCdXQgcGFydGl0aW9ucyBhcmUgaW50ZWdyYWwgcGFydAorCQkJ ICogb2YgYSBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgaW5oZXJpdCBpZGVudGl0eSBjb2x1bW4u CisJCQkgKi8KKwkJCWlmIChpc19wYXJ0aXRpb24pCisJCQkJbmV3ZGVmLT5pZGVudGl0eSA9 IGF0dHJpYnV0ZS0+YXR0aWRlbnRpdHk7CisKKwkJCS8qCisJCQkgKiBEb2VzIGl0IG1hdGNo IHNvbWUgcHJldmlvdXNseSBjb25zaWRlcmVkIGNvbHVtbiBmcm9tIGFub3RoZXIKKwkJCSAq IHBhcmVudD8KIAkJCSAqLwogCQkJZXhpc3RfYXR0bm8gPSBmaW5kQXR0ckJ5TmFtZShhdHRy aWJ1dGVOYW1lLCBpbmhfY29sdW1ucyk7CiAJCQlpZiAoZXhpc3RfYXR0bm8gPiAwKQogCQkJ ewotCQkJCU9pZAkJCWRlZlR5cGVJZDsKLQkJCQlpbnQzMgkJZGVmdHlwbW9kOwotCQkJCU9p ZAkJCWRlZkNvbGxJZDsKKwkJCQlDb2x1bW5EZWYgICpwcmV2ZGVmOworCQkJCU9pZAkJCXBy ZXZ0eXBlaWQsCisJCQkJCQkJbmV3dHlwZWlkOworCQkJCWludDMyCQlwcmV2dHlwbW9kLAor CQkJCQkJCW5ld3R5cG1vZDsKKwkJCQlPaWQJCQlwcmV2Y29sbGlkLAorCQkJCQkJCW5ld2Nv bGxpZDsKIAogCQkJCS8qCiAJCQkJICogUGFydGl0aW9ucyBoYXZlIG9ubHkgb25lIHBhcmVu dCBhbmQgaGF2ZSBubyBjb2x1bW4KQEAgLTI3MzQsNjggKzI3NTksNjEgQEAgTWVyZ2VBdHRy aWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJz aXN0ZW5jZSwKIAkJCQllcmVwb3J0KE5PVElDRSwKIAkJCQkJCShlcnJtc2coIm1lcmdpbmcg bXVsdGlwbGUgaW5oZXJpdGVkIGRlZmluaXRpb25zIG9mIGNvbHVtbiBcIiVzXCIiLAogCQkJ CQkJCQlhdHRyaWJ1dGVOYW1lKSkpOwotCQkJCWRlZiA9IChDb2x1bW5EZWYgKikgbGlzdF9u dGgoaW5oX2NvbHVtbnMsIGV4aXN0X2F0dG5vIC0gMSk7CisJCQkJcHJldmRlZiA9IGxpc3Rf bnRoX25vZGUoQ29sdW1uRGVmLCBpbmhfY29sdW1ucywgZXhpc3RfYXR0bm8gLSAxKTsKIAog CQkJCS8qCiAJCQkJICogTXVzdCBoYXZlIHRoZSBzYW1lIHR5cGUgYW5kIHR5cG1vZAogCQkJ CSAqLwotCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEwsIGRlZi0+dHlwZU5hbWUsICZk ZWZUeXBlSWQsICZkZWZ0eXBtb2QpOwotCQkJCWlmIChkZWZUeXBlSWQgIT0gYXR0cmlidXRl LT5hdHR0eXBpZCB8fAotCQkJCQlkZWZ0eXBtb2QgIT0gYXR0cmlidXRlLT5hdHR0eXBtb2Qp CisJCQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVMTCwgcHJldmRlZi0+dHlwZU5hbWUsICZw cmV2dHlwZWlkLCAmcHJldnR5cG1vZCk7CisJCQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVM TCwgbmV3ZGVmLT50eXBlTmFtZSwgJm5ld3R5cGVpZCwgJm5ld3R5cG1vZCk7CisJCQkJaWYg KHByZXZ0eXBlaWQgIT0gbmV3dHlwZWlkIHx8IHByZXZ0eXBtb2QgIT0gbmV3dHlwbW9kKQog CQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAogCQkJCQkJCSBlcnJtc2coImluaGVyaXRlZCBjb2x1bW4gXCIlc1wiIGhh cyBhIHR5cGUgY29uZmxpY3QiLAogCQkJCQkJCQkJYXR0cmlidXRlTmFtZSksCiAJCQkJCQkJ IGVycmRldGFpbCgiJXMgdmVyc3VzICVzIiwKLQkJCQkJCQkJCSAgIGZvcm1hdF90eXBlX3dp dGhfdHlwZW1vZChkZWZUeXBlSWQsCi0JCQkJCQkJCQkJCQkJCQkJZGVmdHlwbW9kKSwKLQkJ CQkJCQkJCSAgIGZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZChhdHRyaWJ1dGUtPmF0dHR5cGlk LAotCQkJCQkJCQkJCQkJCQkJCWF0dHJpYnV0ZS0+YXR0dHlwbW9kKSkpKTsKKwkJCQkJCQkJ CSAgIGZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZChwcmV2dHlwZWlkLCBwcmV2dHlwbW9kKSwK KwkJCQkJCQkJCSAgIGZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZChuZXd0eXBlaWQsIG5ld3R5 cG1vZCkpKSk7CiAKIAkJCQkvKgogCQkJCSAqIE11c3QgaGF2ZSB0aGUgc2FtZSBjb2xsYXRp b24KIAkJCQkgKi8KLQkJCQlkZWZDb2xsSWQgPSBHZXRDb2x1bW5EZWZDb2xsYXRpb24oTlVM TCwgZGVmLCBkZWZUeXBlSWQpOwotCQkJCWlmIChkZWZDb2xsSWQgIT0gYXR0cmlidXRlLT5h dHRjb2xsYXRpb24pCisJCQkJcHJldmNvbGxpZCA9IEdldENvbHVtbkRlZkNvbGxhdGlvbihO VUxMLCBwcmV2ZGVmLCBwcmV2dHlwZWlkKTsKKwkJCQluZXdjb2xsaWQgPSBHZXRDb2x1bW5E ZWZDb2xsYXRpb24oTlVMTCwgbmV3ZGVmLCBuZXd0eXBlaWQpOworCQkJCWlmIChwcmV2Y29s bGlkICE9IG5ld2NvbGxpZCkKIAkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0NPTExBVElPTl9NSVNNQVRDSCksCiAJCQkJCQkJIGVycm1zZygiaW5oZXJp dGVkIGNvbHVtbiBcIiVzXCIgaGFzIGEgY29sbGF0aW9uIGNvbmZsaWN0IiwKIAkJCQkJCQkJ CWF0dHJpYnV0ZU5hbWUpLAogCQkJCQkJCSBlcnJkZXRhaWwoIlwiJXNcIiB2ZXJzdXMgXCIl c1wiIiwKLQkJCQkJCQkJCSAgIGdldF9jb2xsYXRpb25fbmFtZShkZWZDb2xsSWQpLAotCQkJ CQkJCQkJICAgZ2V0X2NvbGxhdGlvbl9uYW1lKGF0dHJpYnV0ZS0+YXR0Y29sbGF0aW9uKSkp KTsKKwkJCQkJCQkJCSAgIGdldF9jb2xsYXRpb25fbmFtZShwcmV2Y29sbGlkKSwKKwkJCQkJ CQkJCSAgIGdldF9jb2xsYXRpb25fbmFtZShuZXdjb2xsaWQpKSkpOwogCiAJCQkJLyoKIAkJ CQkgKiBDb3B5L2NoZWNrIHN0b3JhZ2UgcGFyYW1ldGVyCiAJCQkJICovCi0JCQkJaWYgKGRl Zi0+c3RvcmFnZSA9PSAwKQotCQkJCQlkZWYtPnN0b3JhZ2UgPSBhdHRyaWJ1dGUtPmF0dHN0 b3JhZ2U7Ci0JCQkJZWxzZSBpZiAoZGVmLT5zdG9yYWdlICE9IGF0dHJpYnV0ZS0+YXR0c3Rv cmFnZSkKKwkJCQlpZiAocHJldmRlZi0+c3RvcmFnZSA9PSAwKQorCQkJCQlwcmV2ZGVmLT5z dG9yYWdlID0gbmV3ZGVmLT5zdG9yYWdlOworCQkJCWVsc2UgaWYgKHByZXZkZWYtPnN0b3Jh Z2UgIT0gbmV3ZGVmLT5zdG9yYWdlKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAogCQkJCQkJCSBlcnJtc2coImlu aGVyaXRlZCBjb2x1bW4gXCIlc1wiIGhhcyBhIHN0b3JhZ2UgcGFyYW1ldGVyIGNvbmZsaWN0 IiwKIAkJCQkJCQkJCWF0dHJpYnV0ZU5hbWUpLAogCQkJCQkJCSBlcnJkZXRhaWwoIiVzIHZl cnN1cyAlcyIsCi0JCQkJCQkJCQkgICBzdG9yYWdlX25hbWUoZGVmLT5zdG9yYWdlKSwKLQkJ CQkJCQkJCSAgIHN0b3JhZ2VfbmFtZShhdHRyaWJ1dGUtPmF0dHN0b3JhZ2UpKSkpOworCQkJ CQkJCQkJICAgc3RvcmFnZV9uYW1lKHByZXZkZWYtPnN0b3JhZ2UpLAorCQkJCQkJCQkJICAg c3RvcmFnZV9uYW1lKG5ld2RlZi0+c3RvcmFnZSkpKSk7CiAKIAkJCQkvKgogCQkJCSAqIENv cHkvY2hlY2sgY29tcHJlc3Npb24gcGFyYW1ldGVyCiAJCQkJICovCi0JCQkJaWYgKENvbXBy ZXNzaW9uTWV0aG9kSXNWYWxpZChhdHRyaWJ1dGUtPmF0dGNvbXByZXNzaW9uKSkKLQkJCQl7 Ci0JCQkJCWNvbnN0IGNoYXIgKmNvbXByZXNzaW9uID0KLQkJCQkJCUdldENvbXByZXNzaW9u TWV0aG9kTmFtZShhdHRyaWJ1dGUtPmF0dGNvbXByZXNzaW9uKTsKLQotCQkJCQlpZiAoZGVm LT5jb21wcmVzc2lvbiA9PSBOVUxMKQotCQkJCQkJZGVmLT5jb21wcmVzc2lvbiA9IHBzdHJk dXAoY29tcHJlc3Npb24pOwotCQkJCQllbHNlIGlmIChzdHJjbXAoZGVmLT5jb21wcmVzc2lv biwgY29tcHJlc3Npb24pICE9IDApCi0JCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJCQkJIGVycm1zZygi Y29sdW1uIFwiJXNcIiBoYXMgYSBjb21wcmVzc2lvbiBtZXRob2QgY29uZmxpY3QiLAotCQkJ CQkJCQkJCWF0dHJpYnV0ZU5hbWUpLAotCQkJCQkJCQkgZXJyZGV0YWlsKCIlcyB2ZXJzdXMg JXMiLCBkZWYtPmNvbXByZXNzaW9uLCBjb21wcmVzc2lvbikpKTsKLQkJCQl9CisJCQkJaWYg KHByZXZkZWYtPmNvbXByZXNzaW9uID09IE5VTEwpCisJCQkJCXByZXZkZWYtPmNvbXByZXNz aW9uID0gbmV3ZGVmLT5jb21wcmVzc2lvbjsKKwkJCQllbHNlIGlmIChzdHJjbXAocHJldmRl Zi0+Y29tcHJlc3Npb24sIG5ld2RlZi0+Y29tcHJlc3Npb24pICE9IDApCisJCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks CisJCQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBoYXMgYSBjb21wcmVzc2lvbiBtZXRo b2QgY29uZmxpY3QiLAorCQkJCQkJCQkJYXR0cmlidXRlTmFtZSksCisJCQkJCQkJIGVycmRl dGFpbCgiJXMgdmVyc3VzICVzIiwgcHJldmRlZi0+Y29tcHJlc3Npb24sIG5ld2RlZi0+Y29t cHJlc3Npb24pKSk7CiAKIAkJCQkvKgogCQkJCSAqIEluIHJlZ3VsYXIgaW5oZXJpdGFuY2Us IGNvbHVtbnMgaW4gdGhlIHBhcmVudCdzIHByaW1hcnkga2V5CkBAIC0yODI2LDEyICsyODQ0 LDEyIEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBl cnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJaWYgKGJtc19pc19tZW1iZXIocGFyZW50 X2F0dG5vLCBubmNvbHMpIHx8CiAJCQkJCWJtc19pc19tZW1iZXIocGFyZW50X2F0dG5vIC0g Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwKIAkJCQkJCQkJICBwa2F0dHJz KSkKLQkJCQkJZGVmLT5pc19ub3RfbnVsbCA9IHRydWU7CisJCQkJCW5ld2RlZi0+aXNfbm90 X251bGwgPSB0cnVlOwogCiAJCQkJLyoKIAkJCQkgKiBDaGVjayBmb3IgR0VORVJBVEVEIGNv bmZsaWN0cwogCQkJCSAqLwotCQkJCWlmIChkZWYtPmdlbmVyYXRlZCAhPSBhdHRyaWJ1dGUt PmF0dGdlbmVyYXRlZCkKKwkJCQlpZiAocHJldmRlZi0+Z2VuZXJhdGVkICE9IG5ld2RlZi0+ Z2VuZXJhdGVkKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAogCQkJCQkJCSBlcnJtc2coImluaGVyaXRlZCBjb2x1 bW4gXCIlc1wiIGhhcyBhIGdlbmVyYXRpb24gY29uZmxpY3QiLApAQCAtMjg0MSw0MyArMjg1 OSwzMCBAQCBNZXJnZUF0dHJpYnV0ZXMoTGlzdCAqY29sdW1ucywgY29uc3QgTGlzdCAqc3Vw ZXJzLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogCQkJCSAqIERlZmF1bHQgYW5kIG90aGVyIGNv bnN0cmFpbnRzIGFyZSBoYW5kbGVkIGJlbG93CiAJCQkJICovCiAKLQkJCQlkZWYtPmluaGNv dW50Kys7Ci0JCQkJaWYgKGRlZi0+aW5oY291bnQgPCAwKQorCQkJCXByZXZkZWYtPmluaGNv dW50Kys7CisJCQkJaWYgKHByZXZkZWYtPmluaGNvdW50IDwgMCkKIAkJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCQllcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCks CiAJCQkJCQkJZXJybXNnKCJ0b28gbWFueSBpbmhlcml0YW5jZSBwYXJlbnRzIikpOwogCiAJ CQkJbmV3YXR0bWFwLT5hdHRudW1zW3BhcmVudF9hdHRubyAtIDFdID0gZXhpc3RfYXR0bm87 CisKKwkJCQkvKiByZW1lbWJlciBmb3IgZGVmYXVsdCBwcm9jZXNzaW5nIGJlbG93ICovCisJ CQkJc2F2ZWRlZiA9IHByZXZkZWY7CiAJCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKIAkJ CQkgKiBObywgY3JlYXRlIGEgbmV3IGluaGVyaXRlZCBjb2x1bW4KIAkJCQkgKi8KLQkJCQlk ZWYgPSBtYWtlQ29sdW1uRGVmKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZS0+YXR0dHlwaWQs Ci0JCQkJCQkJCQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xsYXRp b24pOwotCQkJCWRlZi0+aW5oY291bnQgPSAxOwotCQkJCWRlZi0+aXNfbG9jYWwgPSBmYWxz ZTsKKwkJCQluZXdkZWYtPmluaGNvdW50ID0gMTsKKwkJCQluZXdkZWYtPmlzX2xvY2FsID0g ZmFsc2U7CiAJCQkJLyogbWFyayBhdHRub3RudWxsIGlmIHBhcmVudCBoYXMgaXQgYW5kIGl0 J3Mgbm90IE5PIElOSEVSSVQgKi8KIAkJCQlpZiAoYm1zX2lzX21lbWJlcihwYXJlbnRfYXR0 bm8sIG5uY29scykgfHwKIAkJCQkJYm1zX2lzX21lbWJlcihwYXJlbnRfYXR0bm8gLSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJCQkgIHBrYXR0cnMpKQot CQkJCQlkZWYtPmlzX25vdF9udWxsID0gdHJ1ZTsKLQkJCQlkZWYtPnN0b3JhZ2UgPSBhdHRy aWJ1dGUtPmF0dHN0b3JhZ2U7Ci0JCQkJZGVmLT5nZW5lcmF0ZWQgPSBhdHRyaWJ1dGUtPmF0 dGdlbmVyYXRlZDsKLQotCQkJCS8qCi0JCQkJICogUmVndWxhciBpbmhlcml0YW5jZSBjaGls ZHJlbiBhcmUgaW5kZXBlbmRlbnQgZW5vdWdoIG5vdCB0bwotCQkJCSAqIGluaGVyaXQgaWRl bnRpdHkgY29sdW1ucy4gIEJ1dCBwYXJ0aXRpb25zIGFyZSBpbnRlZ3JhbCBwYXJ0Ci0JCQkJ ICogb2YgYSBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgaW5oZXJpdCBpZGVudGl0eSBjb2x1bW4u Ci0JCQkJICovCi0JCQkJaWYgKGlzX3BhcnRpdGlvbikKLQkJCQkJZGVmLT5pZGVudGl0eSA9 IGF0dHJpYnV0ZS0+YXR0aWRlbnRpdHk7Ci0KLQkJCQlpZiAoQ29tcHJlc3Npb25NZXRob2RJ c1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQotCQkJCQlkZWYtPmNvbXByZXNz aW9uID0KLQkJCQkJCXBzdHJkdXAoR2V0Q29tcHJlc3Npb25NZXRob2ROYW1lKGF0dHJpYnV0 ZS0+YXR0Y29tcHJlc3Npb24pKTsKLQkJCQlpbmhfY29sdW1ucyA9IGxhcHBlbmQoaW5oX2Nv bHVtbnMsIGRlZik7CisJCQkJCW5ld2RlZi0+aXNfbm90X251bGwgPSB0cnVlOworCQkJCWlu aF9jb2x1bW5zID0gbGFwcGVuZChpbmhfY29sdW1ucywgbmV3ZGVmKTsKIAkJCQluZXdhdHRt YXAtPmF0dG51bXNbcGFyZW50X2F0dG5vIC0gMV0gPSArK2NoaWxkX2F0dG5vOwogCiAJCQkJ LyoKQEAgLTI5MDYsNiArMjkxMSw5IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5z LCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAKIAkJCQkJbm5j b25zdHJhaW50cyA9IGxhcHBlbmQobm5jb25zdHJhaW50cywgbm4pOwogCQkJCX0KKworCQkJ CS8qIHJlbWVtYmVyIGZvciBkZWZhdWx0IHByb2Nlc3NpbmcgYmVsb3cgKi8KKwkJCQlzYXZl ZGVmID0gbmV3ZGVmOwogCQkJfQogCiAJCQkvKgpAQCAtMjkyNyw3ICsyOTM1LDcgQEAgTWVy Z2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciBy ZWxwZXJzaXN0ZW5jZSwKIAkJCQkgKiBhbGwgdGhlIGluaGVyaXRlZCBkZWZhdWx0IGV4cHJl c3Npb25zIGZvciB0aGUgbW9tZW50LgogCQkJCSAqLwogCQkJCWluaGVyaXRlZF9kZWZhdWx0 cyA9IGxhcHBlbmQoaW5oZXJpdGVkX2RlZmF1bHRzLCB0aGlzX2RlZmF1bHQpOwotCQkJCWNv bHNfd2l0aF9kZWZhdWx0cyA9IGxhcHBlbmQoY29sc193aXRoX2RlZmF1bHRzLCBkZWYpOwor CQkJCWNvbHNfd2l0aF9kZWZhdWx0cyA9IGxhcHBlbmQoY29sc193aXRoX2RlZmF1bHRzLCBz YXZlZGVmKTsKIAkJCX0KIAkJfQogCkBAIC0zMDY1LDE3ICszMDczLDE3IEBAIE1lcmdlQXR0 cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVy c2lzdGVuY2UsCiAJCQluZXdjb2xfYXR0bm8rKzsKIAogCQkJLyoKLQkJCSAqIERvZXMgaXQg Y29uZmxpY3Qgd2l0aCBzb21lIHByZXZpb3VzbHkgaW5oZXJpdGVkIGNvbHVtbj8KKwkJCSAq IERvZXMgaXQgbWF0Y2ggc29tZSBpbmhlcml0ZWQgY29sdW1uPwogCQkJICovCiAJCQlleGlz dF9hdHRubyA9IGZpbmRBdHRyQnlOYW1lKGF0dHJpYnV0ZU5hbWUsIGluaF9jb2x1bW5zKTsK IAkJCWlmIChleGlzdF9hdHRubyA+IDApCiAJCQl7Ci0JCQkJQ29sdW1uRGVmICAqZGVmOwot CQkJCU9pZAkJCWRlZlR5cGVJZCwKLQkJCQkJCQluZXdUeXBlSWQ7Ci0JCQkJaW50MzIJCWRl ZnR5cG1vZCwKKwkJCQlDb2x1bW5EZWYgICppbmhkZWY7CisJCQkJT2lkCQkJaW5odHlwZWlk LAorCQkJCQkJCW5ld3R5cGVpZDsKKwkJCQlpbnQzMgkJaW5odHlwbW9kLAogCQkJCQkJCW5l d3R5cG1vZDsKLQkJCQlPaWQJCQlkZWZjb2xsaWQsCisJCQkJT2lkCQkJaW5oY29sbGlkLAog CQkJCQkJCW5ld2NvbGxpZDsKIAogCQkJCS8qCkBAIC0zMDk1LDc3ICszMTAzLDc1IEBAIE1l cmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIg cmVscGVyc2lzdGVuY2UsCiAJCQkJCWVyZXBvcnQoTk9USUNFLAogCQkJCQkJCShlcnJtc2co Im1vdmluZyBhbmQgbWVyZ2luZyBjb2x1bW4gXCIlc1wiIHdpdGggaW5oZXJpdGVkIGRlZmlu aXRpb24iLCBhdHRyaWJ1dGVOYW1lKSwKIAkJCQkJCQkgZXJyZGV0YWlsKCJVc2VyLXNwZWNp ZmllZCBjb2x1bW4gbW92ZWQgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBpbmhlcml0ZWQgY29s dW1uLiIpKSk7Ci0JCQkJZGVmID0gKENvbHVtbkRlZiAqKSBsaXN0X250aChpbmhfY29sdW1u cywgZXhpc3RfYXR0bm8gLSAxKTsKKwkJCQlpbmhkZWYgPSBsaXN0X250aF9ub2RlKENvbHVt bkRlZiwgaW5oX2NvbHVtbnMsIGV4aXN0X2F0dG5vIC0gMSk7CiAKIAkJCQkvKgogCQkJCSAq IE11c3QgaGF2ZSB0aGUgc2FtZSB0eXBlIGFuZCB0eXBtb2QKIAkJCQkgKi8KLQkJCQl0eXBl bmFtZVR5cGVJZEFuZE1vZChOVUxMLCBkZWYtPnR5cGVOYW1lLCAmZGVmVHlwZUlkLCAmZGVm dHlwbW9kKTsKLQkJCQl0eXBlbmFtZVR5cGVJZEFuZE1vZChOVUxMLCBuZXdkZWYtPnR5cGVO YW1lLCAmbmV3VHlwZUlkLCAmbmV3dHlwbW9kKTsKLQkJCQlpZiAoZGVmVHlwZUlkICE9IG5l d1R5cGVJZCB8fCBkZWZ0eXBtb2QgIT0gbmV3dHlwbW9kKQorCQkJCXR5cGVuYW1lVHlwZUlk QW5kTW9kKE5VTEwsIGluaGRlZi0+dHlwZU5hbWUsICZpbmh0eXBlaWQsICZpbmh0eXBtb2Qp OworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEwsIG5ld2RlZi0+dHlwZU5hbWUsICZu ZXd0eXBlaWQsICZuZXd0eXBtb2QpOworCQkJCWlmIChpbmh0eXBlaWQgIT0gbmV3dHlwZWlk IHx8IGluaHR5cG1vZCAhPSBuZXd0eXBtb2QpCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCiAJCQkJCQkJIGVycm1z ZygiY29sdW1uIFwiJXNcIiBoYXMgYSB0eXBlIGNvbmZsaWN0IiwKIAkJCQkJCQkJCWF0dHJp YnV0ZU5hbWUpLAogCQkJCQkJCSBlcnJkZXRhaWwoIiVzIHZlcnN1cyAlcyIsCi0JCQkJCQkJ CQkgICBmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2QoZGVmVHlwZUlkLAotCQkJCQkJCQkJCQkJ CQkJCWRlZnR5cG1vZCksCi0JCQkJCQkJCQkgICBmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2Qo bmV3VHlwZUlkLAotCQkJCQkJCQkJCQkJCQkJCW5ld3R5cG1vZCkpKSk7CisJCQkJCQkJCQkg ICBmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2QoaW5odHlwZWlkLCBpbmh0eXBtb2QpLAorCQkJ CQkJCQkJICAgZm9ybWF0X3R5cGVfd2l0aF90eXBlbW9kKG5ld3R5cGVpZCwgbmV3dHlwbW9k KSkpKTsKIAogCQkJCS8qCiAJCQkJICogTXVzdCBoYXZlIHRoZSBzYW1lIGNvbGxhdGlvbgog CQkJCSAqLwotCQkJCWRlZmNvbGxpZCA9IEdldENvbHVtbkRlZkNvbGxhdGlvbihOVUxMLCBk ZWYsIGRlZlR5cGVJZCk7Ci0JCQkJbmV3Y29sbGlkID0gR2V0Q29sdW1uRGVmQ29sbGF0aW9u KE5VTEwsIG5ld2RlZiwgbmV3VHlwZUlkKTsKLQkJCQlpZiAoZGVmY29sbGlkICE9IG5ld2Nv bGxpZCkKKwkJCQlpbmhjb2xsaWQgPSBHZXRDb2x1bW5EZWZDb2xsYXRpb24oTlVMTCwgaW5o ZGVmLCBpbmh0eXBlaWQpOworCQkJCW5ld2NvbGxpZCA9IEdldENvbHVtbkRlZkNvbGxhdGlv bihOVUxMLCBuZXdkZWYsIG5ld3R5cGVpZCk7CisJCQkJaWYgKGluaGNvbGxpZCAhPSBuZXdj b2xsaWQpCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9D T0xMQVRJT05fTUlTTUFUQ0gpLAogCQkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgaGFz IGEgY29sbGF0aW9uIGNvbmZsaWN0IiwKIAkJCQkJCQkJCWF0dHJpYnV0ZU5hbWUpLAogCQkJ CQkJCSBlcnJkZXRhaWwoIlwiJXNcIiB2ZXJzdXMgXCIlc1wiIiwKLQkJCQkJCQkJCSAgIGdl dF9jb2xsYXRpb25fbmFtZShkZWZjb2xsaWQpLAorCQkJCQkJCQkJICAgZ2V0X2NvbGxhdGlv bl9uYW1lKGluaGNvbGxpZCksCiAJCQkJCQkJCQkgICBnZXRfY29sbGF0aW9uX25hbWUobmV3 Y29sbGlkKSkpKTsKIAogCQkJCS8qCiAJCQkJICogSWRlbnRpdHkgaXMgbmV2ZXIgaW5oZXJp dGVkLiAgVGhlIG5ldyBjb2x1bW4gY2FuIGhhdmUgYW4KIAkJCQkgKiBpZGVudGl0eSBkZWZp bml0aW9uLCBzbyB3ZSBhbHdheXMganVzdCB0YWtlIHRoYXQgb25lLgogCQkJCSAqLwotCQkJ CWRlZi0+aWRlbnRpdHkgPSBuZXdkZWYtPmlkZW50aXR5OworCQkJCWluaGRlZi0+aWRlbnRp dHkgPSBuZXdkZWYtPmlkZW50aXR5OwogCiAJCQkJLyoKIAkJCQkgKiBDb3B5IHN0b3JhZ2Ug cGFyYW1ldGVyCiAJCQkJICovCi0JCQkJaWYgKGRlZi0+c3RvcmFnZSA9PSAwKQotCQkJCQlk ZWYtPnN0b3JhZ2UgPSBuZXdkZWYtPnN0b3JhZ2U7Ci0JCQkJZWxzZSBpZiAobmV3ZGVmLT5z dG9yYWdlICE9IDAgJiYgZGVmLT5zdG9yYWdlICE9IG5ld2RlZi0+c3RvcmFnZSkKKwkJCQlp ZiAoaW5oZGVmLT5zdG9yYWdlID09IDApCisJCQkJCWluaGRlZi0+c3RvcmFnZSA9IG5ld2Rl Zi0+c3RvcmFnZTsKKwkJCQllbHNlIGlmIChuZXdkZWYtPnN0b3JhZ2UgIT0gMCAmJiBpbmhk ZWYtPnN0b3JhZ2UgIT0gbmV3ZGVmLT5zdG9yYWdlKQogCQkJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAogCQkJCQkJCSBl cnJtc2coImNvbHVtbiBcIiVzXCIgaGFzIGEgc3RvcmFnZSBwYXJhbWV0ZXIgY29uZmxpY3Qi LAogCQkJCQkJCQkJYXR0cmlidXRlTmFtZSksCiAJCQkJCQkJIGVycmRldGFpbCgiJXMgdmVy c3VzICVzIiwKLQkJCQkJCQkJCSAgIHN0b3JhZ2VfbmFtZShkZWYtPnN0b3JhZ2UpLAorCQkJ CQkJCQkJICAgc3RvcmFnZV9uYW1lKGluaGRlZi0+c3RvcmFnZSksCiAJCQkJCQkJCQkgICBz dG9yYWdlX25hbWUobmV3ZGVmLT5zdG9yYWdlKSkpKTsKIAogCQkJCS8qCiAJCQkJICogQ29w eSBjb21wcmVzc2lvbiBwYXJhbWV0ZXIKIAkJCQkgKi8KLQkJCQlpZiAoZGVmLT5jb21wcmVz c2lvbiA9PSBOVUxMKQotCQkJCQlkZWYtPmNvbXByZXNzaW9uID0gbmV3ZGVmLT5jb21wcmVz c2lvbjsKKwkJCQlpZiAoaW5oZGVmLT5jb21wcmVzc2lvbiA9PSBOVUxMKQorCQkJCQlpbmhk ZWYtPmNvbXByZXNzaW9uID0gbmV3ZGVmLT5jb21wcmVzc2lvbjsKIAkJCQllbHNlIGlmIChu ZXdkZWYtPmNvbXByZXNzaW9uICE9IE5VTEwpCiAJCQkJewotCQkJCQlpZiAoc3RyY21wKGRl Zi0+Y29tcHJlc3Npb24sIG5ld2RlZi0+Y29tcHJlc3Npb24pICE9IDApCisJCQkJCWlmIChz dHJjbXAoaW5oZGVmLT5jb21wcmVzc2lvbiwgbmV3ZGVmLT5jb21wcmVzc2lvbikgIT0gMCkK IAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZ UEVfTUlTTUFUQ0gpLAogCQkJCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGhhcyBhIGNv bXByZXNzaW9uIG1ldGhvZCBjb25mbGljdCIsCiAJCQkJCQkJCQkJYXR0cmlidXRlTmFtZSks Ci0JCQkJCQkJCSBlcnJkZXRhaWwoIiVzIHZlcnN1cyAlcyIsIGRlZi0+Y29tcHJlc3Npb24s IG5ld2RlZi0+Y29tcHJlc3Npb24pKSk7CisJCQkJCQkJCSBlcnJkZXRhaWwoIiVzIHZlcnN1 cyAlcyIsIGluaGRlZi0+Y29tcHJlc3Npb24sIG5ld2RlZi0+Y29tcHJlc3Npb24pKSk7CiAJ CQkJfQogCiAJCQkJLyoKIAkJCQkgKiBNZXJnZSBvZiBub3QtbnVsbCBjb25zdHJhaW50cyA9 IE9SICdlbSB0b2dldGhlcgogCQkJCSAqLwotCQkJCWRlZi0+aXNfbm90X251bGwgfD0gbmV3 ZGVmLT5pc19ub3RfbnVsbDsKKwkJCQlpbmhkZWYtPmlzX25vdF9udWxsIHw9IG5ld2RlZi0+ aXNfbm90X251bGw7CiAKIAkJCQkvKgogCQkJCSAqIENoZWNrIGZvciBjb25mbGljdHMgcmVs YXRlZCB0byBnZW5lcmF0ZWQgY29sdW1ucy4KQEAgLTMxODIsMTggKzMxODgsMTggQEAgTWVy Z2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciBy ZWxwZXJzaXN0ZW5jZSwKIAkJCQkgKiBpdCByZXN1bHRzIGluIGJlaW5nIGFibGUgdG8gb3Zl cnJpZGUgdGhlIGdlbmVyYXRpb24KIAkJCQkgKiBleHByZXNzaW9uIHZpYSBVUERBVEVzIHRo cm91Z2ggdGhlIHBhcmVudC4pCiAJCQkJICovCi0JCQkJaWYgKGRlZi0+Z2VuZXJhdGVkKQor CQkJCWlmIChpbmhkZWYtPmdlbmVyYXRlZCkKIAkJCQl7CiAJCQkJCWlmIChuZXdkZWYtPnJh d19kZWZhdWx0ICYmICFuZXdkZWYtPmdlbmVyYXRlZCkKIAkJCQkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fREVGSU5JVElPTiks CiAJCQkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgaW5oZXJpdHMgZnJvbSBnZW5lcmF0 ZWQgY29sdW1uIGJ1dCBzcGVjaWZpZXMgZGVmYXVsdCIsCi0JCQkJCQkJCQkJZGVmLT5jb2xu YW1lKSkpOworCQkJCQkJCQkJCWluaGRlZi0+Y29sbmFtZSkpKTsKIAkJCQkJaWYgKG5ld2Rl Zi0+aWRlbnRpdHkpCiAJCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfQ09MVU1OX0RFRklOSVRJT04pLAogCQkJCQkJCQkgZXJybXNnKCJj b2x1bW4gXCIlc1wiIGluaGVyaXRzIGZyb20gZ2VuZXJhdGVkIGNvbHVtbiBidXQgc3BlY2lm aWVzIGlkZW50aXR5IiwKLQkJCQkJCQkJCQlkZWYtPmNvbG5hbWUpKSk7CisJCQkJCQkJCQkJ aW5oZGVmLT5jb2xuYW1lKSkpOwogCQkJCX0KIAkJCQllbHNlCiAJCQkJewpAQCAtMzIwMSw3 ICszMjA3LDcgQEAgTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3Qg KnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fREVGSU5JVElPTiksCiAJ CQkJCQkJCSBlcnJtc2coImNoaWxkIGNvbHVtbiBcIiVzXCIgc3BlY2lmaWVzIGdlbmVyYXRp b24gZXhwcmVzc2lvbiIsCi0JCQkJCQkJCQkJZGVmLT5jb2xuYW1lKSwKKwkJCQkJCQkJCQlp bmhkZWYtPmNvbG5hbWUpLAogCQkJCQkJCQkgZXJyaGludCgiQSBjaGlsZCB0YWJsZSBjb2x1 bW4gY2Fubm90IGJlIGdlbmVyYXRlZCB1bmxlc3MgaXRzIHBhcmVudCBjb2x1bW4gaXMuIikp KTsKIAkJCQl9CiAKQEAgLTMyMTAsMTIgKzMyMTYsMTIgQEAgTWVyZ2VBdHRyaWJ1dGVzKExp c3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwK IAkJCQkgKi8KIAkJCQlpZiAobmV3ZGVmLT5yYXdfZGVmYXVsdCAhPSBOVUxMKQogCQkJCXsK LQkJCQkJZGVmLT5yYXdfZGVmYXVsdCA9IG5ld2RlZi0+cmF3X2RlZmF1bHQ7Ci0JCQkJCWRl Zi0+Y29va2VkX2RlZmF1bHQgPSBuZXdkZWYtPmNvb2tlZF9kZWZhdWx0OworCQkJCQlpbmhk ZWYtPnJhd19kZWZhdWx0ID0gbmV3ZGVmLT5yYXdfZGVmYXVsdDsKKwkJCQkJaW5oZGVmLT5j b29rZWRfZGVmYXVsdCA9IG5ld2RlZi0+Y29va2VkX2RlZmF1bHQ7CiAJCQkJfQogCiAJCQkJ LyogTWFyayB0aGUgY29sdW1uIGFzIGxvY2FsbHkgZGVmaW5lZCAqLwotCQkJCWRlZi0+aXNf bG9jYWwgPSB0cnVlOworCQkJCWluaGRlZi0+aXNfbG9jYWwgPSB0cnVlOwogCQkJfQogCQkJ ZWxzZQogCQkJewotLSAKMi40My4wCgo= --------------KS4UqLjqWZrYIx7YEWn090IZ--