From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 38319 invoked by alias); 12 Sep 2017 13:09:37 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 37162 invoked by uid 89); 12 Sep 2017 13:09:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SEM_URIRED,SPF_PASS autolearn=ham version=3.3.2 spammy= X-Spam-Status: No, score=-25.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SEM_URIRED,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: forward104o.mail.yandex.net Received: from forward104o.mail.yandex.net (HELO forward104o.mail.yandex.net) (37.140.190.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 12 Sep 2017 13:09:30 +0000 Received: from mxback1o.mail.yandex.net (mxback1o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1b]) by forward104o.mail.yandex.net (Yandex) with ESMTP id 940042C843C6; Tue, 12 Sep 2017 16:09:26 +0300 (MSK) Received: from web60j.yandex.ru (web60j.yandex.ru [5.45.198.210]) by mxback1o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id xpZ8UJ2sWL-9OjqImIL; Tue, 12 Sep 2017 16:09:24 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=golovin.in; s=mail; t=1505221764; bh=lDuzuPhKbR+K+99hYYV7HrZB8CcPMX7UOfjAz7JURk4=; h=From:To:Cc:In-Reply-To:References:Subject:Message-Id:Date; b=YM+RhhrA5HHO+AINbXkaSgCR2Y76VtHa2LkKGefVoXCJMQNrm2LRrZOg63R67qkb0 jrmkDws/GEY1SKEQhidQnneeUlJ5YbJ+QYlqDCh7zLhXCKSY1rHNsJxqGOlj441Owo j6dLnFQInhHs8Oxwat+wHaXduIhaQkYLrwKOZTS8= Authentication-Results: mxback1o.mail.yandex.net; dkim=pass header.i=@golovin.in Received: by web60j.yandex.ru with HTTP; Tue, 12 Sep 2017 16:09:24 +0300 From: Dmitry Golovin To: Chih-hung Hsieh Cc: "elfutils-devel@sourceware.org" In-Reply-To: References: <507611504954373@web45o.yandex.ru> Subject: Re: Compile elfutils with Clang MIME-Version: 1.0 Message-Id: <1832361505221764@web60j.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Tue, 12 Sep 2017 13:09:00 -0000 Content-Type: multipart/mixed; boundary="----==--bound.183237.web60j.yandex.ru" X-SW-Source: 2017-q3/txt/msg00102.txt.bz2 ------==--bound.183237.web60j.yandex.ru Content-Transfer-Encoding: 7bit Content-Type: text/plain Content-length: 958 Hi Chih-hung, I have added clang support to elfutils 0.170, the work is mostly based on your patches. So I'm attaching it and posting it to the mailing list in case someone else wants to compile it with clang. (sending it again, because the first message was not accepted by the mailing list contene filter) Regards, Dmitry 11.09.2017, 19:34, "Chih-hung Hsieh" : > Dimitry, I made a few changes to compile some libraries in elfutils that were needed by Android. > I don't have a separate branch. > > On Sat, Sep 9, 2017 at 3:52 AM, Dmitry Golovin wrote: >> Hello, >> >> I've been trying to compile elfutils with clang for a while now and I'm wondering maybe someone else is also working on it? >> I found some useful patches written by Chih-Hung Hsieh, but they seem to be written over 2 years ago and not maintained. >> Is there a fork or a branch of elfutils that can be compiled with clang? >> >> Regards, >> Dmitry ------==--bound.183237.web60j.yandex.ru Content-Disposition: attachment; filename="clang-support.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="clang-support.patch" Content-length: 64811 ZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1 bGUuYyBiL2xpYmR3ZmwvZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUuYwpp bmRleCAyMDdhMjU3Li5jM2Q3Zjg4IDEwMDY0NAotLS0gYS9saWJkd2ZsL2R3 Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlLmMKKysrIGIvbGliZHdmbC9kd2Zs X3NlZ21lbnRfcmVwb3J0X21vZHVsZS5jCkBAIC0zMSw2ICszMSw3IEBACiAj dW5kZWYJXwogI2luY2x1ZGUgImxpYmR3ZmxQLmgiCiAjaW5jbHVkZSAiY29t bW9uLmgiCisjaW5jbHVkZSAibmVzdGVkX2Z1bmMuaCIKIAogI2luY2x1ZGUg PGVsZi5oPgogI2luY2x1ZGUgPGdlbGYuaD4KQEAgLTIzMywxNSArMjM0LDE4 IEBAIGludmFsaWRfZWxmIChFbGYgKmVsZiwgYm9vbCBkaXNrX2ZpbGVfaGFz X2J1aWxkX2lkLAogfQogCiBpbnQKLWR3Zmxfc2VnbWVudF9yZXBvcnRfbW9k dWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBjaGFyICpuYW1lLAot CQkJICAgIER3ZmxfTWVtb3J5X0NhbGxiYWNrICptZW1vcnlfY2FsbGJhY2ss Ci0JCQkgICAgdm9pZCAqbWVtb3J5X2NhbGxiYWNrX2FyZywKLQkJCSAgICBE d2ZsX01vZHVsZV9DYWxsYmFjayAqcmVhZF9lYWdlcmx5LAotCQkJICAgIHZv aWQgKnJlYWRfZWFnZXJseV9hcmcsCi0JCQkgICAgY29uc3Qgdm9pZCAqbm90 ZV9maWxlLCBzaXplX3Qgbm90ZV9maWxlX3NpemUsCi0JCQkgICAgY29uc3Qg c3RydWN0IHJfZGVidWdfaW5mbyAqcl9kZWJ1Z19pbmZvKQorZHdmbF9zZWdt ZW50X3JlcG9ydF9tb2R1bGUgKER3ZmwgKmR3ZmwsIGludCBjb25zdCBuZHhf aW4sIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVfaW4sCisJCQkgICAgRHdmbF9N ZW1vcnlfQ2FsbGJhY2sqIGNvbnN0IG1lbW9yeV9jYWxsYmFjaywKKwkJCSAg ICB2b2lkKiBjb25zdCBtZW1vcnlfY2FsbGJhY2tfYXJnLAorCQkJICAgIER3 ZmxfTW9kdWxlX0NhbGxiYWNrICogY29uc3QgcmVhZF9lYWdlcmx5LAorCQkJ ICAgIHZvaWQqIGNvbnN0IHJlYWRfZWFnZXJseV9hcmcsCisJCQkgICAgY29u c3Qgdm9pZCogY29uc3Qgbm90ZV9maWxlLCBzaXplX3QgY29uc3Qgbm90ZV9m aWxlX3NpemUsCisJCQkgICAgY29uc3Qgc3RydWN0IHJfZGVidWdfaW5mbyog Y29uc3Qgcl9kZWJ1Z19pbmZvKQogewotICBzaXplX3Qgc2VnbWVudCA9IG5k eDsKKyAgX19CTE9DSyBpbnQgbmR4ID0gbmR4X2luOworICBfX0JMT0NLIGNv bnN0IGNoYXIgKm5hbWUgPSBuYW1lX2luOworCisgIF9fQkxPQ0sgc2l6ZV90 IHNlZ21lbnQgPSBuZHg7CiAKICAgaWYgKHNlZ21lbnQgPj0gZHdmbC0+bG9v a3VwX2VsdHMpCiAgICAgc2VnbWVudCA9IGR3ZmwtPmxvb2t1cF9lbHRzIC0g MTsKQEAgLTI1NSwzNCArMjU5LDM4IEBAIGR3Zmxfc2VnbWVudF9yZXBvcnRf bW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBjaGFyICpuYW1l LAogICAgIGlmICgrK3NlZ21lbnQgPT0gZHdmbC0+bG9va3VwX2VsdHMpCiAg ICAgICByZXR1cm4gMDsKIAotICBHRWxmX0FkZHIgc3RhcnQgPSBkd2ZsLT5s b29rdXBfYWRkcltzZWdtZW50XTsKKyAgX19CTE9DSyBHRWxmX0FkZHIgc3Rh cnQgPSBkd2ZsLT5sb29rdXBfYWRkcltzZWdtZW50XTsKIAotICBpbmxpbmUg Ym9vbCBzZWdtZW50X3JlYWQgKGludCBzZWduZHgsCi0JCQkgICAgdm9pZCAq KmJ1ZmZlciwgc2l6ZV90ICpidWZmZXJfYXZhaWxhYmxlLAotCQkJICAgIEdF bGZfQWRkciBhZGRyLCBzaXplX3QgbWlucmVhZCkKKyAgSU5MSU5FX05FU1RF RF9GVU5DIChib29sLCBzZWdtZW50X3JlYWQsCisgICAgICAgICAgICAgICAg ICAgICAgKGludCAsIHZvaWQgKiosIHNpemVfdCAqLCBHRWxmX0FkZHIsIHNp emVfdCksCisgICAgICAgICAgICAgICAgICAgICAgKGludCBzZWduZHgsCisg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipidWZmZXIsIHNpemVfdCAq YnVmZmVyX2F2YWlsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0Vs Zl9BZGRyIGFkZHIsIHNpemVfdCBtaW5yZWFkKSkKICAgewogICAgIHJldHVy biAhICgqbWVtb3J5X2NhbGxiYWNrKSAoZHdmbCwgc2VnbmR4LCBidWZmZXIs IGJ1ZmZlcl9hdmFpbGFibGUsCiAJCQkJIGFkZHIsIG1pbnJlYWQsIG1lbW9y eV9jYWxsYmFja19hcmcpOwotICB9CisgIH07CiAKLSAgaW5saW5lIHZvaWQg cmVsZWFzZV9idWZmZXIgKHZvaWQgKipidWZmZXIsIHNpemVfdCAqYnVmZmVy X2F2YWlsYWJsZSkKKyAgSU5MSU5FX05FU1RFRF9GVU5DICh2b2lkLCByZWxl YXNlX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKiwg c2l6ZV90ICopLAorICAgICAgICAgICAgICAgICAgICAgICh2b2lkICoqYnVm ZmVyLCBzaXplX3QgKmJ1ZmZlcl9hdmFpbGFibGUpKQogICB7CiAgICAgaWYg KCpidWZmZXIgIT0gTlVMTCkKICAgICAgICh2b2lkKSBzZWdtZW50X3JlYWQg KC0xLCBidWZmZXIsIGJ1ZmZlcl9hdmFpbGFibGUsIDAsIDApOwotICB9Cisg IH07CiAKICAgLyogRmlyc3QgcmVhZCBpbiB0aGUgZmlsZSBoZWFkZXIgYW5k IGNoZWNrIGl0cyBzYW5pdHkuICAqLwogCi0gIHZvaWQgKmJ1ZmZlciA9IE5V TEw7Ci0gIHNpemVfdCBidWZmZXJfYXZhaWxhYmxlID0gSU5JVElBTF9SRUFE OwotICBFbGYgKmVsZiA9IE5VTEw7Ci0gIGludCBmZCA9IC0xOworICBfX0JM T0NLIHZvaWQgKmJ1ZmZlciA9IE5VTEw7CisgIF9fQkxPQ0sgc2l6ZV90IGJ1 ZmZlcl9hdmFpbGFibGUgPSBJTklUSUFMX1JFQUQ7CisgIF9fQkxPQ0sgRWxm ICplbGYgPSBOVUxMOworICBfX0JMT0NLIGludCBmZCA9IC0xOwogCiAgIC8q IFdlIG1pZ2h0IGhhdmUgdG8gcmVzZXJ2ZSBzb21lIG1lbW9yeSBmb3IgdGhl IHBoZHJzLiAgU2V0IHRvIE5VTEwKICAgICAgaGVyZSBzbyB3ZSBjYW4gYWx3 YXlzIHNhZmVseSBmcmVlIGl0LiAgKi8KLSAgdm9pZCAqcGhkcnNwID0gTlVM TDsKKyAgX19CTE9DSyB2b2lkICpwaGRyc3AgPSBOVUxMOwogCi0gIGlubGlu ZSBpbnQgZmluaXNoICh2b2lkKQorICBJTkxJTkVfTkVTVEVEX0ZVTkMgKGlu dCwgZmluaXNoLCAodm9pZCksICh2b2lkKSkKICAgewogICAgIGZyZWUgKHBo ZHJzcCk7CiAgICAgcmVsZWFzZV9idWZmZXIgKCZidWZmZXIsICZidWZmZXJf YXZhaWxhYmxlKTsKQEAgLTI5MSwxNSArMjk5LDE3IEBAIGR3Zmxfc2VnbWVu dF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBj aGFyICpuYW1lLAogICAgIGlmIChmZCAhPSAtMSkKICAgICAgIGNsb3NlIChm ZCk7CiAgICAgcmV0dXJuIG5keDsKLSAgfQorICB9OwogCiAgIGlmIChzZWdt ZW50X3JlYWQgKG5keCwgJmJ1ZmZlciwgJmJ1ZmZlcl9hdmFpbGFibGUsCiAJ CSAgICBzdGFydCwgc2l6ZW9mIChFbGY2NF9FaGRyKSkKICAgICAgIHx8IG1l bWNtcCAoYnVmZmVyLCBFTEZNQUcsIFNFTEZNQUcpICE9IDApCiAgICAgcmV0 dXJuIGZpbmlzaCAoKTsKIAotICBpbmxpbmUgYm9vbCByZWFkX3BvcnRpb24g KHZvaWQgKipkYXRhLCBzaXplX3QgKmRhdGFfc2l6ZSwKLQkJCSAgICBHRWxm X0FkZHIgdmFkZHIsIHNpemVfdCBmaWxlc3opCisgIElOTElORV9ORVNURURf RlVOQyAoYm9vbCwgcmVhZF9wb3J0aW9uLAorICAgICAgICAgICAgICAgICAg ICAgICh2b2lkICoqLCBzaXplX3QgKiwgR0VsZl9BZGRyLCBzaXplX3QpLAor ICAgICAgICAgICAgICAgICAgICAgICh2b2lkICoqZGF0YSwgc2l6ZV90ICpk YXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIEdFbGZfQWRkciB2 YWRkciwgc2l6ZV90IGZpbGVzeikpCiAgIHsKICAgICBpZiAodmFkZHIgLSBz dGFydCArIGZpbGVzeiA+IGJ1ZmZlcl9hdmFpbGFibGUKIAkvKiBJZiB3ZSdy ZSBpbiBzdHJpbmcgbW9kZSwgdGhlbiBkb24ndCBjb25zaWRlciB0aGUgYnVm ZmVyIHdlIGhhdmUKQEAgLTMxNywzNSArMzI3LDM3IEBAIGR3Zmxfc2VnbWVu dF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBj aGFyICpuYW1lLAogICAgICpkYXRhID0gdmFkZHIgLSBzdGFydCArIGJ1ZmZl cjsKICAgICAqZGF0YV9zaXplID0gMDsKICAgICByZXR1cm4gZmFsc2U7Ci0g IH0KKyAgfTsKIAotICBpbmxpbmUgdm9pZCBmaW5pc2hfcG9ydGlvbiAodm9p ZCAqKmRhdGEsIHNpemVfdCAqZGF0YV9zaXplKQorICBJTkxJTkVfTkVTVEVE X0ZVTkMgKHZvaWQsIGZpbmlzaF9wb3J0aW9uLAorICAgICAgICAgICAgICAg ICAgICAgICh2b2lkICoqLCBzaXplX3QgKiksCisgICAgICAgICAgICAgICAg ICAgICAgKHZvaWQgKipkYXRhLCBzaXplX3QgKmRhdGFfc2l6ZSkpCiAgIHsK ICAgICBpZiAoKmRhdGFfc2l6ZSAhPSAwKQogICAgICAgcmVsZWFzZV9idWZm ZXIgKGRhdGEsIGRhdGFfc2l6ZSk7Ci0gIH0KKyAgfTsKIAogICAvKiBFeHRy YWN0IHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIGZyb20gdGhlIGZpbGUgaGVh ZGVyLiAgKi8KLSAgY29uc3QgdW5zaWduZWQgY2hhciAqZV9pZGVudDsKLSAg dW5zaWduZWQgY2hhciBlaV9jbGFzczsKLSAgdW5zaWduZWQgY2hhciBlaV9k YXRhOwotICB1aW50MTZfdCBlX3R5cGU7Ci0gIHVuaW9uCisgIF9fQkxPQ0sg Y29uc3QgdW5zaWduZWQgY2hhciAqZV9pZGVudDsKKyAgX19CTE9DSyB1bnNp Z25lZCBjaGFyIGVpX2NsYXNzOworICBfX0JMT0NLIHVuc2lnbmVkIGNoYXIg ZWlfZGF0YTsKKyAgX19CTE9DSyB1aW50MTZfdCBlX3R5cGU7CisgIF9fQkxP Q0sgdW5pb24KICAgewogICAgIEVsZjMyX0VoZHIgZTMyOwogICAgIEVsZjY0 X0VoZHIgZTY0OwogICB9IGVoZHI7Ci0gIEdFbGZfT2ZmIHBob2ZmOwotICB1 aW50X2Zhc3QxNl90IHBobnVtOwotICB1aW50X2Zhc3QxNl90IHBoZW50c2l6 ZTsKLSAgR0VsZl9PZmYgc2hkcnNfZW5kOwotICBFbGZfRGF0YSB4bGF0ZWZy b20gPQorICBfX0JMT0NLIEdFbGZfT2ZmIHBob2ZmOworICBfX0JMT0NLIHVp bnRfZmFzdDE2X3QgcGhudW07CisgIF9fQkxPQ0sgdWludF9mYXN0MTZfdCBw aGVudHNpemU7CisgIF9fQkxPQ0sgR0VsZl9PZmYgc2hkcnNfZW5kOworICBf X0JMT0NLIEVsZl9EYXRhIHhsYXRlZnJvbSA9CiAgICAgewogICAgICAgLmRf dHlwZSA9IEVMRl9UX0VIRFIsCiAgICAgICAuZF9idWYgPSAodm9pZCAqKSBi dWZmZXIsCiAgICAgICAuZF92ZXJzaW9uID0gRVZfQ1VSUkVOVCwKICAgICB9 OwotICBFbGZfRGF0YSB4bGF0ZXRvID0KKyAgX19CTE9DSyBFbGZfRGF0YSB4 bGF0ZXRvID0KICAgICB7CiAgICAgICAuZF90eXBlID0gRUxGX1RfRUhEUiwK ICAgICAgIC5kX2J1ZiA9ICZlaGRyLApAQCAtMzk3LDggKzQwOSw4IEBAIGR3 Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4 LCBjb25zdCBjaGFyICpuYW1lLAogICB4bGF0ZWZyb20uZF90eXBlID0geGxh dGV0by5kX3R5cGUgPSBFTEZfVF9QSERSOwogICB4bGF0ZWZyb20uZF9zaXpl ID0gcGhudW0gKiBwaGVudHNpemU7CiAKLSAgdm9pZCAqcGhfYnVmZmVyID0g TlVMTDsKLSAgc2l6ZV90IHBoX2J1ZmZlcl9zaXplID0gMDsKKyAgX19CTE9D SyB2b2lkICpwaF9idWZmZXIgPSBOVUxMOworICBfX0JMT0NLIHNpemVfdCBw aF9idWZmZXJfc2l6ZSA9IDA7CiAgIGlmIChyZWFkX3BvcnRpb24gKCZwaF9i dWZmZXIsICZwaF9idWZmZXJfc2l6ZSwKIAkJICAgIHN0YXJ0ICsgcGhvZmYs IHhsYXRlZnJvbS5kX3NpemUpKQogICAgIHJldHVybiBmaW5pc2ggKCk7CkBA IC00MTgsMzEgKzQzMCwzMyBAQCBkd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVs ZSAoRHdmbCAqZHdmbCwgaW50IG5keCwgY29uc3QgY2hhciAqbmFtZSwKICAg eGxhdGV0by5kX3NpemUgPSBwaGRyc3BfYnl0ZXM7CiAKICAgLyogVHJhY2sg dGhlIGJvdW5kcyBvZiB0aGUgZmlsZSB2aXNpYmxlIGluIG1lbW9yeS4gICov Ci0gIEdFbGZfT2ZmIGZpbGVfdHJpbW1lZF9lbmQgPSAwOyAvKiBQcm9wZXIg cF92YWRkciArIHBfZmlsZXN6IGVuZC4gICovCi0gIEdFbGZfT2ZmIGZpbGVf ZW5kID0gMDsJIC8qIFJvdW5kZWQgdXAgdG8gZWZmZWN0aXZlIHBhZ2Ugc2l6 ZS4gICovCi0gIEdFbGZfT2ZmIGNvbnRpZ3VvdXMgPSAwOwkgLyogVmlzaWJs ZSBhcyBjb250aWd1b3VzIGZpbGUgZnJvbSBTVEFSVC4gICovCi0gIEdFbGZf T2ZmIHRvdGFsX2ZpbGVzeiA9IDA7CSAvKiBUb3RhbCBzaXplIG9mIGRhdGEg dG8gcmVhZC4gICovCisgIF9fQkxPQ0sgR0VsZl9PZmYgZmlsZV90cmltbWVk X2VuZCA9IDA7IC8qIFByb3BlciBwX3ZhZGRyICsgcF9maWxlc3ogZW5kLiAg Ki8KKyAgX19CTE9DSyBHRWxmX09mZiBmaWxlX2VuZCA9IDA7CSAvKiBSb3Vu ZGVkIHVwIHRvIGVmZmVjdGl2ZSBwYWdlIHNpemUuICAqLworICBfX0JMT0NL IEdFbGZfT2ZmIGNvbnRpZ3VvdXMgPSAwOwkgLyogVmlzaWJsZSBhcyBjb250 aWd1b3VzIGZpbGUgZnJvbSBTVEFSVC4gICovCisgIF9fQkxPQ0sgR0VsZl9P ZmYgdG90YWxfZmlsZXN6ID0gMDsJIC8qIFRvdGFsIHNpemUgb2YgZGF0YSB0 byByZWFkLiAgKi8KIAogICAvKiBDb2xsZWN0IHRoZSBiaWFzIGJldHdlZW4g U1RBUlQgYW5kIHRoZSBjb250YWluaW5nIFBUX0xPQUQncyBwX3ZhZGRyLiAg Ki8KLSAgR0VsZl9BZGRyIGJpYXMgPSAwOwotICBib29sIGZvdW5kX2JpYXMg PSBmYWxzZTsKKyAgX19CTE9DSyBHRWxmX0FkZHIgYmlhcyA9IDA7CisgIF9f QkxPQ0sgYm9vbCBmb3VuZF9iaWFzID0gZmFsc2U7CiAKICAgLyogQ29sbGVj dCB0aGUgdW5iaWFzZWQgYm91bmRzIG9mIHRoZSBtb2R1bGUgaGVyZS4gICov Ci0gIEdFbGZfQWRkciBtb2R1bGVfc3RhcnQgPSAtMWw7Ci0gIEdFbGZfQWRk ciBtb2R1bGVfZW5kID0gMDsKLSAgR0VsZl9BZGRyIG1vZHVsZV9hZGRyZXNz X3N5bmMgPSAwOworICBfX0JMT0NLIEdFbGZfQWRkciBtb2R1bGVfc3RhcnQg PSAtMWw7CisgIF9fQkxPQ0sgR0VsZl9BZGRyIG1vZHVsZV9lbmQgPSAwOwor ICBfX0JMT0NLIEdFbGZfQWRkciBtb2R1bGVfYWRkcmVzc19zeW5jID0gMDsK IAogICAvKiBJZiB3ZSBzZWUgUFRfRFlOQU1JQywgcmVjb3JkIGl0IGhlcmUu ICAqLwotICBHRWxmX0FkZHIgZHluX3ZhZGRyID0gMDsKLSAgR0VsZl9Yd29y ZCBkeW5fZmlsZXN6ID0gMDsKKyAgX19CTE9DSyBHRWxmX0FkZHIgZHluX3Zh ZGRyID0gMDsKKyAgX19CTE9DSyBHRWxmX1h3b3JkIGR5bl9maWxlc3ogPSAw OwogCiAgIC8qIENvbGxlY3QgdGhlIGJ1aWxkIElEIGJpdHMgaGVyZS4gICov Ci0gIHZvaWQgKmJ1aWxkX2lkID0gTlVMTDsKLSAgc2l6ZV90IGJ1aWxkX2lk X2xlbiA9IDA7Ci0gIEdFbGZfQWRkciBidWlsZF9pZF92YWRkciA9IDA7Cisg IF9fQkxPQ0sgdm9pZCAqYnVpbGRfaWQgPSBOVUxMOworICBfX0JMT0NLIHNp emVfdCBidWlsZF9pZF9sZW4gPSAwOworICBfX0JMT0NLIEdFbGZfQWRkciBi dWlsZF9pZF92YWRkciA9IDA7CiAKICAgLyogQ29uc2lkZXIgYSBQVF9OT1RF IHdlJ3ZlIGZvdW5kIGluIHRoZSBpbWFnZS4gICovCi0gIGlubGluZSB2b2lk IGNvbnNpZGVyX25vdGVzIChHRWxmX0FkZHIgdmFkZHIsIEdFbGZfWHdvcmQg ZmlsZXN6KQorICBJTkxJTkVfTkVTVEVEX0ZVTkMgKHZvaWQsIGNvbnNpZGVy X25vdGVzLAorICAgICAgICAgICAgICAgICAgICAgIChHRWxmX0FkZHIsIEdF bGZfWHdvcmQpLAorICAgICAgICAgICAgICAgICAgICAgIChHRWxmX0FkZHIg dmFkZHIsIEdFbGZfWHdvcmQgZmlsZXN6KSkKICAgewogICAgIC8qIElmIHdl IGhhdmUgYWxyZWFkeSBzZWVuIGEgYnVpbGQgSUQsIHdlIGRvbid0IGNhcmUg YW55IG1vcmUuICAqLwogICAgIGlmIChidWlsZF9pZCAhPSBOVUxMIHx8IGZp bGVzeiA9PSAwKQpAQCAtNTAyLDEzICs1MTYsMTggQEAgZHdmbF9zZWdtZW50 X3JlcG9ydF9tb2R1bGUgKER3ZmwgKmR3ZmwsIGludCBuZHgsIGNvbnN0IGNo YXIgKm5hbWUsCiAgICAgaWYgKG5vdGVzICE9IGRhdGEpCiAgICAgICBmcmVl IChub3Rlcyk7CiAgICAgZmluaXNoX3BvcnRpb24gKCZkYXRhLCAmZGF0YV9z aXplKTsKLSAgfQorICB9OwogCiAgIC8qIENvbnNpZGVyIGVhY2ggb2YgdGhl IHByb2dyYW0gaGVhZGVycyB3ZSd2ZSByZWFkIGZyb20gdGhlIGltYWdlLiAg Ki8KLSAgaW5saW5lIHZvaWQgY29uc2lkZXJfcGhkciAoR0VsZl9Xb3JkIHR5 cGUsCi0JCQkgICAgIEdFbGZfQWRkciB2YWRkciwgR0VsZl9Yd29yZCBtZW1z eiwKLQkJCSAgICAgR0VsZl9PZmYgb2Zmc2V0LCBHRWxmX1h3b3JkIGZpbGVz eiwKLQkJCSAgICAgR0VsZl9Yd29yZCBhbGlnbikKKyAgSU5MSU5FX05FU1RF RF9GVU5DICh2b2lkLCBjb25zaWRlcl9waGRyLAorICAgICAgICAgICAgICAg ICAgICAgIChHRWxmX1dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgIEdF bGZfQWRkciwgR0VsZl9Yd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAg R0VsZl9PZmYsIEdFbGZfWHdvcmQsCisgICAgICAgICAgICAgICAgICAgICAg IEdFbGZfWHdvcmQpLAorICAgICAgICAgICAgICAgICAgICAgIChHRWxmX1dv cmQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0VsZl9BZGRyIHZh ZGRyLCBHRWxmX1h3b3JkIG1lbXN6LAorICAgICAgICAgICAgICAgICAgICAg ICBHRWxmX09mZiBvZmZzZXQsIEdFbGZfWHdvcmQgZmlsZXN6LAorICAgICAg ICAgICAgICAgICAgICAgICBHRWxmX1h3b3JkIGFsaWduKSkKICAgewogICAg IHN3aXRjaCAodHlwZSkKICAgICAgIHsKQEAgLTU3MSw3ICs1OTAsNyBAQCBk d2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZSAoRHdmbCAqZHdmbCwgaW50IG5k eCwgY29uc3QgY2hhciAqbmFtZSwKIAkgIG1vZHVsZV9lbmQgPSB2YWRkcl9l bmQ7CiAJYnJlYWs7CiAgICAgICB9Ci0gIH0KKyAgfTsKIAogICBFbGYzMl9Q aGRyICgqcDMyKVtwaG51bV0gPSBwaGRyc3A7CiAgIEVsZjY0X1BoZHIgKCpw NjQpW3BobnVtXSA9IHBoZHJzcDsKQEAgLTcxOCwxMSArNzM3LDEyIEBAIGR3 Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4 LCBjb25zdCBjaGFyICpuYW1lLAogICAgICBXZSBuZWVkIGl0cyBEVF9TVFJU QUIgYW5kIERUX1NUUlNaIHRvIGRlY2lwaGVyIERUX1NPTkFNRSwKICAgICAg YW5kIHRoZXkgYWxzbyB0ZWxsIHVzIHRoZSBlc3NlbnRpYWwgcG9ydGlvbiBv ZiB0aGUgZmlsZQogICAgICBmb3IgZmV0Y2hpbmcgc3ltYm9scy4gICovCi0g IEdFbGZfQWRkciBzb25hbWVfc3Ryb2ZmID0gMDsKLSAgR0VsZl9BZGRyIGR5 bnN0cl92YWRkciA9IDA7Ci0gIEdFbGZfWHdvcmQgZHluc3Ryc3ogPSAwOwot ICBib29sIGV4ZWNsaWtlID0gZmFsc2U7Ci0gIGlubGluZSBib29sIGNvbnNp ZGVyX2R5biAoR0VsZl9TeHdvcmQgdGFnLCBHRWxmX1h3b3JkIHZhbCkKKyAg X19CTE9DSyBHRWxmX0FkZHIgc29uYW1lX3N0cm9mZiA9IDA7CisgIF9fQkxP Q0sgR0VsZl9BZGRyIGR5bnN0cl92YWRkciA9IDA7CisgIF9fQkxPQ0sgR0Vs Zl9Yd29yZCBkeW5zdHJzeiA9IDA7CisgIF9fQkxPQ0sgYm9vbCBleGVjbGlr ZSA9IGZhbHNlOworICBJTkxJTkVfTkVTVEVEX0ZVTkMgKGJvb2wsIGNvbnNp ZGVyX2R5biwgKEdFbGZfU3h3b3JkLCBHRWxmX1h3b3JkKSwKKyAgICAgICAg ICAgICAgICAgICAgICAoR0VsZl9TeHdvcmQgdGFnLCBHRWxmX1h3b3JkIHZh bCkpCiAgIHsKICAgICBzd2l0Y2ggKHRhZykKICAgICAgIHsKQEAgLTc0Nywx MiArNzY3LDEyIEBAIGR3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlIChEd2Zs ICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgfQog CiAgICAgcmV0dXJuIHNvbmFtZV9zdHJvZmYgIT0gMCAmJiBkeW5zdHJfdmFk ZHIgIT0gMCAmJiBkeW5zdHJzeiAhPSAwOwotICB9CisgIH07CiAKICAgY29u c3Qgc2l6ZV90IGR5bl9lbnRzaXplID0gKGVpX2NsYXNzID09IEVMRkNMQVNT MzIKIAkJCSAgICAgID8gc2l6ZW9mIChFbGYzMl9EeW4pIDogc2l6ZW9mIChF bGY2NF9EeW4pKTsKLSAgdm9pZCAqZHluX2RhdGEgPSBOVUxMOwotICBzaXpl X3QgZHluX2RhdGFfc2l6ZSA9IDA7CisgIF9fQkxPQ0sgdm9pZCAqZHluX2Rh dGEgPSBOVUxMOworICBfX0JMT0NLIHNpemVfdCBkeW5fZGF0YV9zaXplID0g MDsKICAgaWYgKGR5bl9maWxlc3ogIT0gMCAmJiBkeW5fZmlsZXN6ICUgZHlu X2VudHNpemUgPT0gMAogICAgICAgJiYgISByZWFkX3BvcnRpb24gKCZkeW5f ZGF0YSwgJmR5bl9kYXRhX3NpemUsIGR5bl92YWRkciwgZHluX2ZpbGVzeikp CiAgICAgewpAQCAtNzkwLDggKzgxMCw4IEBAIGR3Zmxfc2VnbWVudF9yZXBv cnRfbW9kdWxlIChEd2ZsICpkd2ZsLCBpbnQgbmR4LCBjb25zdCBjaGFyICpu YW1lLAogICBpZiAobmFtZSA9PSBOVUxMKQogICAgIG5hbWUgPSBlX3R5cGUg PT0gRVRfRVhFQyA/ICJbZXhlXSIgOiBleGVjbGlrZSA/ICJbcGllXSIgOiAi W2Rzb10iOwogCi0gIHZvaWQgKnNvbmFtZSA9IE5VTEw7Ci0gIHNpemVfdCBz b25hbWVfc2l6ZSA9IDA7CisgIF9fQkxPQ0sgdm9pZCAqc29uYW1lID0gTlVM TDsKKyAgX19CTE9DSyBzaXplX3Qgc29uYW1lX3NpemUgPSAwOwogICBpZiAo ISBuYW1lX2lzX2ZpbmFsICYmIGR5bnN0cnN6ICE9IDAgJiYgZHluc3RyX3Zh ZGRyICE9IDApCiAgICAgewogICAgICAgLyogV2Uga25vdyB0aGUgYm91bmRz IG9mIHRoZSAuZHluc3RyIHNlY3Rpb24uCkBAIC04MjQsNyArODQ0LDcgQEAg ZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUgKER3ZmwgKmR3ZmwsIGludCBu ZHgsIGNvbnN0IGNoYXIgKm5hbWUsCiAgIC8qIE5vdyB0aGF0IHdlIGhhdmUg Y2hvc2VuIHRoZSBtb2R1bGUncyBuYW1lIGFuZCBib3VuZHMsIHJlcG9ydCBp dC4KICAgICAgSWYgd2UgZm91bmQgYSBidWlsZCBJRCwgcmVwb3J0IHRoYXQg dG9vLiAgKi8KIAotICBEd2ZsX01vZHVsZSAqbW9kID0gSU5UVVNFKGR3Zmxf cmVwb3J0X21vZHVsZSkgKGR3ZmwsIG5hbWUsCisgIF9fQkxPQ0sgRHdmbF9N b2R1bGUgKm1vZCA9IElOVFVTRShkd2ZsX3JlcG9ydF9tb2R1bGUpIChkd2Zs LCBuYW1lLAogCQkJCQkJIG1vZHVsZV9zdGFydCwgbW9kdWxlX2VuZCk7CiAK ICAgLy8gIWV4ZWNsaWtlICYmIEVUX0VYRUMgaXMgUElFLgpAQCAtODcyLDI5 ICs4OTIsMzQgQEAgZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUgKER3Zmwg KmR3ZmwsIGludCBuZHgsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAvKiBU aGUgY2FsbGVyIHdhbnRzIHRvIHJlYWQgdGhlIHdob2xlIGZpbGUgaW4gcmln aHQgbm93LCBidXQgaGFzbid0CiAJIGRvbmUgaXQgZm9yIHVzLiAgRmlsbCBp biBhIGxvY2FsIGltYWdlIG9mIHRoZSB2aXJ0dWFsIGZpbGUuICAqLwogCi0g ICAgICB2b2lkICpjb250ZW50cyA9IGNhbGxvYyAoMSwgZmlsZV90cmltbWVk X2VuZCk7CisgICAgICBfX0JMT0NLIHZvaWQgKmNvbnRlbnRzID0gY2FsbG9j ICgxLCBmaWxlX3RyaW1tZWRfZW5kKTsKICAgICAgIGlmICh1bmxpa2VseSAo Y29udGVudHMgPT0gTlVMTCkpCiAJcmV0dXJuIGZpbmlzaCAoKTsKIAotICAg ICAgaW5saW5lIHZvaWQgZmluYWxfcmVhZCAoc2l6ZV90IG9mZnNldCwgR0Vs Zl9BZGRyIHZhZGRyLCBzaXplX3Qgc2l6ZSkKKyAgICAgIElOTElORV9ORVNU RURfRlVOQyAodm9pZCwgZmluYWxfcmVhZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNpemVfdCwgR0VsZl9BZGRyLCBzaXplX3QpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2l6ZV90IG9mZnNldCwgR0VsZl9BZGRy IHZhZGRyLCBzaXplX3Qgc2l6ZSkpCiAgICAgICB7CiAJdm9pZCAqaW50byA9 IGNvbnRlbnRzICsgb2Zmc2V0OwogCXNpemVfdCByZWFkX3NpemUgPSBzaXpl OwogCSh2b2lkKSBzZWdtZW50X3JlYWQgKGFkZHJfc2VnbmR4IChkd2ZsLCBz ZWdtZW50LCB2YWRkciwgZmFsc2UpLAogCQkJICAgICAmaW50bywgJnJlYWRf c2l6ZSwgdmFkZHIsIHNpemUpOwotICAgICAgfQorICAgICAgfTsKIAogICAg ICAgaWYgKGNvbnRpZ3VvdXMgPCBmaWxlX3RyaW1tZWRfZW5kKQogCXsKIAkg IC8qIFdlIGNhbid0IHVzZSB0aGUgbWVtb3J5IGltYWdlIHZlcmJhdGltIGFz IHRoZSBmaWxlIGltYWdlLgogCSAgICAgU28gd2UnbGwgYmUgcmVhZGluZyBp bnRvIGEgbG9jYWwgaW1hZ2Ugb2YgdGhlIHZpcnR1YWwgZmlsZS4gICovCiAK LQkgIGlubGluZSB2b2lkIHJlYWRfcGhkciAoR0VsZl9Xb3JkIHR5cGUsIEdF bGZfQWRkciB2YWRkciwKLQkJCQkgR0VsZl9PZmYgb2Zmc2V0LCBHRWxmX1h3 b3JkIGZpbGVzeikKKwkgIElOTElORV9ORVNURURfRlVOQyAodm9pZCwgcmVh ZF9waGRyLAorCSAgICAgICAgICAgICAgICAgICAgICAoR0VsZl9Xb3JkLCBH RWxmX0FkZHIsCisJICAgICAgICAgICAgICAgICAgICAgICBHRWxmX09mZiwg R0VsZl9Yd29yZCksCisJICAgICAgICAgICAgICAgICAgICAgIChHRWxmX1dv cmQgdHlwZSwgR0VsZl9BZGRyIHZhZGRyLAorCSAgICAgICAgICAgICAgICAg ICAgICAgR0VsZl9PZmYgb2Zmc2V0LCBHRWxmX1h3b3JkIGZpbGVzeikpCiAJ ICB7CiAJICAgIGlmICh0eXBlID09IFBUX0xPQUQpCiAJICAgICAgZmluYWxf cmVhZCAob2Zmc2V0LCB2YWRkciArIGJpYXMsIGZpbGVzeik7Ci0JICB9CisJ ICB9OwogCiAJICBpZiAoZWlfY2xhc3MgPT0gRUxGQ0xBU1MzMikKIAkgICAg Zm9yICh1aW50X2Zhc3QxNl90IGkgPSAwOyBpIDwgcGhudW07ICsraSkKZGlm ZiAtLWdpdCBhL2xpYmR3ZmwvZWxmLWZyb20tbWVtb3J5LmMgYi9saWJkd2Zs L2VsZi1mcm9tLW1lbW9yeS5jCmluZGV4IDEyYTBhMWIuLmU2M2I3YjIgMTAw NjQ0Ci0tLSBhL2xpYmR3ZmwvZWxmLWZyb20tbWVtb3J5LmMKKysrIGIvbGli ZHdmbC9lbGYtZnJvbS1tZW1vcnkuYwpAQCAtMjE5LDMzICsyMTksMzcgQEAg ZWxmX2Zyb21fcmVtb3RlX21lbW9yeSAoR0VsZl9BZGRyIGVoZHJfdm1hLAog ICBFbGY2NF9QaGRyICgqcDY0KVtwaG51bV0gPSBwaGRyc3A7CiAgIHN3aXRj aCAoZWhkci5lMzIuZV9pZGVudFtFSV9DTEFTU10pCiAgICAgewotICAgICAg LyogU2FuaXR5IGNoZWNrcyBzZWdtZW50cyBhbmQgY2FsY3VsYXRlcyBzZWdt ZW50X2VuZCwKLQkgc2VnbWVudHNfZW5kLCBzZWdtZW50c19lbmRfbWVtIGFu ZCBsb2FkYmFzZSAoaWYgbm90Ci0JIGZvdW5kX2Jhc2UgeWV0KS4gIFJldHVy bnMgdHJ1ZSBpZiBzYW5pdHkgY2hlY2tpbmcgZmFpbGVkLAotCSBmYWxzZSBv dGhlcndpc2UuICAqLwotICAgICAgaW5saW5lIGJvb2wgaGFuZGxlX3NlZ21l bnQgKEdFbGZfQWRkciB2YWRkciwgR0VsZl9PZmYgb2Zmc2V0LAotCQkJCSAg R0VsZl9Yd29yZCBmaWxlc3osIEdFbGZfWHdvcmQgbWVtc3opCi0JewotCSAg LyogU2FuaXR5IGNoZWNrIHRoZSBzZWdtZW50IGxvYWQgYWxpZ25zIHdpdGgg dGhlIHBhZ2VzaXplLiAgKi8KLQkgIGlmICgoKHZhZGRyIC0gb2Zmc2V0KSAm IChwYWdlc2l6ZSAtIDEpKSAhPSAwKQotCSAgICByZXR1cm4gdHJ1ZTsKLQot CSAgR0VsZl9PZmYgc2VnbWVudF9lbmQgPSAoKG9mZnNldCArIGZpbGVzeiAr IHBhZ2VzaXplIC0gMSkKLQkJCQkgICYgLXBhZ2VzaXplKTsKLQotCSAgaWYg KHNlZ21lbnRfZW5kID4gKEdFbGZfT2ZmKSBjb250ZW50c19zaXplKQotCSAg ICBjb250ZW50c19zaXplID0gc2VnbWVudF9lbmQ7Ci0KLQkgIGlmICghZm91 bmRfYmFzZSAmJiAob2Zmc2V0ICYgLXBhZ2VzaXplKSA9PSAwKQotCSAgICB7 Ci0JICAgICAgbG9hZGJhc2UgPSBlaGRyX3ZtYSAtICh2YWRkciAmIC1wYWdl c2l6ZSk7Ci0JICAgICAgZm91bmRfYmFzZSA9IHRydWU7Ci0JICAgIH0KLQot CSAgc2VnbWVudHNfZW5kID0gb2Zmc2V0ICsgZmlsZXN6OwotCSAgc2VnbWVu dHNfZW5kX21lbSA9IG9mZnNldCArIG1lbXN6OwotCSAgcmV0dXJuIGZhbHNl OwotCX0KKyAgLyogU2FuaXR5IGNoZWNrcyBzZWdtZW50cyBhbmQgY2FsY3Vs YXRlcyBzZWdtZW50X2VuZCwKKyAgIHNlZ21lbnRzX2VuZCwgc2VnbWVudHNf ZW5kX21lbSBhbmQgbG9hZGJhc2UgKGlmIG5vdAorICAgZm91bmRfYmFzZSB5 ZXQpLiAgUmV0dXJucyB0cnVlIGlmIHNhbml0eSBjaGVja2luZyBmYWlsZWQs CisgICBmYWxzZSBvdGhlcndpc2UuICAqLworICAjZGVmaW5lIGhhbmRsZV9z ZWdtZW50KF92YWRkciwgX29mZnNldCwgX2ZpbGVzeiwgX21lbXN6KSBcCisg ICAgKCB7IFwKKyAgICAgIGJvb2wgcmVzdWx0OyBcCisgICAgICBHRWxmX0Fk ZHIgdmFkZHIgPSBfdmFkZHI7IFwKKyAgICAgIEdFbGZfT2ZmIG9mZnNldCA9 IF9vZmZzZXQ7IFwKKyAgICAgIEdFbGZfWHdvcmQgZmlsZXN6ID0gX2ZpbGVz ejsgXAorICAgICAgR0VsZl9Yd29yZCBtZW1zeiA9IF9tZW1zejsgXAorICAg ICAgLyogU2FuaXR5IGNoZWNrIHRoZSBzZWdtZW50IGxvYWQgYWxpZ25zIHdp dGggdGhlIHBhZ2VzaXplLiAgKi8gXAorICAgICAgaWYgKCgodmFkZHIgLSBv ZmZzZXQpICYgKHBhZ2VzaXplIC0gMSkpICE9IDApIFwKKyAgICAgICAgcmVz dWx0ID0gdHJ1ZTsgXAorICAgICAgZWxzZSBcCisgICAgICAgIHsgXAorICAg ICAgICAgIHJlc3VsdCA9IGZhbHNlOyBcCisgICAgICAgICAgR0VsZl9PZmYg c2VnbWVudF9lbmQgPSAoKG9mZnNldCArIGZpbGVzeiArIHBhZ2VzaXplIC0g MSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAtcGFn ZXNpemUpOyBcCisgICAgICAgICAgaWYgKHNlZ21lbnRfZW5kID4gKEdFbGZf T2ZmKSBjb250ZW50c19zaXplKSBcCisgICAgICAgICAgICBjb250ZW50c19z aXplID0gc2VnbWVudF9lbmQ7IFwKKyAgICAgICAgICBpZiAoIWZvdW5kX2Jh c2UgJiYgKG9mZnNldCAmIC1wYWdlc2l6ZSkgPT0gMCkgXAorICAgICAgICAg ICAgeyBcCisgICAgICAgICAgICAgIGxvYWRiYXNlID0gZWhkcl92bWEgLSAo dmFkZHIgJiAtcGFnZXNpemUpOyBcCisgICAgICAgICAgICAgIGZvdW5kX2Jh c2UgPSB0cnVlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICBzZWdt ZW50c19lbmQgPSBvZmZzZXQgKyBmaWxlc3o7IFwKKyAgICAgICAgICBzZWdt ZW50c19lbmRfbWVtID0gb2Zmc2V0ICsgbWVtc3o7IFwKKyAgICAgICAgfSBc CisgICAgICByZXN1bHQ7IFwKKyAgICB9ICkKIAogICAgIGNhc2UgRUxGQ0xB U1MzMjoKICAgICAgIGlmIChlbGYzMl94bGF0ZXRvbSAoJnhsYXRldG8sICZ4 bGF0ZWZyb20sCkBAIC0zMDIsMTkgKzMwNiwyMiBAQCBlbGZfZnJvbV9yZW1v dGVfbWVtb3J5IChHRWxmX0FkZHIgZWhkcl92bWEsCiAgIHN3aXRjaCAoZWhk ci5lMzIuZV9pZGVudFtFSV9DTEFTU10pCiAgICAgewogICAgICAgLyogUmVh ZHMgdGhlIGdpdmVuIHNlZ21lbnQuICBSZXR1cm5zIHRydWUgaWYgcmVhZGlu ZyBmYWlscywKLQkgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLSAgICAgIGlubGlu ZSBib29sIGhhbmRsZV9zZWdtZW50IChHRWxmX0FkZHIgdmFkZHIsIEdFbGZf T2ZmIG9mZnNldCwKLQkJCQkgIEdFbGZfWHdvcmQgZmlsZXN6KQotCXsKLQkg IEdFbGZfT2ZmIHN0YXJ0ID0gb2Zmc2V0ICYgLXBhZ2VzaXplOwotCSAgR0Vs Zl9PZmYgZW5kID0gKG9mZnNldCArIGZpbGVzeiArIHBhZ2VzaXplIC0gMSkg JiAtcGFnZXNpemU7Ci0JICBpZiAoZW5kID4gKEdFbGZfT2ZmKSBjb250ZW50 c19zaXplKQotCSAgICBlbmQgPSBjb250ZW50c19zaXplOwotCSAgbnJlYWQg PSAoKnJlYWRfbWVtb3J5KSAoYXJnLCBidWZmZXIgKyBzdGFydCwKLQkJCQkg IChsb2FkYmFzZSArIHZhZGRyKSAmIC1wYWdlc2l6ZSwKLQkJCQkgIGVuZCAt IHN0YXJ0LCBlbmQgLSBzdGFydCk7Ci0JICByZXR1cm4gbnJlYWQgPD0gMDsK LQl9CisgICAgICAgICBmYWxzZSBvdGhlcndpc2UuICAqLworICAgICAgI3Vu ZGVmIGhhbmRsZV9zZWdtZW50CisgICAgICAjZGVmaW5lIGhhbmRsZV9zZWdt ZW50KF92YWRkciwgX29mZnNldCwgX2ZpbGVzeikgXAorICAgICAgICAoIHsg XAorICAgICAgICAgIEdFbGZfQWRkciB2YWRkciA9IF92YWRkcjsgXAorICAg ICAgICAgIEdFbGZfT2ZmIG9mZnNldCA9IF9vZmZzZXQ7IFwKKyAgICAgICAg ICBHRWxmX1h3b3JkIGZpbGVzeiA9IF9maWxlc3o7IFwKKyAgICAgICAgICBH RWxmX09mZiBzdGFydCA9IG9mZnNldCAmIC1wYWdlc2l6ZTsgXAorICAgICAg ICAgIEdFbGZfT2ZmIGVuZCA9IChvZmZzZXQgKyBmaWxlc3ogKyBwYWdlc2l6 ZSAtIDEpICYgLXBhZ2VzaXplOyBcCisgICAgICAgICAgaWYgKGVuZCA+IChH RWxmX09mZikgY29udGVudHNfc2l6ZSkgXAorICAgICAgICAgICAgZW5kID0g Y29udGVudHNfc2l6ZTsgXAorICAgICAgICAgIG5yZWFkID0gKCpyZWFkX21l bW9yeSkgKGFyZywgYnVmZmVyICsgc3RhcnQsIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobG9hZGJhc2UgKyB2YWRkcikgJiAtcGFn ZXNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW5kIC0gc3RhcnQsIGVuZCAtIHN0YXJ0KTsgXAorICAgICAgICAgIChucmVh ZCA8PSAwKTsgXAorICAgICAgICB9ICkKIAogICAgIGNhc2UgRUxGQ0xBU1Mz MjoKICAgICAgIGZvciAodWludF9mYXN0MTZfdCBpID0gMDsgaSA8IHBobnVt OyArK2kpCmRpZmYgLS1naXQgYS9saWJkd2ZsL2xpbmtfbWFwLmMgYi9saWJk d2ZsL2xpbmtfbWFwLmMKaW5kZXggNzk0NjY4Zi4uYjQ2MjgwNyAxMDA2NDQK LS0tIGEvbGliZHdmbC9saW5rX21hcC5jCisrKyBiL2xpYmR3ZmwvbGlua19t YXAuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImxpYmR3ZmxQLmgi CiAjaW5jbHVkZSAiLi4vbGliZHcvbWVtb3J5LWFjY2Vzcy5oIgogI2luY2x1 ZGUgInN5c3RlbS5oIgorI2luY2x1ZGUgIm5lc3RlZF9mdW5jLmgiCiAKICNp bmNsdWRlIDxieXRlc3dhcC5oPgogI2luY2x1ZGUgPGVuZGlhbi5oPgpAQCAt MjQ5LDIwICsyNTAsMjcgQEAgcmVwb3J0X3JfZGVidWcgKHVpbnRfZmFzdDhf dCBlbGZjbGFzcywgdWludF9mYXN0OF90IGVsZmRhdGEsCiAJCXN0cnVjdCBy X2RlYnVnX2luZm8gKnJfZGVidWdfaW5mbykKIHsKICAgLyogU2tpcCByX3Zl cnNpb24sIHRvIGFsaWduZWQgcl9tYXAgZmllbGQuICAqLwotICBHRWxmX0Fk ZHIgcmVhZF92YWRkciA9IHJfZGVidWdfdmFkZHIgKyBhZGRyc2l6ZSAoZWxm Y2xhc3MpOworICBfX0JMT0NLIEdFbGZfQWRkciByZWFkX3ZhZGRyID0gcl9k ZWJ1Z192YWRkciArIGFkZHJzaXplIChlbGZjbGFzcyk7CiAKLSAgdm9pZCAq YnVmZmVyID0gTlVMTDsKLSAgc2l6ZV90IGJ1ZmZlcl9hdmFpbGFibGUgPSAw OwotICBpbmxpbmUgaW50IHJlbGVhc2VfYnVmZmVyIChpbnQgcmVzdWx0KQor ICBfX0JMT0NLIHZvaWQgKmJ1ZmZlciA9IE5VTEw7CisgIF9fQkxPQ0sgc2l6 ZV90IGJ1ZmZlcl9hdmFpbGFibGUgPSAwOworICBJTkxJTkVfTkVTVEVEX0ZV TkMgKGludCwgcmVsZWFzZV9idWZmZXIsIChpbnQpLCAoaW50IHJlc3VsdCkp CiAgIHsKICAgICBpZiAoYnVmZmVyICE9IE5VTEwpCiAgICAgICAodm9pZCkg KCptZW1vcnlfY2FsbGJhY2spIChkd2ZsLCAtMSwgJmJ1ZmZlciwgJmJ1ZmZl cl9hdmFpbGFibGUsIDAsIDAsCiAJCQkJIG1lbW9yeV9jYWxsYmFja19hcmcp OwogICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBHRWxmX0FkZHIgYWRk cnNbNF07Ci0gIGlubGluZSBib29sIHJlYWRfYWRkcnMgKEdFbGZfQWRkciB2 YWRkciwgc2l6ZV90IG4pCisgIH07CisKKyNpZiBfX2NsYW5nX18KKyAgLyog Q2xhbmcgQmxvY2tzIGNhbm5vdCBjb3B5IGFuIGFycmF5IHRvIGEgY2xvc3Vy ZS4gKi8KKyAgX19CTE9DSyBHRWxmX0FkZHIgKmFkZHJzID0gYWxsb2NhKDQg KiBzaXplb2YgKEdFbGZfQWRkcikpOworI2Vsc2UKKyAgLyogZ2NjIGNvbXBs YWlucyBhYm91dCB1bmJvdW5kZWQgc3RhY2sgdXNhZ2UgZnJvbSBhbGxvY2Eu ICovCisgICBHRWxmX0FkZHIgYWRkcnNbNF07CisjZW5kaWYKKyAgSU5MSU5F X05FU1RFRF9GVU5DIChib29sLCByZWFkX2FkZHJzLAorICAgICAgICAgICAg ICAgICAgICAgIChHRWxmX0FkZHIsIHNpemVfdCksIChHRWxmX0FkZHIgdmFk ZHIsIHNpemVfdCBuKSkKICAgewogICAgIHNpemVfdCBuYiA9IG4gKiBhZGRy c2l6ZSAoZWxmY2xhc3MpOyAvKiBBZGRyZXNzIHdvcmRzIC0+IGJ5dGVzIHRv IHJlYWQuICAqLwogCkBAIC0zMDUsNyArMzEzLDcgQEAgcmVwb3J0X3JfZGVi dWcgKHVpbnRfZmFzdDhfdCBlbGZjbGFzcywgdWludF9mYXN0OF90IGVsZmRh dGEsCiAgICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KKyAgfTsK IAogICBpZiAodW5saWtlbHkgKHJlYWRfYWRkcnMgKHJlYWRfdmFkZHIsIDEp KSkKICAgICByZXR1cm4gcmVsZWFzZV9idWZmZXIgKC0xKTsKQEAgLTY5MCw3 ICs2OTgsNiBAQCBmaW5kX2V4ZWN1dGFibGUgKER3ZmwgKmR3ZmwsIEdFbGZf QWRkciBhdF9waGRyLCBHRWxmX0FkZHIgYXRfZW50cnksCiAKICAgcmV0dXJu IDA7CiB9Ci0MCiAKIGludAogZHdmbF9saW5rX21hcF9yZXBvcnQgKER3Zmwg KmR3ZmwsIGNvbnN0IHZvaWQgKmF1eHYsIHNpemVfdCBhdXh2X3NpemUsCkBA IC02OTgsMTcgKzcwNSwxNyBAQCBkd2ZsX2xpbmtfbWFwX3JlcG9ydCAoRHdm bCAqZHdmbCwgY29uc3Qgdm9pZCAqYXV4diwgc2l6ZV90IGF1eHZfc2l6ZSwK IAkJICAgICAgdm9pZCAqbWVtb3J5X2NhbGxiYWNrX2FyZywKIAkJICAgICAg c3RydWN0IHJfZGVidWdfaW5mbyAqcl9kZWJ1Z19pbmZvKQogewotICBHRWxm X0FkZHIgcl9kZWJ1Z192YWRkciA9IDA7CisgIF9fQkxPQ0sgR0VsZl9BZGRy IHJfZGVidWdfdmFkZHIgPSAwOwogCi0gIHVpbnRfZmFzdDhfdCBlbGZjbGFz cyA9IEVMRkNMQVNTTk9ORTsKLSAgdWludF9mYXN0OF90IGVsZmRhdGEgPSBF TEZEQVRBTk9ORTsKKyAgX19CTE9DSyB1aW50X2Zhc3Q4X3QgZWxmY2xhc3Mg PSBFTEZDTEFTU05PTkU7CisgIF9fQkxPQ0sgdWludF9mYXN0OF90IGVsZmRh dGEgPSBFTEZEQVRBTk9ORTsKICAgaWYgKGxpa2VseSAoYXV4diAhPSBOVUxM KQogICAgICAgJiYgbGlrZWx5IChhdXh2X2Zvcm1hdF9wcm9iZSAoYXV4diwg YXV4dl9zaXplLCAmZWxmY2xhc3MsICZlbGZkYXRhKSkpCiAgICAgewotICAg ICAgR0VsZl9BZGRyIGVudHJ5ID0gMDsKLSAgICAgIEdFbGZfQWRkciBwaGRy ID0gMDsKLSAgICAgIEdFbGZfWHdvcmQgcGhlbnQgPSAwOwotICAgICAgR0Vs Zl9Yd29yZCBwaG51bSA9IDA7CisgICAgICBfX0JMT0NLIEdFbGZfQWRkciBl bnRyeSA9IDA7CisgICAgICBfX0JMT0NLIEdFbGZfQWRkciBwaGRyID0gMDsK KyAgICAgIF9fQkxPQ0sgR0VsZl9Yd29yZCBwaGVudCA9IDA7CisgICAgICBf X0JMT0NLIEdFbGZfWHdvcmQgcGhudW0gPSAwOwogCiAjZGVmaW5lIFJFQURf QVVYVjMyKHB0cikJcmVhZF80dWJ5dGVfdW5hbGlnbmVkX25vbmN2dCAocHRy KQogI2RlZmluZSBSRUFEX0FVWFY2NChwdHIpCXJlYWRfOHVieXRlX3VuYWxp Z25lZF9ub25jdnQgKHB0cikKQEAgLTc1NCwxMiArNzYxLDEzIEBAIGR3Zmxf bGlua19tYXBfcmVwb3J0IChEd2ZsICpkd2ZsLCBjb25zdCB2b2lkICphdXh2 LCBzaXplX3QgYXV4dl9zaXplLAogCX0KIAogICAgICAgLyogSWYgd2UgZm91 bmQgdGhlIHBoZHIgZGltZW5zaW9ucywgc2VhcmNoIHBoZHJzIGZvciBQVF9E WU5BTUlDLiAgKi8KLSAgICAgIEdFbGZfQWRkciBkeW5fdmFkZHIgPSAwOwot ICAgICAgR0VsZl9Yd29yZCBkeW5fZmlsZXN6ID0gMDsKLSAgICAgIEdFbGZf QWRkciBkeW5fYmlhcyA9IChHRWxmX0FkZHIpIC0xOworICAgICAgX19CTE9D SyBHRWxmX0FkZHIgZHluX3ZhZGRyID0gMDsKKyAgICAgIF9fQkxPQ0sgR0Vs Zl9Yd29yZCBkeW5fZmlsZXN6ID0gMDsKKyAgICAgIF9fQkxPQ0sgR0VsZl9B ZGRyIGR5bl9iaWFzID0gKEdFbGZfQWRkcikgLTE7CiAKLSAgICAgIGlubGlu ZSBib29sIGNvbnNpZGVyX3BoZHIgKEdFbGZfV29yZCB0eXBlLAotCQkJCSBH RWxmX0FkZHIgdmFkZHIsIEdFbGZfWHdvcmQgZmlsZXN6KQorICAgICAgSU5M SU5FX05FU1RFRF9GVU5DIChib29sLCBjb25zaWRlcl9waGRyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAoR0VsZl9Xb3JkLCBHRWxmX0FkZHIsIEdF bGZfWHdvcmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoR0VsZl9X b3JkIHR5cGUsIEdFbGZfQWRkciB2YWRkciwgR0VsZl9Yd29yZCBmaWxlc3op KQogICAgICAgewogCXN3aXRjaCAodHlwZSkKIAkgIHsKQEAgLTc4MSw3ICs3 ODksNyBAQCBkd2ZsX2xpbmtfbWFwX3JlcG9ydCAoRHdmbCAqZHdmbCwgY29u c3Qgdm9pZCAqYXV4diwgc2l6ZV90IGF1eHZfc2l6ZSwKIAkgIH0KIAogCXJl dHVybiBmYWxzZTsKLSAgICAgIH0KKyAgICAgIH07CiAKICAgICAgIGlmIChw aGRyICE9IDAgJiYgcGhudW0gIT0gMCkKIAl7CmRpZmYgLS1naXQgYS9zcmMv YWRkcjJsaW5lLmMgYi9zcmMvYWRkcjJsaW5lLmMKaW5kZXggYmE0MTRhNy4u ZjkzOWE4NyAxMDA2NDQKLS0tIGEvc3JjL2FkZHIybGluZS5jCisrKyBiL3Ny Yy9hZGRyMmxpbmUuYwpAQCAtNjkyLDE5ICs2OTIsMjIgQEAgaGFuZGxlX2Fk ZHJlc3MgKGNvbnN0IGNoYXIgKnN0cmluZywgRHdmbCAqZHdmbCkKIAkgIER3 YXJmX0xpbmUgKmluZm8gPSBkd2ZsX2R3YXJmX2xpbmUgKGxpbmUsICZiaWFz KTsKIAkgIGFzc2VydCAoaW5mbyAhPSBOVUxMKTsKIAotCSAgaW5saW5lIHZv aWQgc2hvdyAoaW50ICgqZ2V0KSAoRHdhcmZfTGluZSAqLCBib29sICopLAot CQkJICAgIGNvbnN0IGNoYXIgKm5vdGUpCi0JICB7Ci0JICAgIGJvb2wgZmxh ZzsKLQkgICAgaWYgKCgqZ2V0KSAoaW5mbywgJmZsYWcpID09IDAgJiYgZmxh ZykKLQkgICAgICBmcHV0cyAobm90ZSwgc3Rkb3V0KTsKKwkgICNkZWZpbmUg c2hvdyhnZXRfYXJnLCBub3RlX2FyZykgXAorCSAgeyBcCisJICAgIGludCAo KmdldCkgKER3YXJmX0xpbmUgKiwgYm9vbCAqKSA9IGdldF9hcmc7IFwKKwkg ICAgY29uc3QgY2hhciAqbm90ZSA9IG5vdGVfYXJnOyBcCisJICAgIGJvb2wg ZmxhZzsgXAorCSAgICBpZiAoKCpnZXQpIChpbmZvLCAmZmxhZykgPT0gMCAm JiBmbGFnKSBcCisJICAgICAgZnB1dHMgKG5vdGUsIHN0ZG91dCk7IFwKIAkg IH0KLQkgIGlubGluZSB2b2lkIHNob3dfaW50IChpbnQgKCpnZXQpIChEd2Fy Zl9MaW5lICosIHVuc2lnbmVkIGludCAqKSwKLQkJCQljb25zdCBjaGFyICpu YW1lKQotCSAgewotCSAgICB1bnNpZ25lZCBpbnQgdmFsOwotCSAgICBpZiAo KCpnZXQpIChpbmZvLCAmdmFsKSA9PSAwICYmIHZhbCAhPSAwKQotCSAgICAg IHByaW50ZiAoIiAoJXMgJXUpIiwgbmFtZSwgdmFsKTsKKworCSAgI2RlZmlu ZSBzaG93X2ludChnZXRfYXJnLCBuYW1lX2FyZykgXAorCSAgeyBcCisJICAg IGludCAoKmdldCkgKER3YXJmX0xpbmUgKiwgdW5zaWduZWQgaW50ICopID0g Z2V0X2FyZzsgXAorCSAgICBjb25zdCBjaGFyICpuYW1lID0gbmFtZV9hcmc7 IFwKKwkgICAgdW5zaWduZWQgaW50IHZhbDsgXAorCSAgICBpZiAoKCpnZXQp IChpbmZvLCAmdmFsKSA9PSAwICYmIHZhbCAhPSAwKSBcCisJICAgICAgcHJp bnRmICgiICglcyAldSkiLCBuYW1lLCB2YWwpOyBcCiAJICB9CiAKIAkgIHNo b3cgKCZkd2FyZl9saW5lYmVnaW5zdGF0ZW1lbnQsICIgKGlzX3N0bXQpIik7 CmRpZmYgLS1naXQgYS9zcmMvYXIuYyBiL3NyYy9hci5jCmluZGV4IGVjMzJj ZWUuLjdiYTJiMTEgMTAwNjQ0Ci0tLSBhL3NyYy9hci5jCisrKyBiL3NyYy9h ci5jCkBAIC00NDYsMjAgKzQ0NiwyMSBAQCBkb19vcGVyX2V4dHJhY3QgKGlu dCBvcGVyLCBjb25zdCBjaGFyICphcmZuYW1lLCBjaGFyICoqYXJndiwgaW50 IGFyZ2MsCiAgIG1lbXNldCAoZm91bmQsICdcMCcsIHNpemVvZiAoZm91bmQp KTsKIAogICBzaXplX3QgbmFtZV9tYXggPSAwOwotICBpbmxpbmUgYm9vbCBz aG91bGRfdHJ1bmNhdGVfZm5hbWUgKHZvaWQpCi0gIHsKLSAgICBpZiAoZXJy bm8gPT0gRU5BTUVUT09MT05HICYmIGFsbG93X3RydW5jYXRlX2ZuYW1lKQot ICAgICAgewotCWlmIChuYW1lX21heCA9PSAwKQotCSAgewotCSAgICBsb25n IGludCBsZW4gPSBwYXRoY29uZiAoIi4iLCBfUENfTkFNRV9NQVgpOwotCSAg ICBpZiAobGVuID4gMCkKLQkgICAgICBuYW1lX21heCA9IGxlbjsKLQkgIH0K LQlyZXR1cm4gbmFtZV9tYXggIT0gMDsKLSAgICAgIH0KLSAgICByZXR1cm4g ZmFsc2U7Ci0gIH0KKyAgI2RlZmluZSBzaG91bGRfdHJ1bmNhdGVfZm5hbWUo KSBcCisgICggeyBcCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsgXAorICAg IGlmIChlcnJubyA9PSBFTkFNRVRPT0xPTkcgJiYgYWxsb3dfdHJ1bmNhdGVf Zm5hbWUpIFwKKyAgICAgIHsgXAorCWlmIChuYW1lX21heCA9PSAwKSBcCisJ ICB7IFwKKwkgICAgbG9uZyBpbnQgbGVuID0gcGF0aGNvbmYgKCIuIiwgX1BD X05BTUVfTUFYKTsgXAorCSAgICBpZiAobGVuID4gMCkgXAorCSAgICAgIG5h bWVfbWF4ID0gbGVuOyBcCisJICB9IFwKKwlyZXN1bHQgPSAobmFtZV9tYXgg IT0gMCk7IFwKKyAgICAgIH0gXAorICAgIHJlc3VsdDsgXAorICB9ICkKIAog ICBvZmZfdCBpbmRleF9vZmYgPSAtMTsKICAgc2l6ZV90IGluZGV4X3NpemUg PSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2FybGliLWFyZ3AuYyBiL3NyYy9hcmxp Yi1hcmdwLmMKaW5kZXggMWJkZDhkMC4uM2I1MjQ3OSAxMDA2NDQKLS0tIGEv c3JjL2FybGliLWFyZ3AuYworKysgYi9zcmMvYXJsaWItYXJncC5jCkBAIC01 OSwxMyArNTksMTMgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcg X19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogc3RhdGljIGNoYXIgKgogaGVs cF9maWx0ZXIgKGludCBrZXksIGNvbnN0IGNoYXIgKnRleHQsIHZvaWQgKmlu cHV0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKLSAgaW5saW5lIGNo YXIgKnRleHRfZm9yX2RlZmF1bHQgKHZvaWQpCi0gIHsKLSAgICBjaGFyICpu ZXdfdGV4dDsKLSAgICBpZiAodW5saWtlbHkgKGFzcHJpbnRmICgmbmV3X3Rl eHQsIGdldHRleHQgKCIlcyAoZGVmYXVsdCkiKSwgdGV4dCkgPCAwKSkKLSAg ICAgIHJldHVybiAoY2hhciAqKSB0ZXh0OwotICAgIHJldHVybiBuZXdfdGV4 dDsKLSAgfQorICAjZGVmaW5lIHRleHRfZm9yX2RlZmF1bHQoKSBcCisgICgg eyBcCisgICAgY2hhciAqbmV3X3RleHQ7IFwKKyAgICBpZiAodW5saWtlbHkg KGFzcHJpbnRmICgmbmV3X3RleHQsIGdldHRleHQgKCIlcyAoZGVmYXVsdCki KSwgdGV4dCkgPCAwKSkgXAorICAgICAgbmV3X3RleHQgPSAoY2hhciAqKSB0 ZXh0OyBcCisgICAgbmV3X3RleHQ7IFwKKyAgfSApCiAKICAgc3dpdGNoIChr ZXkpCiAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL2VsZmNvbXByZXNzLmMgYi9z cmMvZWxmY29tcHJlc3MuYwppbmRleCA4ZTBkNWM1Li44OTNjNmI0IDEwMDY0 NAotLS0gYS9zcmMvZWxmY29tcHJlc3MuYworKysgYi9zcmMvZWxmY29tcHJl c3MuYwpAQCAtMjc2LDUwICsyNzYsNDMgQEAgcHJvY2Vzc19maWxlIChjb25z dCBjaGFyICpmbmFtZSkKICAgc2l6ZV90IHNobnVtID0gMDsKIAogI2RlZmlu ZSBXT1JEX0JJVFMgKDhVICogc2l6ZW9mICh1bnNpZ25lZCBpbnQpKQotICB2 b2lkIHNldF9zZWN0aW9uIChzaXplX3QgbmR4KQotICB7Ci0gICAgc2VjdGlv bnNbbmR4IC8gV09SRF9CSVRTXSB8PSAoMVUgPDwgKG5keCAlIFdPUkRfQklU UykpOwotICB9CiAKLSAgYm9vbCBnZXRfc2VjdGlvbiAoc2l6ZV90IG5keCkK LSAgewotICAgIHJldHVybiAoc2VjdGlvbnNbbmR4IC8gV09SRF9CSVRTXSAm ICgxVSA8PCAobmR4ICUgV09SRF9CSVRTKSkpICE9IDA7Ci0gIH0KLQotICBp bnQgY2xlYW51cCAoaW50IHJlcykKLSAgewotICAgIGVsZl9lbmQgKGVsZik7 Ci0gICAgY2xvc2UgKGZkKTsKLQotICAgIGVsZl9lbmQgKGVsZm5ldyk7Ci0g ICAgY2xvc2UgKGZkbmV3KTsKLQotICAgIGlmIChmbmV3ICE9IE5VTEwpCi0g ICAgICB7Ci0JdW5saW5rIChmbmV3KTsKLQlmcmVlIChmbmV3KTsKLQlmbmV3 ID0gTlVMTDsKLSAgICAgIH0KLQotICAgIGZyZWUgKHNuYW1lYnVmKTsKLSAg ICBpZiAobmFtZXMgIT0gTlVMTCkKLSAgICAgIHsKLQlkd2VsZl9zdHJ0YWJf ZnJlZSAobmFtZXMpOwotCWZyZWUgKHNjbnN0cmVudHMpOwotCWZyZWUgKHN5 bXN0cmVudHMpOwotCWZyZWUgKG5hbWVzYnVmKTsKLQlpZiAoc2NubmFtZXMg IT0gTlVMTCkKLQkgIHsKLQkgICAgZm9yIChzaXplX3QgbiA9IDA7IG4gPCBz aG51bTsgbisrKQotCSAgICAgIGZyZWUgKHNjbm5hbWVzW25dKTsKLQkgICAg ZnJlZSAoc2NubmFtZXMpOwotCSAgfQotICAgICAgfQotCi0gICAgZnJlZSAo c2VjdGlvbnMpOwotCi0gICAgcmV0dXJuIHJlczsKLSAgfQorI2RlZmluZSBz ZXRfc2VjdGlvbihuZHgpIFwKKyAgc2VjdGlvbnNbbmR4IC8gV09SRF9CSVRT XSB8PSAoMVUgPDwgKG5keCAlIFdPUkRfQklUUykpCisKKyNkZWZpbmUgZ2V0 X3NlY3Rpb24obmR4KSBcCisgICgoc2VjdGlvbnNbbmR4IC8gV09SRF9CSVRT XSAmICgxVSA8PCAobmR4ICUgV09SRF9CSVRTKSkpICE9IDApCisKKyAgI2Rl ZmluZSBjbGVhbnVwKHJlcykgXAorICAgICggeyBcCisgICAgICAgIGludCBy ZXN1bHQgPSByZXM7IFwKKyAgICAgICAgZWxmX2VuZCAoZWxmKTsgXAorICAg ICAgICBjbG9zZSAoZmQpOyBcCisgICAgICAgIGVsZl9lbmQgKGVsZm5ldyk7 IFwKKyAgICAgICAgY2xvc2UgKGZkbmV3KTsgXAorICAgICAgICBpZiAoZm5l dyAhPSBOVUxMKSBcCisgICAgICAgICAgeyBcCisJICAgIHVubGluayAoZm5l dyk7IFwKKwkgICAgZnJlZSAoZm5ldyk7IFwKKwkgICAgZm5ldyA9IE5VTEw7 IFwKKyAgICAgICAgICB9IFwKKyAgICAgICAgZnJlZSAoc25hbWVidWYpOyBc CisgICAgICAgIGlmIChuYW1lcyAhPSBOVUxMKSBcCisgICAgICAgICAgeyBc CisJICAgIGR3ZWxmX3N0cnRhYl9mcmVlIChuYW1lcyk7IFwKKwkgICAgZnJl ZSAoc2Nuc3RyZW50cyk7IFwKKwkgICAgZnJlZSAoc3ltc3RyZW50cyk7IFwK KwkgICAgZnJlZSAobmFtZXNidWYpOyBcCisJICAgIGlmIChzY25uYW1lcyAh PSBOVUxMKSBcCisJICAgICAgeyBcCisJICAgICAgICBmb3IgKHNpemVfdCBu ID0gMDsgbiA8IHNobnVtOyBuKyspIFwKKwkgICAgICAgICAgZnJlZSAoc2Nu bmFtZXNbbl0pOyBcCisJICAgICAgICBmcmVlIChzY25uYW1lcyk7IFwKKwkg ICAgICB9IFwKKyAgICAgICAgICB9IFwKKyAgICAgICAgZnJlZSAoc2VjdGlv bnMpOyBcCisgICAgICByZXN1bHQ7IFwKKyAgICB9ICkKIAogICBmZCA9IG9w ZW4gKGZuYW1lLCBPX1JET05MWSk7CiAgIGlmIChmZCA8IDApCmRpZmYgLS1n aXQgYS9zcmMvZWxmbGludC5jIGIvc3JjL2VsZmxpbnQuYwppbmRleCA1MWU1 M2MyLi4yNDYzZjkyIDEwMDY0NAotLS0gYS9zcmMvZWxmbGludC5jCisrKyBi L3NyYy9lbGZsaW50LmMKQEAgLTM0MzMsMTAgKzM0MzMsOCBAQCBjaGVja19h dHRyaWJ1dGVzIChFYmwgKmVibCwgR0VsZl9FaGRyICplaGRyLCBHRWxmX1No ZHIgKnNoZHIsIGludCBpZHgpCiAgICAgICByZXR1cm47CiAgICAgfQogCi0g IGlubGluZSBzaXplX3QgcG9zIChjb25zdCB1bnNpZ25lZCBjaGFyICpwKQot ICB7Ci0gICAgcmV0dXJuIHAgLSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBk YXRhLT5kX2J1ZjsKLSAgfQorICAjZGVmaW5lIHBvcyhwKSBcCisgICAgKChj b25zdCB1bnNpZ25lZCBjaGFyICopIChwKSAtIChjb25zdCB1bnNpZ25lZCBj aGFyICopIGRhdGEtPmRfYnVmKQogCiAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KnAgPSBkYXRhLT5kX2J1ZjsKICAgaWYgKCpwKysgIT0gJ0EnKQpAQCAtMzQ0 NiwxMCArMzQ0NCw3IEBAIGNoZWNrX2F0dHJpYnV0ZXMgKEVibCAqZWJsLCBH RWxmX0VoZHIgKmVoZHIsIEdFbGZfU2hkciAqc2hkciwgaW50IGlkeCkKICAg ICAgIHJldHVybjsKICAgICB9CiAKLSAgaW5saW5lIHNpemVfdCBsZWZ0ICh2 b2lkKQotICB7Ci0gICAgcmV0dXJuIChjb25zdCB1bnNpZ25lZCBjaGFyICop IGRhdGEtPmRfYnVmICsgZGF0YS0+ZF9zaXplIC0gcDsKLSAgfQorICAjZGVm aW5lIGxlZnQoKSAoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgZGF0YS0+ZF9i dWYgKyBkYXRhLT5kX3NpemUgLSBwKQogCiAgIHdoaWxlIChsZWZ0ICgpID49 IDQpCiAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9y ZWFkZWxmLmMKaW5kZXggNWUyZjNmYy4uYTMyYTIyYiAxMDA2NDQKLS0tIGEv c3JjL3JlYWRlbGYuYworKysgYi9zcmMvcmVhZGVsZi5jCkBAIC0zMzMsMTYg KzMzMywxOCBAQCBzdGF0aWMgZXJyb3JfdAogcGFyc2Vfb3B0IChpbnQga2V5 LCBjaGFyICphcmcsCiAJICAgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlIF9f YXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKLSAgdm9pZCBhZGRfZHVtcF9z ZWN0aW9uIChjb25zdCBjaGFyICpuYW1lLCBib29sIGltcGxpY2l0KQotICB7 Ci0gICAgc3RydWN0IHNlY3Rpb25fYXJndW1lbnQgKmEgPSB4bWFsbG9jIChz aXplb2YgKmEpOwotICAgIGEtPmFyZyA9IG5hbWU7Ci0gICAgYS0+bmV4dCA9 IE5VTEw7Ci0gICAgYS0+aW1wbGljaXQgPSBpbXBsaWNpdDsKLSAgICBzdHJ1 Y3Qgc2VjdGlvbl9hcmd1bWVudCAqKip0YWlscAotICAgICAgPSBrZXkgPT0g J3gnID8gJmR1bXBfZGF0YV9zZWN0aW9uc190YWlsIDogJnN0cmluZ19zZWN0 aW9uc190YWlsOwotICAgICoqdGFpbHAgPSBhOwotICAgICp0YWlscCA9ICZh LT5uZXh0OworICAjZGVmaW5lIGFkZF9kdW1wX3NlY3Rpb24obmFtZV9hcmcs IGltcGxpY2l0X2FyZykgXAorICB7IFwKKyAgICBjb25zdCBjaGFyICpuYW1l ID0gbmFtZV9hcmc7IFwKKyAgICBib29sIGltcGxpY2l0ID0gaW1wbGljaXRf YXJnOyBcCisgICAgc3RydWN0IHNlY3Rpb25fYXJndW1lbnQgKmEgPSB4bWFs bG9jIChzaXplb2YgKmEpOyBcCisgICAgYS0+YXJnID0gbmFtZTsgXAorICAg IGEtPm5leHQgPSBOVUxMOyBcCisgICAgYS0+aW1wbGljaXQgPSBpbXBsaWNp dDsgXAorICAgIHN0cnVjdCBzZWN0aW9uX2FyZ3VtZW50ICoqKnRhaWxwIFwK KyAgICAgID0ga2V5ID09ICd4JyA/ICZkdW1wX2RhdGFfc2VjdGlvbnNfdGFp bCA6ICZzdHJpbmdfc2VjdGlvbnNfdGFpbDsgXAorICAgICoqdGFpbHAgPSBh OyBcCisgICAgKnRhaWxwID0gJmEtPm5leHQ7IFwKICAgfQogCiAgIHN3aXRj aCAoa2V5KQpAQCAtMzQ3MCwxMCArMzQ3Miw3IEBAIHByaW50X2F0dHJpYnV0 ZXMgKEVibCAqZWJsLCBjb25zdCBHRWxmX0VoZHIgKmVoZHIpCiAKICAgICAg IGZwdXRzX3VubG9ja2VkIChnZXR0ZXh0ICgiICBPd25lciAgICAgICAgICBT aXplXG4iKSwgc3Rkb3V0KTsKIAotICAgICAgaW5saW5lIHNpemVfdCBsZWZ0 ICh2b2lkKQotICAgICAgewotCXJldHVybiAoY29uc3QgdW5zaWduZWQgY2hh ciAqKSBkYXRhLT5kX2J1ZiArIGRhdGEtPmRfc2l6ZSAtIHA7Ci0gICAgICB9 CisgICAgICAjZGVmaW5lIGxlZnQoKSAoKGNvbnN0IHVuc2lnbmVkIGNoYXIg KikgZGF0YS0+ZF9idWYgKyBkYXRhLT5kX3NpemUgLSBwKQogCiAgICAgICAv KiBMb29wIG92ZXIgdGhlIHNlY3Rpb25zLiAgKi8KICAgICAgIHdoaWxlIChs ZWZ0ICgpID49IDQpCkBAIC01MTY2LDExICs1MTY1LDEyIEBAIHByaW50X2Nm YV9wcm9ncmFtIChjb25zdCB1bnNpZ25lZCBjaGFyICpyZWFkcCwgY29uc3Qg dW5zaWduZWQgY2hhciAqY29uc3QgZW5kcCwKIAkJICAgRHdmbF9Nb2R1bGUg KmR3Zmxtb2QsIEVibCAqZWJsLCBEd2FyZiAqZGJnKQogewogICBjaGFyIHJl Z25hbWVidWZbUkVHTkFNRVNaXTsKLSAgY29uc3QgY2hhciAqcmVnbmFtZSAo dW5zaWduZWQgaW50IHJlZ25vKQotICB7Ci0gICAgcmVnaXN0ZXJfaW5mbyAo ZWJsLCByZWdubywgTlVMTCwgcmVnbmFtZWJ1ZiwgTlVMTCwgTlVMTCk7Ci0g ICAgcmV0dXJuIHJlZ25hbWVidWY7Ci0gIH0KKyAgI2RlZmluZSByZWduYW1l KHJlZ25vX2FyZykgXAorICAoIHsgXAorICAgIHVuc2lnbmVkIGludCByZWdu byA9IHJlZ25vX2FyZzsgXAorICAgIHJlZ2lzdGVyX2luZm8gKGVibCwgcmVn bm8sIE5VTEwsIHJlZ25hbWVidWYsIE5VTEwsIE5VTEwpOyBcCisgICAgcmVn bmFtZWJ1ZjsgXAorICB9ICkKIAogICBwdXRzICgiXG4gICBQcm9ncmFtOiIp OwogICBEd2FyZl9Xb3JkIHBjID0gdm1hX2Jhc2U7CkBAIC02NzQyLDE0ICs2 NzQyLDE2IEBAIHByaW50X2RlYnVnX2xpbmVfc2VjdGlvbiAoRHdmbF9Nb2R1 bGUgKmR3Zmxtb2QsIEVibCAqZWJsLCBHRWxmX0VoZHIgKmVoZHIsCiAJIG9y IERXX0xOU19hZHZhbmNlX3BjIChhcyBwZXIgRFdBUkY0IDYuMi41LjEpLiAg Ki8KICAgICAgIHVuc2lnbmVkIGludCBvcF9hZGRyX2FkdmFuY2U7CiAgICAg ICBib29sIHNob3dfb3BfaW5kZXg7Ci0gICAgICBpbmxpbmUgdm9pZCBhZHZh bmNlX3BjICh1bnNpZ25lZCBpbnQgb3BfYWR2YW5jZSkKLSAgICAgIHsKLQlv cF9hZGRyX2FkdmFuY2UgPSBtaW5pbXVtX2luc3RyX2xlbiAqICgob3BfaW5k ZXggKyBvcF9hZHZhbmNlKQotCQkJCQkgICAgICAgLyBtYXhfb3BzX3Blcl9p bnN0cik7Ci0JYWRkcmVzcyArPSBvcF9hZHZhbmNlOwotCXNob3dfb3BfaW5k ZXggPSAob3BfaW5kZXggPiAwIHx8Ci0JCQkgKG9wX2luZGV4ICsgb3BfYWR2 YW5jZSkgJSBtYXhfb3BzX3Blcl9pbnN0ciA+IDApOwotCW9wX2luZGV4ID0g KG9wX2luZGV4ICsgb3BfYWR2YW5jZSkgJSBtYXhfb3BzX3Blcl9pbnN0cjsK KworICAgICAgI2RlZmluZSBhZHZhbmNlX3BjKG9wX2FkdmFuY2VfYXJnKSBc CisgICAgICB7IFwKKyAgICAgICAgdW5zaWduZWQgaW50IG9wX2FkdmFuY2Ug PSBvcF9hZHZhbmNlX2FyZzsgXAorCW9wX2FkZHJfYWR2YW5jZSA9IG1pbmlt dW1faW5zdHJfbGVuICogKChvcF9pbmRleCArIChvcF9hZHZhbmNlKSkgXAor CQkJCQkgICAgICAgLyBtYXhfb3BzX3Blcl9pbnN0cik7IFwKKwlhZGRyZXNz ICs9IChvcF9hZHZhbmNlKTsgXAorCXNob3dfb3BfaW5kZXggPSAob3BfaW5k ZXggPiAwIHx8IFwKKwkJCSAob3BfaW5kZXggKyAob3BfYWR2YW5jZSkpICUg bWF4X29wc19wZXJfaW5zdHIgPiAwKTsgXAorCW9wX2luZGV4ID0gKG9wX2lu ZGV4ICsgKG9wX2FkdmFuY2UpKSAlIG1heF9vcHNfcGVyX2luc3RyOyBcCiAg ICAgICB9CiAKICAgICAgIGlmIChtYXhfb3BzX3Blcl9pbnN0ciA9PSAwKQpA QCAtOTE2MCwxNCArOTE2MiwxNiBAQCBoYW5kbGVfY29yZV9yZWdpc3RlcnMg KEVibCAqZWJsLCBFbGYgKmNvcmUsIGNvbnN0IHZvaWQgKmRlc2MsCiAgIHFz b3J0IChyZWdzLCBtYXhyZWcgKyAxLCBzaXplb2YgcmVnc1swXSwgJmNvbXBh cmVfcmVnaXN0ZXJzKTsKIAogICAvKiBDb2xsZWN0IHRoZSB1bmlxdWUgc2V0 cyBhbmQgc29ydCB0aGVtLiAgKi8KLSAgaW5saW5lIGJvb2wgc2FtZV9zZXQg KGNvbnN0IHN0cnVjdCByZWdpc3Rlcl9pbmZvICphLAotCQkJY29uc3Qgc3Ry dWN0IHJlZ2lzdGVyX2luZm8gKmIpCi0gIHsKLSAgICByZXR1cm4gKGEgPCAm cmVnc1ttYXhucmVnXSAmJiBhLT5yZWdsb2MgIT0gTlVMTAotCSAgICAmJiBi IDwgJnJlZ3NbbWF4bnJlZ10gJiYgYi0+cmVnbG9jICE9IE5VTEwKLQkgICAg JiYgYS0+Yml0cyA9PSBiLT5iaXRzCi0JICAgICYmIChhLT5zZXQgPT0gYi0+ c2V0IHx8ICFzdHJjbXAgKGEtPnNldCwgYi0+c2V0KSkpOwotICB9CisgICNk ZWZpbmUgc2FtZV9zZXQoYV9hcmcsIGJfYXJnKSBcCisgICggeyBcCisgICAg Y29uc3Qgc3RydWN0IHJlZ2lzdGVyX2luZm8gKmEgPSBhX2FyZzsgXAorICAg IGNvbnN0IHN0cnVjdCByZWdpc3Rlcl9pbmZvICpiID0gYl9hcmc7IFwKKyAg ICAoYSA8ICZyZWdzW21heG5yZWddICYmIGEtPnJlZ2xvYyAhPSBOVUxMIFwK KwkgICAgJiYgYiA8ICZyZWdzW21heG5yZWddICYmIGItPnJlZ2xvYyAhPSBO VUxMIFwKKwkgICAgJiYgYS0+Yml0cyA9PSBiLT5iaXRzIFwKKwkgICAgJiYg KGEtPnNldCA9PSBiLT5zZXQgfHwgIXN0cmNtcCAoYS0+c2V0LCBiLT5zZXQp KSk7IFwKKyAgfSApCisKICAgc3RydWN0IHJlZ2lzdGVyX2luZm8gKnNldHNb bWF4cmVnICsgMV07CiAgIHNldHNbMF0gPSAmcmVnc1swXTsKICAgc2l6ZV90 IG5zZXRzID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9zdHJpcC5jIGIvc3JjL3N0 cmlwLmMKaW5kZXggNzczZWQ1NC4uZDBhMGQwMSAxMDA2NDQKLS0tIGEvc3Jj L3N0cmlwLmMKKysrIGIvc3JjL3N0cmlwLmMKQEAgLTQ1Nyw2ICs0NTcsMTY3 IEBAIHByb2Nlc3NfZmlsZSAoY29uc3QgY2hhciAqZm5hbWUpCiAvKiBNYXhp bXVtIHNpemUgb2YgYXJyYXkgYWxsb2NhdGVkIG9uIHN0YWNrLiAgKi8KICNk ZWZpbmUgTUFYX1NUQUNLX0FMTE9DCSg0MDAgKiAxMDI0KQogCitzdHJ1Y3Qg c2hkcl9pbmZvCit7CisgIEVsZl9TY24gKnNjbjsKKyAgR0VsZl9TaGRyIHNo ZHI7CisgIEVsZl9EYXRhICpkYXRhOworICBFbGZfRGF0YSAqZGVidWdfZGF0 YTsKKyAgY29uc3QgY2hhciAqbmFtZTsKKyAgRWxmMzJfV29yZCBpZHg7CQkv KiBJbmRleCBpbiBuZXcgZmlsZS4gICovCisgIEVsZjMyX1dvcmQgb2xkX3No X2xpbms7CS8qIE9yaWdpbmFsIHZhbHVlIG9mIHNoZHIuc2hfbGluay4gICov CisgIEVsZjMyX1dvcmQgc3ltdGFiX2lkeDsKKyAgRWxmMzJfV29yZCB2ZXJz aW9uX2lkeDsKKyAgRWxmMzJfV29yZCBncm91cF9pZHg7CisgIEVsZjMyX1dv cmQgZ3JvdXBfY250OworICBFbGZfU2NuICpuZXdzY247CisgIER3ZWxmX1N0 cmVudCAqc2U7CisgIEVsZjMyX1dvcmQgKm5ld3N5bWlkeDsKK307CisKKyNk ZWZpbmUgZGVjbGFyZV9yZWxvY2F0ZV9jbG9zdXJlIFwKKyAgRWJsICogY29u c3QgZWJsLCBcCisgIEVsZl9EYXRhICogY29uc3Qgc3ltZGF0YSwgXAorICBF bGZfRGF0YSAqIGNvbnN0IHhuZHhkYXRhLCBcCisgIHNpemVfdCBjb25zdCBz aG51bSwgXAorICBjb25zdCBjaGFyICogY29uc3QgZm5hbWUsIFwKKyAgc3Ry dWN0IHNoZHJfaW5mbyAqIGNvbnN0IHNoZHJfaW5mbywgXAorICBFbGZfRGF0 YSAqIGNvbnN0IHRkYXRhLCBcCisgIEVsZiAqIGNvbnN0IGRlYnVnZWxmLCBc CisgIEdFbGZfRWhkciAqIGNvbnN0IGVoZHIKKworI2RlZmluZSBwYXNzX3Jl bG9jYXRlX2Nsb3N1cmUgXAorICBlYmwsIHN5bWRhdGEsIHhuZHhkYXRhLCBz aG51bSwgZm5hbWUsIHNoZHJfaW5mbywgdGRhdGEsIGRlYnVnZWxmLCBlaGRy CisKKy8qIEFwcGx5IG9uZSByZWxvY2F0aW9uLiAgUmV0dXJucyB0cnVlIHdo ZW4gdHJpdmlhbAorICByZWxvY2F0aW9uIGFjdHVhbGx5IGRvbmUuICAqLwor c3RhdGljIGJvb2wKK3JlbG9jYXRlIChkZWNsYXJlX3JlbG9jYXRlX2Nsb3N1 cmUsIEdFbGZfQWRkciBvZmZzZXQsCisgICAgICAgICAgY29uc3QgR0VsZl9T eHdvcmQgYWRkZW5kLCBib29sIGlzX3JlbGEsIGludCBydHlwZSwgaW50IHN5 bW5keCkKK3sKKwkJLyogUl8qX05PTkUgcmVsb2NzIGNhbiBhbHdheXMganVz dCBiZSByZW1vdmVkLiAgKi8KKwkJaWYgKHJ0eXBlID09IDApCisJCSAgcmV0 dXJuIHRydWU7CisKKwkJLyogV2Ugb25seSBkbyBzaW1wbGUgYWJzb2x1dGUg cmVsb2NhdGlvbnMuICAqLworCQlFbGZfVHlwZSB0eXBlID0gZWJsX3JlbG9j X3NpbXBsZV90eXBlIChlYmwsIHJ0eXBlKTsKKwkJaWYgKHR5cGUgPT0gRUxG X1RfTlVNKQorCQkgIHJldHVybiBmYWxzZTsKKworCQkvKiBUaGVzZSBhcmUg dGhlIHR5cGVzIHdlIGNhbiByZWxvY2F0ZS4gICovCisjZGVmaW5lIFRZUEVT ICAgRE9fVFlQRSAoQllURSwgQnl0ZSk7IERPX1RZUEUgKEhBTEYsIEhhbGYp OwkJXAorCQlET19UWVBFIChXT1JELCBXb3JkKTsgRE9fVFlQRSAoU1dPUkQs IFN3b3JkKTsJCVwKKwkJRE9fVFlQRSAoWFdPUkQsIFh3b3JkKTsgRE9fVFlQ RSAoU1hXT1JELCBTeHdvcmQpCisKKwkJLyogQW5kIG9ubHkgZm9yIHJlbG9j YXRpb25zIGFnYWluc3Qgb3RoZXIgZGVidWcgc2VjdGlvbnMuICAqLworCQlH RWxmX1N5bSBzeW1fbWVtOworCQlFbGYzMl9Xb3JkIHhuZHg7CisJCUdFbGZf U3ltICpzeW0gPSBnZWxmX2dldHN5bXNobmR4IChzeW1kYXRhLCB4bmR4ZGF0 YSwKKwkJCQkJCSAgc3ltbmR4LCAmc3ltX21lbSwKKwkJCQkJCSAgJnhuZHgp OworCQlFbGYzMl9Xb3JkIHNlYyA9IChzeW0tPnN0X3NobmR4ID09IFNITl9Y SU5ERVgKKwkJCQkgID8geG5keCA6IHN5bS0+c3Rfc2huZHgpOworCQlpZiAo c2VjID49IHNobnVtICsgMikKKwkJICBJTlRFUk5BTF9FUlJPUiAoZm5hbWUp OworCisJCWlmIChlYmxfZGVidWdzY25fcCAoZWJsLCBzaGRyX2luZm9bc2Vj XS5uYW1lKSkKKwkJICB7CisJCSAgICBzaXplX3Qgc2l6ZTsKKworI2RlZmlu ZSBET19UWVBFKE5BTUUsIE5hbWUpIEdFbGZfIyNOYW1lIE5hbWU7CisJCSAg ICB1bmlvbiB7IFRZUEVTOyB9IHRtcGJ1ZjsKKyN1bmRlZiBET19UWVBFCisK KwkJICAgIHN3aXRjaCAodHlwZSkKKwkJICAgICAgeworI2RlZmluZSBET19U WVBFKE5BTUUsIE5hbWUpCQkJCVwKKwkJCWNhc2UgRUxGX1RfIyNOQU1FOgkJ XAorCQkJICBzaXplID0gc2l6ZW9mIChHRWxmXyMjTmFtZSk7CVwKKwkJCSAg dG1wYnVmLk5hbWUgPSAwOwkJXAorCQkJICBicmVhazsKKwkJCVRZUEVTOwor I3VuZGVmIERPX1RZUEUKKwkJICAgICAgZGVmYXVsdDoKKwkJCXJldHVybiBm YWxzZTsKKwkJICAgICAgfQorCisJCSAgICBpZiAob2Zmc2V0ID4gdGRhdGEt PmRfc2l6ZQorCQkJfHwgdGRhdGEtPmRfc2l6ZSAtIG9mZnNldCA8IHNpemUp CisJCSAgICAgIHsKKwkJCWNsZWFudXBfZGVidWcgKCk7CisJCQllcnJvciAo RVhJVF9GQUlMVVJFLCAwLCBnZXR0ZXh0ICgiYmFkIHJlbG9jYXRpb24iKSk7 CisJCSAgICAgIH0KKworCQkgICAgLyogV2hlbiB0aGUgc3ltYm9sIHZhbHVl IGlzIHplcm8gdGhlbiBmb3IgU0hUX1JFTAorCQkgICAgICAgc2VjdGlvbnMg dGhpcyBpcyBhbGwgdGhhdCBuZWVkcyB0byBiZSBjaGVja2VkLgorCQkgICAg ICAgVGhlIGFkZGVuZCBpcyBjb250YWluZWQgaW4gdGhlIG9yaWdpbmFsIGRh dGEgYXQKKwkJICAgICAgIHRoZSBvZmZzZXQgYWxyZWFkeS4gIFNvIGlmIHRo ZSAoc2VjdGlvbikgc3ltYm9sCisJCSAgICAgICBhZGRyZXNzIGlzIHplcm8g YW5kIHRoZSBnaXZlbiBhZGRlbmQgaXMgemVybworCQkgICAgICAganVzdCBy ZW1vdmUgdGhlIHJlbG9jYXRpb24sIGl0IGlzbid0IG5lZWRlZAorCQkgICAg ICAgYW55bW9yZS4gICovCisJCSAgICBpZiAoYWRkZW5kID09IDAgJiYgc3lt LT5zdF92YWx1ZSA9PSAwKQorCQkgICAgICByZXR1cm4gdHJ1ZTsKKworCQkg ICAgRWxmX0RhdGEgdG1wZGF0YSA9CisJCSAgICAgIHsKKwkJCS5kX3R5cGUg PSB0eXBlLAorCQkJLmRfYnVmID0gJnRtcGJ1ZiwKKwkJCS5kX3NpemUgPSBz aXplLAorCQkJLmRfdmVyc2lvbiA9IEVWX0NVUlJFTlQsCisJCSAgICAgIH07 CisJCSAgICBFbGZfRGF0YSByZGF0YSA9CisJCSAgICAgIHsKKwkJCS5kX3R5 cGUgPSB0eXBlLAorCQkJLmRfYnVmID0gdGRhdGEtPmRfYnVmICsgb2Zmc2V0 LAorCQkJLmRfc2l6ZSA9IHNpemUsCisJCQkuZF92ZXJzaW9uID0gRVZfQ1VS UkVOVCwKKwkJICAgICAgfTsKKworCQkgICAgR0VsZl9BZGRyIHZhbHVlID0g c3ltLT5zdF92YWx1ZTsKKwkJICAgIGlmIChpc19yZWxhKQorCQkgICAgICB7 CisJCQkvKiBGb3IgU0hUX1JFTEEgc2VjdGlvbnMgd2UganVzdCB0YWtlIHRo ZQorCQkJICAgZ2l2ZW4gYWRkZW5kIGFuZCBhZGQgaXQgdG8gdGhlIHZhbHVl LiAgKi8KKwkJCXZhbHVlICs9IGFkZGVuZDsKKwkJICAgICAgfQorCQkgICAg ZWxzZQorCQkgICAgICB7CisJCQkvKiBGb3IgU0hUX1JFTCBzZWN0aW9ucyB3 ZSBoYXZlIHRvIHBlZWsgYXQKKwkJCSAgIHdoYXQgaXMgYWxyZWFkeSBpbiB0 aGUgc2VjdGlvbiBhdCB0aGUgZ2l2ZW4KKwkJCSAgIG9mZnNldCB0byBnZXQg dGhlIGFkZGVuZC4gICovCisJCQlFbGZfRGF0YSAqZCA9IGdlbGZfeGxhdGV0 b20gKGRlYnVnZWxmLCAmdG1wZGF0YSwKKwkJCQkJCSAgICAgJnJkYXRhLAor CQkJCQkJICAgICBlaGRyLT5lX2lkZW50W0VJX0RBVEFdKTsKKwkJCWlmIChk ID09IE5VTEwpCisJCQkgIElOVEVSTkFMX0VSUk9SIChmbmFtZSk7CisJCQlh c3NlcnQgKGQgPT0gJnRtcGRhdGEpOworCQkgICAgICB9CisKKwkJICAgIHN3 aXRjaCAodHlwZSkKKwkJICAgICAgeworI2RlZmluZSBET19UWVBFKE5BTUUs IE5hbWUpCQkJCQlcCisJCQljYXNlIEVMRl9UXyMjTkFNRToJCQlcCisJCQkg IHRtcGJ1Zi5OYW1lICs9IChHRWxmXyMjTmFtZSkgdmFsdWU7CVwKKwkJCSAg YnJlYWs7CisJCQlUWVBFUzsKKyN1bmRlZiBET19UWVBFCisJCSAgICAgIGRl ZmF1bHQ6CisJCQlhYm9ydCAoKTsKKwkJICAgICAgfQorCisJCSAgICAvKiBO b3cgZmluYWxseSBwdXQgaW4gdGhlIG5ldyB2YWx1ZS4gICovCisJCSAgICBF bGZfRGF0YSAqcyA9IGdlbGZfeGxhdGV0b2YgKGRlYnVnZWxmLCAmcmRhdGEs CisJCQkJCQkgJnRtcGRhdGEsCisJCQkJCQkgZWhkci0+ZV9pZGVudFtFSV9E QVRBXSk7CisJCSAgICBpZiAocyA9PSBOVUxMKQorCQkgICAgICBJTlRFUk5B TF9FUlJPUiAoZm5hbWUpOworCQkgICAgYXNzZXJ0IChzID09ICZyZGF0YSk7 CisKKwkJICAgIHJldHVybiB0cnVlOworCQkgIH0KKwkJcmV0dXJuIGZhbHNl OworfQorCiBzdGF0aWMgaW50CiBoYW5kbGVfZWxmIChpbnQgZmQsIEVsZiAq ZWxmLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmZuYW1lLAog CSAgICBtb2RlX3QgbW9kZSwgc3RydWN0IHRpbWVzcGVjIHR2cFsyXSkKQEAg LTQ3MCwyMyArNjMxLDcgQEAgaGFuZGxlX2VsZiAoaW50IGZkLCBFbGYgKmVs ZiwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpmbmFtZSwKICAg aW50IHJlc3VsdCA9IDA7CiAgIHNpemVfdCBzaGRyaWR4ID0gMDsKICAgc2l6 ZV90IHNoc3RybmR4OwotICBzdHJ1Y3Qgc2hkcl9pbmZvCi0gIHsKLSAgICBF bGZfU2NuICpzY247Ci0gICAgR0VsZl9TaGRyIHNoZHI7Ci0gICAgRWxmX0Rh dGEgKmRhdGE7Ci0gICAgRWxmX0RhdGEgKmRlYnVnX2RhdGE7Ci0gICAgY29u c3QgY2hhciAqbmFtZTsKLSAgICBFbGYzMl9Xb3JkIGlkeDsJCS8qIEluZGV4 IGluIG5ldyBmaWxlLiAgKi8KLSAgICBFbGYzMl9Xb3JkIG9sZF9zaF9saW5r OwkvKiBPcmlnaW5hbCB2YWx1ZSBvZiBzaGRyLnNoX2xpbmsuICAqLwotICAg IEVsZjMyX1dvcmQgc3ltdGFiX2lkeDsKLSAgICBFbGYzMl9Xb3JkIHZlcnNp b25faWR4OwotICAgIEVsZjMyX1dvcmQgZ3JvdXBfaWR4OwotICAgIEVsZjMy X1dvcmQgZ3JvdXBfY250OwotICAgIEVsZl9TY24gKm5ld3NjbjsKLSAgICBE d2VsZl9TdHJlbnQgKnNlOwotICAgIEVsZjMyX1dvcmQgKm5ld3N5bWlkeDsK LSAgfSAqc2hkcl9pbmZvID0gTlVMTDsKKyAgc3RydWN0IHNoZHJfaW5mbyAq c2hkcl9pbmZvID0gTlVMTDsKICAgRWxmX1NjbiAqc2NuOwogICBzaXplX3Qg Y250OwogICBzaXplX3QgaWR4OwpAQCAtMTAyNCwxOSArMTE2OSwxOSBAQCBo YW5kbGVfZWxmIChpbnQgZmQsIEVsZiAqZWxmLCBjb25zdCBjaGFyICpwcmVm aXgsIGNvbnN0IGNoYXIgKmZuYW1lLAogCQkgZmlsZSdzIC5kYXRhIHBvaW50 ZXIuICBCZWxvdywgd2UnbGwgY29weSB0aGUgc2VjdGlvbgogCQkgY29udGVu dHMuICAqLwogCi0JICAgICAgaW5saW5lIHZvaWQgY2hlY2tfcHJlc2VydmVk IChzaXplX3QgaSkKLQkgICAgICB7Ci0JCWlmIChpICE9IDAgJiYgaSA8IHNo bnVtICsgMiAmJiBzaGRyX2luZm9baV0uaWR4ICE9IDAKLQkJICAgICYmIHNo ZHJfaW5mb1tpXS5kZWJ1Z19kYXRhID09IE5VTEwpCi0JCSAgewotCQkgICAg aWYgKHNoZHJfaW5mb1tpXS5kYXRhID09IE5VTEwpCi0JCSAgICAgIHNoZHJf aW5mb1tpXS5kYXRhID0gZWxmX2dldGRhdGEgKHNoZHJfaW5mb1tpXS5zY24s IE5VTEwpOwotCQkgICAgaWYgKHNoZHJfaW5mb1tpXS5kYXRhID09IE5VTEwp Ci0JCSAgICAgIElOVEVSTkFMX0VSUk9SIChmbmFtZSk7Ci0KLQkJICAgIHNo ZHJfaW5mb1tpXS5kZWJ1Z19kYXRhID0gc2hkcl9pbmZvW2ldLmRhdGE7Ci0J CSAgICBjaGFuZ2VzIHw9IGkgPCBjbnQ7Ci0JCSAgfQorCSAgICAgICNkZWZp bmUgY2hlY2tfcHJlc2VydmVkKGlfYXJnKSBcCisJICAgICAgeyBcCisJCXNp emVfdCBpID0gaV9hcmc7IFwKKwkJaWYgKGkgIT0gMCAmJiBpIDwgc2hudW0g KyAyICYmIHNoZHJfaW5mb1tpXS5pZHggIT0gMCBcCisJCSAgICAmJiBzaGRy X2luZm9baV0uZGVidWdfZGF0YSA9PSBOVUxMKSBcCisJCSAgeyBcCisJCSAg ICBpZiAoc2hkcl9pbmZvW2ldLmRhdGEgPT0gTlVMTCkgXAorCQkgICAgICBz aGRyX2luZm9baV0uZGF0YSA9IGVsZl9nZXRkYXRhIChzaGRyX2luZm9baV0u c2NuLCBOVUxMKTsgXAorCQkgICAgaWYgKHNoZHJfaW5mb1tpXS5kYXRhID09 IE5VTEwpIFwKKwkJICAgICAgSU5URVJOQUxfRVJST1IgKGZuYW1lKTsgXAor CQkgICAgc2hkcl9pbmZvW2ldLmRlYnVnX2RhdGEgPSBzaGRyX2luZm9baV0u ZGF0YTsgXAorCQkgICAgY2hhbmdlcyB8PSBpIDwgY250OyBcCisJCSAgfSBc CiAJICAgICAgfQogCiAJICAgICAgY2hlY2tfcHJlc2VydmVkIChzaGRyX2lu Zm9bY250XS5zaGRyLnNoX2xpbmspOwpAQCAtMTU2MiwyMSArMTcwNywyMiBA QCBoYW5kbGVfZWxmIChpbnQgZmQsIEVsZiAqZWxmLCBjb25zdCBjaGFyICpw cmVmaXgsIGNvbnN0IGNoYXIgKmZuYW1lLAogCS8qIFVwZGF0ZSBzZWN0aW9u IGhlYWRlcnMgd2hlbiB0aGUgZGF0YSBzaXplIGhhcyBjaGFuZ2VkLgogCSAg IFdlIGFsc28gdXBkYXRlIHRoZSBTSFRfTk9CSVRTIHNlY3Rpb24gaW4gdGhl IGRlYnVnCiAJICAgZmlsZSBzbyB0aGF0IHRoZSBzZWN0aW9uIGhlYWRlcnMg bWF0Y2ggaW4gc2hfc2l6ZS4gICovCi0JaW5saW5lIHZvaWQgdXBkYXRlX3Nl Y3Rpb25fc2l6ZSAoY29uc3QgRWxmX0RhdGEgKm5ld2RhdGEpCi0JewotCSAg R0VsZl9TaGRyIHNoZHJfbWVtOwotCSAgR0VsZl9TaGRyICpzaGRyID0gZ2Vs Zl9nZXRzaGRyIChzY24sICZzaGRyX21lbSk7Ci0JICBzaGRyLT5zaF9zaXpl ID0gbmV3ZGF0YS0+ZF9zaXplOwotCSAgKHZvaWQpIGdlbGZfdXBkYXRlX3No ZHIgKHNjbiwgc2hkcik7Ci0JICBpZiAoZGVidWdlbGYgIT0gTlVMTCkKLQkg ICAgewotCSAgICAgIC8qIGxpYmVsZiB3aWxsIHVzZSBkX3NpemUgdG8gc2V0 IHNoX3NpemUuICAqLwotCSAgICAgIEVsZl9EYXRhICpkZWJ1Z2RhdGEgPSBl bGZfZ2V0ZGF0YSAoZWxmX2dldHNjbiAoZGVidWdlbGYsCi0JCQkJCQkJICAg ICBjbnQpLCBOVUxMKTsKLQkgICAgICBpZiAoZGVidWdkYXRhID09IE5VTEwp Ci0JCUlOVEVSTkFMX0VSUk9SIChmbmFtZSk7Ci0JICAgICAgZGVidWdkYXRh LT5kX3NpemUgPSBuZXdkYXRhLT5kX3NpemU7Ci0JICAgIH0KKwkjZGVmaW5l IHVwZGF0ZV9zZWN0aW9uX3NpemUobmV3ZGF0YV9hcmcpIFwKKwl7IFwKKwkg IGNvbnN0IEVsZl9EYXRhICpuZXdkYXRhID0gbmV3ZGF0YV9hcmc7IFwKKwkg IEdFbGZfU2hkciBzaGRyX21lbTsgXAorCSAgR0VsZl9TaGRyICpzaGRyID0g Z2VsZl9nZXRzaGRyIChzY24sICZzaGRyX21lbSk7IFwKKwkgIHNoZHItPnNo X3NpemUgPSBuZXdkYXRhLT5kX3NpemU7IFwKKwkgICh2b2lkKSBnZWxmX3Vw ZGF0ZV9zaGRyIChzY24sIHNoZHIpOyBcCisJICBpZiAoZGVidWdlbGYgIT0g TlVMTCkgXAorCSAgICB7IFwKKwkgICAgICAvKiBsaWJlbGYgd2lsbCB1c2Ug ZF9zaXplIHRvIHNldCBzaF9zaXplLiAgKi8gXAorCSAgICAgIEVsZl9EYXRh ICpkZWJ1Z2RhdGEgPSBlbGZfZ2V0ZGF0YSAoZWxmX2dldHNjbiAoZGVidWdl bGYsIFwKKwkJCQkJCQkgICAgIGNudCksIE5VTEwpOyBcCisJICAgICAgaWYg KGRlYnVnZGF0YSA9PSBOVUxMKSBcCisJCUlOVEVSTkFMX0VSUk9SIChmbmFt ZSk7IFwKKwkgICAgICBkZWJ1Z2RhdGEtPmRfc2l6ZSA9IG5ld2RhdGEtPmRf c2l6ZTsgXAorCSAgICB9IFwKIAl9CiAKIAlpZiAoc2hkcl9pbmZvW2NudF0u aWR4ID09IDAgJiYgZGVidWdfZm5hbWUgPT0gTlVMTCkKQEAgLTE1OTAsMTgg KzE3MzYsMjEgQEAgaGFuZGxlX2VsZiAoaW50IGZkLCBFbGYgKmVsZiwgY29u c3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpmbmFtZSwKIAljb25zdCBF bGYzMl9Xb3JkICpjb25zdCBuZXdzeW1pZHggPSBzaGRyX2luZm9bc3ltdGFi aWR4XS5uZXdzeW1pZHg7CiAJc3dpdGNoIChzaGRyX2luZm9bY250XS5zaGRy LnNoX3R5cGUpCiAJICB7Ci0JICAgIGlubGluZSBib29sIG5vX3N5bXRhYl91 cGRhdGVzICh2b2lkKQotCSAgICB7Ci0JICAgICAgLyogSWYgdGhlIHN5bWJv bCB0YWJsZSBoYXNuJ3QgY2hhbmdlZCwgZG8gbm90IGRvIGFueXRoaW5nLiAg Ki8KLQkgICAgICBpZiAoc2hkcl9pbmZvW3N5bXRhYmlkeF0ubmV3c3ltaWR4 ID09IE5VTEwpCi0JCXJldHVybiB0cnVlOwotCi0JICAgICAgLyogSWYgdGhl IHN5bWJvbCB0YWJsZSBpcyBub3QgZGlzY2FyZGVkLCBidXQgYWRkaXRpb25h bGx5Ci0JCSBkdXBsaWNhdGVkIGluIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBmaWxl IGFuZCB0aGlzIHNlY3Rpb24KLQkJIGlzIGRpc2NhcmRlZCwgZG9uJ3QgYWRq dXN0IGFueXRoaW5nLiAgKi8KLQkgICAgICByZXR1cm4gKHNoZHJfaW5mb1tj bnRdLmlkeCA9PSAwCi0JCSAgICAgICYmIHNoZHJfaW5mb1tzeW10YWJpZHhd LmRlYnVnX2RhdGEgIT0gTlVMTCk7Ci0JICAgIH0KKwkgICAgI2RlZmluZSBu b19zeW10YWJfdXBkYXRlcygpIFwKKwkgICAgKCB7IFwKKwkgICAgICAgIGJv b2wgbm9fdXBkYXRlczsgXAorCSAgICAgICAgLyogSWYgdGhlIHN5bWJvbCB0 YWJsZSBoYXNuJ3QgY2hhbmdlZCwgZG8gbm90IGRvIGFueXRoaW5nLiAgKi8g XAorCSAgICAgICAgaWYgKHNoZHJfaW5mb1tzeW10YWJpZHhdLm5ld3N5bWlk eCA9PSBOVUxMKSB7IFwKKwkgICAgICAgICAgbm9fdXBkYXRlcyA9IHRydWU7 IFwKKwkgICAgICAgIH0gZWxzZSB7IFwKKwkgICAgICAgICAgLyogSWYgdGhl IHN5bWJvbCB0YWJsZSBpcyBub3QgZGlzY2FyZGVkLCBidXQgYWRkaXRpb25h bGx5ICovIFwKKwkgICAgICAgICAgLyogZHVwbGljYXRlZCBpbiB0aGUgc2Vw YXJhdGUgZGVidWcgZmlsZSBhbmQgdGhpcyBzZWN0aW9uICovIFwKKwkgICAg ICAgICAgLyogaXMgZGlzY2FyZGVkLCBkb24ndCBhZGp1c3QgYW55dGhpbmcu ICovIFwKKwkgICAgICAgICAgbm9fdXBkYXRlcyA9IChzaGRyX2luZm9bY250 XS5pZHggPT0gMCBcCisJICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2hk cl9pbmZvW3N5bXRhYmlkeF0uZGVidWdfZGF0YSAhPSBOVUxMKTsgXAorCSAg ICAgICAgfSBcCisJICAgICAgICBub191cGRhdGVzOyBcCisJICAgIH0gKQog CiAJICBjYXNlIFNIVF9SRUw6CiAJICBjYXNlIFNIVF9SRUxBOgpAQCAtMTkz NiwxMzQgKzIwODUsNiBAQCBoYW5kbGVfZWxmIChpbnQgZmQsIEVsZiAqZWxm LCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmZuYW1lLAogCSAg ICAgIHhuZHhkYXRhID0gKHNoZHJfaW5mb1tzaGRyX2luZm9bc3ltdF0uc3lt dGFiX2lkeF0uZGVidWdfZGF0YQogCQkJICA/OiBzaGRyX2luZm9bc2hkcl9p bmZvW3N5bXRdLnN5bXRhYl9pZHhdLmRhdGEpOwogCi0JICAgICAgLyogQXBw bHkgb25lIHJlbG9jYXRpb24uICBSZXR1cm5zIHRydWUgd2hlbiB0cml2aWFs Ci0JCSByZWxvY2F0aW9uIGFjdHVhbGx5IGRvbmUuICAqLwotCSAgICAgIGJv b2wgcmVsb2NhdGUgKEdFbGZfQWRkciBvZmZzZXQsIGNvbnN0IEdFbGZfU3h3 b3JkIGFkZGVuZCwKLQkJCSAgICAgYm9vbCBpc19yZWxhLCBpbnQgcnR5cGUs IGludCBzeW1uZHgpCi0JICAgICAgewotCQkvKiBSXypfTk9ORSByZWxvY3Mg Y2FuIGFsd2F5cyBqdXN0IGJlIHJlbW92ZWQuICAqLwotCQlpZiAocnR5cGUg PT0gMCkKLQkJICByZXR1cm4gdHJ1ZTsKLQotCQkvKiBXZSBvbmx5IGRvIHNp bXBsZSBhYnNvbHV0ZSByZWxvY2F0aW9ucy4gICovCi0JCUVsZl9UeXBlIHR5 cGUgPSBlYmxfcmVsb2Nfc2ltcGxlX3R5cGUgKGVibCwgcnR5cGUpOwotCQlp ZiAodHlwZSA9PSBFTEZfVF9OVU0pCi0JCSAgcmV0dXJuIGZhbHNlOwotCi0J CS8qIFRoZXNlIGFyZSB0aGUgdHlwZXMgd2UgY2FuIHJlbG9jYXRlLiAgKi8K LSNkZWZpbmUgVFlQRVMgICBET19UWVBFIChCWVRFLCBCeXRlKTsgRE9fVFlQ RSAoSEFMRiwgSGFsZik7CQlcCi0JCURPX1RZUEUgKFdPUkQsIFdvcmQpOyBE T19UWVBFIChTV09SRCwgU3dvcmQpOwkJXAotCQlET19UWVBFIChYV09SRCwg WHdvcmQpOyBET19UWVBFIChTWFdPUkQsIFN4d29yZCkKLQotCQkvKiBBbmQg b25seSBmb3IgcmVsb2NhdGlvbnMgYWdhaW5zdCBvdGhlciBkZWJ1ZyBzZWN0 aW9ucy4gICovCi0JCUdFbGZfU3ltIHN5bV9tZW07Ci0JCUVsZjMyX1dvcmQg eG5keDsKLQkJR0VsZl9TeW0gKnN5bSA9IGdlbGZfZ2V0c3ltc2huZHggKHN5 bWRhdGEsIHhuZHhkYXRhLAotCQkJCQkJICBzeW1uZHgsICZzeW1fbWVtLAot CQkJCQkJICAmeG5keCk7Ci0JCUVsZjMyX1dvcmQgc2VjID0gKHN5bS0+c3Rf c2huZHggPT0gU0hOX1hJTkRFWAotCQkJCSAgPyB4bmR4IDogc3ltLT5zdF9z aG5keCk7Ci0JCWlmIChzZWMgPj0gc2hudW0gKyAyKQotCQkgIElOVEVSTkFM X0VSUk9SIChmbmFtZSk7Ci0KLQkJaWYgKGVibF9kZWJ1Z3Njbl9wIChlYmws IHNoZHJfaW5mb1tzZWNdLm5hbWUpKQotCQkgIHsKLQkJICAgIHNpemVfdCBz aXplOwotCi0jZGVmaW5lIERPX1RZUEUoTkFNRSwgTmFtZSkgR0VsZl8jI05h bWUgTmFtZTsKLQkJICAgIHVuaW9uIHsgVFlQRVM7IH0gdG1wYnVmOwotI3Vu ZGVmIERPX1RZUEUKLQotCQkgICAgc3dpdGNoICh0eXBlKQotCQkgICAgICB7 Ci0jZGVmaW5lIERPX1RZUEUoTkFNRSwgTmFtZSkJCQkJXAotCQkJY2FzZSBF TEZfVF8jI05BTUU6CQlcCi0JCQkgIHNpemUgPSBzaXplb2YgKEdFbGZfIyNO YW1lKTsJXAotCQkJICB0bXBidWYuTmFtZSA9IDA7CQlcCi0JCQkgIGJyZWFr OwotCQkJVFlQRVM7Ci0jdW5kZWYgRE9fVFlQRQotCQkgICAgICBkZWZhdWx0 OgotCQkJcmV0dXJuIGZhbHNlOwotCQkgICAgICB9Ci0KLQkJICAgIGlmIChv ZmZzZXQgPiB0ZGF0YS0+ZF9zaXplCi0JCQl8fCB0ZGF0YS0+ZF9zaXplIC0g b2Zmc2V0IDwgc2l6ZSkKLQkJICAgICAgewotCQkJY2xlYW51cF9kZWJ1ZyAo KTsKLQkJCWVycm9yIChFWElUX0ZBSUxVUkUsIDAsIGdldHRleHQgKCJiYWQg cmVsb2NhdGlvbiIpKTsKLQkJICAgICAgfQotCi0JCSAgICAvKiBXaGVuIHRo ZSBzeW1ib2wgdmFsdWUgaXMgemVybyB0aGVuIGZvciBTSFRfUkVMCi0JCSAg ICAgICBzZWN0aW9ucyB0aGlzIGlzIGFsbCB0aGF0IG5lZWRzIHRvIGJlIGNo ZWNrZWQuCi0JCSAgICAgICBUaGUgYWRkZW5kIGlzIGNvbnRhaW5lZCBpbiB0 aGUgb3JpZ2luYWwgZGF0YSBhdAotCQkgICAgICAgdGhlIG9mZnNldCBhbHJl YWR5LiAgU28gaWYgdGhlIChzZWN0aW9uKSBzeW1ib2wKLQkJICAgICAgIGFk ZHJlc3MgaXMgemVybyBhbmQgdGhlIGdpdmVuIGFkZGVuZCBpcyB6ZXJvCi0J CSAgICAgICBqdXN0IHJlbW92ZSB0aGUgcmVsb2NhdGlvbiwgaXQgaXNuJ3Qg bmVlZGVkCi0JCSAgICAgICBhbnltb3JlLiAgKi8KLQkJICAgIGlmIChhZGRl bmQgPT0gMCAmJiBzeW0tPnN0X3ZhbHVlID09IDApCi0JCSAgICAgIHJldHVy biB0cnVlOwotCi0JCSAgICBFbGZfRGF0YSB0bXBkYXRhID0KLQkJICAgICAg ewotCQkJLmRfdHlwZSA9IHR5cGUsCi0JCQkuZF9idWYgPSAmdG1wYnVmLAot CQkJLmRfc2l6ZSA9IHNpemUsCi0JCQkuZF92ZXJzaW9uID0gRVZfQ1VSUkVO VCwKLQkJICAgICAgfTsKLQkJICAgIEVsZl9EYXRhIHJkYXRhID0KLQkJICAg ICAgewotCQkJLmRfdHlwZSA9IHR5cGUsCi0JCQkuZF9idWYgPSB0ZGF0YS0+ ZF9idWYgKyBvZmZzZXQsCi0JCQkuZF9zaXplID0gc2l6ZSwKLQkJCS5kX3Zl cnNpb24gPSBFVl9DVVJSRU5ULAotCQkgICAgICB9OwotCi0JCSAgICBHRWxm X0FkZHIgdmFsdWUgPSBzeW0tPnN0X3ZhbHVlOwotCQkgICAgaWYgKGlzX3Jl bGEpCi0JCSAgICAgIHsKLQkJCS8qIEZvciBTSFRfUkVMQSBzZWN0aW9ucyB3 ZSBqdXN0IHRha2UgdGhlCi0JCQkgICBnaXZlbiBhZGRlbmQgYW5kIGFkZCBp dCB0byB0aGUgdmFsdWUuICAqLwotCQkJdmFsdWUgKz0gYWRkZW5kOwotCQkg ICAgICB9Ci0JCSAgICBlbHNlCi0JCSAgICAgIHsKLQkJCS8qIEZvciBTSFRf UkVMIHNlY3Rpb25zIHdlIGhhdmUgdG8gcGVlayBhdAotCQkJICAgd2hhdCBp cyBhbHJlYWR5IGluIHRoZSBzZWN0aW9uIGF0IHRoZSBnaXZlbgotCQkJICAg b2Zmc2V0IHRvIGdldCB0aGUgYWRkZW5kLiAgKi8KLQkJCUVsZl9EYXRhICpk ID0gZ2VsZl94bGF0ZXRvbSAoZGVidWdlbGYsICZ0bXBkYXRhLAotCQkJCQkJ ICAgICAmcmRhdGEsCi0JCQkJCQkgICAgIGVoZHItPmVfaWRlbnRbRUlfREFU QV0pOwotCQkJaWYgKGQgPT0gTlVMTCkKLQkJCSAgSU5URVJOQUxfRVJST1Ig KGZuYW1lKTsKLQkJCWFzc2VydCAoZCA9PSAmdG1wZGF0YSk7Ci0JCSAgICAg IH0KLQotCQkgICAgc3dpdGNoICh0eXBlKQotCQkgICAgICB7Ci0jZGVmaW5l IERPX1RZUEUoTkFNRSwgTmFtZSkJCQkJCVwKLQkJCWNhc2UgRUxGX1RfIyNO QU1FOgkJCVwKLQkJCSAgdG1wYnVmLk5hbWUgKz0gKEdFbGZfIyNOYW1lKSB2 YWx1ZTsJXAotCQkJICBicmVhazsKLQkJCVRZUEVTOwotI3VuZGVmIERPX1RZ UEUKLQkJICAgICAgZGVmYXVsdDoKLQkJCWFib3J0ICgpOwotCQkgICAgICB9 Ci0KLQkJICAgIC8qIE5vdyBmaW5hbGx5IHB1dCBpbiB0aGUgbmV3IHZhbHVl LiAgKi8KLQkJICAgIEVsZl9EYXRhICpzID0gZ2VsZl94bGF0ZXRvZiAoZGVi dWdlbGYsICZyZGF0YSwKLQkJCQkJCSAmdG1wZGF0YSwKLQkJCQkJCSBlaGRy LT5lX2lkZW50W0VJX0RBVEFdKTsKLQkJICAgIGlmIChzID09IE5VTEwpCi0J CSAgICAgIElOVEVSTkFMX0VSUk9SIChmbmFtZSk7Ci0JCSAgICBhc3NlcnQg KHMgPT0gJnJkYXRhKTsKLQotCQkgICAgcmV0dXJuIHRydWU7Ci0JCSAgfQot CQlyZXR1cm4gZmFsc2U7Ci0JICAgICAgfQotCiAJICAgICAgaWYgKHNoZHIt PnNoX2VudHNpemUgPT0gMCkKIAkJSU5URVJOQUxfRVJST1IgKGZuYW1lKTsK IApAQCAtMjA3NCw3ICsyMDk1LDggQEAgaGFuZGxlX2VsZiAoaW50IGZkLCBF bGYgKmVsZiwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpmbmFt ZSwKIAkJICB7CiAJCSAgICBHRWxmX1JlbCByZWxfbWVtOwogCQkgICAgR0Vs Zl9SZWwgKnIgPSBnZWxmX2dldHJlbCAocmVsZGF0YSwgcmVsaWR4LCAmcmVs X21lbSk7Ci0JCSAgICBpZiAoISByZWxvY2F0ZSAoci0+cl9vZmZzZXQsIDAs IGZhbHNlLAorCQkgICAgaWYgKCEgcmVsb2NhdGUgKHBhc3NfcmVsb2NhdGVf Y2xvc3VyZSwKKwkJCQkgICAgci0+cl9vZmZzZXQsIDAsIGZhbHNlLAogCQkJ CSAgICBHRUxGX1JfVFlQRSAoci0+cl9pbmZvKSwKIAkJCQkgICAgR0VMRl9S X1NZTSAoci0+cl9pbmZvKSkpCiAJCSAgICAgIHsKQEAgLTIwODgsNyArMjEx MCw4IEBAIGhhbmRsZV9lbGYgKGludCBmZCwgRWxmICplbGYsIGNvbnN0IGNo YXIgKnByZWZpeCwgY29uc3QgY2hhciAqZm5hbWUsCiAJCSAgewogCQkgICAg R0VsZl9SZWxhIHJlbGFfbWVtOwogCQkgICAgR0VsZl9SZWxhICpyID0gZ2Vs Zl9nZXRyZWxhIChyZWxkYXRhLCByZWxpZHgsICZyZWxhX21lbSk7Ci0JCSAg ICBpZiAoISByZWxvY2F0ZSAoci0+cl9vZmZzZXQsIHItPnJfYWRkZW5kLCB0 cnVlLAorCQkgICAgaWYgKCEgcmVsb2NhdGUgKHBhc3NfcmVsb2NhdGVfY2xv c3VyZSwKKwkJCQkgICAgci0+cl9vZmZzZXQsIHItPnJfYWRkZW5kLCB0cnVl LAogCQkJCSAgICBHRUxGX1JfVFlQRSAoci0+cl9pbmZvKSwKIAkJCQkgICAg R0VMRl9SX1NZTSAoci0+cl9pbmZvKSkpCiAJCSAgICAgIHsKZGlmZiAtLWdp dCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCmluZGV4IDUwNzQ5 MDkuLjhmNWRhNzEgMTAwNjQ0Ci0tLSBhL3NyYy91bnN0cmlwLmMKKysrIGIv c3JjL3Vuc3RyaXAuYwpAQCAtNDE3LDExICs0MTcsMTIgQEAgYWRqdXN0X3Jl bG9jcyAoRWxmX1NjbiAqb3V0c2NuLCBFbGZfU2NuICppbnNjbiwgY29uc3Qg R0VsZl9TaGRyICpzaGRyLAogewogICBFbGZfRGF0YSAqZGF0YSA9IGVsZl9n ZXRkYXRhIChvdXRzY24sIE5VTEwpOwogCi0gIGlubGluZSB2b2lkIGFkanVz dF9yZWxvYyAoR0VsZl9Yd29yZCAqaW5mbykKLSAgICB7Ci0gICAgICBzaXpl X3QgbmR4ID0gR0VMRl9SX1NZTSAoKmluZm8pOwotICAgICAgaWYgKG5keCAh PSBTVE5fVU5ERUYpCi0JKmluZm8gPSBHRUxGX1JfSU5GTyAobWFwW25keCAt IDFdLCBHRUxGX1JfVFlQRSAoKmluZm8pKTsKKyAgI2RlZmluZSBhZGp1c3Rf cmVsb2MoaW5mb19hcmcpIFwKKyAgICB7IFwKKyAgICAgIEdFbGZfWHdvcmQg KmluZm8gPSBpbmZvX2FyZzsgXAorICAgICAgc2l6ZV90IG5keCA9IEdFTEZf Ul9TWU0gKCppbmZvKTsgXAorICAgICAgaWYgKG5keCAhPSBTVE5fVU5ERUYp IFwKKyAgICAgICAgKmluZm8gPSBHRUxGX1JfSU5GTyAobWFwW25keCAtIDFd LCBHRUxGX1JfVFlQRSAoKmluZm8pKTsgXAogICAgIH0KIAogICBzd2l0Y2gg KHNoZHItPnNoX3R5cGUpCkBAIC0xMDkxLDE0ICsxMDkyLDE3IEBAIGZpbmRf YWxsb2Nfc2VjdGlvbnNfcHJlbGluayAoRWxmICpkZWJ1ZywgRWxmX0RhdGEg KmRlYnVnX3Noc3RydGFiLAogICAgIH0KIAogICBib29sIGZhaWwgPSBmYWxz ZTsKLSAgaW5saW5lIHZvaWQgY2hlY2tfbWF0Y2ggKGJvb2wgbWF0Y2gsIEVs Zl9TY24gKnNjbiwgY29uc3QgY2hhciAqbmFtZSkKLSAgICB7Ci0gICAgICBp ZiAoIW1hdGNoKQotCXsKLQkgIGZhaWwgPSB0cnVlOwotCSAgZXJyb3IgKDAs IDAsIF8oImNhbm5vdCBmaW5kIG1hdGNoaW5nIHNlY3Rpb24gZm9yIFslenVd ICclcyciKSwKLQkJIGVsZl9uZHhzY24gKHNjbiksIG5hbWUpOwotCX0KKyAg I2RlZmluZSBjaGVja19tYXRjaChtYXRjaF9hcmcsIHNjbl9hcmcsIG5hbWVf YXJnKSBcCisgICAgeyBcCisgICAgICBib29sIG1hdGNoID0gbWF0Y2hfYXJn OyBcCisgICAgICBFbGZfU2NuICpzY25wID0gc2NuX2FyZzsgXAorICAgICAg Y29uc3QgY2hhciAqc2VjdF9uYW1lID0gbmFtZV9hcmc7IFwKKyAgICAgIGlm ICghbWF0Y2gpIFwKKyAgICAgIHsgXAorICAgICAgICBmYWlsID0gdHJ1ZTsg XAorICAgICAgICBlcnJvciAoMCwgMCwgXygiY2Fubm90IGZpbmQgbWF0Y2hp bmcgc2VjdGlvbiBmb3IgWyV6dV0gJyVzJyIpLCBcCisgICAgICAgICAgICAg ICBlbGZfbmR4c2NuIChzY25wKSwgc2VjdF9uYW1lKTsgXAorICAgICAgfSBc CiAgICAgfQogCiAgIEVsZl9TY24gKnNjbiA9IE5VTEw7CkBAIC0xMzI0LDI1 ICsxMzI4LDI5IEBAIG1vcmUgc2VjdGlvbnMgaW4gc3RyaXBwZWQgZmlsZSB0 aGFuIGRlYnVnIGZpbGUgLS0gYXJndW1lbnRzIHJldmVyc2VkPyIpKTsKICAg ICB9CiAKICAgLyogTG9jYXRlIGEgbWF0Y2hpbmcgdW5hbGxvY2F0ZWQgc2Vj dGlvbiBpbiBTRUNUSU9OUy4gICovCi0gIGlubGluZSBzdHJ1Y3Qgc2VjdGlv biAqZmluZF91bmFsbG9jX3NlY3Rpb24gKGNvbnN0IEdFbGZfU2hkciAqc2hk ciwKLQkJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgewotICAg ICAgc2l6ZV90IGwgPSBuYWxsb2MsIHUgPSBzdHJpcHBlZF9zaG51bSAtIDE7 Ci0gICAgICB3aGlsZSAobCA8IHUpCi0JewotCSAgc2l6ZV90IGkgPSAobCAr IHUpIC8gMjsKLQkgIHN0cnVjdCBzZWN0aW9uICpzZWMgPSAmc2VjdGlvbnNb aV07Ci0JICBpbnQgY21wID0gY29tcGFyZV91bmFsbG9jX3NlY3Rpb25zIChz aGRyLCAmc2VjLT5zaGRyLAotCQkJCQkgICAgICBuYW1lLCBzZWMtPm5hbWUp OwotCSAgaWYgKGNtcCA8IDApCi0JICAgIHUgPSBpOwotCSAgZWxzZSBpZiAo Y21wID4gMCkKLQkgICAgbCA9IGkgKyAxOwotCSAgZWxzZQotCSAgICByZXR1 cm4gc2VjOwotCX0KLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgI2Rl ZmluZSBmaW5kX3VuYWxsb2Nfc2VjdGlvbihzaGRyX2FyZywgbmFtZV9hcmcp IFwKKyAgICAoIHsgXAorICAgICAgICBjb25zdCBHRWxmX1NoZHIgKnNoZHJf cCA9IHNoZHJfYXJnOyBcCisgICAgICAgIGNvbnN0IGNoYXIgKnNlY3RfbmFt ZSA9IG5hbWVfYXJnOyBcCisgICAgICAgIHN0cnVjdCBzZWN0aW9uICogcmVz dWx0ID0gTlVMTDsgXAorICAgICAgICBzaXplX3QgbCA9IG5hbGxvYywgdSA9 IHN0cmlwcGVkX3NobnVtIC0gMTsgXAorICAgICAgICB3aGlsZSAobCA8IHUp IFwKKyAgICAgICAgeyBcCisgICAgICAgICAgc2l6ZV90IGkgPSAobCArIHUp IC8gMjsgXAorICAgICAgICAgIHN0cnVjdCBzZWN0aW9uICpzZWNwID0gJnNl Y3Rpb25zW2ldOyBcCisgICAgICAgICAgaW50IGNtcCA9IGNvbXBhcmVfdW5h bGxvY19zZWN0aW9ucyAoc2hkcl9wLCAmc2VjcC0+c2hkciwgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rf bmFtZSwgc2VjcC0+bmFtZSk7IFwKKyAgICAgICAgICBpZiAoY21wIDwgMCkg XAorICAgICAgICAgICAgdSA9IGk7IFwKKyAgICAgICAgICBlbHNlIGlmIChj bXAgPiAwKSBcCisgICAgICAgICAgICBsID0gaSArIDE7IFwKKyAgICAgICAg ICBlbHNlIHsgXAorICAgICAgICAgICAgcmVzdWx0ID0gc2VjcDsgXAorICAg ICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgICB9IFwKKyAgICAgICAgfSBc CisgICAgICByZXN1bHQ7IFwKKyAgICB9ICkKIAogICBFbGZfRGF0YSAqc2hz dHJ0YWIgPSBlbGZfZ2V0ZGF0YSAoZWxmX2dldHNjbiAodW5zdHJpcHBlZCwK IAkJCQkJCXVuc3RyaXBwZWRfc2hzdHJuZHgpLCBOVUxMKTsKQEAgLTIwNjEs MTMgKzIwNjksMTQgQEAgaGFuZGxlX2V4cGxpY2l0X2ZpbGVzIChjb25zdCBj aGFyICpvdXRwdXRfZmlsZSwgYm9vbCBjcmVhdGVfZGlycywgYm9vbCBmb3Jj ZSwKIAogICAvKiBXYXJuLCBhbmQgZXhpdCBpZiBub3QgZm9yY2VkIHRvIGNv bnRpbnVlLCBpZiBzb21lIEVMRiBoZWFkZXIKICAgICAgc2FuaXR5IGNoZWNr IGZvciB0aGUgc3RyaXBwZWQgYW5kIHVuc3RyaXBwZWQgZmlsZXMgZmFpbGVk LiAgKi8KLSAgdm9pZCB3YXJuIChjb25zdCBjaGFyICptc2cpCi0gIHsKLSAg ICBlcnJvciAoZm9yY2UgPyAwIDogRVhJVF9GQUlMVVJFLCAwLCAiJXMnJXMn IGFuZCAnJXMnICVzJXMuIiwKLQkgICBmb3JjZSA/IF8oIldBUk5JTkc6ICIp IDogIiIsCi0JICAgc3RyaXBwZWRfZmlsZSwgdW5zdHJpcHBlZF9maWxlLCBt c2csCi0JICAgZm9yY2UgPyAiIiA6IF8oIiwgdXNlIC0tZm9yY2UiKSk7Ci0g IH0KKyAgI2RlZmluZSB3YXJuKG1zZ19hcmcpIFwKKyAgeyBcCisgICAgY29u c3QgY2hhciAqbXNnID0gbXNnX2FyZzsgXAorICAgIGVycm9yIChmb3JjZSA/ IDAgOiBFWElUX0ZBSUxVUkUsIDAsICIlcyclcycgYW5kICclcycgJXMlcy4i LCBcCisJICAgZm9yY2UgPyBfKCJXQVJOSU5HOiAiKSA6ICIiLCBcCisJICAg c3RyaXBwZWRfZmlsZSwgdW5zdHJpcHBlZF9maWxlLCBtc2csIFwKKwkgICBm b3JjZSA/ICIiIDogXygiLCB1c2UgLS1mb3JjZSIpKTsgXAorICAgfQogCiAg IGludCBzdHJpcHBlZF9mZCA9IG9wZW5fZmlsZSAoc3RyaXBwZWRfZmlsZSwg ZmFsc2UpOwogICBFbGYgKnN0cmlwcGVkID0gZWxmX2JlZ2luIChzdHJpcHBl ZF9mZCwgRUxGX0NfUkVBRCwgTlVMTCk7CkBAIC0yMzIyLDEwICsyMzMxLDEx IEBAIHN0YXRpYyB2b2lkCiBoYW5kbGVfaW1wbGljaXRfbW9kdWxlcyAoY29u c3Qgc3RydWN0IGFyZ19pbmZvICppbmZvKQogewogICBzdHJ1Y3QgbWF0Y2hf bW9kdWxlX2luZm8gbW1pID0geyBpbmZvLT5hcmdzLCBOVUxMLCBpbmZvLT5t YXRjaF9maWxlcyB9OwotICBpbmxpbmUgcHRyZGlmZl90IG5leHQgKHB0cmRp ZmZfdCBvZmZzZXQpCi0gICAgewotICAgICAgcmV0dXJuIGR3ZmxfZ2V0bW9k dWxlcyAoaW5mby0+ZHdmbCwgJm1hdGNoX21vZHVsZSwgJm1taSwgb2Zmc2V0 KTsKLSAgICB9CisgICNkZWZpbmUgbmV4dChvZmZzZXRfYXJnKSBcCisgICAg KCB7IFwKKyAgICAgIHB0cmRpZmZfdCBvbGRfb2Zmc2V0ID0gb2Zmc2V0X2Fy ZzsgXAorICAgICAgZHdmbF9nZXRtb2R1bGVzIChpbmZvLT5kd2ZsLCAmbWF0 Y2hfbW9kdWxlLCAmbW1pLCBvbGRfb2Zmc2V0KTsgXAorICAgIH0gKQogICBw dHJkaWZmX3Qgb2Zmc2V0ID0gbmV4dCAoMCk7CiAgIGlmIChvZmZzZXQgPT0g MCkKICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJubyBtYXRjaGlu ZyBtb2R1bGVzIGZvdW5kIikpOwo= ------==--bound.183237.web60j.yandex.ru--