From unknown Sat Jun 21 10:25:28 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#18410 <18410@debbugs.gnu.org> To: bug#18410 <18410@debbugs.gnu.org> Subject: Status: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Reply-To: bug#18410 <18410@debbugs.gnu.org> Date: Sat, 21 Jun 2025 17:25:28 +0000 retitle 18410 Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. reassign 18410 emacs submitter 18410 Paul Eggert severity 18410 wishlist tag 18410 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 02:09:23 2014 Received: (at submit) by debbugs.gnu.org; 5 Sep 2014 06:09:24 +0000 Received: from localhost ([127.0.0.1]:59214 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPmi2-0000lY-No for submit@debbugs.gnu.org; Fri, 05 Sep 2014 02:09:23 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47179) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPmi0-0000lL-2n for submit@debbugs.gnu.org; Fri, 05 Sep 2014 02:09:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XPmhn-00076r-Ly for submit@debbugs.gnu.org; Fri, 05 Sep 2014 02:09:14 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50, T_FILL_THIS_FORM_SHORT autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:57792) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPmhn-00076n-HO for submit@debbugs.gnu.org; Fri, 05 Sep 2014 02:09:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48901) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPmhe-0003pX-TT for bug-gnu-emacs@gnu.org; Fri, 05 Sep 2014 02:09:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XPmhW-000762-Id for bug-gnu-emacs@gnu.org; Fri, 05 Sep 2014 02:08:58 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:48902) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPmhV-00075i-SY for bug-gnu-emacs@gnu.org; Fri, 05 Sep 2014 02:08:50 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 7F4E0A6000E for ; Thu, 4 Sep 2014 23:08:48 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CM1yr-2IVCRx for ; Thu, 4 Sep 2014 23:08:43 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id AAD88A60003 for ; Thu, 4 Sep 2014 23:08:43 -0700 (PDT) Message-ID: <5409536B.5090201@cs.ucla.edu> Date: Thu, 04 Sep 2014 23:08:43 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Emacs bug reports and feature requests Subject: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Content-Type: multipart/mixed; boundary="------------070202020006090104060805" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" This is a multi-part message in MIME format. --------------070202020006090104060805 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Tags: patch Attached is a patch to fix the unbounded alloca calls that I found when auditing the Emacs source. I'm sending this to bug-gnu-emacs to give Eli a heads-up, as some of the fixes affect Windows code. This patch is relative to Emacs trunk bzr 117822. --------------070202020006090104060805 Content-Type: text/plain; charset=UTF-8; name="alloca.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="alloca.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIw MTQtMDktMDQgMDU6Mzg6MzcgKzAwMDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxNC0wOS0wNSAw NjowMzoyOCArMDAwMApAQCAtMSwzICsxLDEwMSBAQAorMjAxNC0wOS0wNSAgUGF1bCBFZ2dl cnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlVc2UgU0FGRV9BTExPQ0EgZXRjLiB0byBh dm9pZCB1bmJvdW5kZWQgc3RhY2sgYWxsb2NhdGlvbi4KKwlUaGlzIGZvbGxvd3MgdXAgb24g dGhlIHJlY2VudCB0aHJlYWQgaW4gZW1hY3MtZGV2ZWwgb24gYWxsb2NhOyBzZWU6CisJaHR0 cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTQtMDkvbXNn MDAwNDIuaHRtbAorCVRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMgdXAgYWxsb2NhLXJlbGF0ZWQg Z2xpdGNoZXMgbm90ZWQgd2hpbGUKKwlleGFtaW5pbmcgdGhlIGNvZGUgbG9va2luZyBmb3Ig dW5ib3VuZGVkIGFsbG9jYS4KKwkqIGFsbG9jLmMgKGxpc3RuKToKKwkqIGNhbGxwcm9jLmMg KGluaXRfY2FsbHByb2MpOgorCVJld3JpdGUgdG8gYXZvaWQgbmVlZCBmb3IgYWxsb2NhLgor CSogYnVmZmVyLmMgKG1vdXNlX2ZhY2Vfb3ZlcmxheV9vdmVybGFwcykKKwkocmVwb3J0X292 ZXJsYXlfbW9kaWZpY2F0aW9uKToKKwkqIGJ1ZmZlci5oIChHRVRfT1ZFUkxBWVNfQVQpOgor CSogY29kaW5nLmMgKG1ha2Vfc3Vic2lkaWFyaWVzKToKKwkqIGRvYy5jIChGc25hcmZfZG9j dW1lbnRhdGlvbik6CisJKiBlZGl0Zm5zLmMgKEZ1c2VyX2Z1bGxfbmFtZSk6CisJKiBmaWxl aW8uYyAoRmZpbGVfbmFtZV9kaXJlY3RvcnksIEZleHBhbmRfZmlsZV9uYW1lKQorCShzZWFy Y2hfZW1iZWRkZWRfYWJzZmlsZW5hbWUsIEZzdWJzdGl0dXRlX2luX2ZpbGVfbmFtZSk6CisJ KiBmbnMuYyAoRm1ha2VfaGFzaF90YWJsZSk6CisJKiBmb250LmMgKGZvbnRfdmNvbmNhdF9l bnRpdHlfdmVjdG9ycywgZm9udF91cGRhdGVfZHJpdmVycyk6CisJKiBmb250c2V0LmMgKGZv bnRzZXRfcGF0dGVybl9yZWdleHAsIEZmb250c2V0X2luZm8pOgorCSogZnJhbWUuYyAoRm1h a2VfdGVybWluYWxfZnJhbWUsIHhfc2V0X2ZyYW1lX3BhcmFtZXRlcnMpCisJKHhyZGJfZ2V0 X3Jlc291cmNlLCB4X2dldF9yZXNvdXJjZV9zdHJpbmcpOgorCSogZnRmb250LmMgKGZ0Zm9u dF9nZXRfY2hhcnNldCwgZnRmb250X2NoZWNrX290ZiwgZnRmb250X2RyaXZlX290Zik6CisJ KiBmdHhmb250LmMgKGZ0eGZvbnRfZHJhdyk6CisJKiBpbWFnZS5jICh4Ym1fbG9hZCwgeHBt X2xvYWQsIGpwZWdfbG9hZF9ib2R5KToKKwkqIGtleWJvYXJkLmMgKGVjaG9fYWRkX2tleSwg bWVudV9iYXJfaXRlbXMsIHRvb2xfYmFyX2l0ZW1zKToKKwkqIGtleW1hcC5jIChGZGVzY3Jp YmVfYnVmZmVyX2JpbmRpbmdzLCBkZXNjcmliZV9tYXApOgorCSogbHJlYWQuYyAob3BlbnAp OgorCSogbWVudS5jIChkaWdlc3Rfc2luZ2xlX3N1Ym1lbnUsIGZpbmRfYW5kX2NhbGxfbWVu dV9zZWxlY3Rpb24pCisJKGZpbmRfYW5kX3JldHVybl9tZW51X3NlbGVjdGlvbik6CisJKiBw cmludC5jIChQUklOVEZJTklTSCk6CisJKiBwcm9jZXNzLmMgKEZmb3JtYXRfbmV0d29ya19h ZGRyZXNzKToKKwkqIHNjcm9sbC5jIChkb19zY3JvbGxpbmcsIGRvX2RpcmVjdF9zY3JvbGxp bmcsIHNjcm9sbGluZ18xKToKKwkqIHNlYXJjaC5jIChzZWFyY2hfYnVmZmVyLCBGbWF0Y2hf ZGF0YSwgRnJlZ2V4cF9xdW90ZSk6CisJKiBzb3VuZC5jICh3YXZfcGxheSwgYXVfcGxheSk6 CisJKiBzeW50YXguYyAoc2tpcF9jaGFycyk6CisJKiB0ZXJtLmMgKHR0eV9tZW51X2FjdGl2 YXRlLCB0dHlfbWVudV9zaG93KToKKwkqIHRleHRwcm9wLmMgKGdldF9jaGFyX3Byb3BlcnR5 X2FuZF9vdmVybGF5KToKKwkqIHdpbmRvdy5jIChGc2V0X3dpbmRvd19jb25maWd1cmF0aW9u KToKKwkqIHhkaXNwLmMgKHNhZmVfX2NhbGwsIG5leHRfb3ZlcmxheV9jaGFuZ2UsIHZtZXNz YWdlKQorCShjb21wdXRlX292ZXJoYW5nc19hbmRfeCwgZHJhd19nbHlwaHMsIG5vdGVfbW91 c2VfaGlnaGxpZ2h0KToKKwkqIHhmYWNlcy5jIChmYWNlX2F0X2J1ZmZlcl9wb3NpdGlvbik6 CisJKiB4bWVudS5jICh4X21lbnVfc2hvdyk6CisJVXNlIFNBRkVfQUxMT0NBIGV0Yy4gaW5z dGVhZCBvZiBwbGFpbiBhbGxvY2EsIHNpbmNlIHRoZQorCWFsbG9jYXRpb24gc2l6ZSBpc24n dCBib3VuZGVkLgorCSogY2FsbGludC5jIChGY2FsbF9pbnRlcmFjdGl2ZWx5KTogUmVkbyBt ZW1vcnlfZnVsbCBjaGVjaworCXNvIHRoYXQgaXQgY2FuIGJlIGRvbmUgYXQgY29tcGlsZS10 aW1lIG9uIHNvbWUgcGxhdGZvcm1zLgorCSogY29kaW5nLmMgKE1BWF9MT09LVVBfTUFYKTog TmV3IGNvbnN0YW50LgorCShnZXRfdHJhbnNsYXRpb25fdGFibGUpOiBVc2UgaXQuCisJKiBj YWxscHJvYy5jIChjYWxsX3Byb2Nlc3MpOiBVc2UgU0FGRV9OQUxMT0NBIGluc3RlYWQgb2YK KwlTQUZFX0FMTE9DQSwgdG8gY2F0Y2ggaW50ZWdlciBvdmVyZmxvd3Mgb24gc2l6ZSBjYWxj dWxhdGlvbi4KKwkoZXhlY19mYWlsZWQpIFshRE9TX05UXTogTmV3IGZ1bmN0aW9uLgorCShj aGlsZF9zZXR1cCkgWyFET1NfTlRdOiBVc2UgaXQuCisJKiBlZGl0Zm5zLmMgKEZ0cmFuc3Bv c2VfcmVnaW9ucyk6CisJSG9pc3QgVVNFX1NBRkVfQUxMT0MgKyBTQUZFX0ZSRUUgb3V0IG9m ICdpZicuCisJKiBlZGl0Zm5zLmMgKGNoZWNrX3RyYW5zbGF0aW9uKToKKwlBbGxvY2F0ZSBs YXJnZXIgYnVmZmVycyBvbiB0aGUgaGVhcC4KKwkqIGV2YWwuYyAoaW50ZXJuYWxfbGlzcF9j b25kaXRpb25fY2FzZSk6CisJQ2hlY2sgZm9yIE1BWF9BTExPQ0Egb3ZlcmZsb3cuCisJKiBm bnMuYyAoc29ydF92ZWN0b3IpOiBVc2UgU0FGRV9BTExPQ0FfTElTUCByYXRoZXIgdGhhbiBG bWFrZV92ZWN0b3IuCisJKEZiYXNlNjRfZW5jb2RlX3JlZ2lvbiwgRmJhc2U2NF9kZWNvZGVf cmVnaW9uKToKKwlBdm9pZCB1bm5lY2Vzc2FyeSBjYWxscyB0byBTQUZFX0ZSRUUgYmVmb3Jl ICdlcnJvcicuCisJKiBidWZmZXIuYyAobW91c2VfZmFjZV9vdmVybGF5X292ZXJsYXBzKToK KwkqIGVkaXRmbnMuYyAoRmdldF9wb3NfcHJvcGVydHksIGNoZWNrX3RyYW5zbGF0aW9uKToK KwkqIGV2YWwuYyAoRmZ1bmNhbGwpOgorCSogZm9udC5jIChmb250X3VucGFyc2VfeGxmZCwg Zm9udF9maW5kX2Zvcl9sZmFjZSk6CisJKiBmdGZvbnQuYyAoZnRmb250X2RyaXZlX290Zik6 CisJKiBrZXlib2FyZC5jIChlY2hvX2FkZF9rZXksIHJlYWRfZGVjb2RlZF9ldmVudF9mcm9t X21haW5fcXVldWUpCisJKG1lbnVfYmFyX2l0ZW1zLCB0b29sX2Jhcl9pdGVtcyk6CisJKiBz b3VuZC5jIChGcGxheV9zb3VuZF9pbnRlcm5hbCk6CisJKiB4ZGlzcC5jIChsb2FkX292ZXJs YXlfc3RyaW5ncywgZHVtcF9nbHlwaF9yb3cpOgorCVVzZSBhbiBvcmRpbmFyeSBhdXRvIGJ1 ZmZlciByYXRoZXIgdGhhbiBhbGxvY2EsIHNpbmNlIHRoZQorCWFsbG9jYXRpb24gc2l6ZSBp cyBmaXhlZCBhbmQgc21hbGwuCisJKiBmdGZvbnQuYzogSW5jbHVkZSA8Yy1zdHJjYXNlLmg+ LgorCShtYXRjaGluZ19wcmVmaXgpOiBOZXcgZnVuY3Rpb24uCisJKGdldF9hZHN0eWxlX3By b3BlcnR5KTogVXNlIGl0LCB0byBhdm9pZCBuZWVkIGZvciBhbGxvY2EuCisJKiBrZXlib2Fy ZC5jIChlY2hvX2FkZF9rZXkpOgorCSoga2V5bWFwLmMgKGRlc2NyaWJlX21hcCk6IFVzZSBw dHJkaWZmX3QsIG5vdCBpbnQuCisJKiBrZXlib2FyZC5jIChlY2hvX2FkZF9rZXkpOiBQcmVm ZXIgc2l6ZW9mIHRvIHN0cmxlbi4KKwkqIGtleW1hcC5jIChGZGVzY3JpYmVfYnVmZmVyX2Jp bmRpbmdzKTogVXNlIFNCWVRFUywgbm90IFNDSEFSUywKKwl3aGVuIGNvdW50aW5nIGJ5dGVz LgorCSogbGlzcC5oICh4bGlzcHN0cmR1cGEpOiBSZW1vdmUsIHJlcGxhY2luZyB3aXRoIC4u LgorCShTQUZFX0FMTE9DQV9TVFJJTkcpOiAuLi4gbmV3IG1hY3JvIHdpdGggZGlmZmVyZW50 IEFQSS4KKwlUaGlzIGZpeGVzIGEgcG9ydGFiaWxpdHkgcHJvYmxlbSwgbmFtZWx5LCBhbGxv Y2EgcmVzdWx0CisJcGFzc2VkIHRvIGFub3RoZXIgZnVuY3Rpb24uICBBbGwgdXNlcyBjaGFu Z2VkLgorCShTQUZFX0FMTE9DQSwgU0FGRV9BTExPQ0FfTElTUCk6IENoZWNrIGZvciBNQVhf QUxMT0NBLAorCW5vdCBNQVhfQUxMT0NBIC0gMS4KKwkqIHJlZ2V4LmMgKFJFR0VYX1VTRV9T QUZFX0FMTE9DQSwgUkVHRVhfU0FGRV9GUkVFKQorCShSRUdFWF9BTExPQ0FURSk6IE5ldyBt YWNyb3MuCisJKFJFR0VYX1JFQUxMT0NBVEUsIFJFR0VYX0FMTE9DQVRFX1NUQUNLLCBSRUdF WF9SRUFMTE9DQVRFX1NUQUNLKQorCShSRUdFWF9GUkVFX1NUQUNLLCBGUkVFX1ZBUklBQkxF UywgcmVfbWF0Y2hfMl9pbnRlcm5hbCk6CisJVXNlIHRoZW0uCisJKiB4ZGlzcC5jIChtZXNz YWdlMyk6IFVzZSBTQUZFX0FMTE9DQV9TVFJJTkcgcmF0aGVyIHRoYW4gZG9pbmcgaXQKKwli eSBoYW5kLgorCShkZWNvZGVfbW9kZV9zcGVjX2NvZGluZyk6IFN0b3JlIGRpcmVjdGx5IGlu dG8gYnVmIHJhdGhlciB0aGFuCisJaW50byBhbiBhbGxvY2EgdGVtcG9yYXJ5IGFuZCBjb3B5 aW5nIHRoZSB0ZW1wb3JhcnkgdG8gdGhlIGJ1Zi4KKwogMjAxNC0wOS0wNCAgSmFuIEQgIDxq aGRAZjIwLmxvY2FsZG9tYWluPgogCiAJKiB4dGVybS5jICh4X3Rlcm1faW5pdCk6IERvbid0 IGNhbGwgeF9zZXNzaW9uX2luaXRpYWxpemUgaWYgcnVubmluZwoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxNC0wOC0yOSAwNzoyOTo0NyAr MDAwMAorKysgc3JjL2FsbG9jLmMJMjAxNC0wOS0wNSAwNjowMzoyOCArMDAwMApAQCAtMjYx OCwyOSArMjYxOCwyOCBAQAogTGlzcF9PYmplY3QKIGxpc3RuIChlbnVtIGNvbnN0eXBlIHR5 cGUsIHB0cmRpZmZfdCBjb3VudCwgTGlzcF9PYmplY3QgYXJnLCAuLi4pCiB7CisgIExpc3Bf T2JqZWN0ICgqY29ucykgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CisgIHN3aXRjaCAo dHlwZSkKKyAgICB7CisgICAgY2FzZSBDT05TVFlQRV9QVVJFOiBjb25zID0gcHVyZV9jb25z OyBicmVhazsKKyAgICBjYXNlIENPTlNUWVBFX0hFQVA6IGNvbnMgPSBGY29uczsgYnJlYWs7 CisgICAgZGVmYXVsdDogZW1hY3NfYWJvcnQgKCk7CisgICAgfQorCisgIGVhc3N1bWUgKDAg PCBjb3VudCk7CisgIExpc3BfT2JqZWN0IHZhbCA9IGNvbnMgKGFyZywgUW5pbCk7CisgIExp c3BfT2JqZWN0IHRhaWwgPSB2YWw7CisKICAgdmFfbGlzdCBhcDsKLSAgcHRyZGlmZl90IGk7 Ci0gIExpc3BfT2JqZWN0IHZhbCwgKm9ianA7Ci0KLSAgLyogQ2hhbmdlIHRvIFNBRkVfQUxM T0NBIGlmIHlvdSBoaXQgdGhpcyBlYXNzZXJ0LiAgKi8KLSAgZWFzc2VydCAoY291bnQgPD0g TUFYX0FMTE9DQSAvIHdvcmRfc2l6ZSk7Ci0KLSAgb2JqcCA9IGFsbG9jYSAoY291bnQgKiB3 b3JkX3NpemUpOwotICBvYmpwWzBdID0gYXJnOwogICB2YV9zdGFydCAoYXAsIGFyZyk7Ci0g IGZvciAoaSA9IDE7IGkgPCBjb3VudDsgaSsrKQotICAgIG9ianBbaV0gPSB2YV9hcmcgKGFw LCBMaXNwX09iamVjdCk7Ci0gIHZhX2VuZCAoYXApOwotCi0gIGZvciAodmFsID0gUW5pbCwg aSA9IGNvdW50IC0gMTsgaSA+PSAwOyBpLS0pCisgIGZvciAocHRyZGlmZl90IGkgPSAxOyBp IDwgY291bnQ7IGkrKykKICAgICB7Ci0gICAgICBpZiAodHlwZSA9PSBDT05TVFlQRV9QVVJF KQotCXZhbCA9IHB1cmVfY29ucyAob2JqcFtpXSwgdmFsKTsKLSAgICAgIGVsc2UgaWYgKHR5 cGUgPT0gQ09OU1RZUEVfSEVBUCkKLQl2YWwgPSBGY29ucyAob2JqcFtpXSwgdmFsKTsKLSAg ICAgIGVsc2UKLQllbWFjc19hYm9ydCAoKTsKKyAgICAgIExpc3BfT2JqZWN0IGVsZW0gPSBj b25zICh2YV9hcmcgKGFwLCBMaXNwX09iamVjdCksIFFuaWwpOworICAgICAgWFNFVENEUiAo dGFpbCwgZWxlbSk7CisgICAgICB0YWlsID0gZWxlbTsKICAgICB9CisgIHZhX2VuZCAoYXAp OworCiAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTM2MjAsNyArMzYxOSw3IEBACiAgIHAtPmRh dGFbMV0ub2JqZWN0ID0gYjsKICAgcmV0dXJuIHZhbDsKIH0KLQorCiAjaWYgISAoZGVmaW5l ZCBVU0VfWF9UT09MS0lUIHx8IGRlZmluZWQgVVNFX0dUSykKIExpc3BfT2JqZWN0CiBtYWtl X3NhdmVfcHRyX3B0ciAodm9pZCAqYSwgdm9pZCAqYikKCj09PSBtb2RpZmllZCBmaWxlICdz cmMvYnVmZmVyLmMnCi0tLSBzcmMvYnVmZmVyLmMJMjAxNC0wOS0wMyAxNToxMDoyOSArMDAw MAorKysgc3JjL2J1ZmZlci5jCTIwMTQtMDktMDUgMDY6MDM6MjggKzAwMDAKQEAgLTMwNTMs MTMgKzMwNTMsMTUgQEAKICAgcHRyZGlmZl90IGVuZCA9IE9WRVJMQVlfUE9TSVRJT04gKE9W RVJMQVlfRU5EIChvdmVybGF5KSk7CiAgIHB0cmRpZmZfdCBuLCBpLCBzaXplOwogICBMaXNw X09iamVjdCAqdiwgdGVtOworICBMaXNwX09iamVjdCB2YnVmWzEwXTsKKyAgVVNFX1NBRkVf QUxMT0NBOwogCi0gIHNpemUgPSAxMDsKLSAgdiA9IGFsbG9jYSAoc2l6ZSAqIHNpemVvZiAq dik7CisgIHNpemUgPSBBUlJBWUVMVFMgKHZidWYpOworICB2ID0gdmJ1ZjsKICAgbiA9IG92 ZXJsYXlzX2luIChzdGFydCwgZW5kLCAwLCAmdiwgJnNpemUsIE5VTEwsIE5VTEwpOwogICBp ZiAobiA+IHNpemUpCiAgICAgewotICAgICAgdiA9IGFsbG9jYSAobiAqIHNpemVvZiAqdik7 CisgICAgICBTQUZFX05BTExPQ0EgKHYsIDEsIG4pOwogICAgICAgb3ZlcmxheXNfaW4gKHN0 YXJ0LCBlbmQsIDAsICZ2LCAmbiwgTlVMTCwgTlVMTCk7CiAgICAgfQogCkBAIC0zMDY5LDYg KzMwNzEsNyBAQAogCSAgICAhTklMUCAodGVtKSkpCiAgICAgICBicmVhazsKIAorICBTQUZF X0ZSRUUgKCk7CiAgIHJldHVybiBpIDwgbjsKIH0KIApAQCAtNDUxNywxMyArNDUyMCwxMyBA QAogICAgICAgIEZpcnN0IGNvcHkgdGhlIHZlY3RvciBjb250ZW50cywgaW4gY2FzZSBzb21l IG9mIHRoZXNlIGhvb2tzCiAgICAgICAgZG8gc3Vic2VxdWVudCBtb2RpZmljYXRpb24gb2Yg dGhlIGJ1ZmZlci4gICovCiAgICAgcHRyZGlmZl90IHNpemUgPSBsYXN0X292ZXJsYXlfbW9k aWZpY2F0aW9uX2hvb2tzX3VzZWQ7Ci0gICAgTGlzcF9PYmplY3QgKmNvcHkgPSBhbGxvY2Eg KHNpemUgKiBzaXplb2YgKmNvcHkpOworICAgIExpc3BfT2JqZWN0ICpjb3B5OwogICAgIHB0 cmRpZmZfdCBpOwogCisgICAgVVNFX1NBRkVfQUxMT0NBOworICAgIFNBRkVfQUxMT0NBX0xJ U1AgKGNvcHksIHNpemUpOwogICAgIG1lbWNweSAoY29weSwgWFZFQ1RPUiAobGFzdF9vdmVy bGF5X21vZGlmaWNhdGlvbl9ob29rcyktPmNvbnRlbnRzLAogCSAgICBzaXplICogd29yZF9z aXplKTsKLSAgICBnY3BybzEudmFyID0gY29weTsKLSAgICBnY3BybzEubnZhcnMgPSBzaXpl OwogCiAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7KQogICAgICAgewpAQCAtNDUzMiw2ICs0 NTM1LDggQEAKIAlvdmVybGF5X2kgPSBjb3B5W2krK107CiAJY2FsbF9vdmVybGF5X21vZF9o b29rcyAocHJvcF9pLCBvdmVybGF5X2ksIGFmdGVyLCBhcmcxLCBhcmcyLCBhcmczKTsKICAg ICAgIH0KKworICAgIFNBRkVfRlJFRSAoKTsKICAgfQogICBVTkdDUFJPOwogfQoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9idWZmZXIuaCcKLS0tIHNyYy9idWZmZXIuaAkyMDE0LTA5LTAy IDExOjQxOjIyICswMDAwCisrKyBzcmMvYnVmZmVyLmgJMjAxNC0wOS0wNSAwNjowMzoyOCAr MDAwMApAQCAtMTEyNywxNSArMTEyNywxNSBAQAogI2RlZmluZSBHRVRfT1ZFUkxBWVNfQVQo cG9zbiwgb3ZlcmxheXMsIG5vdmVybGF5cywgbmV4dHAsIGNocnEpCQlcCiAgIGRvIHsJCQkJ CQkJCQlcCiAgICAgcHRyZGlmZl90IG1heGxlbiA9IDQwOwkJCQkJCVwKLSAgICBvdmVybGF5 cyA9IGFsbG9jYSAobWF4bGVuICogc2l6ZW9mICpvdmVybGF5cyk7CQkJXAotICAgIG5vdmVy bGF5cyA9IG92ZXJsYXlzX2F0IChwb3NuLCBmYWxzZSwgJm92ZXJsYXlzLCAmbWF4bGVuLAkJ XAotCQkJICAgICBuZXh0cCwgTlVMTCwgY2hycSk7CQkJXAotICAgIGlmIChub3ZlcmxheXMg PiBtYXhsZW4pCQkJCQkJXAorICAgIFNBRkVfTkFMTE9DQSAob3ZlcmxheXMsIDEsIG1heGxl bik7CQkJCQlcCisgICAgKG5vdmVybGF5cykgPSBvdmVybGF5c19hdCAocG9zbiwgZmFsc2Us ICYob3ZlcmxheXMpLCAmbWF4bGVuLAlcCisJCQkgICAgICAgbmV4dHAsIE5VTEwsIGNocnEp OwkJCVwKKyAgICBpZiAoKG5vdmVybGF5cykgPiBtYXhsZW4pCQkJCQkJXAogICAgICAgewkJ CQkJCQkJCVwKIAltYXhsZW4gPSBub3ZlcmxheXM7CQkJCQkJXAotCW92ZXJsYXlzID0gYWxs b2NhIChtYXhsZW4gKiBzaXplb2YgKm92ZXJsYXlzKTsJCQlcCi0Jbm92ZXJsYXlzID0gb3Zl cmxheXNfYXQgKHBvc24sIGZhbHNlLCAmb3ZlcmxheXMsICZtYXhsZW4sCVwKLQkJCQkgbmV4 dHAsIE5VTEwsIGNocnEpOwkJCVwKKwlTQUZFX05BTExPQ0EgKG92ZXJsYXlzLCAxLCBtYXhs ZW4pOwkJCQlcCisJKG5vdmVybGF5cykgPSBvdmVybGF5c19hdCAocG9zbiwgZmFsc2UsICYo b3ZlcmxheXMpLCAmbWF4bGVuLAlcCisJCQkJICAgbmV4dHAsIE5VTEwsIGNocnEpOwkJCVwK ICAgICAgIH0JCQkJCQkJCQlcCiAgIH0gd2hpbGUgKGZhbHNlKQogCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3JjL2NhbGxpbnQuYycKLS0tIHNyYy9jYWxsaW50LmMJMjAxNC0wNi0xNyAxMzo1 MDoyMiArMDAwMAorKysgc3JjL2NhbGxpbnQuYwkyMDE0LTA5LTA1IDA2OjAzOjI4ICswMDAw CkBAIC0yOTcsNiArMjk3LDcgQEAKICAgTGlzcF9PYmplY3QgdGVtbDsKICAgTGlzcF9PYmpl Y3QgdXBfZXZlbnQ7CiAgIExpc3BfT2JqZWN0IGVuYWJsZTsKKyAgVVNFX1NBRkVfQUxMT0NB OwogICBwdHJkaWZmX3Qgc3BlY2NvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIAogICAvKiBU aGUgaW5kZXggb2YgdGhlIG5leHQgZWxlbWVudCBvZiB0aGlzX2NvbW1hbmRfa2V5cyB0byBl eGFtaW5lIGZvcgpAQCAtMzY2LDEyICszNjcsOCBAQAogICAgICAgd3JvbmdfdHlwZV9hcmd1 bWVudCAoUWNvbW1hbmRwLCBmdW5jdGlvbik7CiAgIH0KIAotICAvKiBJZiBTUEVDUyBpcyBz ZXQgdG8gYSBzdHJpbmcsIHVzZSBpdCBhcyBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQuICAqLwot ICBpZiAoU1RSSU5HUCAoc3BlY3MpKQotICAgIC8qIE1ha2UgYSBjb3B5IG9mIHN0cmluZyBz byB0aGF0IGlmIGEgR0MgcmVsb2NhdGVzIHNwZWNzLAotICAgICAgIGBzdHJpbmcnIHdpbGwg c3RpbGwgYmUgdmFsaWQuICAqLwotICAgIHN0cmluZyA9IHhsaXNwc3RyZHVwYSAoc3BlY3Mp OwotICBlbHNlCisgIC8qIElmIFNQRUNTIGlzIG5vdCBhIHN0cmluZywgaW52ZW50IG9uZS4g ICovCisgIGlmICghIFNUUklOR1AgKHNwZWNzKSkKICAgICB7CiAgICAgICBMaXNwX09iamVj dCBpbnB1dDsKICAgICAgIExpc3BfT2JqZWN0IGZ1bnZhbCA9IEZpbmRpcmVjdF9mdW5jdGlv biAoZnVuY3Rpb24sIFF0KTsKQEAgLTQxNiwxMCArNDEzLDE2IEBACiAJYXJnc1swXSA9IFFm dW5jYWxsX2ludGVyYWN0aXZlbHk7CiAJYXJnc1sxXSA9IGZ1bmN0aW9uOwogCWFyZ3NbMl0g PSBzcGVjczsKLQlyZXR1cm4gdW5iaW5kX3RvIChzcGVjY291bnQsIEZhcHBseSAoMywgYXJn cykpOworCUxpc3BfT2JqZWN0IHJlc3VsdCA9IHVuYmluZF90byAoc3BlY2NvdW50LCBGYXBw bHkgKDMsIGFyZ3MpKTsKKwlTQUZFX0ZSRUUgKCk7CisJcmV0dXJuIHJlc3VsdDsKICAgICAg IH0KICAgICB9CiAKKyAgLyogU1BFQ1MgaXMgc2V0IHRvIGEgc3RyaW5nOyB1c2UgaXQgYXMg YW4gaW50ZXJhY3RpdmUgcHJvbXB0LgorICAgICBDb3B5IGl0IHNvIHRoYXQgU1RSSU5HIHdp bGwgYmUgdmFsaWQgZXZlbiBpZiBhIEdDIHJlbG9jYXRlcyBTUEVDUy4gICovCisgIFNBRkVf QUxMT0NBX1NUUklORyAoc3RyaW5nLCBzcGVjcyk7CisKICAgLyogSGVyZSBpZiBmdW5jdGlv biBzcGVjaWZpZXMgYSBzdHJpbmcgdG8gY29udHJvbCBwYXJzaW5nIHRoZSBkZWZhdWx0cy4g ICovCiAKICAgLyogU2V0IG5leHRfZXZlbnQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IGV2ZW50 IHdpdGggcGFyYW1ldGVycy4gICovCkBAIC01MDcsMTQgKzUxMCwxNSBAQAogCWJyZWFrOwog ICAgIH0KIAotICBpZiAobWluIChNT1NUX1BPU0lUSVZFX0ZJWE5VTSwKLQkgICBtaW4gKFBU UkRJRkZfTUFYLCBTSVpFX01BWCkgLyB3b3JkX3NpemUpCi0gICAgICA8IG5hcmdzKQorICBp ZiAoTU9TVF9QT1NJVElWRV9GSVhOVU0gPCBtaW4gKFBUUkRJRkZfTUFYLCBTSVpFX01BWCkg LyB3b3JkX3NpemUKKyAgICAgICYmIE1PU1RfUE9TSVRJVkVfRklYTlVNIDwgbmFyZ3MpCiAg ICAgbWVtb3J5X2Z1bGwgKFNJWkVfTUFYKTsKIAotICBhcmdzID0gYWxsb2NhIChuYXJncyAq IHNpemVvZiAqYXJncyk7Ci0gIHZpc2FyZ3MgPSBhbGxvY2EgKG5hcmdzICogc2l6ZW9mICp2 aXNhcmdzKTsKLSAgdmFyaWVzID0gYWxsb2NhIChuYXJncyAqIHNpemVvZiAqdmFyaWVzKTsK KyAgLyogQWxsb2NhdGUgdGhlbSBhbGwgYXQgb25lIGdvLiAgVGhpcyB3YXN0ZXMgYSBiaXQg b2YgbWVtb3J5LCBidXQKKyAgICAgaXQncyBPSyB0byB0cmFkZSBzcGFjZSBmb3Igc3BlZWQu ICAqLworICBTQUZFX05BTExPQ0EgKGFyZ3MsIDMsIG5hcmdzKTsKKyAgdmlzYXJncyA9IGFy Z3MgKyBuYXJnczsKKyAgdmFyaWVzID0gKHNpZ25lZCBjaGFyICopICh2aXNhcmdzICsgbmFy Z3MpOwogCiAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQogICAgIHsKQEAgLTg3MSw3 ICs4NzUsOSBAQAogICB7CiAgICAgTGlzcF9PYmplY3QgdmFsID0gRmZ1bmNhbGwgKG5hcmdz LCBhcmdzKTsKICAgICBVTkdDUFJPOwotICAgIHJldHVybiB1bmJpbmRfdG8gKHNwZWNjb3Vu dCwgdmFsKTsKKyAgICB2YWwgPSB1bmJpbmRfdG8gKHNwZWNjb3VudCwgdmFsKTsKKyAgICBT QUZFX0ZSRUUgKCk7CisgICAgcmV0dXJuIHZhbDsKICAgfQogfQogCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3JjL2NhbGxwcm9jLmMnCi0tLSBzcmMvY2FsbHByb2MuYwkyMDE0LTA5LTAyIDA2 OjQ5OjQwICswMDAwCisrKyBzcmMvY2FsbHByb2MuYwkyMDE0LTA5LTA1IDA2OjAzOjI4ICsw MDAwCkBAIC00NjYsNyArNDY2LDcgQEAKICAgICAgICYmIFNSRUYgKHBhdGgsIDEpID09ICc6 JykKICAgICBwYXRoID0gRnN1YnN0cmluZyAocGF0aCwgbWFrZV9udW1iZXIgKDIpLCBRbmls KTsKIAotICBuZXdfYXJndiA9IFNBRkVfQUxMT0NBICgobmFyZ3MgPiA0ID8gbmFyZ3MgLSAy IDogMikgKiBzaXplb2YgKm5ld19hcmd2KTsKKyAgU0FGRV9OQUxMT0NBIChuZXdfYXJndiwg MSwgbmFyZ3MgPCA0ID8gMiA6IG5hcmdzIC0gMik7CiAKICAgewogICAgIHN0cnVjdCBnY3By byBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CkBAIC0xMTUxLDYgKzExNTEsMjUg QEAKICAgcmV0dXJuIG5ld19lbnY7CiB9CiAKKyNpZm5kZWYgRE9TX05UCisKKy8qICdleGVj JyBmYWlsZWQgaW5zaWRlIGEgY2hpbGQgcnVubmluZyBOQU1FLCB3aXRoIGVycm9yIG51bWJl ciBFUlIuCisgICBSZXBvcnQgdGhlIGVycm9yIGFuZCBleGl0IHRoZSBjaGlsZC4gICovCisK K3N0YXRpYyBfTm9yZXR1cm4gdm9pZAorZXhlY19mYWlsZWQgKGNoYXIgY29uc3QgKm5hbWUs IGludCBlcnIpCit7CisgIC8qIEF2b2lkIGRlYWRsb2NrIGlmIHRoZSBjaGlsZCdzIHBlcnJv ciB3cml0ZXMgdG8gYSBmdWxsIHBpcGU7IHRoZQorICAgICBwaXBlJ3MgcmVhZGVyIGlzIHRo ZSBwYXJlbnQsIGJ1dCB3aXRoIHZmb3JrIHRoZSBwYXJlbnQgY2FuJ3QKKyAgICAgcnVuIHVu dGlsIHRoZSBjaGlsZCBleGl0cy4gIFRydW5jYXRlIHRoZSBkaWFnbm9zdGljIGluc3RlYWQu ICAqLworICBmY250bCAoU1RERVJSX0ZJTEVOTywgRl9TRVRGTCwgT19OT05CTE9DSyk7CisK KyAgZXJybm8gPSBlcnI7CisgIGVtYWNzX3BlcnJvciAobmFtZSk7CisgIF9leGl0IChlcnIg PT0gRU5PRU5UID8gRVhJVF9FTk9FTlQgOiBFWElUX0NBTk5PVF9JTlZPS0UpOworfQorI2Vu ZGlmCisKIC8qIFRoaXMgaXMgdGhlIGxhc3QgdGhpbmcgcnVuIGluIGEgbmV3bHkgZm9ya2Vk IGluZmVyaW9yCiAgICBlaXRoZXIgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzLgogICAg Q29weSBkZXNjcmlwdG9ycyBJTiwgT1VUIGFuZCBFUlIgYXMgZGVzY3JpcHRvcnMgMCwgMSBh bmQgMi4KQEAgLTExNzQsOCArMTE5Myw2IEBACiAgIGludCBjcGlkOwogICBIQU5ETEUgaGFu ZGxlc1szXTsKICNlbHNlCi0gIGludCBleGVjX2Vycm5vOwotCiAgIHBpZF90IHBpZCA9IGdl dHBpZCAoKTsKICNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KIApAQCAtMTE5Niw2ICsxMjEzLDgg QEAKICAgICAgICBvbiB0aGF0LiAgKi8KICAgICBwd2RfdmFyID0geG1hbGxvYyAoaSArIDUp OwogI2Vsc2UKKyAgICBpZiAoTUFYX0FMTE9DQSAtIDUgPCBpKQorICAgICAgZXhlY19mYWls ZWQgKG5ld19hcmd2WzBdLCBFTk9NRU0pOwogICAgIHB3ZF92YXIgPSBhbGxvY2EgKGkgKyA1 KTsKICNlbmRpZgogICAgIHRlbXAgPSBwd2RfdmFyICsgNDsKQEAgLTEyNjIsNiArMTI4MSw4 IEBACiAgICAgICB9CiAKICAgICAvKiBuZXdfbGVuZ3RoICsgMiB0byBpbmNsdWRlIFBXRCBh bmQgdGVybWluYXRpbmcgMC4gICovCisgICAgaWYgKE1BWF9BTExPQ0EgLyBzaXplb2YgKmVu diAtIDIgPCBuZXdfbGVuZ3RoKQorICAgICAgZXhlY19mYWlsZWQgKG5ld19hcmd2WzBdLCBF Tk9NRU0pOwogICAgIGVudiA9IG5ld19lbnYgPSBhbGxvY2EgKChuZXdfbGVuZ3RoICsgMikg KiBzaXplb2YgKmVudik7CiAgICAgLyogSWYgd2UgaGF2ZSBhIFBXRCBlbnZ2YXIsIHBhc3Mg b25lIGRvd24sCiAgICAgICAgYnV0IHdpdGggY29ycmVjdGVkIHZhbHVlLiAgKi8KQEAgLTEy NzAsNiArMTI5MSw4IEBACiAKICAgICBpZiAoU1RSSU5HUCAoZGlzcGxheSkpCiAgICAgICB7 CisJaWYgKE1BWF9BTExPQ0EgLSBzaXplb2YgIkRJU1BMQVk9IiA8IFNCWVRFUyAoZGlzcGxh eSkpCisJICBleGVjX2ZhaWxlZCAobmV3X2FyZ3ZbMF0sIEVOT01FTSk7CiAJY2hhciAqdmRh dGEgPSBhbGxvY2EgKHNpemVvZiAiRElTUExBWT0iICsgU0JZVEVTIChkaXNwbGF5KSk7CiAJ c3RyY3B5ICh2ZGF0YSwgIkRJU1BMQVk9Iik7CiAJc3RyY2F0ICh2ZGF0YSwgU1NEQVRBIChk aXNwbGF5KSk7CkBAIC0xMzQ1LDE2ICsxMzY4LDcgQEAKICAgdGNzZXRwZ3JwICgwLCBwaWQp OwogCiAgIGV4ZWN2ZSAobmV3X2FyZ3ZbMF0sIG5ld19hcmd2LCBlbnYpOwotICBleGVjX2Vy cm5vID0gZXJybm87Ci0KLSAgLyogQXZvaWQgZGVhZGxvY2sgaWYgdGhlIGNoaWxkJ3MgcGVy cm9yIHdyaXRlcyB0byBhIGZ1bGwgcGlwZTsgdGhlCi0gICAgIHBpcGUncyByZWFkZXIgaXMg dGhlIHBhcmVudCwgYnV0IHdpdGggdmZvcmsgdGhlIHBhcmVudCBjYW4ndAotICAgICBydW4g dW50aWwgdGhlIGNoaWxkIGV4aXRzLiAgVHJ1bmNhdGUgdGhlIGRpYWdub3N0aWMgaW5zdGVh ZC4gICovCi0gIGZjbnRsIChTVERFUlJfRklMRU5PLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsK LQotICBlcnJubyA9IGV4ZWNfZXJybm87Ci0gIGVtYWNzX3BlcnJvciAobmV3X2FyZ3ZbMF0p OwotICBfZXhpdCAoZXhlY19lcnJubyA9PSBFTk9FTlQgPyBFWElUX0VOT0VOVCA6IEVYSVRf Q0FOTk9UX0lOVk9LRSk7CisgIGV4ZWNfZmFpbGVkIChuZXdfYXJndlswXSwgZXJybm8pOwog CiAjZWxzZSAvKiBNU0RPUyAqLwogICBwaWQgPSBydW5fbXNkb3NfY29tbWFuZCAobmV3X2Fy Z3YsIHB3ZF92YXIgKyA0LCBpbiwgb3V0LCBlcnIsIGVudik7CkBAIC0xNTQzLDIwICsxNTU3 LDEzIEBACiB2b2lkCiBpbml0X2NhbGxwcm9jICh2b2lkKQogewotICBjaGFyICpkYXRhX2Rp ciA9IGVnZXRlbnYgKCJFTUFDU0RBVEEiKTsKKyAgYm9vbCBkYXRhX2RpciA9IGVnZXRlbnYg KCJFTUFDU0RBVEEiKSAhPSAwOwogCi0gIHJlZ2lzdGVyIGNoYXIgKiBzaDsKKyAgY2hhciAq c2g7CiAgIExpc3BfT2JqZWN0IHRlbXBkaXI7CiAjaWZkZWYgSEFWRV9OUwogICBpZiAoZGF0 YV9kaXIgPT0gMCkKLSAgICB7Ci0gICAgICBjb25zdCBjaGFyICpldGNfZGlyID0gbnNfZXRj X2RpcmVjdG9yeSAoKTsKLSAgICAgIGlmIChldGNfZGlyKQotICAgICAgICB7Ci0gICAgICAg ICAgZGF0YV9kaXIgPSBhbGxvY2EgKHN0cmxlbiAoZXRjX2RpcikgKyAxKTsKLSAgICAgICAg ICBzdHJjcHkgKGRhdGFfZGlyLCBldGNfZGlyKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBk YXRhX2RpciA9PSBuc19ldGNfZGlyZWN0b3J5ICgpICE9IDA7CiAjZW5kaWYKIAogICBpZiAo IU5JTFAgKFZpbnN0YWxsYXRpb25fZGlyZWN0b3J5KSkKCj09PSBtb2RpZmllZCBmaWxlICdz cmMvY29kaW5nLmMnCi0tLSBzcmMvY29kaW5nLmMJMjAxNC0wOC0xMSAwMDo1OTozNCArMDAw MAorKysgc3JjL2NvZGluZy5jCTIwMTQtMDktMDUgMDY6MDM6MjggKzAwMDAKQEAgLTY4Njcs NiArNjg2NywxMSBAQAogfQogCiAKKy8qIE1BWF9MT09LVVAncyBtYXhpbXVtIHZhbHVlLiAg TUFYX0xPT0tVUCBpcyBhbiBpbnQgYW5kIHNvIGNhbm5vdAorICAgZXhjZWVkIElOVF9NQVgu ICBBbHNvLCBNQVhfTE9PS1VQIGlzIG11bHRpcGxpZWQgYnkgc2l6ZW9mIChpbnQpIGZvcgor ICAgYWxsb2NhLCBzbyBpdCBjYW5ub3QgZXhjZWVkIE1BWF9BTExPQ0EgLyBzaXplb2YgKGlu dCkuICAqLworZW51bSB7IE1BWF9MT09LVVBfTUFYID0gbWluIChJTlRfTUFYLCBNQVhfQUxM T0NBIC8gc2l6ZW9mIChpbnQpKSB9OworCiAvKiBSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJs ZSAob3IgbGlzdCBvZiB0aGVtKSBmcm9tIGNvZGluZyBzeXN0ZW0KICAgIGF0dHJpYnV0ZSB2 ZWN0b3IgQVRUUlMgZm9yIGVuY29kaW5nIChpZiBFTkNPREVQKSBvciBkZWNvZGluZyAoaWYK ICAgIG5vdCBFTkNPREVQKS4gKi8KQEAgLTY5MTksNyArNjkyNCw3IEBACiAJewogCSAgdmFs ID0gWENIQVJfVEFCTEUgKHRyYW5zbGF0aW9uX3RhYmxlKS0+ZXh0cmFzWzFdOwogCSAgaWYg KE5BVE5VTVAgKHZhbCkgJiYgKm1heF9sb29rdXAgPCBYRkFTVElOVCAodmFsKSkKLQkgICAg Km1heF9sb29rdXAgPSBYRkFTVElOVCAodmFsKTsKKwkgICAgKm1heF9sb29rdXAgPSBtaW4g KFhGQVNUSU5UICh2YWwpLCBNQVhfTE9PS1VQX01BWCk7CiAJfQogICAgICAgZWxzZSBpZiAo Q09OU1AgKHRyYW5zbGF0aW9uX3RhYmxlKSkKIAl7CkBAIC02OTMxLDcgKzY5MzYsNyBAQAog CSAgICAgIHsKIAkJTGlzcF9PYmplY3QgdGFpbHZhbCA9IFhDSEFSX1RBQkxFIChYQ0FSICh0 YWlsKSktPmV4dHJhc1sxXTsKIAkJaWYgKE5BVE5VTVAgKHRhaWx2YWwpICYmICptYXhfbG9v a3VwIDwgWEZBU1RJTlQgKHRhaWx2YWwpKQotCQkgICptYXhfbG9va3VwID0gWEZBU1RJTlQg KHRhaWx2YWwpOworCQkgICptYXhfbG9va3VwID0gbWluIChYRkFTVElOVCAodGFpbHZhbCks IE1BWF9MT09LVVBfTUFYKTsKIAkgICAgICB9CiAJfQogICAgIH0KQEAgLTEwMDExLDcgKzEw MDE2LDggQEAKIHsKICAgTGlzcF9PYmplY3Qgc3Vic2lkaWFyaWVzOwogICBwdHJkaWZmX3Qg YmFzZV9uYW1lX2xlbiA9IFNCWVRFUyAoU1lNQk9MX05BTUUgKGJhc2UpKTsKLSAgY2hhciAq YnVmID0gYWxsb2NhIChiYXNlX25hbWVfbGVuICsgNik7CisgIFVTRV9TQUZFX0FMTE9DQTsK KyAgY2hhciAqYnVmID0gU0FGRV9BTExPQ0EgKGJhc2VfbmFtZV9sZW4gKyA2KTsKICAgaW50 IGk7CiAKICAgbWVtY3B5IChidWYsIFNEQVRBIChTWU1CT0xfTkFNRSAoYmFzZSkpLCBiYXNl X25hbWVfbGVuKTsKQEAgLTEwMDIxLDYgKzEwMDI3LDcgQEAKICAgICAgIHN0cmNweSAoYnVm ICsgYmFzZV9uYW1lX2xlbiwgc3VmZml4ZXNbaV0pOwogICAgICAgQVNFVCAoc3Vic2lkaWFy aWVzLCBpLCBpbnRlcm4gKGJ1ZikpOwogICAgIH0KKyAgU0FGRV9GUkVFICgpOwogICByZXR1 cm4gc3Vic2lkaWFyaWVzOwogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RvYy5jJwot LS0gc3JjL2RvYy5jCTIwMTQtMDQtMDUgMTk6MzA6MzYgKzAwMDAKKysrIHNyYy9kb2MuYwky MDE0LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC01NjEsNiArNTYxLDggQEAKICAgY2hhciAq cCwgKm5hbWU7CiAgIGJvb2wgc2tpcF9maWxlID0gMDsKICAgcHRyZGlmZl90IGNvdW50Owor ICBjaGFyIGNvbnN0ICpkaXJuYW1lOworICBwdHJkaWZmX3QgZGlybGVuOwogICAvKiBQcmVs b2FkZWQgZGVmY3VzdG9tcyB1c2luZyBjdXN0b20taW5pdGlhbGl6ZS1kZWxheSBhcmUgYWRk ZWQgdG8KICAgICAgdGhpcyBsaXN0LCBidXQga2VwdCB1bmJvdW5kLiAgU2VlIGh0dHA6Ly9k ZWJidWdzLmdudS5vcmcvMTE1NjUgICovCiAgIExpc3BfT2JqZWN0IGRlbGF5ZWRfaW5pdCA9 CkBAIC01NzcsMTUgKzU3OSwyMSBAQAogICAgICAgKDApCiAjZW5kaWYgLyogQ0FOTk9UX0RV TVAgKi8KICAgICB7Ci0gICAgICBuYW1lID0gYWxsb2NhIChTQ0hBUlMgKGZpbGVuYW1lKSAr IDE0KTsKLSAgICAgIHN0cmNweSAobmFtZSwgIi4uL2V0Yy8iKTsKKyAgICAgIHN0YXRpYyBj aGFyIGNvbnN0IHNpYmxpbmdfZXRjW10gPSAiLi4vZXRjLyI7CisgICAgICBkaXJuYW1lID0g c2libGluZ19ldGM7CisgICAgICBkaXJsZW4gPSBzaXplb2Ygc2libGluZ19ldGMgLSAxOwog ICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIENIRUNLX1NUUklORyAoVmRvY19kaXJlY3Rv cnkpOwotICAgICAgbmFtZSA9IGFsbG9jYSAoU0NIQVJTIChmaWxlbmFtZSkgKyBTQ0hBUlMg KFZkb2NfZGlyZWN0b3J5KSArIDEpOwotICAgICAgc3RyY3B5IChuYW1lLCBTU0RBVEEgKFZk b2NfZGlyZWN0b3J5KSk7CisgICAgICBkaXJuYW1lID0gU1NEQVRBIChWZG9jX2RpcmVjdG9y eSk7CisgICAgICBkaXJsZW4gPSBTQllURVMgKFZkb2NfZGlyZWN0b3J5KTsKICAgICB9CisK KyAgY291bnQgPSBTUEVDUERMX0lOREVYICgpOworICBVU0VfU0FGRV9BTExPQ0E7CisgIG5h bWUgPSBTQUZFX0FMTE9DQSAoZGlybGVuICsgU0JZVEVTIChmaWxlbmFtZSkgKyAxKTsKKyAg c3RyY3B5IChuYW1lLCBkaXJuYW1lKTsKICAgc3RyY2F0IChuYW1lLCBTU0RBVEEgKGZpbGVu YW1lKSk7IAkvKioqIEFkZCB0aGlzIGxpbmUgKioqLwogCiAgIC8qIFZidWlsZF9maWxlcyBp cyBuaWwgd2hlbiB0ZW1hY3MgaXMgcnVuLCBhbmQgbm9uLW5pbCBhZnRlciB0aGF0LiAgKi8K QEAgLTYwOCw3ICs2MTYsNiBAQAogICAgICAgcmVwb3J0X2ZpbGVfZXJybm8gKCJPcGVuaW5n IGRvYyBzdHJpbmcgZmlsZSIsIGJ1aWxkX3N0cmluZyAobmFtZSksCiAJCQkgb3Blbl9lcnJu byk7CiAgICAgfQotICBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIHJlY29yZF91bndp bmRfcHJvdGVjdF9pbnQgKGNsb3NlX2ZpbGVfdW53aW5kLCBmZCk7CiAgIFZkb2NfZmlsZV9u YW1lID0gZmlsZW5hbWU7CiAgIGZpbGxlZCA9IDA7CkBAIC02MzcsNyArNjQ0LDcgQEAKICAg ICAgICAgICAgICAgICAgICYmIChlbmRbLTFdID09ICdvJyB8fCBlbmRbLTFdID09ICdjJykp CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxlbiA9 IGVuZCAtIHAgLSAyOwotICAgICAgICAgICAgICAgICAgY2hhciAqZnJvbWZpbGUgPSBhbGxv Y2EgKGxlbiArIDEpOworICAgICAgICAgICAgICAgICAgY2hhciAqZnJvbWZpbGUgPSBTQUZF X0FMTE9DQSAobGVuICsgMSk7CiAgICAgICAgICAgICAgICAgICBtZW1jcHkgKGZyb21maWxl LCAmcFsyXSwgbGVuKTsKICAgICAgICAgICAgICAgICAgIGZyb21maWxlW2xlbl0gPSAwOwog ICAgICAgICAgICAgICAgICAgaWYgKGZyb21maWxlW2xlbi0xXSA9PSAnYycpCkBAIC02ODgs NiArNjk1LDggQEAKICAgICAgIGZpbGxlZCAtPSBlbmQgLSBidWY7CiAgICAgICBtZW1tb3Zl IChidWYsIGVuZCwgZmlsbGVkKTsKICAgICB9CisKKyAgU0FGRV9GUkVFICgpOwogICByZXR1 cm4gdW5iaW5kX3RvIChjb3VudCwgUW5pbCk7CiB9CiAMCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL2VkaXRmbnMuYycKLS0tIHNyYy9lZGl0Zm5zLmMJMjAxNC0wOC0wNyAxMDoxNTo1MiAr MDAwMAorKysgc3JjL2VkaXRmbnMuYwkyMDE0LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC0z NzYsMTMgKzM3NiwxNCBAQAogICAgICAgc2V0X2J1ZmZlcl90ZW1wIChYQlVGRkVSIChvYmpl Y3QpKTsKIAogICAgICAgLyogRmlyc3QgdHJ5IHdpdGggcm9vbSBmb3IgNDAgb3ZlcmxheXMu ICAqLwotICAgICAgbm92ZXJsYXlzID0gNDA7Ci0gICAgICBvdmVybGF5X3ZlYyA9IGFsbG9j YSAobm92ZXJsYXlzICogc2l6ZW9mICpvdmVybGF5X3ZlYyk7CisgICAgICBMaXNwX09iamVj dCBvdmVybGF5X3ZlY2J1Zls0MF07CisgICAgICBub3ZlcmxheXMgPSBBUlJBWUVMVFMgKG92 ZXJsYXlfdmVjYnVmKTsKKyAgICAgIG92ZXJsYXlfdmVjID0gb3ZlcmxheV92ZWNidWY7CiAg ICAgICBub3ZlcmxheXMgPSBvdmVybGF5c19hcm91bmQgKHBvc24sIG92ZXJsYXlfdmVjLCBu b3ZlcmxheXMpOwogCiAgICAgICAvKiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDQwLAogCSBt YWtlIGVub3VnaCBzcGFjZSBmb3IgYWxsLCBhbmQgdHJ5IGFnYWluLiAgKi8KLSAgICAgIGlm IChub3ZlcmxheXMgPiA0MCkKKyAgICAgIGlmIChBUlJBWUVMVFMgKG92ZXJsYXlfdmVjYnVm KSA8IG5vdmVybGF5cykKIAl7CiAJICBTQUZFX0FMTE9DQV9MSVNQIChvdmVybGF5X3ZlYywg bm92ZXJsYXlzKTsKIAkgIG5vdmVybGF5cyA9IG92ZXJsYXlzX2Fyb3VuZCAocG9zbiwgb3Zl cmxheV92ZWMsIG5vdmVybGF5cyk7CkBAIC0xMzI1LDE3ICsxMzI2LDE2IEBACiAgIC8qIFN1 YnN0aXR1dGUgdGhlIGxvZ2luIG5hbWUgZm9yIHRoZSAmLCB1cGNhc2luZyB0aGUgZmlyc3Qg Y2hhcmFjdGVyLiAgKi8KICAgaWYgKHEpCiAgICAgewotICAgICAgcmVnaXN0ZXIgY2hhciAq cjsKLSAgICAgIExpc3BfT2JqZWN0IGxvZ2luOwotCi0gICAgICBsb2dpbiA9IEZ1c2VyX2xv Z2luX25hbWUgKG1ha2VfbnVtYmVyIChwdy0+cHdfdWlkKSk7Ci0gICAgICByID0gYWxsb2Nh IChzdHJsZW4gKHApICsgU0NIQVJTIChsb2dpbikgKyAxKTsKKyAgICAgIExpc3BfT2JqZWN0 IGxvZ2luID0gRnVzZXJfbG9naW5fbmFtZSAobWFrZV9udW1iZXIgKHB3LT5wd191aWQpKTsK KyAgICAgIFVTRV9TQUZFX0FMTE9DQTsKKyAgICAgIGNoYXIgKnIgPSBTQUZFX0FMTE9DQSAo c3RybGVuIChwKSArIFNCWVRFUyAobG9naW4pICsgMSk7CiAgICAgICBtZW1jcHkgKHIsIHAs IHEgLSBwKTsKICAgICAgIHJbcSAtIHBdID0gMDsKICAgICAgIHN0cmNhdCAociwgU1NEQVRB IChsb2dpbikpOwogICAgICAgcltxIC0gcF0gPSB1cGNhc2UgKCh1bnNpZ25lZCBjaGFyKSBy W3EgLSBwXSk7CiAgICAgICBzdHJjYXQgKHIsIHEgKyAxKTsKICAgICAgIGZ1bGwgPSBidWls ZF9zdHJpbmcgKHIpOworICAgICAgU0FGRV9GUkVFICgpOwogICAgIH0KICNlbmRpZiAvKiBB TVBFUlNBTkRfRlVMTF9OQU1FICovCiAKQEAgLTMwMTIsOCArMzAxMiwxMiBAQAogY2hlY2tf dHJhbnNsYXRpb24gKHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwgcHRyZGlm Zl90IGVuZCwKIAkJICAgTGlzcF9PYmplY3QgdmFsKQogewotICBpbnQgYnVmX3NpemUgPSAx NiwgYnVmX3VzZWQgPSAwOwotICBpbnQgKmJ1ZiA9IGFsbG9jYSAoc2l6ZW9mIChpbnQpICog YnVmX3NpemUpOworICBpbnQgaW5pdGlhbF9idWZbMTZdOworICBpbnQgKmJ1ZiA9IGluaXRp YWxfYnVmOworICBwdHJkaWZmX3QgYnVmX3NpemUgPSBBUlJBWUVMVFMgKGluaXRpYWxfYnVm KTsKKyAgaW50ICpidWZhbGxvYyA9IDA7CisgIHB0cmRpZmZfdCBidWZfdXNlZCA9IDA7Cisg IExpc3BfT2JqZWN0IHJlc3VsdCA9IFFuaWw7CiAKICAgZm9yICg7IENPTlNQICh2YWwpOyB2 YWwgPSBYQ0RSICh2YWwpKQogICAgIHsKQEAgLTMwMzgsMTIgKzMwNDIsMTEgQEAKIAogCQkg IGlmIChidWZfdXNlZCA9PSBidWZfc2l6ZSkKIAkJICAgIHsKLQkJICAgICAgaW50ICpuZXdi dWY7Ci0KLQkJICAgICAgYnVmX3NpemUgKz0gMTY7Ci0JCSAgICAgIG5ld2J1ZiA9IGFsbG9j YSAoc2l6ZW9mIChpbnQpICogYnVmX3NpemUpOwotCQkgICAgICBtZW1jcHkgKG5ld2J1Ziwg YnVmLCBzaXplb2YgKGludCkgKiBidWZfdXNlZCk7Ci0JCSAgICAgIGJ1ZiA9IG5ld2J1ZjsK KwkJICAgICAgYnVmYWxsb2MgPSB4cGFsbG9jIChidWZhbGxvYywgJmJ1Zl9zaXplLCAxLCAt MSwKKwkJCQkJICBzaXplb2YgKmJ1ZmFsbG9jKTsKKwkJICAgICAgaWYgKGJ1ZiA9PSBpbml0 aWFsX2J1ZikKKwkJCW1lbWNweSAoYnVmYWxsb2MsIGJ1Ziwgc2l6ZW9mIGluaXRpYWxfYnVm KTsKKwkJICAgICAgYnVmID0gYnVmYWxsb2M7CiAJCSAgICB9CiAJCSAgYnVmW2J1Zl91c2Vk KytdID0gU1RSSU5HX0NIQVJfQU5EX0xFTkdUSCAocCwgbGVuMSk7CiAJCSAgcG9zX2J5dGUg Kz0gbGVuMTsKQEAgLTMwNTIsMTAgKzMwNTUsMTUgQEAKIAkJYnJlYWs7CiAJICAgIH0KIAkg IGlmIChpID09IGxlbikKLQkgICAgcmV0dXJuIFhDQVIgKHZhbCk7CisJICAgIHsKKwkgICAg ICByZXN1bHQgPSBYQ0FSICh2YWwpOworCSAgICAgIGJyZWFrOworCSAgICB9CiAJfQogICAg IH0KLSAgcmV0dXJuIFFuaWw7CisKKyAgeGZyZWUgKGJ1ZmFsbG9jKTsKKyAgcmV0dXJuIHJl c3VsdDsKIH0KIAogCkBAIC00NjE3LDExICs0NjI1LDExIEBACiAgICAgICBpZiAodG1wX2lu dGVydmFsMykKIAlzZXRfdGV4dF9wcm9wZXJ0aWVzXzEgKHN0YXJ0cjEsIGVuZHIyLCBRbmls LCBidWYsIHRtcF9pbnRlcnZhbDMpOwogCisgICAgICBVU0VfU0FGRV9BTExPQ0E7CisKICAg ICAgIC8qIEZpcnN0IHJlZ2lvbiBzbWFsbGVyIHRoYW4gc2Vjb25kLiAgKi8KICAgICAgIGlm IChsZW4xX2J5dGUgPCBsZW4yX2J5dGUpCiAgICAgICAgIHsKLQkgIFVTRV9TQUZFX0FMTE9D QTsKLQogCSAgdGVtcCA9IFNBRkVfQUxMT0NBIChsZW4yX2J5dGUpOwogCiAJICAvKiBEb24n dCBwcmVjb21wdXRlIHRoZXNlIGFkZHJlc3Nlcy4gIFdlIGhhdmUgdG8gY29tcHV0ZSB0aGVt CkBAIC00NjMzLDIxICs0NjQxLDE5IEBACiAgICAgICAgICAgbWVtY3B5ICh0ZW1wLCBzdGFy dDJfYWRkciwgbGVuMl9ieXRlKTsKICAgICAgICAgICBtZW1jcHkgKHN0YXJ0MV9hZGRyICsg bGVuMl9ieXRlLCBzdGFydDFfYWRkciwgbGVuMV9ieXRlKTsKICAgICAgICAgICBtZW1jcHkg KHN0YXJ0MV9hZGRyLCB0ZW1wLCBsZW4yX2J5dGUpOwotCSAgU0FGRV9GUkVFICgpOwogICAg ICAgICB9CiAgICAgICBlbHNlCiAJLyogRmlyc3QgcmVnaW9uIG5vdCBzbWFsbGVyIHRoYW4g c2Vjb25kLiAgKi8KICAgICAgICAgewotCSAgVVNFX1NBRkVfQUxMT0NBOwotCiAJICB0ZW1w ID0gU0FGRV9BTExPQ0EgKGxlbjFfYnl0ZSk7CiAJICBzdGFydDFfYWRkciA9IEJZVEVfUE9T X0FERFIgKHN0YXJ0MV9ieXRlKTsKIAkgIHN0YXJ0Ml9hZGRyID0gQllURV9QT1NfQUREUiAo c3RhcnQyX2J5dGUpOwogICAgICAgICAgIG1lbWNweSAodGVtcCwgc3RhcnQxX2FkZHIsIGxl bjFfYnl0ZSk7CiAgICAgICAgICAgbWVtY3B5IChzdGFydDFfYWRkciwgc3RhcnQyX2FkZHIs IGxlbjJfYnl0ZSk7CiAgICAgICAgICAgbWVtY3B5IChzdGFydDFfYWRkciArIGxlbjJfYnl0 ZSwgdGVtcCwgbGVuMV9ieXRlKTsKLQkgIFNBRkVfRlJFRSAoKTsKICAgICAgICAgfQorCisg ICAgICBTQUZFX0ZSRUUgKCk7CiAgICAgICBncmFmdF9pbnRlcnZhbHNfaW50b19idWZmZXIg KHRtcF9pbnRlcnZhbDEsIHN0YXJ0MSArIGxlbjIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxlbjEsIGN1cnJlbnRfYnVmZmVyLCAwKTsKICAgICAgIGdyYWZ0X2lu dGVydmFsc19pbnRvX2J1ZmZlciAodG1wX2ludGVydmFsMiwgc3RhcnQxLAoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9ldmFsLmMnCi0tLSBzcmMvZXZhbC5jCTIwMTQtMDktMDMgMDQ6MjE6 NDAgKzAwMDAKKysrIHNyYy9ldmFsLmMJMjAxNC0wOS0wNSAwNjowMzoyOCArMDAwMApAQCAt MTI3Miw3ICsxMjcyLDEwIEBACiAKICAgeyAvKiBUaGUgZmlyc3QgY2xhdXNlIGlzIHRoZSBv bmUgdGhhdCBzaG91bGQgYmUgY2hlY2tlZCBmaXJzdCwgc28gaXQgc2hvdWxkCiAgICAgICAg YmUgYWRkZWQgdG8gaGFuZGxlcmxpc3QgbGFzdC4gIFNvIHdlIGJ1aWxkIGluIGBjbGF1c2Vz JyBhIHRhYmxlIHRoYXQKLSAgICAgICBjb250YWlucyBgaGFuZGxlcnMnIGJ1dCBpbiByZXZl cnNlIG9yZGVyLiAgKi8KKyAgICAgICBjb250YWlucyBgaGFuZGxlcnMnIGJ1dCBpbiByZXZl cnNlIG9yZGVyLiAgU0FGRV9BTExPQ0Egd29uJ3Qgd29yaworICAgICAgIGhlcmUgZHVlIHRv IHRoZSBzZXRqbXAsIHNvIGltcG9zZSBhIE1BWF9BTExPQ0EgbGltaXQuICAqLworICAgIGlm IChNQVhfQUxMT0NBIC8gd29yZF9zaXplIDwgY2xhdXNlbmIpCisgICAgICBtZW1vcnlfZnVs bCAoU0laRV9NQVgpOwogICAgIExpc3BfT2JqZWN0ICpjbGF1c2VzID0gYWxsb2NhIChjbGF1 c2VuYiAqIHNpemVvZiAqY2xhdXNlcyk7CiAgICAgTGlzcF9PYmplY3QgKnZvbGF0aWxlIGNs YXVzZXNfdm9sYXRpbGUgPSBjbGF1c2VzOwogICAgIGludCBpID0gY2xhdXNlbmI7CkBAIC0x MzExLDcgKzEzMTQsNyBAQAogCSAgICByZXR1cm4gdmFsOwogCSAgfQogICAgICAgfQotICAg IH0KKyAgfQogCiAgIHZhbCA9IGV2YWxfc3ViIChib2R5Zm9ybSk7CiAgIGhhbmRsZXJsaXN0 ID0gb2xkaGFuZGxlcmxpc3Q7CkBAIC0yNzg5LDEwICsyNzkyLDExIEBACiAJdmFsID0gKFhT VUJSIChmdW4pLT5mdW5jdGlvbi5hTUFOWSkgKG51bWFyZ3MsIGFyZ3MgKyAxKTsKICAgICAg IGVsc2UKIAl7CisJICBMaXNwX09iamVjdCBpbnRlcm5hbF9hcmdidWZbOF07CiAJICBpZiAo WFNVQlIgKGZ1biktPm1heF9hcmdzID4gbnVtYXJncykKIAkgICAgewotCSAgICAgIGludGVy bmFsX2FyZ3MgPSBhbGxvY2EgKFhTVUJSIChmdW4pLT5tYXhfYXJncwotCQkJCSAgICAgICog c2l6ZW9mICppbnRlcm5hbF9hcmdzKTsKKwkgICAgICBlYXNzZXJ0IChYU1VCUiAoZnVuKS0+ bWF4X2FyZ3MgPD0gQVJSQVlFTFRTIChpbnRlcm5hbF9hcmdidWYpKTsKKwkgICAgICBpbnRl cm5hbF9hcmdzID0gaW50ZXJuYWxfYXJnYnVmOwogCSAgICAgIG1lbWNweSAoaW50ZXJuYWxf YXJncywgYXJncyArIDEsIG51bWFyZ3MgKiB3b3JkX3NpemUpOwogCSAgICAgIGZvciAoaSA9 IG51bWFyZ3M7IGkgPCBYU1VCUiAoZnVuKS0+bWF4X2FyZ3M7IGkrKykKIAkJaW50ZXJuYWxf YXJnc1tpXSA9IFFuaWw7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2ZpbGVpby5jJwotLS0g c3JjL2ZpbGVpby5jCTIwMTQtMDktMDIgMTg6MDU6MDAgKzAwMDAKKysrIHNyYy9maWxlaW8u YwkyMDE0LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC0zOTYsMTMgKzM5Niw2IEBACiBHaXZl biBhIFVuaXggc3ludGF4IGZpbGUgbmFtZSwgcmV0dXJucyBhIHN0cmluZyBlbmRpbmcgaW4g c2xhc2guICAqLykKICAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQogewotI2lmbmRlZiBET1Nf TlQKLSAgcmVnaXN0ZXIgY29uc3QgY2hhciAqYmVnOwotI2Vsc2UKLSAgcmVnaXN0ZXIgY2hh ciAqYmVnOwotICBMaXNwX09iamVjdCB0ZW1fZm47Ci0jZW5kaWYKLSAgcmVnaXN0ZXIgY29u c3QgY2hhciAqcDsKICAgTGlzcF9PYmplY3QgaGFuZGxlcjsKIAogICBDSEVDS19TVFJJTkcg KGZpbGVuYW1lKTsKQEAgLTQxNywxMiArNDEwLDggQEAKICAgICAgIHJldHVybiBTVFJJTkdQ IChoYW5kbGVkX25hbWUpID8gaGFuZGxlZF9uYW1lIDogUW5pbDsKICAgICB9CiAKLSNpZmRl ZiBET1NfTlQKLSAgYmVnID0geGxpc3BzdHJkdXBhIChmaWxlbmFtZSk7Ci0jZWxzZQotICBi ZWcgPSBTU0RBVEEgKGZpbGVuYW1lKTsKLSNlbmRpZgotICBwID0gYmVnICsgU0JZVEVTIChm aWxlbmFtZSk7CisgIGNoYXIgKmJlZyA9IFNTREFUQSAoZmlsZW5hbWUpOworICBjaGFyIGNv bnN0ICpwID0gYmVnICsgU0JZVEVTIChmaWxlbmFtZSk7CiAKICAgd2hpbGUgKHAgIT0gYmVn ICYmICFJU19ESVJFQ1RPUllfU0VQIChwWy0xXSkKICNpZmRlZiBET1NfTlQKQEAgLTQzOCw2 ICs0MjcsMTEgQEAKICAgICByZXR1cm4gUW5pbDsKICNpZmRlZiBET1NfTlQKICAgLyogRXhw YW5zaW9uIG9mICJjOiIgdG8gZHJpdmUgYW5kIGRlZmF1bHQgZGlyZWN0b3J5LiAgKi8KKyAg TGlzcF9PYmplY3QgdGVtX2ZuOworICBVU0VfU0FGRV9BTExPQ0E7CisgIFNBRkVfQUxMT0NB X1NUUklORyAoYmVnLCBmaWxlbmFtZSk7CisgIHAgPSBiZWcgKyAocCAtIFNTREFUQSAoZmls ZW5hbWUpKTsKKwogICBpZiAocFstMV0gPT0gJzonKQogICAgIHsKICAgICAgIC8qIE1BWFBB VEhMRU4rMSBpcyBndWFyYW50ZWVkIHRvIGJlIGVub3VnaCBzcGFjZSBmb3IgZ2V0ZGVmZGly LiAgKi8KQEAgLTQ4MSw2ICs0NzUsNyBAQAogICAgICAgZG9zdG91bml4X2ZpbGVuYW1lIChi ZWcpOwogICAgICAgdGVtX2ZuID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nIChiZWcsIC0xLCBw IC0gYmVnLCAwKTsKICAgICB9CisgIFNBRkVfRlJFRSAoKTsKICAgcmV0dXJuIHRlbV9mbjsK ICNlbHNlICAvKiBET1NfTlQgKi8KICAgcmV0dXJuIG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAo YmVnLCAtMSwgcCAtIGJlZywgU1RSSU5HX01VTFRJQllURSAoZmlsZW5hbWUpKTsKQEAgLTEw MTksNyArMTAxNCw3IEBACiAjZW5kaWYKIAogICAvKiBNYWtlIGEgbG9jYWwgY29weSBvZiBO QU1FIHRvIHByb3RlY3QgaXQgZnJvbSBHQyBpbiBERUNPREVfRklMRSBiZWxvdy4gICovCi0g IG5tID0geGxpc3BzdHJkdXBhIChuYW1lKTsKKyAgU0FGRV9BTExPQ0FfU1RSSU5HIChubSwg bmFtZSk7CiAgIG5tbGltID0gbm0gKyBTQllURVMgKG5hbWUpOwogCiAjaWZkZWYgRE9TX05U CkBAIC0xMTIyLDEyICsxMTE3LDEyIEBACiAJICBpZiAoIU5JTFAgKFZ3MzJfZG93bmNhc2Vf ZmlsZV9uYW1lcykpCiAJICAgIG5hbWUgPSBGZG93bmNhc2UgKG5hbWUpOwogI2VuZGlmCisj ZWxzZSAvKiBub3QgRE9TX05UICovCisJICBpZiAoc3RyY21wIChubSwgU1NEQVRBIChuYW1l KSkgIT0gMCkKKwkgICAgbmFtZSA9IG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAobm0sIC0xLCBu bWxpbSAtIG5tLCBtdWx0aWJ5dGUpOworI2VuZGlmIC8qIG5vdCBET1NfTlQgKi8KKwkgIFNB RkVfRlJFRSAoKTsKIAkgIHJldHVybiBuYW1lOwotI2Vsc2UgLyogbm90IERPU19OVCAqLwot CSAgaWYgKHN0cmNtcCAobm0sIFNTREFUQSAobmFtZSkpID09IDApCi0JICAgIHJldHVybiBu YW1lOwotCSAgcmV0dXJuIG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAobm0sIC0xLCBubWxpbSAt IG5tLCBtdWx0aWJ5dGUpOwotI2VuZGlmIC8qIG5vdCBET1NfTlQgKi8KIAl9CiAgICAgfQog CkBAIC0xNzI5LDcgKzE3MjQsOCBAQAogCSAgZm9yIChzID0gcDsgKnMgJiYgIUlTX0RJUkVD VE9SWV9TRVAgKCpzKTsgcysrKTsKIAkgIGlmIChwWzBdID09ICd+JyAmJiBzID4gcCArIDEp CS8qIFdlJ3ZlIGdvdCAiL35zb21ldGhpbmcvIi4gICovCiAJICAgIHsKLQkgICAgICBjaGFy ICpvID0gYWxsb2NhIChzIC0gcCArIDEpOworCSAgICAgIFVTRV9TQUZFX0FMTE9DQTsKKwkg ICAgICBjaGFyICpvID0gU0FGRV9BTExPQ0EgKHMgLSBwICsgMSk7CiAJICAgICAgc3RydWN0 IHBhc3N3ZCAqcHc7CiAJICAgICAgbWVtY3B5IChvLCBwLCBzIC0gcCk7CiAJICAgICAgbyBb cyAtIHBdID0gMDsKQEAgLTE3NDAsNiArMTczNiw3IEBACiAJICAgICAgYmxvY2tfaW5wdXQg KCk7CiAJICAgICAgcHcgPSBnZXRwd25hbSAobyArIDEpOwogCSAgICAgIHVuYmxvY2tfaW5w dXQgKCk7CisJICAgICAgU0FGRV9GUkVFICgpOwogCSAgICAgIGlmIChwdykKIAkJcmV0dXJu IHA7CiAJICAgIH0KQEAgLTE3ODgsNyArMTc4NSw4IEBACiAgIC8qIEFsd2F5cyB3b3JrIG9u IGEgY29weSBvZiB0aGUgc3RyaW5nLCBpbiBjYXNlIEdDIGhhcHBlbnMgZHVyaW5nCiAgICAg IGRlY29kZSBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGNhdXNpbmcgdGhlIG9yaWdpbmFs IExpc3BfU3RyaW5nCiAgICAgIGRhdGEgdG8gYmUgcmVsb2NhdGVkLiAgKi8KLSAgbm0gPSB4 bGlzcHN0cmR1cGEgKGZpbGVuYW1lKTsKKyAgVVNFX1NBRkVfQUxMT0NBOworICBTQUZFX0FM TE9DQV9TVFJJTkcgKG5tLCBmaWxlbmFtZSk7CiAKICNpZmRlZiBET1NfTlQKICAgZG9zdG91 bml4X2ZpbGVuYW1lIChubSk7CkBAIC0xODAyLDggKzE4MDAsMTMgQEAKICAgICAvKiBTdGFy dCBvdmVyIHdpdGggdGhlIG5ldyBzdHJpbmcsIHNvIHdlIGNoZWNrIHRoZSBmaWxlLW5hbWUt aGFuZGxlcgogICAgICAgIGFnYWluLiAgSW1wb3J0YW50IHdpdGggZmlsZW5hbWVzIGxpa2Ug Ii9ob21lL2Zvby8vOi9oZWxsby8vL3RoZXJlIgogICAgICAgIHdoaWNoIHdvdWxkIHN1YnN0 aXR1dGUgdG8gIi86L2hlbGxvLy8vdGhlcmUiIHJhdGhlciB0aGFuICIvdGhlcmUiLiAgKi8K LSAgICByZXR1cm4gRnN1YnN0aXR1dGVfaW5fZmlsZV9uYW1lCi0gICAgICAobWFrZV9zcGVj aWZpZWRfc3RyaW5nIChwLCAtMSwgZW5kcCAtIHAsIG11bHRpYnl0ZSkpOworICAgIHsKKyAg ICAgIExpc3BfT2JqZWN0IHJlc3VsdAorCT0gKEZzdWJzdGl0dXRlX2luX2ZpbGVfbmFtZQor CSAgIChtYWtlX3NwZWNpZmllZF9zdHJpbmcgKHAsIC0xLCBlbmRwIC0gcCwgbXVsdGlieXRl KSkpOworICAgICAgU0FGRV9GUkVFICgpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9 CiAKICAgLyogU2VlIGlmIGFueSB2YXJpYWJsZXMgYXJlIHN1YnN0aXR1dGVkIGludG8gdGhl IHN0cmluZy4gICovCiAKQEAgLTE4MjUsNiArMTgyOCw3IEBACiAgICAgICBpZiAoIU5JTFAg KFZ3MzJfZG93bmNhc2VfZmlsZV9uYW1lcykpCiAJZmlsZW5hbWUgPSBGZG93bmNhc2UgKGZp bGVuYW1lKTsKICNlbmRpZgorICAgICAgU0FGRV9GUkVFICgpOwogICAgICAgcmV0dXJuIGZp bGVuYW1lOwogICAgIH0KIApAQCAtMTg0MywxNCArMTg0NywxNCBAQAogICAgIHsKICAgICAg IExpc3BfT2JqZWN0IHhuYW1lID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nICh4bm0sIC0xLCB4 IC0geG5tLCBtdWx0aWJ5dGUpOwogCi0gICAgICB4bmFtZSA9IEZkb3duY2FzZSAoeG5hbWUp OwotICAgICAgcmV0dXJuIHhuYW1lOworICAgICAgZmlsZW5hbWUgPSBGZG93bmNhc2UgKHhu YW1lKTsKICAgICB9CiAgIGVsc2UKICNlbmRpZgotICByZXR1cm4gKHhubSA9PSBTU0RBVEEg KGZpbGVuYW1lKQotCSAgPyBmaWxlbmFtZQotCSAgOiBtYWtlX3NwZWNpZmllZF9zdHJpbmcg KHhubSwgLTEsIHggLSB4bm0sIG11bHRpYnl0ZSkpOworICBpZiAoeG5tICE9IFNTREFUQSAo ZmlsZW5hbWUpKQorICAgIGZpbGVuYW1lID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nICh4bm0s IC0xLCB4IC0geG5tLCBtdWx0aWJ5dGUpOworICBTQUZFX0ZSRUUgKCk7CisgIHJldHVybiBm aWxlbmFtZTsKIH0KIAwKIC8qIEEgc2xpZ2h0bHkgZmFzdGVyIGFuZCBtb3JlIGNvbnZlbmll bnQgd2F5IHRvIGdldAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mbnMuYycKLS0tIHNyYy9m bnMuYwkyMDE0LTA4LTMwIDIzOjI5OjIzICswMDAwCisrKyBzcmMvZm5zLmMJMjAxNC0wOS0w NSAwNjowMzoyOCArMDAwMApAQCAtMTk5MiwxNyArMTk5MiwxNCBAQAogICAgIHJldHVybjsK ICAgcHRyZGlmZl90IGhhbGZsZW4gPSBsZW4gPj4gMTsKICAgTGlzcF9PYmplY3QgKnRtcDsK LSAgTGlzcF9PYmplY3QgdG1wdmVjID0gUW5pbDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwg Z2Nwcm8yLCBnY3BybzM7Ci0gIEdDUFJPMyAodmVjdG9yLCBwcmVkaWNhdGUsIHRtcHZlYyk7 Ci0gIGlmIChoYWxmbGVuIDwgTUFYX0FMTE9DQSAvIHdvcmRfc2l6ZSkKLSAgICB0bXAgPSBh bGxvY2EgKGhhbGZsZW4gKiB3b3JkX3NpemUpOwotICBlbHNlCi0gICAgewotICAgICAgdG1w dmVjID0gRm1ha2VfdmVjdG9yIChtYWtlX251bWJlciAoaGFsZmxlbiksIG1ha2VfbnVtYmVy ICgwKSk7Ci0gICAgICB0bXAgPSBYVkVDVE9SICh0bXB2ZWMpLT5jb250ZW50czsKLSAgICB9 CisgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgR0NQUk8yICh2ZWN0b3IsIHBy ZWRpY2F0ZSk7CisgIFVTRV9TQUZFX0FMTE9DQTsKKyAgU0FGRV9BTExPQ0FfTElTUCAodG1w LCBoYWxmbGVuKTsKKyAgZm9yIChwdHJkaWZmX3QgaSA9IDA7IGkgPCBoYWxmbGVuOyBpKysp CisgICAgdG1wW2ldID0gbWFrZV9udW1iZXIgKDApOwogICBzb3J0X3ZlY3Rvcl9pbnBsYWNl IChwcmVkaWNhdGUsIGxlbiwgWFZFQ1RPUiAodmVjdG9yKS0+Y29udGVudHMsIHRtcCk7Cisg IFNBRkVfRlJFRSAoKTsKICAgVU5HQ1BSTzsKIH0KIApAQCAtMzI4OSw3ICszMjg2LDYgQEAK ICAgaWYgKGVuY29kZWRfbGVuZ3RoIDwgMCkKICAgICB7CiAgICAgICAvKiBUaGUgZW5jb2Rp bmcgd2Fzbid0IHBvc3NpYmxlLiAqLwotICAgICAgU0FGRV9GUkVFICgpOwogICAgICAgZXJy b3IgKCJNdWx0aWJ5dGUgY2hhcmFjdGVyIGluIGRhdGEgZm9yIGJhc2U2NCBlbmNvZGluZyIp OwogICAgIH0KIApAQCAtMzQzNCw3ICszNDMwLDYgQEAKICAgaWYgKGRlY29kZWRfbGVuZ3Ro IDwgMCkKICAgICB7CiAgICAgICAvKiBUaGUgZGVjb2Rpbmcgd2Fzbid0IHBvc3NpYmxlLiAq LwotICAgICAgU0FGRV9GUkVFICgpOwogICAgICAgZXJyb3IgKCJJbnZhbGlkIGJhc2U2NCBk YXRhIik7CiAgICAgfQogCkBAIC00NTgxLDEyICs0NTc2LDEyIEBACiB7CiAgIExpc3BfT2Jq ZWN0IHRlc3QsIHNpemUsIHJlaGFzaF9zaXplLCByZWhhc2hfdGhyZXNob2xkLCB3ZWFrOwog ICBzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0IHRlc3RkZXNjOwotICBjaGFyICp1c2VkOwogICBw dHJkaWZmX3QgaTsKKyAgVVNFX1NBRkVfQUxMT0NBOwogCiAgIC8qIFRoZSB2ZWN0b3IgYHVz ZWQnIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhcmd1bWVudHMgdGhhdAogICAgICBoYXZl IGJlZW4gY29uc3VtZWQuICAqLwotICB1c2VkID0gYWxsb2NhIChuYXJncyAqIHNpemVvZiAq dXNlZCk7CisgIGNoYXIgKnVzZWQgPSBTQUZFX0FMTE9DQSAobmFyZ3MgKiBzaXplb2YgKnVz ZWQpOwogICBtZW1zZXQgKHVzZWQsIDAsIG5hcmdzICogc2l6ZW9mICp1c2VkKTsKIAogICAv KiBTZWUgaWYgdGhlcmUncyBhIGA6dGVzdCBURVNUJyBhbW9uZyB0aGUgYXJndW1lbnRzLiAg Ki8KQEAgLTQ2NTMsNiArNDY0OCw3IEBACiAgICAgaWYgKCF1c2VkW2ldKQogICAgICAgc2ln bmFsX2Vycm9yICgiSW52YWxpZCBhcmd1bWVudCBsaXN0IiwgYXJnc1tpXSk7CiAKKyAgU0FG RV9GUkVFICgpOwogICByZXR1cm4gbWFrZV9oYXNoX3RhYmxlICh0ZXN0ZGVzYywgc2l6ZSwg cmVoYXNoX3NpemUsIHJlaGFzaF90aHJlc2hvbGQsIHdlYWspOwogfQogCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2ZvbnQuYycKLS0tIHNyYy9mb250LmMJMjAxNC0wNy0yNiAxMzoxNzoy NSArMDAwMAorKysgc3JjL2ZvbnQuYwkyMDE0LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC0x Mjk5LDYgKzEyOTksOSBAQAogCiAgIHZhbCA9IEFSRUYgKGZvbnQsIEZPTlRfU0laRV9JTkRF WCk7CiAgIGVhc3NlcnQgKE5VTUJFUlAgKHZhbCkgfHwgTklMUCAodmFsKSk7CisgIGNoYXIg Zm9udF9zaXplX2luZGV4X2J1ZltzaXplb2YgIi0qIgorCQkJICAgKyBNQVggKElOVF9TVFJM RU5fQk9VTkQgKEVNQUNTX0lOVCksCisJCQkJICAxICsgREJMX01BWF8xMF9FWFAgKyAxKV07 CiAgIGlmIChJTlRFR0VSUCAodmFsKSkKICAgICB7CiAgICAgICBFTUFDU19JTlQgdiA9IFhJ TlQgKHZhbCk7CkBAIC0xMzA2LDggKzEzMDksNyBAQAogCXYgPSBwaXhlbF9zaXplOwogICAg ICAgaWYgKHYgPiAwKQogCXsKLQkgIGZbWExGRF9QSVhFTF9JTkRFWF0gPSBwID0KLQkgICAg YWxsb2NhIChzaXplb2YgIi0qIiArIElOVF9TVFJMRU5fQk9VTkQgKEVNQUNTX0lOVCkpOwor CSAgZltYTEZEX1BJWEVMX0lOREVYXSA9IHAgPSBmb250X3NpemVfaW5kZXhfYnVmOwogCSAg c3ByaW50ZiAocCwgIiUicEkiZC0qIiwgdik7CiAJfQogICAgICAgZWxzZQpAQCAtMTMxNiwy MSArMTMxOCwyMiBAQAogICBlbHNlIGlmIChGTE9BVFAgKHZhbCkpCiAgICAgewogICAgICAg ZG91YmxlIHYgPSBYRkxPQVRfREFUQSAodmFsKSAqIDEwOwotICAgICAgZltYTEZEX1BJWEVM X0lOREVYXSA9IHAgPSBhbGxvY2EgKHNpemVvZiAiKi0iICsgMSArIERCTF9NQVhfMTBfRVhQ ICsgMSk7CisgICAgICBmW1hMRkRfUElYRUxfSU5ERVhdID0gcCA9IGZvbnRfc2l6ZV9pbmRl eF9idWY7CiAgICAgICBzcHJpbnRmIChwLCAiKi0lLjBmIiwgdik7CiAgICAgfQogICBlbHNl CiAgICAgZltYTEZEX1BJWEVMX0lOREVYXSA9ICIqLSoiOwogCisgIGNoYXIgZHBpX2luZGV4 X2J1ZltzaXplb2YgIi0iICsgMiAqIElOVF9TVFJMRU5fQk9VTkQgKEVNQUNTX0lOVCldOwog ICBpZiAoSU5URUdFUlAgKEFSRUYgKGZvbnQsIEZPTlRfRFBJX0lOREVYKSkpCiAgICAgewog ICAgICAgRU1BQ1NfSU5UIHYgPSBYSU5UIChBUkVGIChmb250LCBGT05UX0RQSV9JTkRFWCkp OwotICAgICAgZltYTEZEX1JFU1hfSU5ERVhdID0gcCA9Ci0JYWxsb2NhIChzaXplb2YgIi0i ICsgMiAqIElOVF9TVFJMRU5fQk9VTkQgKEVNQUNTX0lOVCkpOworICAgICAgZltYTEZEX1JF U1hfSU5ERVhdID0gcCA9IGRwaV9pbmRleF9idWY7CiAgICAgICBzcHJpbnRmIChwLCAiJSJw SSJkLSUicEkiZCIsIHYsIHYpOwogICAgIH0KICAgZWxzZQogICAgIGZbWExGRF9SRVNYX0lO REVYXSA9ICIqLSoiOworCiAgIGlmIChJTlRFR0VSUCAoQVJFRiAoZm9udCwgRk9OVF9TUEFD SU5HX0lOREVYKSkpCiAgICAgewogICAgICAgRU1BQ1NfSU5UIHNwYWNpbmcgPSBYSU5UIChB UkVGIChmb250LCBGT05UX1NQQUNJTkdfSU5ERVgpKTsKQEAgLTEzNDIsMTMgKzEzNDUsMTYg QEAKICAgICB9CiAgIGVsc2UKICAgICBmW1hMRkRfU1BBQ0lOR19JTkRFWF0gPSAiKiI7CisK KyAgY2hhciBhdmd3aWR0aF9pbmRleF9idWZbSU5UX0JVRlNJWkVfQk9VTkQgKEVNQUNTX0lO VCldOwogICBpZiAoSU5URUdFUlAgKEFSRUYgKGZvbnQsICBGT05UX0FWR1dJRFRIX0lOREVY KSkpCiAgICAgewotICAgICAgZltYTEZEX0FWR1dJRFRIX0lOREVYXSA9IHAgPSBhbGxvY2Eg KElOVF9CVUZTSVpFX0JPVU5EIChFTUFDU19JTlQpKTsKKyAgICAgIGZbWExGRF9BVkdXSURU SF9JTkRFWF0gPSBwID0gYXZnd2lkdGhfaW5kZXhfYnVmOwogICAgICAgc3ByaW50ZiAocCwg IiUicEkiZCIsIFhJTlQgKEFSRUYgKGZvbnQsIEZPTlRfQVZHV0lEVEhfSU5ERVgpKSk7CiAg ICAgfQogICBlbHNlCiAgICAgZltYTEZEX0FWR1dJRFRIX0lOREVYXSA9ICIqIjsKKwogICBs ZW4gPSBzbnByaW50ZiAobmFtZSwgbmJ5dGVzLCAiLSVzLSVzLSVzLSVzLSVzLSVzLSVzLSVz LSVzLSVzLSVzIiwKIAkJICBmW1hMRkRfRk9VTkRSWV9JTkRFWF0sIGZbWExGRF9GQU1JTFlf SU5ERVhdLAogCQkgIGZbWExGRF9XRUlHSFRfSU5ERVhdLCBmW1hMRkRfU0xBTlRfSU5ERVhd LApAQCAtMjE4NSwxMyArMjE5MSwxNyBAQAogc3RhdGljIExpc3BfT2JqZWN0CiBmb250X3Zj b25jYXRfZW50aXR5X3ZlY3RvcnMgKExpc3BfT2JqZWN0IGxpc3QpCiB7Ci0gIGludCBuYXJn cyA9IFhJTlQgKEZsZW5ndGggKGxpc3QpKTsKLSAgTGlzcF9PYmplY3QgKmFyZ3MgPSBhbGxv Y2EgKHdvcmRfc2l6ZSAqIG5hcmdzKTsKLSAgaW50IGk7CisgIEVNQUNTX0lOVCBuYXJncyA9 IFhGQVNUSU5UIChGbGVuZ3RoIChsaXN0KSk7CisgIExpc3BfT2JqZWN0ICphcmdzOworICBV U0VfU0FGRV9BTExPQ0E7CisgIFNBRkVfQUxMT0NBX0xJU1AgKGFyZ3MsIG5hcmdzKTsKKyAg cHRyZGlmZl90IGk7CiAKICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyssIGxpc3QgPSBY Q0RSIChsaXN0KSkKICAgICBhcmdzW2ldID0gWENBUiAobGlzdCk7Ci0gIHJldHVybiBGdmNv bmNhdCAobmFyZ3MsIGFyZ3MpOworICBMaXNwX09iamVjdCByZXN1bHQgPSBGdmNvbmNhdCAo bmFyZ3MsIGFyZ3MpOworICBTQUZFX0ZSRUUgKCk7CisgIHJldHVybiByZXN1bHQ7CiB9CiAK IApAQCAtMzIxOSw5ICszMjI5LDEwIEBACiAgICAgICB2YWwgPSBhdHRyc1tMRkFDRV9GQU1J TFlfSU5ERVhdOwogICAgICAgdmFsID0gZm9udF9pbnRlcm5fcHJvcCAoU1NEQVRBICh2YWwp LCBTQllURVMgKHZhbCksIDEpOwogICAgIH0KKyAgTGlzcF9PYmplY3QgZmFtaWx5YnVmWzNd OwogICBpZiAoTklMUCAodmFsKSkKICAgICB7Ci0gICAgICBmYW1pbHkgPSBhbGxvY2EgKChz aXplb2YgZmFtaWx5WzBdKSAqIDIpOworICAgICAgZmFtaWx5ID0gZmFtaWx5YnVmOwogICAg ICAgZmFtaWx5WzBdID0gUW5pbDsKICAgICAgIGZhbWlseVsxXSA9IHplcm9fdmVjdG9yOwkv KiB0ZXJtaW5hdG9yLiAgKi8KICAgICB9CkBAIC0zMjQyLDcgKzMyNTMsNyBAQAogCX0KICAg ICAgIGVsc2UKIAl7Ci0JICBmYW1pbHkgPSBhbGxvY2EgKChzaXplb2YgZmFtaWx5WzBdKSAq IDMpOworCSAgZmFtaWx5ID0gZmFtaWx5YnVmOwogCSAgaSA9IDA7CiAJICBmYW1pbHlbaSsr XSA9IHZhbDsKIAkgIGlmIChOSUxQIChBUkVGIChzcGVjLCBGT05UX0ZBTUlMWV9JTkRFWCkp KQpAQCAtMzUyOSw4ICszNTQwLDkgQEAKICAgICAgIHN0cnVjdCBmb250X2RyaXZlcl9saXN0 ICoqbGlzdF90YWJsZSwgKipuZXh0OwogICAgICAgTGlzcF9PYmplY3QgdGFpbDsKICAgICAg IGludCBpOworICAgICAgVVNFX1NBRkVfQUxMT0NBOwogCi0gICAgICBsaXN0X3RhYmxlID0g YWxsb2NhIChzaXplb2YgbGlzdF90YWJsZVswXSAqIChudW1fZm9udF9kcml2ZXJzICsgMSkp OworICAgICAgU0FGRV9OQUxMT0NBIChsaXN0X3RhYmxlLCAxLCBudW1fZm9udF9kcml2ZXJz ICsgMSk7CiAgICAgICBmb3IgKGkgPSAwLCB0YWlsID0gbmV3X2RyaXZlcnM7ICEgTklMUCAo dGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKIAl7CiAJICBmb3IgKGxpc3QgPSBmLT5mb250 X2RyaXZlcl9saXN0OyBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkKQEAgLTM1NTEsNiArMzU2 Myw3IEBACiAJICBuZXh0ID0gJigqbmV4dCktPm5leHQ7CiAJfQogICAgICAgKm5leHQgPSBO VUxMOworICAgICAgU0FGRV9GUkVFICgpOwogCiAgICAgICBpZiAoISBmLT5mb250X2RyaXZl cl9saXN0LT5vbikKIAl7IC8qIE5vbmUgb2YgdGhlIGRyaXZlcnMgaXMgZW5hYmxlZDogZW5h YmxlIHRoZW0gYWxsLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mb250c2V0LmMnCi0tLSBz cmMvZm9udHNldC5jCTIwMTQtMDgtMTEgMDA6NTk6MzQgKzAwMDAKKysrIHNyYy9mb250c2V0 LmMJMjAxNC0wOS0wNSAwNjowMzoyOCArMDAwMApAQCAtMTA3OSwxMCArMTA3OSwxMSBAQAog ICAgICAgLyogSWYgUEFUVEVSTiBpcyBub3QgZnVsbCBYTEZEIHdlIGNvbnZlcnQgIioiIHRv ICIuKiIuICBPdGhlcndpc2UKIAkgd2UgY29udmVydCAiKiIgdG8gIlteLV0qIiB3aGljaCBp cyBtdWNoIGZhc3RlciBpbiByZWd1bGFyCiAJIGV4cHJlc3Npb24gbWF0Y2hpbmcuICAqLwot ICAgICAgaWYgKG5kYXNoZXMgPCAxNCkKLQlwMSA9IHJlZ2V4ID0gYWxsb2NhIChTQllURVMg KHBhdHRlcm4pICsgMiAqIG5zdGFycyArIDIgKiBuZXNjcyArIDEpOwotICAgICAgZWxzZQot CXAxID0gcmVnZXggPSBhbGxvY2EgKFNCWVRFUyAocGF0dGVybikgKyA1ICogbnN0YXJzICsg MiAqIG5lc2NzICsgMSk7CisgICAgICBwdHJkaWZmX3QgcmVnZXhzaXplID0gKFNCWVRFUyAo cGF0dGVybikKKwkJCSAgICAgKyAobmRhc2hlcyA8IDE0ID8gMiA6IDUpICogbnN0YXJzCisJ CQkgICAgICsgMiAqIG5lc2NzICsgMSk7CisgICAgICBVU0VfU0FGRV9BTExPQ0E7CisgICAg ICBwMSA9IHJlZ2V4ID0gU0FGRV9BTExPQ0EgKHJlZ2V4c2l6ZSk7CiAKICAgICAgICpwMSsr ID0gJ14nOwogICAgICAgZm9yIChwMCA9IFNEQVRBIChwYXR0ZXJuKTsgKnAwOyBwMCsrKQpA QCAtMTExMCw2ICsxMTExLDcgQEAKIAogICAgICAgVmNhY2hlZF9mb250c2V0X2RhdGEgPSBG Y29ucyAoYnVpbGRfc3RyaW5nIChTU0RBVEEgKHBhdHRlcm4pKSwKIAkJCQkgICAgYnVpbGRf c3RyaW5nICgoY2hhciAqKSByZWdleCkpOworICAgICAgU0FGRV9GUkVFICgpOwogICAgIH0K IAogICByZXR1cm4gQ0FDSEVEX0ZPTlRTRVRfUkVHRVg7CkBAIC0xODkyLDcgKzE4OTQsOSBA QAogCiAgIC8qIFJlY29kZSBmb250c2V0cyByZWFsaXplZCBvbiBGUkFNRSBmcm9tIHRoZSBi YXNlIGZvbnRzZXQgRk9OVFNFVAogICAgICBpbiB0aGUgdGFibGUgYHJlYWxpemVkJy4gICov Ci0gIHJlYWxpemVkWzBdID0gYWxsb2NhICh3b3JkX3NpemUgKiBBU0laRSAoVmZvbnRzZXRf dGFibGUpKTsKKyAgVVNFX1NBRkVfQUxMT0NBOworICBTQUZFX0FMTE9DQV9MSVNQIChyZWFs aXplZFswXSwgMiAqIEFTSVpFIChWZm9udHNldF90YWJsZSkpOworICByZWFsaXplZFsxXSA9 IHJlYWxpemVkWzBdICsgQVNJWkUgKFZmb250c2V0X3RhYmxlKTsKICAgZm9yIChpID0gaiA9 IDA7IGkgPCBBU0laRSAoVmZvbnRzZXRfdGFibGUpOyBpKyspCiAgICAgewogICAgICAgZWx0 ID0gRk9OVFNFVF9GUk9NX0lEIChpKTsKQEAgLTE5MDMsNyArMTkwNyw2IEBACiAgICAgfQog ICByZWFsaXplZFswXVtqXSA9IFFuaWw7CiAKLSAgcmVhbGl6ZWRbMV0gPSBhbGxvY2EgKHdv cmRfc2l6ZSAqIEFTSVpFIChWZm9udHNldF90YWJsZSkpOwogICBmb3IgKGkgPSBqID0gMDsg ISBOSUxQIChyZWFsaXplZFswXVtpXSk7IGkrKykKICAgICB7CiAgICAgICBlbHQgPSBGT05U U0VUX0RFRkFVTFQgKHJlYWxpemVkWzBdW2ldKTsKQEAgLTE5OTUsNiArMTk5OCw3IEBACiAJ YnJlYWs7CiAgICAgfQogCisgIFNBRkVfRlJFRSAoKTsKICAgcmV0dXJuIHRhYmxlc1swXTsK IH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mcmFtZS5jJwotLS0gc3JjL2ZyYW1lLmMJ MjAxNC0wOS0wMyAxNToxMDoyOSArMDAwMAorKysgc3JjL2ZyYW1lLmMJMjAxNC0wOS0wNSAw NjowMzoyOCArMDAwMApAQCAtOTk0LDIyICs5OTQsMjQgQEAKICAgICB7CiAgICAgICBjaGFy ICpuYW1lID0gMCwgKnR5cGUgPSAwOwogICAgICAgTGlzcF9PYmplY3QgdHR5LCB0dHlfdHlw ZTsKKyAgICAgIFVTRV9TQUZFX0FMTE9DQTsKIAogICAgICAgdHR5ID0gZ2V0X2Z1dHVyZV9m cmFtZV9wYXJhbQogICAgICAgICAoUXR0eSwgcGFybXMsIChGUkFNRV9URVJNQ0FQX1AgKFhG UkFNRSAoc2VsZWN0ZWRfZnJhbWUpKQogICAgICAgICAgICAgICAgICAgICAgICA/IEZSQU1F X1RUWSAoWEZSQU1FIChzZWxlY3RlZF9mcmFtZSkpLT5uYW1lCiAgICAgICAgICAgICAgICAg ICAgICAgIDogTlVMTCkpOwogICAgICAgaWYgKCFOSUxQICh0dHkpKQotCW5hbWUgPSB4bGlz cHN0cmR1cGEgKHR0eSk7CisJU0FGRV9BTExPQ0FfU1RSSU5HIChuYW1lLCB0dHkpOwogCiAg ICAgICB0dHlfdHlwZSA9IGdldF9mdXR1cmVfZnJhbWVfcGFyYW0KICAgICAgICAgKFF0dHlf dHlwZSwgcGFybXMsIChGUkFNRV9URVJNQ0FQX1AgKFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRlJBTUVfVFRZIChYRlJBTUUgKHNl bGVjdGVkX2ZyYW1lKSktPnR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5V TEwpKTsKICAgICAgIGlmICghTklMUCAodHR5X3R5cGUpKQotCXR5cGUgPSB4bGlzcHN0cmR1 cGEgKHR0eV90eXBlKTsKKwlTQUZFX0FMTE9DQV9TVFJJTkcgKHR5cGUsIHR0eV90eXBlKTsK IAogICAgICAgdCA9IGluaXRfdHR5IChuYW1lLCB0eXBlLCAwKTsgLyogRXJyb3JzIGFyZSBu b3QgZmF0YWwuICAqLworICAgICAgU0FGRV9GUkVFICgpOwogICAgIH0KIAogICBmID0gbWFr ZV90ZXJtaW5hbF9mcmFtZSAodCk7CkBAIC0zMDE3LDE0ICszMDE5LDE0IEBACiAjaWZkZWYg SEFWRV9YX1dJTkRPV1MKICAgYm9vbCBpY29uX2xlZnRfbm9fY2hhbmdlID0gMCwgaWNvbl90 b3Bfbm9fY2hhbmdlID0gMDsKICNlbmRpZgotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3By bzI7CiAKICAgaSA9IDA7CiAgIGZvciAodGFpbCA9IGFsaXN0OyBDT05TUCAodGFpbCk7IHRh aWwgPSBYQ0RSICh0YWlsKSkKICAgICBpKys7CiAKLSAgcGFybXMgPSBhbGxvY2EgKGkgKiBz aXplb2YgKnBhcm1zKTsKLSAgdmFsdWVzID0gYWxsb2NhIChpICogc2l6ZW9mICp2YWx1ZXMp OworICBVU0VfU0FGRV9BTExPQ0E7CisgIFNBRkVfQUxMT0NBX0xJU1AgKHBhcm1zLCAyICog aSk7CisgIHZhbHVlcyA9IHBhcm1zICsgaTsKIAogICAvKiBFeHRyYWN0IHBhcm0gbmFtZXMg YW5kIHZhbHVlcyBpbnRvIHRob3NlIHZlY3RvcnMuICAqLwogCkBAIC0zMDQxLDEwICszMDQz LDYgQEAKICAgLyogVEFJTCBhbmQgQUxJU1QgYXJlIG5vdCB1c2VkIGFnYWluIGJlbG93IGhl cmUuICAqLwogICBhbGlzdCA9IHRhaWwgPSBRbmlsOwogCi0gIEdDUFJPMiAoKnBhcm1zLCAq dmFsdWVzKTsKLSAgZ2Nwcm8xLm52YXJzID0gaTsKLSAgZ2Nwcm8yLm52YXJzID0gaTsKLQog ICAvKiBUaGVyZSBpcyBubyBuZWVkIHRvIGdjcHJvIExFRlQsIFRPUCwgSUNPTl9MRUZULCBv ciBJQ09OX1RPUCwKICAgICAgYmVjYXVzZSB0aGVpciB2YWx1ZXMgYXBwZWFyIGluIFZBTFVF UyBhbmQgc3RyaW5ncyBhcmUgbm90IHZhbGlkLiAgKi8KICAgdG9wID0gbGVmdCA9IFF1bmJv dW5kOwpAQCAtMzI3Myw3ICszMjcxLDcgQEAKICNlbmRpZiAvKiBIQVZFX1hfV0lORE9XUyAq LwogICB9CiAKLSAgVU5HQ1BSTzsKKyAgU0FGRV9GUkVFICgpOwogfQogCiAKQEAgLTQwMTAs MTAgKzQwMDgsNiBAQAogc3RhdGljIExpc3BfT2JqZWN0CiB4cmRiX2dldF9yZXNvdXJjZSAo WHJtRGF0YWJhc2UgcmRiLCBMaXNwX09iamVjdCBhdHRyaWJ1dGUsIExpc3BfT2JqZWN0IGNs YXNzLCBMaXNwX09iamVjdCBjb21wb25lbnQsIExpc3BfT2JqZWN0IHN1YmNsYXNzKQogewot ICByZWdpc3RlciBjaGFyICp2YWx1ZTsKLSAgY2hhciAqbmFtZV9rZXk7Ci0gIGNoYXIgKmNs YXNzX2tleTsKLQogICBDSEVDS19TVFJJTkcgKGF0dHJpYnV0ZSk7CiAgIENIRUNLX1NUUklO RyAoY2xhc3MpOwogCkBAIC00MDI4LDE3ICs0MDIyLDIwIEBACiAKICAgLyogQWxsb2NhdGUg c3BhY2UgZm9yIHRoZSBjb21wb25lbnRzLCB0aGUgZG90cyB3aGljaCBzZXBhcmF0ZSB0aGVt LAogICAgICBhbmQgdGhlIGZpbmFsICdcMCcuICBNYWtlIHRoZW0gYmlnIGVub3VnaCBmb3Ig dGhlIHdvcnN0IGNhc2UuICAqLwotICBuYW1lX2tleSA9IGFsbG9jYSAoU0JZVEVTIChWeF9y ZXNvdXJjZV9uYW1lKQotCQkgICAgICsgKFNUUklOR1AgKGNvbXBvbmVudCkKLQkJCT8gU0JZ VEVTIChjb21wb25lbnQpIDogMCkKLQkJICAgICArIFNCWVRFUyAoYXR0cmlidXRlKQotCQkg ICAgICsgMyk7CisgIHB0cmRpZmZfdCBuYW1lX2tleXNpemUgPSAoU0JZVEVTIChWeF9yZXNv dXJjZV9uYW1lKQorCQkJICAgICsgKFNUUklOR1AgKGNvbXBvbmVudCkKKwkJCSAgICAgICA/ IFNCWVRFUyAoY29tcG9uZW50KSA6IDApCisJCQkgICAgKyBTQllURVMgKGF0dHJpYnV0ZSkK KwkJCSAgICArIDMpOwogCi0gIGNsYXNzX2tleSA9IGFsbG9jYSAoU0JZVEVTIChWeF9yZXNv dXJjZV9jbGFzcykKLQkJICAgICAgKyBTQllURVMgKGNsYXNzKQotCQkgICAgICArIChTVFJJ TkdQIChzdWJjbGFzcykKLQkJCSA/IFNCWVRFUyAoc3ViY2xhc3MpIDogMCkKLQkJICAgICAg KyAzKTsKKyAgcHRyZGlmZl90IGNsYXNzX2tleXNpemUgPSAoU0JZVEVTIChWeF9yZXNvdXJj ZV9jbGFzcykKKwkJCSAgICAgKyBTQllURVMgKGNsYXNzKQorCQkJICAgICArIChTVFJJTkdQ IChzdWJjbGFzcykKKwkJCQk/IFNCWVRFUyAoc3ViY2xhc3MpIDogMCkKKwkJCSAgICAgKyAz KTsKKyAgVVNFX1NBRkVfQUxMT0NBOworICBjaGFyICpuYW1lX2tleSA9IFNBRkVfQUxMT0NB IChuYW1lX2tleXNpemUgKyBjbGFzc19rZXlzaXplKTsKKyAgY2hhciAqY2xhc3Nfa2V5ID0g bmFtZV9rZXkgKyBuYW1lX2tleXNpemU7CiAKICAgLyogU3RhcnQgd2l0aCBlbWFjcy5GUkFN RU5BTUUgZm9yIHRoZSBuYW1lICh0aGUgc3BlY2lmaWMgb25lKQogICAgICBhbmQgd2l0aCBg RW1hY3MnIGZvciB0aGUgY2xhc3Mga2V5ICh0aGUgZ2VuZXJhbCBvbmUpLiAgKi8KQEAgLTQw NjAsNyArNDA1Nyw4IEBACiAgIHN0cmNhdCAobmFtZV9rZXksICIuIik7CiAgIHN0cmNhdCAo bmFtZV9rZXksIFNTREFUQSAoYXR0cmlidXRlKSk7CiAKLSAgdmFsdWUgPSB4X2dldF9zdHJp bmdfcmVzb3VyY2UgKHJkYiwgbmFtZV9rZXksIGNsYXNzX2tleSk7CisgIGNoYXIgKnZhbHVl ID0geF9nZXRfc3RyaW5nX3Jlc291cmNlIChyZGIsIG5hbWVfa2V5LCBjbGFzc19rZXkpOwor ICBTQUZFX0ZSRUUoKTsKIAogICBpZiAodmFsdWUgJiYgKnZhbHVlKQogICAgIHJldHVybiBi dWlsZF9zdHJpbmcgKHZhbHVlKTsKQEAgLTQxMTIsOCArNDExMCwxMCBAQAogCiAgIC8qIEFs bG9jYXRlIHNwYWNlIGZvciB0aGUgY29tcG9uZW50cywgdGhlIGRvdHMgd2hpY2ggc2VwYXJh dGUgdGhlbSwKICAgICAgYW5kIHRoZSBmaW5hbCAnXDAnLiAgKi8KLSAgY2hhciAqbmFtZV9r ZXkgPSBTQUZFX0FMTE9DQSAoaW52b2NhdGlvbl9uYW1lbGVuICsgc3RybGVuIChhdHRyaWJ1 dGUpICsgMik7Ci0gIGNoYXIgKmNsYXNzX2tleSA9IGFsbG9jYSAoKHNpemVvZiAoRU1BQ1Nf Q0xBU1MpIC0gMSkgKyBzdHJsZW4gKGNsYXNzKSArIDIpOworICBwdHJkaWZmX3QgbmFtZV9r ZXlzaXplID0gaW52b2NhdGlvbl9uYW1lbGVuICsgc3RybGVuIChhdHRyaWJ1dGUpICsgMjsK KyAgcHRyZGlmZl90IGNsYXNzX2tleXNpemUgPSBzaXplb2YgKEVNQUNTX0NMQVNTKSAtIDEg KyBzdHJsZW4gKGNsYXNzKSArIDI7CisgIGNoYXIgKm5hbWVfa2V5ID0gU0FGRV9BTExPQ0Eg KG5hbWVfa2V5c2l6ZSArIGNsYXNzX2tleXNpemUpOworICBjaGFyICpjbGFzc19rZXkgPSBu YW1lX2tleSArIG5hbWVfa2V5c2l6ZTsKIAogICBlc3ByaW50ZiAobmFtZV9rZXksICIlcy4l cyIsIFNTREFUQSAoVmludm9jYXRpb25fbmFtZSksIGF0dHJpYnV0ZSk7CiAgIHNwcmludGYg KGNsYXNzX2tleSwgIiVzLiVzIiwgRU1BQ1NfQ0xBU1MsIGNsYXNzKTsKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMvZnRmb250LmMnCi0tLSBzcmMvZnRmb250LmMJMjAxNC0wOC0yNSAwNzow MDo0MiArMDAwMAorKysgc3JjL2Z0Zm9udC5jCTIwMTQtMDktMDUgMDY6MDM6MjggKzAwMDAK QEAgLTI0LDYgKzI0LDggQEAKICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4K ICNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4KIAorI2luY2x1ZGUgPGMtc3Ry Y2FzZS5oPgorCiAjaW5jbHVkZSAibGlzcC5oIgogI2luY2x1ZGUgImRpc3BleHRlcm4uaCIK ICNpbmNsdWRlICJmcmFtZS5oIgpAQCAtMTQwLDYgKzE0MiwxMiBAQAogICAgIHsgTlVMTCB9 CiAgIH07CiAKK3N0YXRpYyBib29sCittYXRjaGluZ19wcmVmaXggKGNoYXIgY29uc3QgKnN0 ciwgcHRyZGlmZl90IGxlbiwgY2hhciBjb25zdCAqcGF0KQoreworICByZXR1cm4gbGVuID09 IHN0cmxlbiAocGF0KSAmJiBjX3N0cm5jYXNlY21wIChzdHIsIHBhdCwgbGVuKSA9PSAwOwor fQorCiAvKiBEaXJ0eSBoYWNrIGZvciBoYW5kaW5nIEFEU1RZTEUgcHJvcGVydHkuCiAKICAg IEZvbnRjb25maWcgKGFjdHVhbGx5IHRoZSB1bmRlcmx5aW5nIEZyZWVUeXBlKSBnaXZlcyBz dWNoIEFEU1RZTEUKQEAgLTE3MSwxOCArMTc5LDEwIEBACiAgICAgcmV0dXJuIFFuaWw7CiAg IHN0ciA9IChjaGFyICopIGZjc3RyOwogICBmb3IgKGVuZCA9IHN0cjsgKmVuZCAmJiAqZW5k ICE9ICcgJzsgZW5kKyspOwotICBpZiAoKmVuZCkKLSAgICB7Ci0gICAgICBjaGFyICpuZXdz dHIgPSBhbGxvY2EgKGVuZCAtIHN0ciArIDEpOwotICAgICAgbWVtY3B5IChuZXdzdHIsIHN0 ciwgZW5kIC0gc3RyKTsKLSAgICAgIG5ld3N0cltlbmQgLSBzdHJdID0gJ1wwJzsKLSAgICAg IGVuZCA9IG5ld3N0ciArIChlbmQgLSBzdHIpOwotICAgICAgc3RyID0gbmV3c3RyOwotICAg IH0KLSAgaWYgKHhzdHJjYXNlY21wIChzdHIsICJSZWd1bGFyIikgPT0gMAotICAgICAgfHwg eHN0cmNhc2VjbXAgKHN0ciwgIkJvbGQiKSA9PSAwCi0gICAgICB8fCB4c3RyY2FzZWNtcCAo c3RyLCAiT2JsaXF1ZSIpID09IDAKLSAgICAgIHx8IHhzdHJjYXNlY21wIChzdHIsICJJdGFs aWMiKSA9PSAwKQorICBpZiAobWF0Y2hpbmdfcHJlZml4IChzdHIsIGVuZCAtIHN0ciwgIlJl Z3VsYXIiKQorICAgICAgfHwgbWF0Y2hpbmdfcHJlZml4IChzdHIsIGVuZCAtIHN0ciwgIkJv bGQiKQorICAgICAgfHwgbWF0Y2hpbmdfcHJlZml4IChzdHIsIGVuZCAtIHN0ciwgIk9ibGlx dWUiKQorICAgICAgfHwgbWF0Y2hpbmdfcHJlZml4IChzdHIsIGVuZCAtIHN0ciwgIkl0YWxp YyIpKQogICAgIHJldHVybiBRbmlsOwogICBhZHN0eWxlID0gZm9udF9pbnRlcm5fcHJvcCAo c3RyLCBlbmQgLSBzdHIsIDEpOwogICBpZiAoZm9udF9zdHlsZV90b192YWx1ZSAoRk9OVF9X SURUSF9JTkRFWCwgYWRzdHlsZSwgMCkgPj0gMCkKQEAgLTU3Myw3ICs1NzMsOCBAQAogZnRm b250X2dldF9jaGFyc2V0IChMaXNwX09iamVjdCByZWdpc3RyeSkKIHsKICAgY2hhciAqc3Ry ID0gU1NEQVRBIChTWU1CT0xfTkFNRSAocmVnaXN0cnkpKTsKLSAgY2hhciAqcmUgPSBhbGxv Y2EgKFNCWVRFUyAoU1lNQk9MX05BTUUgKHJlZ2lzdHJ5KSkgKiAyICsgMSk7CisgIFVTRV9T QUZFX0FMTE9DQTsKKyAgY2hhciAqcmUgPSBTQUZFX0FMTE9DQSAoU0JZVEVTIChTWU1CT0xf TkFNRSAocmVnaXN0cnkpKSAqIDIgKyAxKTsKICAgTGlzcF9PYmplY3QgcmVnZXhwOwogICBp bnQgaSwgajsKIApAQCAtNTg5LDYgKzU5MCw3IEBACiAgICAgfQogICByZVtqXSA9ICdcMCc7 CiAgIHJlZ2V4cCA9IG1ha2VfdW5pYnl0ZV9zdHJpbmcgKHJlLCBqKTsKKyAgU0FGRV9GUkVF ICgpOwogICBmb3IgKGkgPSAwOyBmY19jaGFyc2V0X3RhYmxlW2ldLm5hbWU7IGkrKykKICAg ICBpZiAoZmFzdF9jX3N0cmluZ19tYXRjaF9pZ25vcmVfY2FzZQogCShyZWdleHAsIGZjX2No YXJzZXRfdGFibGVbaV0ubmFtZSwKQEAgLTE2ODgsNyArMTY5MCw4IEBACiAJZWxzZSBpZiAo ISBvdGYpCiAJICByZXR1cm4gMDsKIAlmb3IgKG4gPSAxOyBzcGVjLT5mZWF0dXJlc1tpXVtu XTsgbisrKTsKLQl0YWdzID0gYWxsb2NhIChzaXplb2YgKE9URl9UYWcpICogbik7CisJVVNF X1NBRkVfQUxMT0NBOworCVNBRkVfTkFMTE9DQSAodGFncywgMSwgbik7CiAJZm9yIChuID0g MCwgbmVnYXRpdmUgPSAwOyBzcGVjLT5mZWF0dXJlc1tpXVtuXTsgbisrKQogCSAgewogCSAg ICBpZiAoc3BlYy0+ZmVhdHVyZXNbaV1bbl0gPT0gMHhGRkZGRkZGRikKQEAgLTE2OTgsMTYg KzE3MDEsMTcgQEAKIAkgICAgZWxzZQogCSAgICAgIHRhZ3Nbbl0gPSBzcGVjLT5mZWF0dXJl c1tpXVtuXTsKIAkgIH0KLSNpZmRlZiBNMTdOX0ZMVF9VU0VfTkVXX0ZFQVRVUkUKLQlpZiAo T1RGX2NoZWNrX2ZlYXR1cmVzIChvdGYsIGkgPT0gMCwgc3BlYy0+c2NyaXB0LCBzcGVjLT5s YW5nc3lzLAotCQkJCXRhZ3MsIG4gLSBuZWdhdGl2ZSkgIT0gMSkKLQkgIHJldHVybiAwOwot I2Vsc2UgIC8qIG5vdCBNMTdOX0ZMVF9VU0VfTkVXX0ZFQVRVUkUgKi8KLQlpZiAobiAtIG5l Z2F0aXZlID4gMAotCSAgICAmJiBPVEZfY2hlY2tfZmVhdHVyZXMgKG90ZiwgaSA9PSAwLCBz cGVjLT5zY3JpcHQsIHNwZWMtPmxhbmdzeXMsCi0JCQkJICAgdGFncywgbiAtIG5lZ2F0aXZl KSAhPSAxKQotCSAgcmV0dXJuIDA7Ci0jZW5kaWYJLyogbm90IE0xN05fRkxUX1VTRV9ORVdf RkVBVFVSRSAqLworCWJvb2wgcGFzc2VkID0gdHJ1ZTsKKyNpZm5kZWYgTTE3Tl9GTFRfVVNF X05FV19GRUFUVVJFCisJcGFzc2VkID0gbiAtIG5lZ2F0aXZlID4gMDsKKyNlbmRpZgorCWlm IChwYXNzZWQpCisJICBwYXNzZWQgPSAoT1RGX2NoZWNrX2ZlYXR1cmVzIChvdGYsIGkgPT0g MCwgc3BlYy0+c2NyaXB0LAorCQkJCQlzcGVjLT5sYW5nc3lzLCB0YWdzLCBuIC0gbmVnYXRp dmUpCisJCSAgICAhPSAxKTsKKwlTQUZFX0ZSRUUgKCk7CisJaWYgKHBhc3NlZCkKKwkgIHJl dHVybiAwOwogICAgICAgfQogICByZXR1cm4gMTsKICN1bmRlZiBGRUFUVVJFX05PTkUKQEAg LTE3OTksMTEgKzE4MDMsMTUgQEAKICAgaWYgKGxlbiA9PSAwKQogICAgIHJldHVybiBmcm9t OwogICBPVEZfdGFnX25hbWUgKHNwZWMtPnNjcmlwdCwgc2NyaXB0KTsKKworICBjaGFyIGxh bmdzeXNidWZbNV07CiAgIGlmIChzcGVjLT5sYW5nc3lzKQogICAgIHsKLSAgICAgIGxhbmdz eXMgPSBhbGxvY2EgKDUpOworICAgICAgbGFuZ3N5cyA9IGxhbmdzeXNidWY7CiAgICAgICBP VEZfdGFnX25hbWUgKHNwZWMtPmxhbmdzeXMsIGxhbmdzeXMpOwogICAgIH0KKworICBVU0Vf U0FGRV9BTExPQ0E7CiAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspCiAgICAgewogICAgICAg Y2hhciAqcDsKQEAgLTE4MTEsMTAgKzE4MTksMTEgQEAKICAgICAgIGlmIChzcGVjLT5mZWF0 dXJlc1tpXSAmJiBzcGVjLT5mZWF0dXJlc1tpXVsxXSAhPSAweEZGRkZGRkZGKQogCXsKIAkg IGZvciAoaiA9IDA7IHNwZWMtPmZlYXR1cmVzW2ldW2pdOyBqKyspOworCSAgU0FGRV9OQUxM T0NBIChwLCA2LCBqKTsKIAkgIGlmIChpID09IDApCi0JICAgIHAgPSBnc3ViX2ZlYXR1cmVz ID0gYWxsb2NhICg2ICogaik7CisJICAgIGdzdWJfZmVhdHVyZXMgPSBwOwogCSAgZWxzZQot CSAgICBwID0gZ3Bvc19mZWF0dXJlcyA9IGFsbG9jYSAoNiAqIGopOworCSAgICBncG9zX2Zl YXR1cmVzID0gcDsKIAkgIGZvciAoaiA9IDA7IHNwZWMtPmZlYXR1cmVzW2ldW2pdOyBqKysp CiAJICAgIHsKIAkgICAgICBpZiAoc3BlYy0+ZmVhdHVyZXNbaV1bal0gPT0gMHhGRkZGRkZG RikKQEAgLTE4NDYsNyArMTg1NSwxMCBAQAogCQkJCSAgIGdzdWJfZmVhdHVyZXMpIDwgMCkK IAlnb3RvIHNpbXBsZV9jb3B5OwogICAgICAgaWYgKG91dC0+YWxsb2NhdGVkIDwgb3V0LT51 c2VkICsgb3RmX2dzdHJpbmcudXNlZCkKLQlyZXR1cm4gLTI7CisJeworCSAgU0FGRV9GUkVF ICgpOworCSAgcmV0dXJuIC0yOworCX0KICAgICAgIGZlYXR1cmVzID0gb3RmLT5nc3ViLT5G ZWF0dXJlTGlzdC5GZWF0dXJlOwogICAgICAgZm9yIChpID0gMCwgb3RmZyA9IG90Zl9nc3Ry aW5nLmdseXBoczsgaSA8IG90Zl9nc3RyaW5nLnVzZWQ7ICkKIAl7CkBAIC0xOTM1LDcgKzE5 NDcsMTAgQEAKICAgZWxzZSBpZiAob3V0KQogICAgIHsKICAgICAgIGlmIChvdXQtPmFsbG9j YXRlZCA8IG91dC0+dXNlZCArIGxlbikKLQlyZXR1cm4gLTI7CisJeworCSAgU0FGRV9GUkVF ICgpOworCSAgcmV0dXJuIC0yOworCX0KICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkr KykKIAlvdXQtPmdseXBoc1tvdXQtPnVzZWQrK10gPSBpbi0+Z2x5cGhzW2Zyb20gKyBpXTsK ICAgICB9CkBAIC0xOTQ3LDcgKzE5NjIsMTAgQEAKIAogICAgICAgaWYgKE9URl9kcml2ZV9n cG9zX3dpdGhfbG9nIChvdGYsICZvdGZfZ3N0cmluZywgc2NyaXB0LCBsYW5nc3lzLAogCQkJ CSAgIGdwb3NfZmVhdHVyZXMpIDwgMCkKLQlyZXR1cm4gdG87CisJeworCSAgU0FGRV9GUkVF ICgpOworCSAgcmV0dXJuIHRvOworCX0KICAgICAgIGZlYXR1cmVzID0gb3RmLT5ncG9zLT5G ZWF0dXJlTGlzdC5GZWF0dXJlOwogICAgICAgeF9wcGVtID0gZnRfZmFjZS0+c2l6ZS0+bWV0 cmljcy54X3BwZW07CiAgICAgICB5X3BwZW0gPSBmdF9mYWNlLT5zaXplLT5tZXRyaWNzLnlf cHBlbTsKQEAgLTIwNjksNyArMjA4NywxMCBAQAogICAgIHsKICAgICAgIGlmIChPVEZfZHJp dmVfZ3Bvc193aXRoX2xvZyAob3RmLCAmb3RmX2dzdHJpbmcsIHNjcmlwdCwgbGFuZ3N5cywK IAkJCQkgICBncG9zX2ZlYXR1cmVzKSA8IDApCi0JcmV0dXJuIHRvOworCXsKKwkgIFNBRkVf RlJFRSAoKTsKKwkgIHJldHVybiB0bzsKKwl9CiAgICAgICBmZWF0dXJlcyA9IG90Zi0+Z3Bv cy0+RmVhdHVyZUxpc3QuRmVhdHVyZTsKICAgICAgIGZvciAoaSA9IDAsIG90ZmcgPSBvdGZf Z3N0cmluZy5nbHlwaHM7IGkgPCBvdGZfZ3N0cmluZy51c2VkOwogCSAgIGkrKywgb3RmZysr KQpAQCAtMjA4OSw5ICsyMTEwLDExIEBACiAJICAgICAgfQogCSAgfQogICAgIH0KKyAgU0FG RV9GUkVFICgpOwogICByZXR1cm4gdG87CiAKICBzaW1wbGVfY29weToKKyAgU0FGRV9GUkVF ICgpOwogICBpZiAoISBvdXQpCiAgICAgcmV0dXJuIHRvOwogICBpZiAob3V0LT5hbGxvY2F0 ZWQgPCBvdXQtPnVzZWQgKyBsZW4pCkBAIC0yMTI5LDExICsyMTUyLDE1IEBACiAgIGlmIChs ZW4gPT0gMCkKICAgICByZXR1cm4gZnJvbTsKICAgT1RGX3RhZ19uYW1lIChzcGVjLT5zY3Jp cHQsIHNjcmlwdCk7CisKKyAgY2hhciBsYW5nc3lzYnVmWzVdOwogICBpZiAoc3BlYy0+bGFu Z3N5cykKICAgICB7Ci0gICAgICBsYW5nc3lzID0gYWxsb2NhICg1KTsKKyAgICAgIGxhbmdz eXMgPSBsYW5nc3lzYnVmOwogICAgICAgT1RGX3RhZ19uYW1lIChzcGVjLT5sYW5nc3lzLCBs YW5nc3lzKTsKICAgICB9CisKKyAgVVNFX1NBRkVfQUxMT0NBOwogICBmb3IgKGkgPSAwOyBp IDwgMjsgaSsrKQogICAgIHsKICAgICAgIGNoYXIgKnA7CkBAIC0yMTQxLDEwICsyMTY4LDEx IEBACiAgICAgICBpZiAoc3BlYy0+ZmVhdHVyZXNbaV0gJiYgc3BlYy0+ZmVhdHVyZXNbaV1b MV0gIT0gMHhGRkZGRkZGRikKIAl7CiAJICBmb3IgKGogPSAwOyBzcGVjLT5mZWF0dXJlc1tp XVtqXTsgaisrKTsKKwkgIFNBRkVfTkFMTE9DQSAocCwgNiwgaik7CiAJICBpZiAoaSA9PSAw KQotCSAgICBwID0gZ3N1Yl9mZWF0dXJlcyA9IGFsbG9jYSAoNiAqIGopOworCSAgICBnc3Vi X2ZlYXR1cmVzID0gcDsKIAkgIGVsc2UKLQkgICAgcCA9IGdwb3NfZmVhdHVyZXMgPSBhbGxv Y2EgKDYgKiBqKTsKKwkgICAgZ3Bvc19mZWF0dXJlcyA9IHA7CiAJICBmb3IgKGogPSAwOyBz cGVjLT5mZWF0dXJlc1tpXVtqXTsgaisrKQogCSAgICB7CiAJICAgICAgaWYgKHNwZWMtPmZl YXR1cmVzW2ldW2pdID09IDB4RkZGRkZGRkYpCkBAIC0yMTc2LDcgKzIyMDQsMTAgQEAKIAkg IDwgMCkKIAlnb3RvIHNpbXBsZV9jb3B5OwogICAgICAgaWYgKG91dC0+YWxsb2NhdGVkIDwg b3V0LT51c2VkICsgb3RmX2dzdHJpbmcudXNlZCkKLQlyZXR1cm4gLTI7CisJeworCSAgU0FG RV9GUkVFICgpOworCSAgcmV0dXJuIC0yOworCX0KICAgICAgIGZvciAoaSA9IDAsIG90Zmcg PSBvdGZfZ3N0cmluZy5nbHlwaHM7IGkgPCBvdGZfZ3N0cmluZy51c2VkOyApCiAJewogCSAg TUZMVEdseXBoICpnOwpAQCAtMjIyNyw3ICsyMjU4LDEwIEBACiAgIGVsc2UKICAgICB7CiAg ICAgICBpZiAob3V0LT5hbGxvY2F0ZWQgPCBvdXQtPnVzZWQgKyBsZW4pCi0JcmV0dXJuIC0y OworCXsKKwkgIFNBRkVfRlJFRSAoKTsKKwkgIHJldHVybiAtMjsKKwl9CiAgICAgICBmb3Ig KGkgPSAwOyBpIDwgbGVuOyBpKyspCiAJb3V0LT5nbHlwaHNbb3V0LT51c2VkKytdID0gaW4t PmdseXBoc1tmcm9tICsgaV07CiAgICAgfQpAQCAtMjIzOSw3ICsyMjczLDEwIEBACiAKICAg ICAgIGlmIChPVEZfZHJpdmVfZ3BvcyAob3RmLCAmb3RmX2dzdHJpbmcsIHNjcmlwdCwgbGFu Z3N5cywgZ3Bvc19mZWF0dXJlcykKIAkgIDwgMCkKLQlyZXR1cm4gdG87CisJeworCSAgU0FG RV9GUkVFICgpOworCSAgcmV0dXJuIHRvOworCX0KIAogICAgICAgeF9wcGVtID0gZnRfZmFj ZS0+c2l6ZS0+bWV0cmljcy54X3BwZW07CiAgICAgICB5X3BwZW0gPSBmdF9mYWNlLT5zaXpl LT5tZXRyaWNzLnlfcHBlbTsKQEAgLTIzNDksOSArMjM4NiwxMSBAQAogCSAgICBiYXNlID0g ZzsKIAl9CiAgICAgfQorICBTQUZFX0ZSRUUgKCk7CiAgIHJldHVybiB0bzsKIAogIHNpbXBs ZV9jb3B5OgorICBTQUZFX0ZSRUUgKCk7CiAgIGlmIChvdXQtPmFsbG9jYXRlZCA8IG91dC0+ dXNlZCArIGxlbikKICAgICByZXR1cm4gLTI7CiAgIGZvbnQtPmdldF9tZXRyaWNzIChmb250 LCBpbiwgZnJvbSwgdG8pOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mdHhmb250LmMnCi0t LSBzcmMvZnR4Zm9udC5jCTIwMTQtMDctMDMgMTI6MjA6MDAgKzAwMDAKKysrIHNyYy9mdHhm b250LmMJMjAxNC0wOS0wNSAwNjowMzoyOCArMDAwMApAQCAtMjcxLDEwICsyNzEsMTEgQEAK IAogICBuWzBdID0gblsxXSA9IG5bMl0gPSBuWzNdID0gbls0XSA9IG5bNV0gPSBuWzZdID0g MDsKIAorICBVU0VfU0FGRV9BTExPQ0E7CisgIFNBRkVfTkFMTE9DQSAoY29kZSwgMSwgbGVu KTsKICAgYmxvY2tfaW5wdXQgKCk7CiAgIGlmICh3aXRoX2JhY2tncm91bmQpCiAgICAgZnR4 Zm9udF9kcmF3X2JhY2tncm91bmQgKGYsIGZvbnQsIHMtPmdjLCB4LCB5LCBzLT53aWR0aCk7 Ci0gIGNvZGUgPSBhbGxvY2EgKHNpemVvZiAodW5zaWduZWQpICogbGVuKTsKICAgZm9yIChp ID0gMDsgaSA8IGxlbjsgaSsrKQogICAgIGNvZGVbaV0gPSAoKFhDSEFSMkJfQllURTEgKHMt PmNoYXIyYiArIGZyb20gKyBpKSA8PCA4KQogCSAgICAgICB8IFhDSEFSMkJfQllURTIgKHMt PmNoYXIyYiArIGZyb20gKyBpKSk7CkBAIC0zMjIsNiArMzIzLDcgQEAKICAgICB9CiAKICAg dW5ibG9ja19pbnB1dCAoKTsKKyAgU0FGRV9GUkVFICgpOwogCiAgIHJldHVybiBsZW47CiB9 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2ltYWdlLmMnCi0tLSBzcmMvaW1hZ2UuYwkyMDE0 LTA3LTA3IDIzOjI1OjEzICswMDAwCisrKyBzcmMvaW1hZ2UuYwkyMDE0LTA5LTA1IDA2OjAz OjI4ICswMDAwCkBAIC0zMDM3LDEzICszMDM3LDE2IEBACiAJCQkJICAgICArIFNCWVRFUyAo ZGF0YSkpKTsKICAgICAgIGVsc2UKIAl7CisJICBVU0VfU0FGRV9BTExPQ0E7CisKIAkgIGlm IChWRUNUT1JQIChkYXRhKSkKIAkgICAgewogCSAgICAgIGludCBpOwogCSAgICAgIGNoYXIg KnA7CiAJICAgICAgaW50IG5ieXRlcyA9IChpbWctPndpZHRoICsgQklUU19QRVJfQ0hBUiAt IDEpIC8gQklUU19QRVJfQ0hBUjsKIAotCSAgICAgIHAgPSBiaXRzID0gYWxsb2NhIChuYnl0 ZXMgKiBpbWctPmhlaWdodCk7CisJICAgICAgU0FGRV9OQUxMT0NBIChiaXRzLCBuYnl0ZXMs IGltZy0+aGVpZ2h0KTsKKwkgICAgICBwID0gYml0czsKIAkgICAgICBmb3IgKGkgPSAwOyBp IDwgaW1nLT5oZWlnaHQ7ICsraSwgcCArPSBuYnl0ZXMpCiAJCXsKIAkJICBMaXNwX09iamVj dCBsaW5lID0gQVJFRiAoZGF0YSwgaSk7CkBAIC0zMDY0LDkgKzMwNjcsOCBAQAogICAgICAg ICAgICAgaW50IG5ieXRlcywgaTsKICAgICAgICAgICAgIC8qIFdpbmRvd3MgbW9ubyBiaXRt YXBzIGFyZSByZXZlcnNlZCBjb21wYXJlZCB3aXRoIFguICAqLwogICAgICAgICAgICAgaW52 ZXJ0ZWRCaXRzID0gYml0czsKLSAgICAgICAgICAgIG5ieXRlcyA9IChpbWctPndpZHRoICsg QklUU19QRVJfQ0hBUiAtIDEpIC8gQklUU19QRVJfQ0hBUgotICAgICAgICAgICAgICAqIGlt Zy0+aGVpZ2h0OwotICAgICAgICAgICAgYml0cyA9IGFsbG9jYSAobmJ5dGVzKTsKKyAgICAg ICAgICAgIG5ieXRlcyA9IChpbWctPndpZHRoICsgQklUU19QRVJfQ0hBUiAtIDEpIC8gQklU U19QRVJfQ0hBUjsKKyAgICAgICAgICAgIFNBRkVfTkFMTE9DQSAoYml0cywgbmJ5dGVzLCBp bWctPmhlaWdodCk7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmJ5dGVzOyBpKysp CiAgICAgICAgICAgICAgIGJpdHNbaV0gPSBYQk1fQklUX1NIVUZGTEUgKGludmVydGVkQml0 c1tpXSk7CiAgICAgICAgICAgfQpAQCAtMzA4OCw2ICszMDkwLDggQEAKIAkJCSAgIGltZy0+ c3BlYywgUW5pbCk7CiAJICAgICAgeF9jbGVhcl9pbWFnZSAoZiwgaW1nKTsKIAkgICAgfQor CisJICBTQUZFX0ZSRUUgKCk7CiAJfQogICAgIH0KIApAQCAtMzQ5NCw2ICszNDk4LDggQEAK ICAgaW50IHJjOwogICBYcG1BdHRyaWJ1dGVzIGF0dHJzOwogICBMaXNwX09iamVjdCBzcGVj aWZpZWRfZmlsZSwgY29sb3Jfc3ltYm9sczsKKyAgVVNFX1NBRkVfQUxMT0NBOworCiAjaWZk ZWYgSEFWRV9OVEdVSQogICBIREMgaGRjOwogICB4cG1fWEltYWdlICogeHBtX2ltYWdlID0g TlVMTCwgKiB4cG1fbWFzayA9IE5VTEw7CkBAIC0zNTM2LDcgKzM1NDIsNyBAQAogICAgIHsK ICAgICAgIExpc3BfT2JqZWN0IHRhaWw7CiAgICAgICBYcG1Db2xvclN5bWJvbCAqeHBtX3N5 bXM7Ci0gICAgICBpbnQgaSwgc2l6ZTsKKyAgICAgIHB0cmRpZmZfdCBpLCBzaXplOwogCiAg ICAgICBhdHRycy52YWx1ZW1hc2sgfD0gWHBtQ29sb3JTeW1ib2xzOwogCkBAIC0zNTQ2LDgg KzM1NTIsOCBAQAogCSsrYXR0cnMubnVtc3ltYm9sczsKIAogICAgICAgLyogQWxsb2NhdGUg YW4gWHBtQ29sb3JTeW1ib2wgYXJyYXkuICAqLworICAgICAgU0FGRV9OQUxMT0NBICh4cG1f c3ltcywgMSwgYXR0cnMubnVtc3ltYm9scyk7CiAgICAgICBzaXplID0gYXR0cnMubnVtc3lt Ym9scyAqIHNpemVvZiAqeHBtX3N5bXM7Ci0gICAgICB4cG1fc3ltcyA9IGFsbG9jYSAoc2l6 ZSk7CiAgICAgICBtZW1zZXQgKHhwbV9zeW1zLCAwLCBzaXplKTsKICAgICAgIGF0dHJzLmNv bG9yc3ltYm9scyA9IHhwbV9zeW1zOwogCkBAIC0zNTY5LDE3ICszNTc1LDExIEBACiAJICBu YW1lID0gWENBUiAoWENBUiAodGFpbCkpOwogCSAgY29sb3IgPSBYQ0RSIChYQ0FSICh0YWls KSk7CiAJICBpZiAoU1RSSU5HUCAobmFtZSkpCi0JICAgIHsKLQkgICAgICB4cG1fc3ltc1tp XS5uYW1lID0gYWxsb2NhIChTQ0hBUlMgKG5hbWUpICsgMSk7Ci0JICAgICAgc3RyY3B5ICh4 cG1fc3ltc1tpXS5uYW1lLCBTU0RBVEEgKG5hbWUpKTsKLQkgICAgfQorCSAgICBTQUZFX0FM TE9DQV9TVFJJTkcgKHhwbV9zeW1zW2ldLm5hbWUsIG5hbWUpOwogCSAgZWxzZQogCSAgICB4 cG1fc3ltc1tpXS5uYW1lID0gZW1wdHlfc3RyaW5nOwogCSAgaWYgKFNUUklOR1AgKGNvbG9y KSkKLQkgICAgewotCSAgICAgIHhwbV9zeW1zW2ldLnZhbHVlID0gYWxsb2NhIChTQ0hBUlMg KGNvbG9yKSArIDEpOwotCSAgICAgIHN0cmNweSAoeHBtX3N5bXNbaV0udmFsdWUsIFNTREFU QSAoY29sb3IpKTsKLQkgICAgfQorCSAgICBTQUZFX0FMTE9DQV9TVFJJTkcgKHhwbV9zeW1z W2ldLnZhbHVlLCBjb2xvcik7CiAJICBlbHNlCiAJICAgIHhwbV9zeW1zW2ldLnZhbHVlID0g ZW1wdHlfc3RyaW5nOwogCX0KQEAgLTM2MTAsNiArMzYxMCw3IEBACiAjaWZkZWYgQUxMT0Nf WFBNX0NPTE9SUwogCSAgeHBtX2ZyZWVfY29sb3JfY2FjaGUgKCk7CiAjZW5kaWYKKwkgIFNB RkVfRlJFRSAoKTsKIAkgIHJldHVybiAwOwogCX0KIApAQCAtMzY0MCw2ICszNjQxLDcgQEAK ICNpZmRlZiBBTExPQ19YUE1fQ09MT1JTCiAJICB4cG1fZnJlZV9jb2xvcl9jYWNoZSAoKTsK ICNlbmRpZgorCSAgU0FGRV9GUkVFICgpOwogCSAgcmV0dXJuIDA7CiAJfQogI2lmZGVmIEhB VkVfTlRHVUkKQEAgLTM3ODIsNiArMzc4NCw3IEBACiAjaWZkZWYgQUxMT0NfWFBNX0NPTE9S UwogICB4cG1fZnJlZV9jb2xvcl9jYWNoZSAoKTsKICNlbmRpZgorICBTQUZFX0ZSRUUgKCk7 CiAgIHJldHVybiByYyA9PSBYcG1TdWNjZXNzOwogfQogCkBAIC02NTgwLDYgKzY1ODMsNyBA QAogICAgICBjb2xvcnMgZ2VuZXJhdGVkLCBhbmQgbWdyLT5jaW5mby5jb2xvcm1hcCBpcyBh IHR3by1kaW1lbnNpb25hbCBhcnJheQogICAgICBvZiBjb2xvciBpbmRpY2VzIGluIHRoZSBy YW5nZSAwLi5tZ3ItPmNpbmZvLmFjdHVhbF9udW1iZXJfb2ZfY29sb3JzLgogICAgICBObyBt b3JlIHRoYW4gMjU1IGNvbG9ycyB3aWxsIGJlIGdlbmVyYXRlZC4gICovCisgIFVTRV9TQUZF X0FMTE9DQTsKICAgewogICAgIGludCBpLCBpciwgaWcsIGliOwogCkBAIC02NTk1LDcgKzY1 OTksNyBAQAogICAgICAgIGEgZGVmYXVsdCBjb2xvciwgYW5kIHdlIGRvbid0IGhhdmUgdG8g Y2FyZSBhYm91dCB3aGljaCBjb2xvcnMKICAgICAgICBjYW4gYmUgZnJlZWQgc2FmZWx5LCBh bmQgd2hpY2ggY2FuJ3QuICAqLwogICAgIGluaXRfY29sb3JfdGFibGUgKCk7Ci0gICAgY29s b3JzID0gYWxsb2NhIChtZ3ItPmNpbmZvLmFjdHVhbF9udW1iZXJfb2ZfY29sb3JzICogc2l6 ZW9mICpjb2xvcnMpOworICAgIFNBRkVfTkFMTE9DQSAoY29sb3JzLCAxLCBtZ3ItPmNpbmZv LmFjdHVhbF9udW1iZXJfb2ZfY29sb3JzKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBtZ3It PmNpbmZvLmFjdHVhbF9udW1iZXJfb2ZfY29sb3JzOyArK2kpCiAgICAgICB7CkBAIC02NjM4 LDYgKzY2NDIsNyBAQAogCiAgIC8qIFB1dCB4aW1nIGludG8gdGhlIGltYWdlLiAgKi8KICAg aW1hZ2VfcHV0X3hfaW1hZ2UgKGYsIGltZywgeGltZywgMCk7CisgIFNBRkVfRlJFRSAoKTsK ICAgcmV0dXJuIDE7CiB9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMva2V5Ym9hcmQuYycK LS0tIHNyYy9rZXlib2FyZC5jCTIwMTQtMDgtMjcgMTA6NTE6MjEgKzAwMDAKKysrIHNyYy9r ZXlib2FyZC5jCTIwMTQtMDktMDUgMDY6MDM6MjggKzAwMDAKQEAgLTUwMCwxMCArNTAwLDEy IEBACiBzdGF0aWMgdm9pZAogZWNob19hZGRfa2V5IChMaXNwX09iamVjdCBjKQogewotICBp bnQgc2l6ZSA9IEtFWV9ERVNDUklQVElPTl9TSVpFICsgMTAwOwotICBjaGFyICpidWZmZXIg PSBhbGxvY2EgKHNpemUpOworICBjaGFyIGluaXRidWZbS0VZX0RFU0NSSVBUSU9OX1NJWkUg KyAxMDBdOworICBwdHJkaWZmX3Qgc2l6ZSA9IHNpemVvZiBpbml0YnVmOworICBjaGFyICpi dWZmZXIgPSBpbml0YnVmOwogICBjaGFyICpwdHIgPSBidWZmZXI7CiAgIExpc3BfT2JqZWN0 IGVjaG9fc3RyaW5nOworICBVU0VfU0FGRV9BTExPQ0E7CiAKICAgZWNob19zdHJpbmcgPSBL VkFSIChjdXJyZW50X2tib2FyZCwgZWNob19zdHJpbmcpOwogCkBAIC01MTUsMTMgKzUxNywx MyBAQAogICBlbHNlIGlmIChTWU1CT0xQIChjKSkKICAgICB7CiAgICAgICBMaXNwX09iamVj dCBuYW1lID0gU1lNQk9MX05BTUUgKGMpOwotICAgICAgaW50IG5ieXRlcyA9IFNCWVRFUyAo bmFtZSk7CisgICAgICBwdHJkaWZmX3QgbmJ5dGVzID0gU0JZVEVTIChuYW1lKTsKIAogICAg ICAgaWYgKHNpemUgLSAocHRyIC0gYnVmZmVyKSA8IG5ieXRlcykKIAl7Ci0JICBpbnQgb2Zm c2V0ID0gcHRyIC0gYnVmZmVyOworCSAgcHRyZGlmZl90IG9mZnNldCA9IHB0ciAtIGJ1ZmZl cjsKIAkgIHNpemUgPSBtYXggKDIgKiBzaXplLCBzaXplICsgbmJ5dGVzKTsKLQkgIGJ1ZmZl ciA9IGFsbG9jYSAoc2l6ZSk7CisJICBidWZmZXIgPSBTQUZFX0FMTE9DQSAoc2l6ZSk7CiAJ ICBwdHIgPSBidWZmZXIgKyBvZmZzZXQ7CiAJfQogCkBAIC01MzIsMTQgKzUzNCwxNCBAQAog ICBpZiAoKE5JTFAgKGVjaG9fc3RyaW5nKSB8fCBTQ0hBUlMgKGVjaG9fc3RyaW5nKSA9PSAw KQogICAgICAgJiYgaGVscF9jaGFyX3AgKGMpKQogICAgIHsKLSAgICAgIGNvbnN0IGNoYXIg KnRleHQgPSAiIChUeXBlID8gZm9yIGZ1cnRoZXIgb3B0aW9ucykiOwotICAgICAgaW50IGxl biA9IHN0cmxlbiAodGV4dCk7CisgICAgICBzdGF0aWMgY29uc3QgY2hhciB0ZXh0W10gPSAi IChUeXBlID8gZm9yIGZ1cnRoZXIgb3B0aW9ucykiOworICAgICAgaW50IGxlbiA9IHNpemVv ZiB0ZXh0IC0gMTsKIAogICAgICAgaWYgKHNpemUgLSAocHRyIC0gYnVmZmVyKSA8IGxlbikK IAl7Ci0JICBpbnQgb2Zmc2V0ID0gcHRyIC0gYnVmZmVyOworCSAgcHRyZGlmZl90IG9mZnNl dCA9IHB0ciAtIGJ1ZmZlcjsKIAkgIHNpemUgKz0gbGVuOwotCSAgYnVmZmVyID0gYWxsb2Nh IChzaXplKTsKKwkgIGJ1ZmZlciA9IFNBRkVfQUxMT0NBIChzaXplKTsKIAkgIHB0ciA9IGJ1 ZmZlciArIG9mZnNldDsKIAl9CiAKQEAgLTU3Miw2ICs1NzQsNyBAQAogICBrc2V0X2VjaG9f c3RyaW5nCiAgICAgKGN1cnJlbnRfa2JvYXJkLAogICAgICBjb25jYXQyIChlY2hvX3N0cmlu ZywgbWFrZV9zdHJpbmcgKGJ1ZmZlciwgcHRyIC0gYnVmZmVyKSkpOworICBTQUZFX0ZSRUUg KCk7CiB9CiAKIC8qIEFkZCBDIHRvIHRoZSBlY2hvIHN0cmluZywgaWYgZWNob2luZyBpcyBn b2luZyBvbi4gIEMgY2FuIGJlIGEKQEAgLTExNDcsNyArMTE1MCw3IEBACiBMaXNwX09iamVj dAogY29tbWFuZF9sb29wICh2b2lkKQogewotI2lmZGVmIEhBVkVfU1RBQ0tfT1ZFUkZMT1df SEFORExJTkcKKyNpZmRlZiBIQVZFX1NUQUNLX09WRVJGTE9XX0hBTkRMSU5HCiAgIC8qIEF0 IGxlYXN0IG9uIEdOVS9MaW51eCwgc2F2aW5nIHNpZ25hbCBtYXNrIGlzIGltcG9ydGFudCBo ZXJlLiAgKi8KICAgaWYgKHNpZ3NldGptcCAocmV0dXJuX3RvX2NvbW1hbmRfbG9vcCwgMSkg IT0gMCkKICAgICB7CkBAIC0yMzUxLDE0ICsyMzU0LDE1IEBACiAJICAgIHsgLyogQW4gZW5j b2RlZCBieXRlIHNlcXVlbmNlLCBsZXQncyB0cnkgdG8gZGVjb2RlIGl0LiAgKi8KIAkgICAg ICBzdHJ1Y3QgY29kaW5nX3N5c3RlbSAqY29kaW5nCiAJCT0gVEVSTUlOQUxfS0VZQk9BUkRf Q09ESU5HICh0ZXJtaW5hbCk7Ci0JICAgICAgdW5zaWduZWQgY2hhciAqc3JjID0gYWxsb2Nh IChuKTsKKwkgICAgICB1bnNpZ25lZCBjaGFyIHNyY1tNQVhfRU5DT0RFRF9CWVRFU107CisJ ICAgICAgdW5zaWduZWQgY2hhciBkZXN0WzQgKiBzaXplb2Ygc3JjXTsKIAkgICAgICBpbnQg aTsKIAkgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogCQlzcmNbaV0gPSBYSU5UIChl dmVudHNbaV0pOwogCSAgICAgIGlmIChtZXRhX2tleSAhPSAyKQogCQlmb3IgKGkgPSAwOyBp IDwgbjsgaSsrKQogCQkgIHNyY1tpXSAmPSB+MHg4MDsKLQkgICAgICBjb2RpbmctPmRlc3Rp bmF0aW9uID0gYWxsb2NhIChuICogNCk7CisJICAgICAgY29kaW5nLT5kZXN0aW5hdGlvbiA9 IGRlc3Q7CiAJICAgICAgY29kaW5nLT5kc3RfYnl0ZXMgPSBuICogNDsKIAkgICAgICBkZWNv ZGVfY29kaW5nX2Nfc3RyaW5nIChjb2RpbmcsIHNyYywgbiwgUW5pbCk7CiAJICAgICAgZWFz c2VydCAoY29kaW5nLT5wcm9kdWNlZF9jaGFyIDw9IG4pOwpAQCAtNzQzNCwxMSArNzQzOCwx NCBAQAogICAgICBpbiB0aGUgY3VycmVudCBrZXltYXBzLCBvciBuaWwgd2hlcmUgaXQgaXMg bm90IGEgcHJlZml4LiAgKi8KICAgTGlzcF9PYmplY3QgKm1hcHM7CiAKKyAgTGlzcF9PYmpl Y3QgbWFwc2J1ZlszXTsKICAgTGlzcF9PYmplY3QgZGVmLCB0YWlsOwogCiAgIHB0cmRpZmZf dCBtYXBubzsKICAgTGlzcF9PYmplY3Qgb3F1aXQ7CiAKKyAgVVNFX1NBRkVfQUxMT0NBOwor CiAgIC8qIEluIG9yZGVyIHRvIGJ1aWxkIHRoZSBtZW51cywgd2UgbmVlZCB0byBjYWxsIHRo ZSBrZXltYXAKICAgICAgYWNjZXNzb3JzLiAgVGhleSBhbGwgY2FsbCBRVUlULiAgQnV0IHRo aXMgZnVuY3Rpb24gaXMgY2FsbGVkCiAgICAgIGR1cmluZyByZWRpc3BsYXksIGR1cmluZyB3 aGljaCBhIHF1aXQgaXMgZmF0YWwuICBTbyBpbmhpYml0CkBAIC03NDY3LDcgKzc0NzQsNyBA QAogCSYmICFOSUxQIChWb3ZlcnJpZGluZ19sb2NhbF9tYXApKQogICAgICAgewogCS8qIFll cywgdXNlIHRoZW0gKGlmIG5vbi1uaWwpIGFzIHdlbGwgYXMgdGhlIGdsb2JhbCBtYXAuICAq LwotCW1hcHMgPSBhbGxvY2EgKDMgKiBzaXplb2YgKG1hcHNbMF0pKTsKKwltYXBzID0gbWFw c2J1ZjsKIAlubWFwcyA9IDA7CiAJaWYgKCFOSUxQIChLVkFSIChjdXJyZW50X2tib2FyZCwg Vm92ZXJyaWRpbmdfdGVybWluYWxfbG9jYWxfbWFwKSkpCiAJICBtYXBzW25tYXBzKytdID0g S1ZBUiAoY3VycmVudF9rYm9hcmQsIFZvdmVycmlkaW5nX3Rlcm1pbmFsX2xvY2FsX21hcCk7 CkBAIC03NDg0LDcgKzc0OTEsNyBAQAogCUxpc3BfT2JqZWN0IHRlbTsKIAlwdHJkaWZmX3Qg bm1pbm9yOwogCW5taW5vciA9IGN1cnJlbnRfbWlub3JfbWFwcyAoTlVMTCwgJnRtYXBzKTsK LQltYXBzID0gYWxsb2NhICgobm1pbm9yICsgNCkgKiBzaXplb2YgKm1hcHMpOworCVNBRkVf TkFMTE9DQSAobWFwcywgMSwgbm1pbm9yICsgNCk7CiAJbm1hcHMgPSAwOwogCXRlbSA9IEtW QVIgKGN1cnJlbnRfa2JvYXJkLCBWb3ZlcnJpZGluZ190ZXJtaW5hbF9sb2NhbF9tYXApOwog CWlmICghTklMUCAodGVtKSAmJiAhTklMUCAoVm92ZXJyaWRpbmdfbG9jYWxfbWFwX21lbnVf ZmxhZykpCkBAIC03NTU2LDYgKzc1NjMsNyBAQAogICB9CiAKICAgVmluaGliaXRfcXVpdCA9 IG9xdWl0OworICBTQUZFX0ZSRUUgKCk7CiAgIHJldHVybiBtZW51X2Jhcl9pdGVtc192ZWN0 b3I7CiB9CiAMCkBAIC03OTkyLDkgKzgwMDAsMTEgQEAKIHRvb2xfYmFyX2l0ZW1zIChMaXNw X09iamVjdCByZXVzZSwgaW50ICpuaXRlbXMpCiB7CiAgIExpc3BfT2JqZWN0ICptYXBzOwor ICBMaXNwX09iamVjdCBtYXBzYnVmWzNdOwogICBwdHJkaWZmX3Qgbm1hcHMsIGk7CiAgIExp c3BfT2JqZWN0IG9xdWl0OwogICBMaXNwX09iamVjdCAqdG1hcHM7CisgIFVTRV9TQUZFX0FM TE9DQTsKIAogICAqbml0ZW1zID0gMDsKIApAQCAtODAxOCw3ICs4MDI4LDcgQEAKICAgICAg ICYmICFOSUxQIChWb3ZlcnJpZGluZ19sb2NhbF9tYXApKQogICAgIHsKICAgICAgIC8qIFll cywgdXNlIHRoZW0gKGlmIG5vbi1uaWwpIGFzIHdlbGwgYXMgdGhlIGdsb2JhbCBtYXAuICAq LwotICAgICAgbWFwcyA9IGFsbG9jYSAoMyAqIHNpemVvZiAqbWFwcyk7CisgICAgICBtYXBz ID0gbWFwc2J1ZjsKICAgICAgIG5tYXBzID0gMDsKICAgICAgIGlmICghTklMUCAoS1ZBUiAo Y3VycmVudF9rYm9hcmQsIFZvdmVycmlkaW5nX3Rlcm1pbmFsX2xvY2FsX21hcCkpKQogCW1h cHNbbm1hcHMrK10gPSBLVkFSIChjdXJyZW50X2tib2FyZCwgVm92ZXJyaWRpbmdfdGVybWlu YWxfbG9jYWxfbWFwKTsKQEAgLTgwMzUsNyArODA0NSw3IEBACiAgICAgICBMaXNwX09iamVj dCB0ZW07CiAgICAgICBwdHJkaWZmX3Qgbm1pbm9yOwogICAgICAgbm1pbm9yID0gY3VycmVu dF9taW5vcl9tYXBzIChOVUxMLCAmdG1hcHMpOwotICAgICAgbWFwcyA9IGFsbG9jYSAoKG5t aW5vciArIDQpICogc2l6ZW9mICptYXBzKTsKKyAgICAgIFNBRkVfTkFMTE9DQSAobWFwcywg MSwgbm1pbm9yICsgNCk7CiAgICAgICBubWFwcyA9IDA7CiAgICAgICB0ZW0gPSBLVkFSIChj dXJyZW50X2tib2FyZCwgVm92ZXJyaWRpbmdfdGVybWluYWxfbG9jYWxfbWFwKTsKICAgICAg IGlmICghTklMUCAodGVtKSAmJiAhTklMUCAoVm92ZXJyaWRpbmdfbG9jYWxfbWFwX21lbnVf ZmxhZykpCkBAIC04MDY0LDYgKzgwNzQsNyBAQAogCiAgIFZpbmhpYml0X3F1aXQgPSBvcXVp dDsKICAgKm5pdGVtcyA9IG50b29sX2Jhcl9pdGVtcyAvIFRPT0xfQkFSX0lURU1fTlNMT1RT OworICBTQUZFX0ZSRUUgKCk7CiAgIHJldHVybiB0b29sX2Jhcl9pdGVtc192ZWN0b3I7CiB9 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMva2V5bWFwLmMnCi0tLSBzcmMva2V5bWFwLmMJ MjAxNC0wNy0xNCAwNDo0NDowMSArMDAwMAorKysgc3JjL2tleW1hcC5jCTIwMTQtMDktMDUg MDY6MDM6MjggKzAwMDAKQEAgLTI4ODMsMTMgKzI4ODMsMTQgQEAKIAkgIGlmICghU1lNQk9M UCAobW9kZXNbaV0pKQogCSAgICBlbWFjc19hYm9ydCAoKTsKIAotCSAgcCA9IHRpdGxlID0g YWxsb2NhICg0MiArIFNDSEFSUyAoU1lNQk9MX05BTUUgKG1vZGVzW2ldKSkpOworCSAgVVNF X1NBRkVfQUxMT0NBOworCSAgcCA9IHRpdGxlID0gU0FGRV9BTExPQ0EgKDQyICsgU0JZVEVT IChTWU1CT0xfTkFNRSAobW9kZXNbaV0pKSk7CiAJICAqcCsrID0gJ1xmJzsKIAkgICpwKysg PSAnXG4nOwogCSAgKnArKyA9ICdgJzsKIAkgIG1lbWNweSAocCwgU0RBVEEgKFNZTUJPTF9O QU1FIChtb2Rlc1tpXSkpLAotCQkgIFNDSEFSUyAoU1lNQk9MX05BTUUgKG1vZGVzW2ldKSkp OwotCSAgcCArPSBTQ0hBUlMgKFNZTUJPTF9OQU1FIChtb2Rlc1tpXSkpOworCQkgIFNCWVRF UyAoU1lNQk9MX05BTUUgKG1vZGVzW2ldKSkpOworCSAgcCArPSBTQllURVMgKFNZTUJPTF9O QU1FIChtb2Rlc1tpXSkpOwogCSAgKnArKyA9ICdcJyc7CiAJICBtZW1jcHkgKHAsICIgTWlu b3IgTW9kZSBCaW5kaW5ncyIsIHN0cmxlbiAoIiBNaW5vciBNb2RlIEJpbmRpbmdzIikpOwog CSAgcCArPSBzdHJsZW4gKCIgTWlub3IgTW9kZSBCaW5kaW5ncyIpOwpAQCAtMjg5OCw2ICsy ODk5LDcgQEAKIAkgIGRlc2NyaWJlX21hcF90cmVlIChtYXBzW2ldLCAxLCBzaGFkb3csIHBy ZWZpeCwKIAkJCSAgICAgdGl0bGUsIG5vbWVudSwgMCwgMCwgMCk7CiAJICBzaGFkb3cgPSBG Y29ucyAobWFwc1tpXSwgc2hhZG93KTsKKwkgIFNBRkVfRlJFRSAoKTsKIAl9CiAKICAgICAg IHN0YXJ0MSA9IGdldF9sb2NhbF9tYXAgKEJVRl9QVCAoWEJVRkZFUiAoYnVmZmVyKSksCkBA IC0zMTg0LDEwICszMTg2LDEwIEBACiAKICAgLyogVGhlc2UgYWNjdW11bGF0ZSB0aGUgdmFs dWVzIGZyb20gc3BhcnNlIGtleW1hcCBiaW5kaW5ncywKICAgICAgc28gd2UgY2FuIHNvcnQg dGhlbSBhbmQgaGFuZGxlIHRoZW0gaW4gb3JkZXIuICAqLwotICBpbnQgbGVuZ3RoX25lZWRl ZCA9IDA7CisgIHB0cmRpZmZfdCBsZW5ndGhfbmVlZGVkID0gMDsKICAgc3RydWN0IGRlc2Ny aWJlX21hcF9lbHQgKnZlY3Q7Ci0gIGludCBzbG90c191c2VkID0gMDsKLSAgaW50IGk7Cisg IHB0cmRpZmZfdCBzbG90c191c2VkID0gMDsKKyAgcHRyZGlmZl90IGk7CiAKICAgc3VwcHJl c3MgPSBRbmlsOwogCkBAIC0zMjA3LDcgKzMyMDksOCBAQAogICBmb3IgKHRhaWwgPSBtYXA7 IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQogICAgIGxlbmd0aF9uZWVkZWQr KzsKIAotICB2ZWN0ID0gYWxsb2NhIChsZW5ndGhfbmVlZGVkICogc2l6ZW9mICp2ZWN0KTsK KyAgVVNFX1NBRkVfQUxMT0NBOworICBTQUZFX05BTExPQ0EgKHZlY3QsIDEsIGxlbmd0aF9u ZWVkZWQpOwogCiAgIGZvciAodGFpbCA9IG1hcDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENE UiAodGFpbCkpCiAgICAgewpAQCAtMzM1MCw2ICszMzUzLDcgQEAKIAl9CiAgICAgfQogCisg IFNBRkVfRlJFRSAoKTsKICAgVU5HQ1BSTzsKIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3Ny Yy9saXNwLmgnCi0tLSBzcmMvbGlzcC5oCTIwMTQtMDktMDIgMTg6MDU6MDAgKzAwMDAKKysr IHNyYy9saXNwLmgJMjAxNC0wOS0wNSAwNjowMzoyOCArMDAwMApAQCAtNDQ1MSwxMiArNDQ1 MSw2IEBACiAgIHJldHVybiBlZ2V0ZW52X2ludGVybmFsICh2YXIsIHN0cmxlbiAodmFyKSk7 CiB9CiAKLS8qIENvcHkgTGlzcCBzdHJpbmcgdG8gdGVtcG9yYXJ5IChhbGxvY2F0ZWQgb24g c3RhY2spIEMgc3RyaW5nLiAgKi8KLQotI2RlZmluZSB4bGlzcHN0cmR1cGEoc3RyaW5nKQkJ CVwKLSAgbWVtY3B5IChhbGxvY2EgKFNCWVRFUyAoc3RyaW5nKSArIDEpLAkJXAotCSAgU1NE QVRBIChzdHJpbmcpLCBTQllURVMgKHN0cmluZykgKyAxKQotCiAvKiBTZXQgdXAgdGhlIG5h bWUgb2YgdGhlIG1hY2hpbmUgd2UncmUgcnVubmluZyBvbi4gICovCiBleHRlcm4gdm9pZCBp bml0X3N5c3RlbV9uYW1lICh2b2lkKTsKIApAQCAtNDQ4NCw3ICs0NDc4LDcgQEAKIAogLyog U0FGRV9BTExPQ0EgYWxsb2NhdGVzIGEgc2ltcGxlIGJ1ZmZlci4gICovCiAKLSNkZWZpbmUg U0FGRV9BTExPQ0Eoc2l6ZSkgKChzaXplKSA8IE1BWF9BTExPQ0EJXAorI2RlZmluZSBTQUZF X0FMTE9DQShzaXplKSAoKHNpemUpIDw9IE1BWF9BTExPQ0EJXAogCQkJICAgPyBhbGxvY2Eg KHNpemUpCVwKIAkJCSAgIDogKHNhX211c3RfZnJlZSA9IHRydWUsIHJlY29yZF94bWFsbG9j IChzaXplKSkpCiAKQEAgLTQ1MDQsNiArNDQ5OCwxNCBAQAogICAgICAgfQkJCQkJCQkJIFwK ICAgfSB3aGlsZSAoZmFsc2UpCiAKKy8qIFNBRkVfQUxMT0NBX1NUUklORyBhbGxvY2F0ZXMg YSBDIGNvcHkgb2YgYSBMaXNwIHN0cmluZy4gICovCisKKyNkZWZpbmUgU0FGRV9BTExPQ0Ff U1RSSU5HKHB0ciwgc3RyaW5nKQkJCVwKKyAgZG8gewkJCQkJCQlcCisgICAgKHB0cikgPSBT QUZFX0FMTE9DQSAoU0JZVEVTIChzdHJpbmcpICsgMSk7CQlcCisgICAgbWVtY3B5IChwdHIs IFNEQVRBIChzdHJpbmcpLCBTQllURVMgKHN0cmluZykgKyAxKTsJXAorICB9IHdoaWxlIChm YWxzZSkKKwogLyogU0FGRV9GUkVFIGZyZWVzIHhtYWxsb2NlZCBtZW1vcnkgYW5kIGVuYWJs ZXMgR0MgYXMgbmVlZGVkLiAgKi8KIAogI2RlZmluZSBTQUZFX0ZSRUUoKQkJCVwKQEAgLTQ1 MTksOSArNDUyMSw5IEBACiAKICNkZWZpbmUgU0FGRV9BTExPQ0FfTElTUChidWYsIG5lbHQp CQkJICAgICAgIFwKICAgZG8gewkJCQkJCQkgICAgICAgXAotICAgIGlmICgobmVsdCkgPCBN QVhfQUxMT0NBIC8gd29yZF9zaXplKQkJICAgICAgIFwKKyAgICBpZiAoKG5lbHQpIDw9IE1B WF9BTExPQ0EgLyB3b3JkX3NpemUpCQkgICAgICAgXAogICAgICAgKGJ1ZikgPSBhbGxvY2Eg KChuZWx0KSAqIHdvcmRfc2l6ZSk7CQkgICAgICAgXAotICAgIGVsc2UgaWYgKChuZWx0KSA8 IG1pbiAoUFRSRElGRl9NQVgsIFNJWkVfTUFYKSAvIHdvcmRfc2l6ZSkgXAorICAgIGVsc2Ug aWYgKChuZWx0KSA8PSBtaW4gKFBUUkRJRkZfTUFYLCBTSVpFX01BWCkgLyB3b3JkX3NpemUp IFwKICAgICAgIHsJCQkJCQkJICAgICAgIFwKIAlMaXNwX09iamVjdCBhcmdfOwkJCQkgICAg ICAgXAogCShidWYpID0geG1hbGxvYyAoKG5lbHQpICogd29yZF9zaXplKTsJCSAgICAgICBc Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2xyZWFkLmMnCi0tLSBzcmMvbHJlYWQuYwkyMDE0 LTA5LTAxIDE2OjA1OjQzICswMDAwCisrKyBzcmMvbHJlYWQuYwkyMDE0LTA5LTA1IDA2OjAz OjI4ICswMDAwCkBAIC0xNDczLDYgKzE0NzMsNyBAQAogICBwdHJkaWZmX3QgbWF4X3N1ZmZp eF9sZW4gPSAwOwogICBpbnQgbGFzdF9lcnJubyA9IEVOT0VOVDsKICAgaW50IHNhdmVfZmQg PSAtMTsKKyAgVVNFX1NBRkVfQUxMT0NBOwogCiAgIC8qIFRoZSBsYXN0LW1vZGlmaWVkIHRp bWUgb2YgdGhlIG5ld2VzdCBtYXRjaGluZyBmaWxlIGZvdW5kLgogICAgICBJbml0aWFsaXpl IGl0IHRvIHNvbWV0aGluZyBsZXNzIHRoYW4gYWxsIHZhbGlkIHRpbWVzdGFtcHMuICAqLwpA QCAtMTUxMyw3ICsxNTE0LDEwIEBACiAJIHRoaXMgcGF0aCBlbGVtZW50L3NwZWNpZmllZCBm aWxlIG5hbWUgYW5kIGFueSBwb3NzaWJsZSBzdWZmaXguICAqLwogICAgICAgd2FudF9sZW5n dGggPSBtYXhfc3VmZml4X2xlbiArIFNCWVRFUyAoZmlsZW5hbWUpOwogICAgICAgaWYgKGZu X3NpemUgPD0gd2FudF9sZW5ndGgpCi0JZm4gPSBhbGxvY2EgKGZuX3NpemUgPSAxMDAgKyB3 YW50X2xlbmd0aCk7CisJeworCSAgZm5fc2l6ZSA9IDEwMCArIHdhbnRfbGVuZ3RoOworCSAg Zm4gPSBTQUZFX0FMTE9DQSAoZm5fc2l6ZSk7CisJfQogCiAgICAgICAvKiBMb29wIG92ZXIg c3VmZml4ZXMuICAqLwogICAgICAgZm9yICh0YWlsID0gTklMUCAoc3VmZml4ZXMpID8gbGlz dDEgKGVtcHR5X3VuaWJ5dGVfc3RyaW5nKSA6IHN1ZmZpeGVzOwpAQCAtMTU3OSw2ICsxNTgz LDcgQEAKICAgICAgICAgICAgICAgICAgIC8qIFdlIHN1Y2NlZWRlZDsgcmV0dXJuIHRoaXMg ZGVzY3JpcHRvciBhbmQgZmlsZW5hbWUuICAqLwogICAgICAgICAgICAgICAgICAgaWYgKHN0 b3JlcHRyKQogICAgICAgICAgICAgICAgICAgICAqc3RvcmVwdHIgPSBzdHJpbmc7CisJCSAg U0FGRV9GUkVFICgpOwogICAgICAgICAgICAgICAgICAgVU5HQ1BSTzsKICAgICAgICAgICAg ICAgICAgIHJldHVybiAtMjsKIAkJfQpAQCAtMTY1MSw2ICsxNjU2LDcgQEAKICAgICAgICAg ICAgICAgICAgICAgICAvKiBXZSBzdWNjZWVkZWQ7IHJldHVybiB0aGlzIGRlc2NyaXB0b3Ig YW5kIGZpbGVuYW1lLiAgKi8KICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVwdHIp CiAgICAgICAgICAgICAgICAgICAgICAgICAqc3RvcmVwdHIgPSBzdHJpbmc7CisJCSAgICAg IFNBRkVfRlJFRSAoKTsKICAgICAgICAgICAgICAgICAgICAgICBVTkdDUFJPOwogICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBmZDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt MTY2MSw2ICsxNjY3LDcgQEAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICBpZiAoc3RvcmVwdHIpCiAgICAgICAgICAgICAgICAgICAgICpzdG9yZXB0ciA9IHNhdmVf c3RyaW5nOworCQkgIFNBRkVfRlJFRSAoKTsKICAgICAgICAgICAgICAgICAgIFVOR0NQUk87 CiAgICAgICAgICAgICAgICAgICByZXR1cm4gc2F2ZV9mZDsKICAgICAgICAgICAgICAgICB9 CkBAIC0xNjcwLDYgKzE2NzcsNyBAQAogCWJyZWFrOwogICAgIH0KIAorICBTQUZFX0ZSRUUg KCk7CiAgIFVOR0NQUk87CiAgIGVycm5vID0gbGFzdF9lcnJubzsKICAgcmV0dXJuIC0xOwoK PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9tZW51LmMnCi0tLSBzcmMvbWVudS5jCTIwMTQtMDgt MTAgMDg6MjY6MjggKzAwMDAKKysrIHNyYy9tZW51LmMJMjAxNC0wOS0wNSAwNjowMzoyOCAr MDAwMApAQCAtNjMyLDggKzYzMiw5IEBACiAgIHdpZGdldF92YWx1ZSAqKnN1Ym1lbnVfc3Rh Y2s7CiAgIGJvb2wgcGFuZXNfc2VlbiA9IDA7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFN RSAoVm1lbnVfdXBkYXRpbmdfZnJhbWUpOworICBVU0VfU0FGRV9BTExPQ0E7CiAKLSAgc3Vi bWVudV9zdGFjayA9IGFsbG9jYSAobWVudV9pdGVtc191c2VkICogc2l6ZW9mICpzdWJtZW51 X3N0YWNrKTsKKyAgU0FGRV9OQUxMT0NBIChzdWJtZW51X3N0YWNrLCAxLCBtZW51X2l0ZW1z X3VzZWQpOwogICB3diA9IG1ha2Vfd2lkZ2V0X3ZhbHVlICgibWVudSIsIE5VTEwsIHRydWUs IFFuaWwpOwogICB3di0+YnV0dG9uX3R5cGUgPSBCVVRUT05fVFlQRV9OT05FOwogICBmaXJz dF93diA9IHd2OwpAQCAtODM1LDExICs4MzYsMTIgQEAKICAgICAgdGhhdCB3YXMgb3JpZ2lu YWxseSBhIGJ1dHRvbiwgcmV0dXJuIGl0IGJ5IGl0c2VsZi4gICovCiAgIGlmICh0b3BfbGV2 ZWxfaXRlbXMgJiYgZmlyc3Rfd3YtPmNvbnRlbnRzICYmIGZpcnN0X3d2LT5jb250ZW50cy0+ bmV4dCA9PSAwKQogICAgIHsKLSAgICAgIHd2ID0gZmlyc3Rfd3YtPmNvbnRlbnRzOwotICAg ICAgeGZyZWUgKGZpcnN0X3d2KTsKLSAgICAgIHJldHVybiB3djsKKyAgICAgIHd2ID0gZmly c3Rfd3Y7CisgICAgICBmaXJzdF93diA9IGZpcnN0X3d2LT5jb250ZW50czsKKyAgICAgIHhm cmVlICh3dik7CiAgICAgfQogCisgIFNBRkVfRlJFRSAoKTsKICAgcmV0dXJuIGZpcnN0X3d2 OwogfQogCkBAIC04OTAsOSArODkyLDEwIEBACiAgIExpc3BfT2JqZWN0ICpzdWJwcmVmaXhf c3RhY2s7CiAgIGludCBzdWJtZW51X2RlcHRoID0gMDsKICAgaW50IGk7CisgIFVTRV9TQUZF X0FMTE9DQTsKIAogICBlbnRyeSA9IFFuaWw7Ci0gIHN1YnByZWZpeF9zdGFjayA9IGFsbG9j YSAobWVudV9iYXJfaXRlbXNfdXNlZCAqIHNpemVvZiAqc3VicHJlZml4X3N0YWNrKTsKKyAg U0FGRV9OQUxMT0NBIChzdWJwcmVmaXhfc3RhY2ssIDEsIG1lbnVfYmFyX2l0ZW1zX3VzZWQp OwogICBwcmVmaXggPSBRbmlsOwogICBpID0gMDsKIApAQCAtOTU0LDExICs5NTcsMTMgQEAK IAkgICAgICBidWYuYXJnID0gZW50cnk7CiAJICAgICAga2JkX2J1ZmZlcl9zdG9yZV9ldmVu dCAoJmJ1Zik7CiAKLQkgICAgICByZXR1cm47CisJICAgICAgYnJlYWs7CiAJICAgIH0KIAkg IGkgKz0gTUVOVV9JVEVNU19JVEVNX0xFTkdUSDsKIAl9CiAgICAgfQorCisgIFNBRkVfRlJF RSAoKTsKIH0KIAogI2VuZGlmIC8qIFVTRV9YX1RPT0xLSVQgfHwgVVNFX0dUSyB8fCBIQVZF X05TIHx8IEhBVkVfTlRHVUkgKi8KQEAgLTk3MywxMCArOTc4LDExIEBACiAgIGludCBpOwog ICBMaXNwX09iamVjdCAqc3VicHJlZml4X3N0YWNrOwogICBpbnQgc3VibWVudV9kZXB0aCA9 IDA7CisgIFVTRV9TQUZFX0FMTE9DQTsKIAogICBwcmVmaXggPSBlbnRyeSA9IFFuaWw7CiAg IGkgPSAwOwotICBzdWJwcmVmaXhfc3RhY2sgPSBhbGxvY2EgKG1lbnVfaXRlbXNfdXNlZCAq IHdvcmRfc2l6ZSk7CisgIFNBRkVfQUxMT0NBX0xJU1AgKHN1YnByZWZpeF9zdGFjaywgbWVu dV9pdGVtc191c2VkKTsKIAogICB3aGlsZSAoaSA8IG1lbnVfaXRlbXNfdXNlZCkKICAgICB7 CkBAIC0xMDE4LDExICsxMDI0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGlmICghTklM UCAoc3VicHJlZml4X3N0YWNrW2pdKSkKICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSA9 IEZjb25zIChzdWJwcmVmaXhfc3RhY2tbal0sIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9 CisJICAgICAgU0FGRV9GUkVFICgpOwogICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAg ICAgICAgICAgICB9CiAgICAgICAgICAgaSArPSBNRU5VX0lURU1TX0lURU1fTEVOR1RIOwog ICAgICAgICB9CiAgICAgfQorICBTQUZFX0ZSRUUgKCk7CiAgIHJldHVybiBRbmlsOwogfQog I2VuZGlmICAvKiBIQVZFX05TICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3ByaW50LmMn Ci0tLSBzcmMvcHJpbnQuYwkyMDE0LTA3LTE3IDA5OjEyOjUxICswMDAwCisrKyBzcmMvcHJp bnQuYwkyMDE0LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC0xNjksMTEgKzE2OSwxMyBAQAog ICAgICAgIGlmIChwcmludF9idWZmZXJfcG9zICE9IHByaW50X2J1ZmZlcl9wb3NfYnl0ZQkJ CVwKIAkgICAmJiBOSUxQIChCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0 ZV9jaGFyYWN0ZXJzKSkpXAogCSB7CQkJCQkJCQlcCi0JICAgdW5zaWduZWQgY2hhciAqdGVt cCA9IGFsbG9jYSAocHJpbnRfYnVmZmVyX3BvcyArIDEpOwkJXAorCSAgIFVTRV9TQUZFX0FM TE9DQTsJCQkJCQlcCisJICAgdW5zaWduZWQgY2hhciAqdGVtcCA9IFNBRkVfQUxMT0NBIChw cmludF9idWZmZXJfcG9zICsgMSk7CVwKIAkgICBjb3B5X3RleHQgKCh1bnNpZ25lZCBjaGFy ICopIHByaW50X2J1ZmZlciwgdGVtcCwJCVwKIAkJICAgICAgcHJpbnRfYnVmZmVyX3Bvc19i eXRlLCAxLCAwKTsJCQlcCiAJICAgaW5zZXJ0XzFfYm90aCAoKGNoYXIgKikgdGVtcCwgcHJp bnRfYnVmZmVyX3BvcywJCVwKIAkJCSAgcHJpbnRfYnVmZmVyX3BvcywgMCwgMSwgMCk7CQkJ XAorCSAgIFNBRkVfRlJFRSAoKTsJCQkJCQlcCiAJIH0JCQkJCQkJCVwKICAgICAgICBlbHNl CQkJCQkJCQlcCiAJIGluc2VydF8xX2JvdGggKHByaW50X2J1ZmZlciwgcHJpbnRfYnVmZmVy X3BvcywJCQlcCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Byb2Nlc3MuYycKLS0tIHNyYy9w cm9jZXNzLmMJMjAxNC0wOC0wOSAxNjoyMDoyOSArMDAwMAorKysgc3JjL3Byb2Nlc3MuYwky MDE0LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC0xMzg2LDkgKzEzODYsMTAgQEAKICAgKHB0 cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MpCiB7CiAgIExpc3BfT2JqZWN0IGJ1 ZmZlciwgbmFtZSwgcHJvZ3JhbSwgcHJvYywgY3VycmVudF9kaXIsIHRlbTsKLSAgcmVnaXN0 ZXIgdW5zaWduZWQgY2hhciAqKm5ld19hcmd2OworICB1bnNpZ25lZCBjaGFyICoqbmV3X2Fy Z3Y7CiAgIHB0cmRpZmZfdCBpOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVY ICgpOworICBVU0VfU0FGRV9BTExPQ0E7CiAKICAgYnVmZmVyID0gYXJnc1sxXTsKICAgaWYg KCFOSUxQIChidWZmZXIpKQpAQCAtMTQ2NCw3ICsxNDY1LDcgQEAKICAgICB2YWwgPSBWY29k aW5nX3N5c3RlbV9mb3JfcmVhZDsKICAgICBpZiAoTklMUCAodmFsKSkKICAgICAgIHsKLQlh cmdzMiA9IGFsbG9jYSAoKG5hcmdzICsgMSkgKiBzaXplb2YgKmFyZ3MyKTsKKwlTQUZFX0FM TE9DQV9MSVNQIChhcmdzMiwgbmFyZ3MgKyAxKTsKIAlhcmdzMlswXSA9IFFzdGFydF9wcm9j ZXNzOwogCWZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKSBhcmdzMltpICsgMV0gPSBhcmdz W2ldOwogCUdDUFJPMiAocHJvYywgY3VycmVudF9kaXIpOwpAQCAtMTQ4Myw3ICsxNDg0LDcg QEAKICAgICAgIHsKIAlpZiAoRVEgKGNvZGluZ19zeXN0ZW1zLCBRdCkpCiAJICB7Ci0JICAg IGFyZ3MyID0gYWxsb2NhICgobmFyZ3MgKyAxKSAqIHNpemVvZiAqYXJnczIpOworCSAgICBT QUZFX0FMTE9DQV9MSVNQIChhcmdzMiwgbmFyZ3MgKyAxKTsKIAkgICAgYXJnczJbMF0gPSBR c3RhcnRfcHJvY2VzczsKIAkgICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspIGFyZ3My W2kgKyAxXSA9IGFyZ3NbaV07CiAJICAgIEdDUFJPMiAocHJvYywgY3VycmVudF9kaXIpOwpA QCAtMTU3OCw3ICsxNTc5LDcgQEAKIAogICAgICAgLyogTm93IHRoYXQgZXZlcnl0aGluZyBp cyBlbmNvZGVkIHdlIGNhbiBjb2xsZWN0IHRoZSBzdHJpbmdzIGludG8KIAkgTkVXX0FSR1Yu ICAqLwotICAgICAgbmV3X2FyZ3YgPSBhbGxvY2EgKChuYXJncyAtIDEpICogc2l6ZW9mICpu ZXdfYXJndik7CisgICAgICBTQUZFX05BTExPQ0EgKG5ld19hcmd2LCAxLCBuYXJncyAtIDEp OwogICAgICAgbmV3X2FyZ3ZbbmFyZ3MgLSAyXSA9IDA7CiAKICAgICAgIGZvciAoaSA9IG5h cmdzIC0gMjsgaS0tICE9IDA7ICkKQEAgLTE1OTIsNiArMTU5Myw3IEBACiAgIGVsc2UKICAg ICBjcmVhdGVfcHR5IChwcm9jKTsKIAorICBTQUZFX0ZSRUUgKCk7CiAgIHJldHVybiB1bmJp bmRfdG8gKGNvdW50LCBwcm9jKTsKIH0KIApAQCAtMjA3MSw4ICsyMDczLDEwIEBACiAJICAg JiYgVkVDVE9SUCAoWENEUiAoYWRkcmVzcykpKQogICAgIHsKICAgICAgIHN0cnVjdCBzb2Nr YWRkciAqc2E7CisgICAgICBwID0gWFZFQ1RPUiAoWENEUiAoYWRkcmVzcykpOworICAgICAg aWYgKE1BWF9BTExPQ0EgLSBzaXplb2Ygc2EtPnNhX2ZhbWlseSA8IHAtPmhlYWRlci5zaXpl KQorCXJldHVybiAwOwogICAgICAgKmZhbWlseXAgPSBYSU5UIChYQ0FSIChhZGRyZXNzKSk7 Ci0gICAgICBwID0gWFZFQ1RPUiAoWENEUiAoYWRkcmVzcykpOwogICAgICAgcmV0dXJuIHAt PmhlYWRlci5zaXplICsgc2l6ZW9mIChzYS0+c2FfZmFtaWx5KTsKICAgICB9CiAgIHJldHVy biAwOwpAQCAtNDk3MywxOCArNDk3NywxNyBAQAogICAgZm9yIGRlY29kaW5nLiAgKi8KIAog c3RhdGljIGludAotcmVhZF9wcm9jZXNzX291dHB1dCAoTGlzcF9PYmplY3QgcHJvYywgcmVn aXN0ZXIgaW50IGNoYW5uZWwpCityZWFkX3Byb2Nlc3Nfb3V0cHV0IChMaXNwX09iamVjdCBw cm9jLCBpbnQgY2hhbm5lbCkKIHsKLSAgcmVnaXN0ZXIgc3NpemVfdCBuYnl0ZXM7Ci0gIGNo YXIgKmNoYXJzOwotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwID0gWFBST0NF U1MgKHByb2MpOworICBzc2l6ZV90IG5ieXRlczsKKyAgc3RydWN0IExpc3BfUHJvY2VzcyAq cCA9IFhQUk9DRVNTIChwcm9jKTsKICAgc3RydWN0IGNvZGluZ19zeXN0ZW0gKmNvZGluZyA9 IHByb2NfZGVjb2RlX2NvZGluZ19zeXN0ZW1bY2hhbm5lbF07CiAgIGludCBjYXJyeW92ZXIg PSBwLT5kZWNvZGluZ19jYXJyeW92ZXI7Ci0gIGludCByZWFkbWF4ID0gNDA5NjsKKyAgZW51 bSB7IHJlYWRtYXggPSA0MDk2IH07CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5E RVggKCk7CiAgIExpc3BfT2JqZWN0IG9kZWFjdGl2YXRlOworICBjaGFyIGNoYXJzW3NpemVv ZiBjb2RpbmctPmNhcnJ5b3ZlciArIHJlYWRtYXhdOwogCi0gIGNoYXJzID0gYWxsb2NhIChj YXJyeW92ZXIgKyByZWFkbWF4KTsKICAgaWYgKGNhcnJ5b3ZlcikKICAgICAvKiBTZWUgdGhl IGNvbW1lbnQgYWJvdmUuICAqLwogICAgIG1lbWNweSAoY2hhcnMsIFNEQVRBIChwLT5kZWNv ZGluZ19idWYpLCBjYXJyeW92ZXIpOwpAQCAtNjgzNyw3ICs2ODQwLDcgQEAKIHsKICAgRkRf U0VUIChmZCwgJmlucHV0X3dhaXRfbWFzayk7CiAgIEZEX1NFVCAoZmQsICZub25fa2V5Ym9h cmRfd2FpdF9tYXNrKTsKLSAgRkRfU0VUIChmZCwgJm5vbl9wcm9jZXNzX3dhaXRfbWFzayk7 CisgIEZEX1NFVCAoZmQsICZub25fcHJvY2Vzc193YWl0X21hc2spOwogICBmZF9jYWxsYmFj a19pbmZvW2ZkXS5mdW5jID0gdGltZXJmZF9jYWxsYmFjazsKICAgZmRfY2FsbGJhY2tfaW5m b1tmZF0uZGF0YSA9IE5VTEw7CiAgIGZkX2NhbGxiYWNrX2luZm9bZmRdLmNvbmRpdGlvbiB8 PSBGT1JfUkVBRDsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvcmVnZXguYycKLS0tIHNyYy9y ZWdleC5jCTIwMTQtMDctMTUgMTQ6MDQ6MDYgKzAwMDAKKysrIHNyYy9yZWdleC5jCTIwMTQt MDktMDUgMDY6MDM6MjggKzAwMDAKQEAgLTQ1NywxMSArNDU3LDE3IEBACiAKICMgZW5kaWYg Lyogbm90IGFsbG9jYSAqLwogCi0jIGRlZmluZSBSRUdFWF9BTExPQ0FURSBhbGxvY2EKKyMg aWZkZWYgZW1hY3MKKyMgIGRlZmluZSBSRUdFWF9VU0VfU0FGRV9BTExPQ0EgVVNFX1NBRkVf QUxMT0NBCisjICBkZWZpbmUgUkVHRVhfU0FGRV9GUkVFKCkgU0FGRV9GUkVFICgpCisjICBk ZWZpbmUgUkVHRVhfQUxMT0NBVEUgU0FGRV9BTExPQ0EKKyMgZWxzZQorIyAgZGVmaW5lIFJF R0VYX0FMTE9DQVRFIGFsbG9jYQorIyBlbmRpZgogCiAvKiBBc3N1bWVzIGEgYGNoYXIgKmRl c3RpbmF0aW9uJyB2YXJpYWJsZS4gICovCiAjIGRlZmluZSBSRUdFWF9SRUFMTE9DQVRFKHNv dXJjZSwgb3NpemUsIG5zaXplKQkJCQlcCi0gIChkZXN0aW5hdGlvbiA9IGFsbG9jYSAobnNp emUpLAkJCQkJXAorICAoZGVzdGluYXRpb24gPSBSRUdFWF9BTExPQ0FURSAobnNpemUpLAkJ CQlcCiAgICBtZW1jcHkgKGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9zaXplKSkKIAogLyogTm8g bmVlZCB0byBkbyBhbnl0aGluZyB0byBmcmVlLCBhZnRlciBhbGxvY2EuICAqLwpAQCAtNDY5 LDYgKzQ3NSwxMSBAQAogCiAjZW5kaWYgLyogbm90IFJFR0VYX01BTExPQyAqLwogCisjaWZu ZGVmIFJFR0VYX1VTRV9TQUZFX0FMTE9DQQorIyBkZWZpbmUgUkVHRVhfVVNFX1NBRkVfQUxM T0NBICgodm9pZCkgMCkKKyMgZGVmaW5lIFJFR0VYX1NBRkVfRlJFRSgpICgodm9pZCkgMCkK KyNlbmRpZgorCiAvKiBEZWZpbmUgaG93IHRvIGFsbG9jYXRlIHRoZSBmYWlsdXJlIHN0YWNr LiAgKi8KIAogI2lmIGRlZmluZWQgUkVMX0FMTE9DICYmIGRlZmluZWQgUkVHRVhfTUFMTE9D CkBAIC00ODIsMjIgKzQ5MywxMCBAQAogCiAjZWxzZSAvKiBub3QgdXNpbmcgcmVsb2NhdGlu ZyBhbGxvY2F0b3IgKi8KIAotIyBpZmRlZiBSRUdFWF9NQUxMT0MKLQotIyAgZGVmaW5lIFJF R0VYX0FMTE9DQVRFX1NUQUNLIG1hbGxvYwotIyAgZGVmaW5lIFJFR0VYX1JFQUxMT0NBVEVf U1RBQ0soc291cmNlLCBvc2l6ZSwgbnNpemUpIHJlYWxsb2MgKHNvdXJjZSwgbnNpemUpCi0j ICBkZWZpbmUgUkVHRVhfRlJFRV9TVEFDSyBmcmVlCi0KLSMgZWxzZSAvKiBub3QgUkVHRVhf TUFMTE9DICovCi0KLSMgIGRlZmluZSBSRUdFWF9BTExPQ0FURV9TVEFDSyBhbGxvY2EKLQot IyAgZGVmaW5lIFJFR0VYX1JFQUxMT0NBVEVfU1RBQ0soc291cmNlLCBvc2l6ZSwgbnNpemUp CQkJXAotICAgUkVHRVhfUkVBTExPQ0FURSAoc291cmNlLCBvc2l6ZSwgbnNpemUpCi0vKiBO byBuZWVkIHRvIGV4cGxpY2l0bHkgZnJlZSBhbnl0aGluZy4gICovCi0jICBkZWZpbmUgUkVH RVhfRlJFRV9TVEFDSyhhcmcpICgodm9pZCkwKQotCi0jIGVuZGlmIC8qIG5vdCBSRUdFWF9N QUxMT0MgKi8KKyMgZGVmaW5lIFJFR0VYX0FMTE9DQVRFX1NUQUNLKHNpemUpIFJFR0VYX0FM TE9DQVRFIChzaXplKQorIyBkZWZpbmUgUkVHRVhfUkVBTExPQ0FURV9TVEFDSyhzb3VyY2Us IG8sIG4pIFJFR0VYX1JFQUxMT0NBVEUgKHNvdXJjZSwgbywgbikKKyMgZGVmaW5lIFJFR0VY X0ZSRUVfU1RBQ0socHRyKSBSRUdFWF9GUkVFIChwdHIpCisKICNlbmRpZiAvKiBub3QgdXNp bmcgcmVsb2NhdGluZyBhbGxvY2F0b3IgKi8KIAogCkBAIC00NTc5LDYgKzQ1NzgsNyBAQAog ICAgIEZSRUVfVkFSIChyZWdlbmQpOwkJCQkJCQlcCiAgICAgRlJFRV9WQVIgKGJlc3RfcmVn c3RhcnQpOwkJCQkJCVwKICAgICBGUkVFX1ZBUiAoYmVzdF9yZWdlbmQpOwkJCQkJCVwKKyAg ICBSRUdFWF9TQUZFX0ZSRUUgKCk7CQkJCQkJCVwKICAgfSB3aGlsZSAoMCkKICNlbHNlCiAj IGRlZmluZSBGUkVFX1ZBUklBQkxFUygpICgodm9pZCkwKSAvKiBEbyBub3RoaW5nISAgQnV0 IGluaGliaXQgZ2NjIHdhcm5pbmcuICAqLwpAQCAtNTAxOCw2ICs1MDE4LDggQEAKIAogICBE RUJVR19QUklOVCAoIlxuXG5FbnRlcmluZyByZV9tYXRjaF8yLlxuIik7CiAKKyAgUkVHRVhf VVNFX1NBRkVfQUxMT0NBOworCiAgIElOSVRfRkFJTF9TVEFDSyAoKTsKIAogI2lmZGVmIE1B VENIX01BWV9BTExPQ0FURQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zY3JvbGwuYycKLS0t IHNyYy9zY3JvbGwuYwkyMDE0LTA4LTAzIDEyOjM0OjQ0ICswMDAwCisrKyBzcmMvc2Nyb2xs LmMJMjAxNC0wOS0wNSAwNjowMzoyOCArMDAwMApAQCAtMjQ1LDE4ICsyNDUsMjAgQEAKIHsK ICAgc3RydWN0IG1hdHJpeF9lbHQgKnA7CiAgIGludCBpLCBqLCBrOworICBVU0VfU0FGRV9B TExPQ0E7CiAKICAgLyogVHJ1ZSBpZiB3ZSBoYXZlIHNldCBhIHRlcm1pbmFsIHdpbmRvdyB3 aXRoIHNldF90ZXJtaW5hbF93aW5kb3cuICAqLwogICBib29sIHRlcm1pbmFsX3dpbmRvd19w ID0gMDsKIAogICAvKiBBIHF1ZXVlIGZvciBsaW5lIGluc2VydGlvbnMgdG8gYmUgZG9uZS4g ICovCiAgIHN0cnVjdCBxdWV1ZSB7IGludCBjb3VudCwgcG9zOyB9OwotICBzdHJ1Y3QgcXVl dWUgKnF1ZXVlX3N0YXJ0Ci0gICAgPSBhbGxvY2EgKGN1cnJlbnRfbWF0cml4LT5ucm93cyAq IHNpemVvZiAqcXVldWVfc3RhcnQpOworICBzdHJ1Y3QgcXVldWUgKnF1ZXVlX3N0YXJ0Owor ICBTQUZFX05BTExPQ0EgKHF1ZXVlX3N0YXJ0LCAxLCBjdXJyZW50X21hdHJpeC0+bnJvd3Mp OwogICBzdHJ1Y3QgcXVldWUgKnF1ZXVlID0gcXVldWVfc3RhcnQ7CiAKLSAgY2hhciAqcmV0 YWluZWRfcCA9IGFsbG9jYSAod2luZG93X3NpemUgKiBzaXplb2YgKnJldGFpbmVkX3ApOwot ICBpbnQgKmNvcHlfZnJvbSA9IGFsbG9jYSAod2luZG93X3NpemUgKiBzaXplb2YgKmNvcHlf ZnJvbSk7CisgIGNoYXIgKnJldGFpbmVkX3AgPSBTQUZFX0FMTE9DQSAod2luZG93X3NpemUp OworICBpbnQgKmNvcHlfZnJvbTsKKyAgU0FGRV9OQUxMT0NBIChjb3B5X2Zyb20sIDEsIHdp bmRvd19zaXplKTsKIAogICAvKiBaZXJvIG1lYW5zIGxpbmUgaXMgZW1wdHkuICAqLwogICBt ZW1zZXQgKHJldGFpbmVkX3AsIDAsIHdpbmRvd19zaXplICogc2l6ZW9mIChjaGFyKSk7CkBA IC0zNzgsNiArMzgwLDcgQEAKIAogICBpZiAodGVybWluYWxfd2luZG93X3ApCiAgICAgc2V0 X3Rlcm1pbmFsX3dpbmRvdyAoZnJhbWUsIDApOworICBTQUZFX0ZSRUUgKCk7CiB9CiAKIAwK QEAgLTY0OSwxMCArNjUyLDEyIEBACiB7CiAgIHN0cnVjdCBtYXRyaXhfZWx0ICpwOwogICBp bnQgaSwgajsKKyAgVVNFX1NBRkVfQUxMT0NBOwogCiAgIC8qIEEgcXVldWUgb2YgZGVsZXRp b25zIGFuZCBpbnNlcnRpb25zIHRvIGJlIHBlcmZvcm1lZC4gICovCiAgIHN0cnVjdCBhbHRf cXVldWUgeyBpbnQgY291bnQsIHBvcywgd2luZG93OyB9OwotICBzdHJ1Y3QgYWx0X3F1ZXVl ICpxdWV1ZV9zdGFydCA9IGFsbG9jYSAod2luZG93X3NpemUgKiBzaXplb2YgKnF1ZXVlX3N0 YXJ0KTsKKyAgc3RydWN0IGFsdF9xdWV1ZSAqcXVldWVfc3RhcnQ7CisgIFNBRkVfTkFMTE9D QSAocXVldWVfc3RhcnQsIDEsIHdpbmRvd19zaXplKTsKICAgc3RydWN0IGFsdF9xdWV1ZSAq cXVldWUgPSBxdWV1ZV9zdGFydDsKIAogICAvKiBUcnVlIGlmIGEgdGVybWluYWwgd2luZG93 IGhhcyBiZWVuIHNldCB3aXRoIHNldF90ZXJtaW5hbF93aW5kb3cuICAqLwpAQCAtNjY3LDEx ICs2NzIsMTIgQEAKICAgYm9vbCB3cml0ZV9mb2xsb3dzX3AgPSAxOwogCiAgIC8qIEZvciBl YWNoIHJvdyBpbiB0aGUgbmV3IG1hdHJpeCB3aGF0IHJvdyBvZiB0aGUgb2xkIG1hdHJpeCBp dCBpcy4gICovCi0gIGludCAqY29weV9mcm9tID0gYWxsb2NhICh3aW5kb3dfc2l6ZSAqIHNp emVvZiAqY29weV9mcm9tKTsKKyAgaW50ICpjb3B5X2Zyb207CisgIFNBRkVfTkFMTE9DQSAo Y29weV9mcm9tLCAxLCB3aW5kb3dfc2l6ZSk7CiAKICAgLyogTm9uLXplcm8gZm9yIGVhY2gg cm93IGluIHRoZSBuZXcgbWF0cml4IHRoYXQgaXMgcmV0YWluZWQgZnJvbSB0aGUKICAgICAg b2xkIG1hdHJpeC4gIExpbmVzIG5vdCByZXRhaW5lZCBhcmUgZW1wdHkuICAqLwotICBjaGFy ICpyZXRhaW5lZF9wID0gYWxsb2NhICh3aW5kb3dfc2l6ZSAqIHNpemVvZiAqcmV0YWluZWRf cCk7CisgIGNoYXIgKnJldGFpbmVkX3AgPSBTQUZFX0FMTE9DQSAod2luZG93X3NpemUpOwog CiAgIG1lbXNldCAocmV0YWluZWRfcCwgMCwgd2luZG93X3NpemUgKiBzaXplb2YgKGNoYXIp KTsKIApAQCAtNzg3LDYgKzc5Myw3IEBACiAKICAgaWYgKHRlcm1pbmFsX3dpbmRvd19wKQog ICAgIHNldF90ZXJtaW5hbF93aW5kb3cgKGZyYW1lLCAwKTsKKyAgU0FGRV9GUkVFICgpOwog fQogCiAKQEAgLTc5Niw4ICs4MDMsOSBAQAogCSAgICAgaW50IHVuY2hhbmdlZF9hdF9ib3R0 b20sIGludCAqZHJhd19jb3N0LCBpbnQgKm9sZF9kcmF3X2Nvc3QsCiAJICAgICB1bnNpZ25l ZCAqb2xkX2hhc2gsIHVuc2lnbmVkICpuZXdfaGFzaCwgaW50IGZyZWVfYXRfZW5kKQogewot ICBzdHJ1Y3QgbWF0cml4X2VsdCAqbWF0cml4Ci0gICAgPSBhbGxvY2EgKCh3aW5kb3dfc2l6 ZSArIDEpICogKHdpbmRvd19zaXplICsgMSkgKiBzaXplb2YgKm1hdHJpeCk7CisgIFVTRV9T QUZFX0FMTE9DQTsKKyAgc3RydWN0IG1hdHJpeF9lbHQgKm1hdHJpeDsKKyAgU0FGRV9OQUxM T0NBIChtYXRyaXgsIHdpbmRvd19zaXplICsgMSwgd2luZG93X3NpemUgKyAxKTsKIAogICBp ZiAoRlJBTUVfU0NST0xMX1JFR0lPTl9PSyAoZnJhbWUpKQogICAgIHsKQEAgLTgxNyw2ICs4 MjUsOCBAQAogICAgICAgICAgICAgICAgICAgICBmcmFtZS0+Y3VycmVudF9tYXRyaXgsIG1h dHJpeCwgd2luZG93X3NpemUsCiAJCSAgICB1bmNoYW5nZWRfYXRfdG9wKTsKICAgICB9CisK KyAgU0FGRV9GUkVFICgpOwogfQogCiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvc2VhcmNo LmMnCi0tLSBzcmMvc2VhcmNoLmMJMjAxNC0wNi0yMyAwNDoxMToyOSArMDAwMAorKysgc3Jj L3NlYXJjaC5jCTIwMTQtMDktMDUgMDY6MDM6MjggKzAwMDAKQEAgLTEzMTgsNiArMTMxOCw3 IEBACiAJIHRyYW5zbGF0aW9uLiAgT3RoZXJ3aXNlIHNldCB0byB6ZXJvIGxhdGVyLiAgKi8K ICAgICAgIGludCBjaGFyX2Jhc2UgPSAtMTsKICAgICAgIGJvb2wgYm95ZXJfbW9vcmVfb2sg PSAxOworICAgICAgVVNFX1NBRkVfQUxMT0NBOwogCiAgICAgICAvKiBNVUxUSUJZVEUgc2F5 cyB3aGV0aGVyIHRoZSB0ZXh0IHRvIGJlIHNlYXJjaGVkIGlzIG11bHRpYnl0ZS4KIAkgV2Ug bXVzdCBjb252ZXJ0IFBBVFRFUk4gdG8gbWF0Y2ggdGhhdCwgb3Igd2Ugd2lsbCBub3QgcmVh bGx5CkBAIC0xMzM1LDcgKzEzMzYsNyBAQAogCSAgcmF3X3BhdHRlcm5fc2l6ZV9ieXRlCiAJ ICAgID0gY291bnRfc2l6ZV9hc19tdWx0aWJ5dGUgKFNEQVRBIChzdHJpbmcpLAogCQkJCSAg ICAgICByYXdfcGF0dGVybl9zaXplKTsKLQkgIHJhd19wYXR0ZXJuID0gYWxsb2NhIChyYXdf cGF0dGVybl9zaXplX2J5dGUgKyAxKTsKKwkgIHJhd19wYXR0ZXJuID0gU0FGRV9BTExPQ0Eg KHJhd19wYXR0ZXJuX3NpemVfYnl0ZSArIDEpOwogCSAgY29weV90ZXh0IChTREFUQSAoc3Ry aW5nKSwgcmF3X3BhdHRlcm4sCiAJCSAgICAgU0NIQVJTIChzdHJpbmcpLCAwLCAxKTsKIAl9 CkBAIC0xMzQ5LDcgKzEzNTAsNyBAQAogCSAgICAgdGhlIGNob3NlbiBzaW5nbGUtYnl0ZSBj aGFyYWN0ZXIgc2V0IGNhbiBwb3NzaWJseSBtYXRjaC4gICovCiAJICByYXdfcGF0dGVybl9z aXplID0gU0NIQVJTIChzdHJpbmcpOwogCSAgcmF3X3BhdHRlcm5fc2l6ZV9ieXRlID0gU0NI QVJTIChzdHJpbmcpOwotCSAgcmF3X3BhdHRlcm4gPSBhbGxvY2EgKHJhd19wYXR0ZXJuX3Np emUgKyAxKTsKKwkgIHJhd19wYXR0ZXJuID0gU0FGRV9BTExPQ0EgKHJhd19wYXR0ZXJuX3Np emUgKyAxKTsKIAkgIGNvcHlfdGV4dCAoU0RBVEEgKHN0cmluZyksIHJhd19wYXR0ZXJuLAog CQkgICAgIFNCWVRFUyAoc3RyaW5nKSwgMSwgMCk7CiAJfQpAQCAtMTM1Nyw3ICsxMzU4LDcg QEAKICAgICAgIC8qIENvcHkgYW5kIG9wdGlvbmFsbHkgdHJhbnNsYXRlIHRoZSBwYXR0ZXJu LiAgKi8KICAgICAgIGxlbiA9IHJhd19wYXR0ZXJuX3NpemU7CiAgICAgICBsZW5fYnl0ZSA9 IHJhd19wYXR0ZXJuX3NpemVfYnl0ZTsKLSAgICAgIHBhdGJ1ZiA9IGFsbG9jYSAobGVuICog TUFYX01VTFRJQllURV9MRU5HVEgpOworICAgICAgU0FGRV9OQUxMT0NBIChwYXRidWYsIE1B WF9NVUxUSUJZVEVfTEVOR1RILCBsZW4pOwogICAgICAgcGF0ID0gcGF0YnVmOwogICAgICAg YmFzZV9wYXQgPSByYXdfcGF0dGVybjsKICAgICAgIGlmIChtdWx0aWJ5dGUpCkBAIC0xNDk3 LDEzICsxNDk4LDE1IEBACiAgICAgICBsZW5fYnl0ZSA9IHBhdCAtIHBhdGJ1ZjsKICAgICAg IHBhdCA9IGJhc2VfcGF0ID0gcGF0YnVmOwogCi0gICAgICBpZiAoYm95ZXJfbW9vcmVfb2sp Ci0JcmV0dXJuIGJveWVyX21vb3JlIChuLCBwYXQsIGxlbl9ieXRlLCB0cnQsIGludmVyc2Vf dHJ0LAotCQkJICAgIHBvc19ieXRlLCBsaW1fYnl0ZSwKLQkJCSAgICBjaGFyX2Jhc2UpOwot ICAgICAgZWxzZQotCXJldHVybiBzaW1wbGVfc2VhcmNoIChuLCBwYXQsIHJhd19wYXR0ZXJu X3NpemUsIGxlbl9ieXRlLCB0cnQsCi0JCQkgICAgICBwb3MsIHBvc19ieXRlLCBsaW0sIGxp bV9ieXRlKTsKKyAgICAgIExpc3BfT2JqZWN0IHJlc3VsdAorCT0gKGJveWVyX21vb3JlX29r CisJICAgPyBib3llcl9tb29yZSAobiwgcGF0LCBsZW5fYnl0ZSwgdHJ0LCBpbnZlcnNlX3Ry dCwKKwkJCSAgcG9zX2J5dGUsIGxpbV9ieXRlLAorCQkJICBjaGFyX2Jhc2UpCisJICAgOiBz aW1wbGVfc2VhcmNoIChuLCBwYXQsIHJhd19wYXR0ZXJuX3NpemUsIGxlbl9ieXRlLCB0cnQs CisJCQkgICAgcG9zLCBwb3NfYnl0ZSwgbGltLCBsaW1fYnl0ZSkpOworICAgICAgU0FGRV9G UkVFICgpOworICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAMCkBAIC0yODA5LDcg KzI4MTIsOCBAQAogCiAgIHByZXYgPSBRbmlsOwogCi0gIGRhdGEgPSBhbGxvY2EgKCgyICog c2VhcmNoX3JlZ3MubnVtX3JlZ3MgKyAxKSAqIHNpemVvZiAqZGF0YSk7CisgIFVTRV9TQUZF X0FMTE9DQTsKKyAgU0FGRV9OQUxMT0NBIChkYXRhLCAxLCAyICogc2VhcmNoX3JlZ3MubnVt X3JlZ3MgKyAxKTsKIAogICBsZW4gPSAwOwogICBmb3IgKGkgPSAwOyBpIDwgc2VhcmNoX3Jl Z3MubnVtX3JlZ3M7IGkrKykKQEAgLTI4NTIsMjUgKzI4NTYsMjggQEAKIAogICAvKiBJZiBS RVVTRSBpcyBub3QgdXNhYmxlLCBjb25zIHVwIHRoZSB2YWx1ZXMgYW5kIHJldHVybiB0aGVt LiAgKi8KICAgaWYgKCEgQ09OU1AgKHJldXNlKSkKLSAgICByZXR1cm4gRmxpc3QgKGxlbiwg ZGF0YSk7CisgICAgcmV1c2UgPSBGbGlzdCAobGVuLCBkYXRhKTsKKyAgZWxzZQorICAgIHsK KyAgICAgIC8qIElmIFJFVVNFIGlzIGEgbGlzdCwgc3RvcmUgYXMgbWFueSB2YWx1ZSBlbGVt ZW50cyBhcyB3aWxsIGZpdAorCSBpbnRvIHRoZSBlbGVtZW50cyBvZiBSRVVTRS4gICovCisg ICAgICBmb3IgKGkgPSAwLCB0YWlsID0gcmV1c2U7IENPTlNQICh0YWlsKTsKKwkgICBpKyss IHRhaWwgPSBYQ0RSICh0YWlsKSkKKwl7CisJICBpZiAoaSA8IGxlbikKKwkgICAgWFNFVENB UiAodGFpbCwgZGF0YVtpXSk7CisJICBlbHNlCisJICAgIFhTRVRDQVIgKHRhaWwsIFFuaWwp OworCSAgcHJldiA9IHRhaWw7CisJfQogCi0gIC8qIElmIFJFVVNFIGlzIGEgbGlzdCwgc3Rv cmUgYXMgbWFueSB2YWx1ZSBlbGVtZW50cyBhcyB3aWxsIGZpdAotICAgICBpbnRvIHRoZSBl bGVtZW50cyBvZiBSRVVTRS4gICovCi0gIGZvciAoaSA9IDAsIHRhaWwgPSByZXVzZTsgQ09O U1AgKHRhaWwpOwotICAgICAgIGkrKywgdGFpbCA9IFhDRFIgKHRhaWwpKQotICAgIHsKKyAg ICAgIC8qIElmIHdlIGNvdWxkbid0IGZpdCBhbGwgdmFsdWUgZWxlbWVudHMgaW50byBSRVVT RSwKKwkgY29ucyB1cCB0aGUgcmVzdCBvZiB0aGVtIGFuZCBhZGQgdGhlbSB0byB0aGUgZW5k IG9mIFJFVVNFLiAgKi8KICAgICAgIGlmIChpIDwgbGVuKQotCVhTRVRDQVIgKHRhaWwsIGRh dGFbaV0pOwotICAgICAgZWxzZQotCVhTRVRDQVIgKHRhaWwsIFFuaWwpOwotICAgICAgcHJl diA9IHRhaWw7CisJWFNFVENEUiAocHJldiwgRmxpc3QgKGxlbiAtIGksIGRhdGEgKyBpKSk7 CiAgICAgfQogCi0gIC8qIElmIHdlIGNvdWxkbid0IGZpdCBhbGwgdmFsdWUgZWxlbWVudHMg aW50byBSRVVTRSwKLSAgICAgY29ucyB1cCB0aGUgcmVzdCBvZiB0aGVtIGFuZCBhZGQgdGhl bSB0byB0aGUgZW5kIG9mIFJFVVNFLiAgKi8KLSAgaWYgKGkgPCBsZW4pCi0gICAgWFNFVENE UiAocHJldiwgRmxpc3QgKGxlbiAtIGksIGRhdGEgKyBpKSk7Ci0KKyAgU0FGRV9GUkVFICgp OwogICByZXR1cm4gcmV1c2U7CiB9CiAKQEAgLTMwNzUsNyArMzA4Miw4IEBACiAKICAgQ0hF Q0tfU1RSSU5HIChzdHJpbmcpOwogCi0gIHRlbXAgPSBhbGxvY2EgKFNCWVRFUyAoc3RyaW5n KSAqIDIpOworICBVU0VfU0FGRV9BTExPQ0E7CisgIFNBRkVfTkFMTE9DQSAodGVtcCwgMiwg U0JZVEVTIChzdHJpbmcpKTsKIAogICAvKiBOb3cgY29weSB0aGUgZGF0YSBpbnRvIHRoZSBu ZXcgc3RyaW5nLCBpbnNlcnRpbmcgZXNjYXBlcy4gKi8KIApAQCAtMzA5MywxMCArMzEwMSwx MyBAQAogICAgICAgKm91dCsrID0gKmluOwogICAgIH0KIAotICByZXR1cm4gbWFrZV9zcGVj aWZpZWRfc3RyaW5nICh0ZW1wLAotCQkJCVNDSEFSUyAoc3RyaW5nKSArIGJhY2tzbGFzaGVz X2FkZGVkLAotCQkJCW91dCAtIHRlbXAsCi0JCQkJU1RSSU5HX01VTFRJQllURSAoc3RyaW5n KSk7CisgIExpc3BfT2JqZWN0IHJlc3VsdAorICAgID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5n ICh0ZW1wLAorCQkJICAgICBTQ0hBUlMgKHN0cmluZykgKyBiYWNrc2xhc2hlc19hZGRlZCwK KwkJCSAgICAgb3V0IC0gdGVtcCwKKwkJCSAgICAgU1RSSU5HX01VTFRJQllURSAoc3RyaW5n KSk7CisgIFNBRkVfRlJFRSAoKTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogTGlrZSBm aW5kX25ld2xpbmUsIGJ1dCBkb2Vzbid0IHVzZSB0aGUgY2FjaGUsIGFuZCBvbmx5IHNlYXJj aGVzIGZvcndhcmQuICAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zb3VuZC5jJwotLS0g c3JjL3NvdW5kLmMJMjAxNC0wMy0yNSAxNDo0MzoyNiArMDAwMAorKysgc3JjL3NvdW5kLmMJ MjAxNC0wOS0wNSAwNjowMzoyOCArMDAwMApAQCAtNTY0LDEyICs1NjQsMTEgQEAKIAkgICAg ICAgU0JZVEVTIChzLT5kYXRhKSAtIHNpemVvZiAqaGVhZGVyKTsKICAgZWxzZQogICAgIHsK LSAgICAgIGNoYXIgKmJ1ZmZlcjsKICAgICAgIHB0cmRpZmZfdCBuYnl0ZXMgPSAwOwogICAg ICAgcHRyZGlmZl90IGJsa3NpemUgPSBzZC0+cGVyaW9kX3NpemUgPyBzZC0+cGVyaW9kX3Np emUgKHNkKSA6IDIwNDg7CiAgICAgICBwdHJkaWZmX3QgZGF0YV9sZWZ0ID0gaGVhZGVyLT5k YXRhX2xlbmd0aDsKLQotICAgICAgYnVmZmVyID0gYWxsb2NhIChibGtzaXplKTsKKyAgICAg IFVTRV9TQUZFX0FMTE9DQTsKKyAgICAgIGNoYXIgKmJ1ZmZlciA9IFNBRkVfQUxMT0NBIChi bGtzaXplKTsKICAgICAgIGxzZWVrIChzLT5mZCwgc2l6ZW9mICpoZWFkZXIsIFNFRUtfU0VU KTsKICAgICAgIHdoaWxlIChkYXRhX2xlZnQgPiAwCiAgICAgICAgICAgICAgJiYgKG5ieXRl cyA9IGVtYWNzX3JlYWQgKHMtPmZkLCBidWZmZXIsIGJsa3NpemUpKSA+IDApCkBAIC01ODIs NiArNTgxLDcgQEAKIAogICAgICAgaWYgKG5ieXRlcyA8IDApCiAJc291bmRfcGVycm9yICgi RXJyb3IgcmVhZGluZyBzb3VuZCBmaWxlIik7CisgICAgICBTQUZFX0ZSRUUgKCk7CiAgICAg fQogfQogCkBAIC02NTYsMTkgKzY1NiwyMCBAQAogICBlbHNlCiAgICAgewogICAgICAgcHRy ZGlmZl90IGJsa3NpemUgPSBzZC0+cGVyaW9kX3NpemUgPyBzZC0+cGVyaW9kX3NpemUgKHNk KSA6IDIwNDg7Ci0gICAgICBjaGFyICpidWZmZXI7CiAgICAgICBwdHJkaWZmX3QgbmJ5dGVz OwogCiAgICAgICAvKiBTZWVrICovCiAgICAgICBsc2VlayAocy0+ZmQsIGhlYWRlci0+ZGF0 YV9vZmZzZXQsIFNFRUtfU0VUKTsKIAogICAgICAgLyogQ29weSBzb3VuZCBkYXRhIHRvIHRo ZSBkZXZpY2UuICAqLwotICAgICAgYnVmZmVyID0gYWxsb2NhIChibGtzaXplKTsKKyAgICAg IFVTRV9TQUZFX0FMTE9DQTsKKyAgICAgIGNoYXIgKmJ1ZmZlciA9IFNBRkVfQUxMT0NBIChi bGtzaXplKTsKICAgICAgIHdoaWxlICgobmJ5dGVzID0gZW1hY3NfcmVhZCAocy0+ZmQsIGJ1 ZmZlciwgYmxrc2l6ZSkpID4gMCkKIAlzZC0+d3JpdGUgKHNkLCBidWZmZXIsIG5ieXRlcyk7 CiAKICAgICAgIGlmIChuYnl0ZXMgPCAwKQogCXNvdW5kX3BlcnJvciAoIkVycm9yIHJlYWRp bmcgc291bmQgZmlsZSIpOworICAgICAgU0FGRV9GUkVFICgpOwogICAgIH0KIH0KIApAQCAt MTMwOSw3ICsxMzEwLDYgQEAKICAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOwogICBM aXNwX09iamVjdCBhcmdzWzJdOwogI2Vsc2UgLyogV0lORE9XU05UICovCi0gIGludCBsZW4g PSAwOwogICBMaXNwX09iamVjdCBsb19maWxlID0gezB9OwogICBjaGFyICogcHN6X2ZpbGUg PSBOVUxMOwogICB1bnNpZ25lZCBsb25nIHVpX3ZvbHVtZV90bXAgPSBVSU5UX01BWDsKQEAg LTEzMjYsNyArMTMyNiw4IEBACiAgIGN1cnJlbnRfc291bmRfZGV2aWNlID0geHphbGxvYyAo c2l6ZW9mICpjdXJyZW50X3NvdW5kX2RldmljZSk7CiAgIGN1cnJlbnRfc291bmQgPSB4emFs bG9jIChzaXplb2YgKmN1cnJlbnRfc291bmQpOwogICByZWNvcmRfdW53aW5kX3Byb3RlY3Rf dm9pZCAoc291bmRfY2xlYW51cCk7Ci0gIGN1cnJlbnRfc291bmQtPmhlYWRlciA9IGFsbG9j YSAoTUFYX1NPVU5EX0hFQURFUl9CWVRFUyk7CisgIGNoYXIgaGVhZGVyYnVmW01BWF9TT1VO RF9IRUFERVJfQllURVNdOworICBjdXJyZW50X3NvdW5kLT5oZWFkZXIgPSBoZWFkZXJidWY7 CiAKICAgaWYgKFNUUklOR1AgKGF0dHJzW1NPVU5EX0ZJTEVdKSkKICAgICB7Cgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL3N5bnRheC5jJwotLS0gc3JjL3N5bnRheC5jCTIwMTQtMDktMDQg MTY6MTQ6MDUgKzAwMDAKKysrIHNyYy9zeW50YXguYwkyMDE0LTA5LTA1IDA2OjAzOjI4ICsw MDAwCkBAIC0xNTY3LDYgKzE1NjcsNyBAQAogICBjb25zdCB1bnNpZ25lZCBjaGFyICpzdHI7 CiAgIGludCBsZW47CiAgIExpc3BfT2JqZWN0IGlzb19jbGFzc2VzOworICBVU0VfU0FGRV9B TExPQ0E7CiAKICAgQ0hFQ0tfU1RSSU5HIChzdHJpbmcpOwogICBpc29fY2xhc3NlcyA9IFFu aWw7CkBAIC0xNjk5LDcgKzE3MDAsNyBAQAogCSAgbWVtY3B5IChoaW1hcCwgZmFzdG1hcCAr IDAyMDAsIDAyMDApOwogCSAgaGltYXBbMDIwMF0gPSAwOwogCSAgbWVtc2V0IChmYXN0bWFw ICsgMDIwMCwgMCwgMDIwMCk7Ci0JICBjaGFyX3JhbmdlcyA9IGFsbG9jYSAoc2l6ZW9mICpj aGFyX3JhbmdlcyAqIDEyOCAqIDIpOworCSAgU0FGRV9OQUxMT0NBIChjaGFyX3Jhbmdlcywg MiwgMTI4KTsKIAkgIGkgPSAwOwogCiAJICB3aGlsZSAoKHAxID0gbWVtY2hyIChoaW1hcCAr IGksIDEsIDAyMDAgLSBpKSkpCkBAIC0xNzIzLDcgKzE3MjQsNyBAQAogICAgIH0KICAgZWxz ZQkJCQkvKiBTVFJJTkcgaXMgbXVsdGlieXRlICovCiAgICAgewotICAgICAgY2hhcl9yYW5n ZXMgPSBhbGxvY2EgKHNpemVvZiAqY2hhcl9yYW5nZXMgKiBTQ0hBUlMgKHN0cmluZykgKiAy KTsKKyAgICAgIFNBRkVfTkFMTE9DQSAoY2hhcl9yYW5nZXMsIDIsIFNDSEFSUyAoc3RyaW5n KSk7CiAKICAgICAgIHdoaWxlIChpX2J5dGUgPCBzaXplX2J5dGUpCiAJewpAQCAtMjAzMiw2 ICsyMDMzLDcgQEAKICAgICBTRVRfUFRfQk9USCAocG9zLCBwb3NfYnl0ZSk7CiAgICAgaW1t ZWRpYXRlX3F1aXQgPSAwOwogCisgICAgU0FGRV9GUkVFICgpOwogICAgIHJldHVybiBtYWtl X251bWJlciAoUFQgLSBzdGFydF9wb2ludCk7CiAgIH0KIH0KCj09PSBtb2RpZmllZCBmaWxl ICdzcmMvdGVybS5jJwotLS0gc3JjL3Rlcm0uYwkyMDE0LTA4LTEwIDE2OjI4OjM2ICswMDAw CisrKyBzcmMvdGVybS5jCTIwMTQtMDktMDUgMDY6MDM6MjggKzAwMDAKQEAgLTMxOTEsNiAr MzE5MSw3IEBACiAgIExpc3BfT2JqZWN0IHNlbGVjdGZhY2U7CiAgIGludCBmaXJzdF9pdGVt ID0gMDsKICAgaW50IGNvbCwgcm93OworICBVU0VfU0FGRV9BTExPQ0E7CiAKICAgLyogRG9u J3QgYWxsb3cgbm9uLXBvc2l0aXZlIHgwIGFuZCB5MCwgbGVzdCB0aGUgbWVudSB3aWxsIHdy YXAKICAgICAgYXJvdW5kIHRoZSBkaXNwbGF5LiAgKi8KQEAgLTMxOTksNyArMzIwMCw3IEBA CiAgIGlmICh5MCA8PSAwKQogICAgIHkwID0gMTsKIAotICBzdGF0ZSA9IGFsbG9jYSAobWVu dS0+cGFuZWNvdW50ICogc2l6ZW9mIChzdHJ1Y3QgdHR5X21lbnVfc3RhdGUpKTsKKyAgU0FG RV9OQUxMT0NBIChzdGF0ZSwgMSwgbWVudS0+cGFuZWNvdW50KTsKICAgbWVtc2V0IChzdGF0 ZSwgMCwgc2l6ZW9mICgqc3RhdGUpKTsKICAgZmFjZXNbMF0KICAgICA9IGxvb2t1cF9kZXJp dmVkX2ZhY2UgKHNmLCBpbnRlcm4gKCJ0dHktbWVudS1kaXNhYmxlZC1mYWNlIiksCkBAIC0z NDIxLDYgKzM0MjIsNyBAQAogICBkaXNjYXJkX21vdXNlX2V2ZW50cyAoKTsKICAgaWYgKCFr YmRfYnVmZmVyX2V2ZW50c193YWl0aW5nICgpKQogICAgIGNsZWFyX2lucHV0X3BlbmRpbmcg KCk7CisgIFNBRkVfRlJFRSAoKTsKICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzYwNiw2 ICszNjA4LDcgQEAKICAgaXRlbV95ID0geSArPSBmLT50b3BfcG9zOwogCiAgIC8qIENyZWF0 ZSBhbGwgdGhlIG5lY2Vzc2FyeSBwYW5lcyBhbmQgdGhlaXIgaXRlbXMuICAqLworICBVU0Vf U0FGRV9BTExPQ0E7CiAgIG1heHdpZHRoID0gbWF4bGluZXMgPSBsaW5lcyA9IGkgPSAwOwog ICBscGFuZSA9IFRUWU1fRkFJTFVSRTsKICAgd2hpbGUgKGkgPCBtZW51X2l0ZW1zX3VzZWQp CkBAIC0zNjc0LDkgKzM2NzcsNyBAQAogCiAJICBpZiAoIU5JTFAgKGRlc2NyaXApKQogCSAg ICB7Ci0JICAgICAgLyogSWYgYWxsb2NhIGlzIGZhc3QsIHVzZSB0aGF0IHRvIG1ha2UgdGhl IHNwYWNlLAotCQkgdG8gcmVkdWNlIGdjIG5lZWRzLiAgKi8KLQkgICAgICBpdGVtX2RhdGEg PSAoY2hhciAqKSBhbGxvY2EgKG1heHdpZHRoICsgU0JZVEVTIChkZXNjcmlwKSArIDEpOwor CSAgICAgIGl0ZW1fZGF0YSA9IFNBRkVfQUxMT0NBIChtYXh3aWR0aCArIFNCWVRFUyAoZGVz Y3JpcCkgKyAxKTsKIAkgICAgICBtZW1jcHkgKGl0ZW1fZGF0YSwgU1NEQVRBIChpdGVtX25h bWUpLCBTQllURVMgKGl0ZW1fbmFtZSkpOwogCSAgICAgIGZvciAoaiA9IFNDSEFSUyAoaXRl bV9uYW1lKTsgaiA8IG1heHdpZHRoOyBqKyspCiAJCWl0ZW1fZGF0YVtqXSA9ICcgJzsKQEAg LTM4MjksNiArMzgzMCw3IEBACiAKICB0dHlfbWVudV9lbmQ6CiAKKyAgU0FGRV9GUkVFICgp OwogICB1bmJpbmRfdG8gKHNwZWNwZGxfY291bnQsIFFuaWwpOwogICByZXR1cm4gZW50cnk7 CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3RleHRwcm9wLmMnCi0tLSBzcmMvdGV4dHBy b3AuYwkyMDE0LTAxLTE0IDE3OjU5OjE5ICswMDAwCisrKyBzcmMvdGV4dHByb3AuYwkyMDE0 LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC02NjAsNiArNjYwLDcgQEAKIAogICAgICAgc2V0 X2J1ZmZlcl90ZW1wIChYQlVGRkVSIChvYmplY3QpKTsKIAorICAgICAgVVNFX1NBRkVfQUxM T0NBOwogICAgICAgR0VUX09WRVJMQVlTX0FUIChYSU5UIChwb3NpdGlvbiksIG92ZXJsYXlf dmVjLCBub3ZlcmxheXMsIE5VTEwsIDApOwogICAgICAgbm92ZXJsYXlzID0gc29ydF9vdmVy bGF5cyAob3ZlcmxheV92ZWMsIG5vdmVybGF5cywgdyk7CiAKQEAgLTY3NCw5ICs2NzUsMTEg QEAKIAkgICAgICBpZiAob3ZlcmxheSkKIAkJLyogUmV0dXJuIHRoZSBvdmVybGF5IHdlIGdv dCB0aGUgcHJvcGVydHkgZnJvbS4gICovCiAJCSpvdmVybGF5ID0gb3ZlcmxheV92ZWNbbm92 ZXJsYXlzXTsKKwkgICAgICBTQUZFX0ZSRUUgKCk7CiAJICAgICAgcmV0dXJuIHRlbTsKIAkg ICAgfQogCX0KKyAgICAgIFNBRkVfRlJFRSAoKTsKICAgICB9CiAKICAgaWYgKG92ZXJsYXkp Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3dpbmRvdy5jJwotLS0gc3JjL3dpbmRvdy5jCTIw MTQtMDgtMTEgMDA6NTk6MzQgKzAwMDAKKysrIHNyYy93aW5kb3cuYwkyMDE0LTA5LTA1IDA2 OjAzOjI4ICswMDAwCkBAIC02MTI0LDYgKzYxMjQsNyBAQAogICBMaXNwX09iamVjdCBmcmFt ZTsKICAgc3RydWN0IGZyYW1lICpmOwogICBwdHJkaWZmX3Qgb2xkX3BvaW50ID0gLTE7Cisg IFVTRV9TQUZFX0FMTE9DQTsKIAogICBDSEVDS19XSU5ET1dfQ09ORklHVVJBVElPTiAoY29u ZmlndXJhdGlvbik7CiAKQEAgLTYyMzEsOCArNjIzMiw4IEBACiAJIHJlYWxseSBsaWtlIHRv IGRvIGlzIHRvIGZyZWUgb25seSB0aG9zZSBtYXRyaWNlcyBub3QgcmV1c2VkCiAJIGJlbG93 LiAgKi8KICAgICAgIHJvb3Rfd2luZG93ID0gWFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cg KGYpKTsKLSAgICAgIGxlYWZfd2luZG93cyA9IGFsbG9jYSAoY291bnRfd2luZG93cyAocm9v dF93aW5kb3cpCi0JCQkgICAgICogc2l6ZW9mICpsZWFmX3dpbmRvd3MpOworICAgICAgaW50 IG53aW5kb3dzID0gY291bnRfd2luZG93cyAocm9vdF93aW5kb3cpOworICAgICAgU0FGRV9O QUxMT0NBIChsZWFmX3dpbmRvd3MsIDEsIG53aW5kb3dzKTsKICAgICAgIG5fbGVhZl93aW5k b3dzID0gZ2V0X2xlYWZfd2luZG93cyAocm9vdF93aW5kb3csIGxlYWZfd2luZG93cywgMCk7 CiAKICAgICAgIC8qIEtsdWRnZSBBbGVydCEKQEAgLTY0NTYsNiArNjQ1Nyw3IEBACiAgIFZt aW5pYnVmX3Njcm9sbF93aW5kb3cgPSBkYXRhLT5taW5pYnVmX3Njcm9sbF93aW5kb3c7CiAg IG1pbmlidWZfc2VsZWN0ZWRfd2luZG93ID0gZGF0YS0+bWluaWJ1Zl9zZWxlY3RlZF93aW5k b3c7CiAKKyAgU0FGRV9GUkVFICgpOwogICByZXR1cm4gKEZSQU1FX0xJVkVfUCAoZikgPyBR dCA6IFFuaWwpOwogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3hkaXNwLmMnCi0tLSBz cmMveGRpc3AuYwkyMDE0LTA5LTA0IDE2OjE0OjA1ICswMDAwCisrKyBzcmMveGRpc3AuYwky MDE0LTA5LTA1IDA2OjAzOjI4ICswMDAwCkBAIC0yNjI2LDE1ICsyNjI2LDE0IEBACiAgICAg ewogICAgICAgcHRyZGlmZl90IGk7CiAgICAgICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERM X0lOREVYICgpOwotICAgICAgc3RydWN0IGdjcHJvIGdjcHJvMTsKLSAgICAgIExpc3BfT2Jq ZWN0ICphcmdzID0gYWxsb2NhIChuYXJncyAqIHdvcmRfc2l6ZSk7CisgICAgICBMaXNwX09i amVjdCAqYXJnczsKKyAgICAgIFVTRV9TQUZFX0FMTE9DQTsKKyAgICAgIFNBRkVfQUxMT0NB X0xJU1AgKGFyZ3MsIG5hcmdzKTsKIAogICAgICAgYXJnc1swXSA9IGZ1bmM7CiAgICAgICBm b3IgKGkgPSAxOyBpIDwgbmFyZ3M7IGkrKykKIAlhcmdzW2ldID0gdmFfYXJnIChhcCwgTGlz cF9PYmplY3QpOwogCi0gICAgICBHQ1BSTzEgKGFyZ3NbMF0pOwotICAgICAgZ2Nwcm8xLm52 YXJzID0gbmFyZ3M7CiAgICAgICBzcGVjYmluZCAoUWluaGliaXRfcmVkaXNwbGF5LCBRdCk7 CiAgICAgICBpZiAoaW5oaWJpdF9xdWl0KQogCXNwZWNiaW5kIChRaW5oaWJpdF9xdWl0LCBR dCk7CkBAIC0yNjQyLDcgKzI2NDEsNyBAQAogCSBzbyB0aGVyZSBpcyBubyBwb3NzaWJpbGl0 eSBvZiB3YW50aW5nIHRvIHJlZGlzcGxheS4gICovCiAgICAgICB2YWwgPSBpbnRlcm5hbF9j b25kaXRpb25fY2FzZV9uIChGZnVuY2FsbCwgbmFyZ3MsIGFyZ3MsIFF0LAogCQkJCSAgICAg ICBzYWZlX2V2YWxfaGFuZGxlcik7Ci0gICAgICBVTkdDUFJPOworICAgICAgU0FGRV9GUkVF ICgpOwogICAgICAgdmFsID0gdW5iaW5kX3RvIChjb3VudCwgdmFsKTsKICAgICB9CiAKQEAg LTM2NTksNiArMzY1OCw3IEBACiAgIHB0cmRpZmZfdCBpLCBub3ZlcmxheXM7CiAgIHB0cmRp ZmZfdCBlbmRwb3M7CiAgIExpc3BfT2JqZWN0ICpvdmVybGF5czsKKyAgVVNFX1NBRkVfQUxM T0NBOwogCiAgIC8qIEdldCBhbGwgb3ZlcmxheXMgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiAg Ki8KICAgR0VUX09WRVJMQVlTX0FUIChwb3MsIG92ZXJsYXlzLCBub3ZlcmxheXMsICZlbmRw b3MsIDEpOwpAQCAtMzY3NSw2ICszNjc1LDcgQEAKICAgICAgIGVuZHBvcyA9IG1pbiAoZW5k cG9zLCBvZW5kcG9zKTsKICAgICB9CiAKKyAgU0FGRV9GUkVFICgpOwogICByZXR1cm4gZW5k cG9zOwogfQogCkBAIC01NzM1LDEwICs1NzM2LDExIEBACiAgIExpc3BfT2JqZWN0IG92ZXJs YXksIHdpbmRvdywgc3RyLCBpbnZpc2libGU7CiAgIHN0cnVjdCBMaXNwX092ZXJsYXkgKm92 OwogICBwdHJkaWZmX3Qgc3RhcnQsIGVuZDsKLSAgcHRyZGlmZl90IHNpemUgPSAyMDsKICAg cHRyZGlmZl90IG4gPSAwLCBpLCBqOwogICBpbnQgaW52aXNfcDsKLSAgc3RydWN0IG92ZXJs YXlfZW50cnkgKmVudHJpZXMgPSBhbGxvY2EgKHNpemUgKiBzaXplb2YgKmVudHJpZXMpOwor ICBzdHJ1Y3Qgb3ZlcmxheV9lbnRyeSBlbnRyaWVzYnVmWzIwXTsKKyAgcHRyZGlmZl90IHNp emUgPSBBUlJBWUVMVFMgKGVudHJpZXNidWYpOworICBzdHJ1Y3Qgb3ZlcmxheV9lbnRyeSAq ZW50cmllcyA9IGVudHJpZXNidWY7CiAgIFVTRV9TQUZFX0FMTE9DQTsKIAogICBpZiAoY2hh cnBvcyA8PSAwKQpAQCAtMTAxOTEsOSArMTAxOTMsOSBAQAogICAgIHsKICAgICAgIHB0cmRp ZmZfdCBuYnl0ZXMgPSBTQllURVMgKG0pOwogICAgICAgYm9vbCBtdWx0aWJ5dGUgPSBTVFJJ TkdfTVVMVElCWVRFIChtKTsKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKICAgICAgIFVTRV9TQUZF X0FMTE9DQTsKLSAgICAgIGNoYXIgKmJ1ZmZlciA9IFNBRkVfQUxMT0NBIChuYnl0ZXMpOwot ICAgICAgbWVtY3B5IChidWZmZXIsIFNEQVRBIChtKSwgbmJ5dGVzKTsKKyAgICAgIFNBRkVf QUxMT0NBX1NUUklORyAoYnVmZmVyLCBtKTsKICAgICAgIG1lc3NhZ2VfZG9sb2cgKGJ1ZmZl ciwgbmJ5dGVzLCAxLCBtdWx0aWJ5dGUpOwogICAgICAgU0FGRV9GUkVFICgpOwogICAgIH0K QEAgLTEwMzk1LDExICsxMDM5NywxMyBAQAogCSAgICB7CiAJICAgICAgcHRyZGlmZl90IGxl bjsKIAkgICAgICBwdHJkaWZmX3QgbWF4c2l6ZSA9IEZSQU1FX01FU1NBR0VfQlVGX1NJWkUg KGYpOwotCSAgICAgIGNoYXIgKm1lc3NhZ2VfYnVmID0gYWxsb2NhIChtYXhzaXplICsgMSk7 CisJICAgICAgVVNFX1NBRkVfQUxMT0NBOworCSAgICAgIGNoYXIgKm1lc3NhZ2VfYnVmID0g U0FGRV9BTExPQ0EgKG1heHNpemUgKyAxKTsKIAogCSAgICAgIGxlbiA9IGRvcHJudCAobWVz c2FnZV9idWYsIG1heHNpemUsIG0sIDAsIGFwKTsKIAogCSAgICAgIG1lc3NhZ2UzIChtYWtl X3N0cmluZyAobWVzc2FnZV9idWYsIGxlbikpOworCSAgICAgIFNBRkVfRlJFRSAoKTsKIAkg ICAgfQogCSAgZWxzZQogCSAgICBtZXNzYWdlMSAoMCk7CkBAIC0xODY5NSwxMCArMTg2OTks MTAgQEAKICAgZWxzZSBpZiAoZ2x5cGhzID09IDEpCiAgICAgewogICAgICAgaW50IGFyZWE7 CisgICAgICBjaGFyIHNbU0hSVF9NQVggKyA0XTsKIAogICAgICAgZm9yIChhcmVhID0gTEVG VF9NQVJHSU5fQVJFQTsgYXJlYSA8IExBU1RfQVJFQTsgKythcmVhKQogCXsKLQkgIGNoYXIg KnMgPSBhbGxvY2EgKHJvdy0+dXNlZFthcmVhXSArIDQpOwogCSAgaW50IGk7CiAKIAkgIGZv ciAoaSA9IDA7IGkgPCByb3ctPnVzZWRbYXJlYV07ICsraSkKQEAgLTIyNjkwLDEwICsyMjY5 NCw4IEBACiAJfQogICAgICAgZWxzZSBpZiAoQ0hBUkFDVEVSUCAoZW9sdHlwZSkpCiAJewot CSAgdW5zaWduZWQgY2hhciAqdG1wID0gYWxsb2NhIChNQVhfTVVMVElCWVRFX0xFTkdUSCk7 CiAJICBpbnQgYyA9IFhGQVNUSU5UIChlb2x0eXBlKTsKLQkgIGVvbF9zdHJfbGVuID0gQ0hB Ul9TVFJJTkcgKGMsIHRtcCk7Ci0JICBlb2xfc3RyID0gdG1wOworCSAgcmV0dXJuIGJ1ZiAr IENIQVJfU1RSSU5HIChjLCAodW5zaWduZWQgY2hhciAqKSBidWYpOwogCX0KICAgICAgIGVs c2UKIAl7CkBAIC0yNDYwOSw3ICsyNDYxMSw3IEBACiAJIGZhY2VfaWQgPSAocm93KS0+Z2x5 cGhzW2FyZWFdW1NUQVJUXS5mYWNlX2lkOwkJCSAgIFwKIAkJCQkJCQkJCSAgIFwKIAkgcyA9 IGFsbG9jYSAoc2l6ZW9mICpzKTsJCQkJCSAgIFwKLQkgY2hhcjJiID0gYWxsb2NhICgoRU5E IC0gU1RBUlQpICogc2l6ZW9mICpjaGFyMmIpOwkJICAgXAorCSBTQUZFX05BTExPQ0EgKGNo YXIyYiwgMSwgKEVORCkgLSAoU1RBUlQpKTsJCQkgICBcCiAJIElOSVRfR0xZUEhfU1RSSU5H IChzLCBjaGFyMmIsIHcsIHJvdywgYXJlYSwgU1RBUlQsIEhMKTsJICAgXAogCSBhcHBlbmRf Z2x5cGhfc3RyaW5nICgmSEVBRCwgJlRBSUwsIHMpOwkJCQkgICBcCiAJIHMtPnggPSAoWCk7 CQkJCQkJCSAgIFwKQEAgLTI0NjM3LDcgKzI0NjM5LDcgQEAKICAgICBzdHJ1Y3QgZ2x5cGhf c3RyaW5nICpmaXJzdF9zID0gTlVMTDsJCQkJICAgIFwKICAgICBpbnQgbjsJCQkJCQkJCSAg ICBcCiAgICAgCQkJCQkJCQkJICAgIFwKLSAgICBjaGFyMmIgPSBhbGxvY2EgKGNtcC0+Z2x5 cGhfbGVuICogc2l6ZW9mICpjaGFyMmIpOwkJCSAgICBcCisgICAgU0FGRV9OQUxMT0NBIChj aGFyMmIsIDEsIGNtcC0+Z2x5cGhfbGVuKTsJCQkJICAgIFwKICAgICAJCQkJCQkJCQkgICAg XAogICAgIC8qIE1ha2UgZ2x5cGhfc3RyaW5ncyBmb3IgZWFjaCBnbHlwaCBzZXF1ZW5jZSB0 aGF0IGlzIGRyYXdhYmxlIGJ5CSAgICBcCiAgICAgICAgdGhlIHNhbWUgZmFjZSwgYW5kIGFw cGVuZCB0aGVtIHRvIEhFQUQvVEFJTC4gICovCQkJICAgIFwKQEAgLTI0NjcyLDcgKzI0Njc0 LDcgQEAKICAgICBnc3RyaW5nID0gKGNvbXBvc2l0aW9uX2dzdHJpbmdfZnJvbV9pZAkJCQkg IFwKIAkgICAgICAgKChyb3cpLT5nbHlwaHNbYXJlYV1bU1RBUlRdLnUuY21wLmlkKSk7CQkJ ICBcCiAgICAgcyA9IGFsbG9jYSAoc2l6ZW9mICpzKTsJCQkJCQkgIFwKLSAgICBjaGFyMmIg PSBhbGxvY2EgKExHU1RSSU5HX0dMWVBIX0xFTiAoZ3N0cmluZykgKiBzaXplb2YgKmNoYXIy Yik7CSAgXAorICAgIFNBRkVfTkFMTE9DQSAoY2hhcjJiLCAxLCBMR1NUUklOR19HTFlQSF9M RU4gKGdzdHJpbmcpKTsJCSAgXAogICAgIElOSVRfR0xZUEhfU1RSSU5HIChzLCBjaGFyMmIs IHcsIHJvdywgYXJlYSwgU1RBUlQsIEhMKTsJCSAgXAogICAgIGFwcGVuZF9nbHlwaF9zdHJp bmcgKCYoSEVBRCksICYoVEFJTCksIHMpOwkJCQkgIFwKICAgICBzLT54ID0gKFgpOwkJCQkJ CQkJICBcCkBAIC0yNDgyNCw2ICsyNDgyNiw3IEBACiAgICAgIEJVSUxEX0dMWVBIX1NUUklO R1Mgd2lsbCBtb2RpZnkgaXRzIHN0YXJ0IHBhcmFtZXRlci4gIFRoYXQncwogICAgICB0aGUg cmVhc29uIHdlIHVzZSBhIHNlcGFyYXRlIHZhcmlhYmxlIGBpJy4gICovCiAgIGkgPSBzdGFy dDsKKyAgVVNFX1NBRkVfQUxMT0NBOwogICBCVUlMRF9HTFlQSF9TVFJJTkdTIChpLCBlbmQs IGhlYWQsIHRhaWwsIGhsLCB4LCBsYXN0X3gpOwogICBpZiAodGFpbCkKICAgICB4X3JlYWNo ZWQgPSB0YWlsLT54ICsgdGFpbC0+YmFja2dyb3VuZF93aWR0aDsKQEAgLTI1MDIzLDYgKzI1 MDI2LDcgQEAKIAogICBSRUxFQVNFX0hEQyAoaGRjLCBmKTsKIAorICBTQUZFX0ZSRUUgKCk7 CiAgIHJldHVybiB4X3JlYWNoZWQ7CiB9CiAKQEAgLTI5MjkxLDYgKzI5Mjk1LDggQEAKICAg ICAgIC8qIElzIHRoaXMgY2hhciBtb3VzZS1hY3RpdmUgb3IgZG9lcyBpdCBoYXZlIGhlbHAt ZWNobz8gICovCiAgICAgICBwb3NpdGlvbiA9IG1ha2VfbnVtYmVyIChwb3MpOwogCisgICAg ICBVU0VfU0FGRV9BTExPQ0E7CisKICAgICAgIGlmIChCVUZGRVJQIChvYmplY3QpKQogCXsK IAkgIC8qIFB1dCBhbGwgdGhlIG92ZXJsYXlzIHdlIHdhbnQgaW4gYSB2ZWN0b3IgaW4gb3Zl cmxheV92ZWMuICAqLwpAQCAtMjk1NzIsNiArMjk1NzgsNyBAQAogICAgICAgQkVHViA9IG9i ZWd2OwogICAgICAgWlYgPSBvenY7CiAgICAgICBjdXJyZW50X2J1ZmZlciA9IG9idWY7Cisg ICAgICBTQUZFX0ZSRUUgKCk7CiAgICAgfQogCiAgc2V0X2N1cnNvcjoKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMveGZhY2VzLmMnCi0tLSBzcmMveGZhY2VzLmMJMjAxNC0wOC0wNyAxMDox NTo1MiArMDAwMAorKysgc3JjL3hmYWNlcy5jCTIwMTQtMDktMDUgMDY6MDM6MjggKzAwMDAK QEAgLTU5ODAsNiArNTk4MCw3IEBACiAgICAgZW5kcG9zID0gWElOVCAoZW5kKTsKIAogICAv KiBMb29rIGF0IHByb3BlcnRpZXMgZnJvbSBvdmVybGF5cy4gICovCisgIFVTRV9TQUZFX0FM TE9DQTsKICAgewogICAgIHB0cmRpZmZfdCBuZXh0X292ZXJsYXk7CiAKQEAgLTYwMDYsNyAr NjAwNywxMCBAQAogICAvKiBPcHRpbWl6ZSBjb21tb24gY2FzZXMgd2hlcmUgd2UgY2FuIHVz ZSB0aGUgZGVmYXVsdCBmYWNlLiAgKi8KICAgaWYgKG5vdmVybGF5cyA9PSAwCiAgICAgICAm JiBOSUxQIChwcm9wKSkKLSAgICByZXR1cm4gZGVmYXVsdF9mYWNlLT5pZDsKKyAgICB7Cisg ICAgICBTQUZFX0ZSRUUgKCk7CisgICAgICByZXR1cm4gZGVmYXVsdF9mYWNlLT5pZDsKKyAg ICB9CiAKICAgLyogQmVnaW4gd2l0aCBhdHRyaWJ1dGVzIGZyb20gdGhlIGRlZmF1bHQgZmFj ZS4gICovCiAgIG1lbWNweSAoYXR0cnMsIGRlZmF1bHRfZmFjZS0+bGZhY2UsIHNpemVvZiBh dHRycyk7CkBAIC02MDM0LDYgKzYwMzgsOCBAQAogCiAgICplbmRwdHIgPSBlbmRwb3M7CiAK KyAgU0FGRV9GUkVFICgpOworCiAgIC8qIExvb2sgdXAgYSByZWFsaXplZCBmYWNlIHdpdGgg dGhlIGdpdmVuIGZhY2UgYXR0cmlidXRlcywKICAgICAgb3IgcmVhbGl6ZSBhIG5ldyBvbmUg Zm9yIEFTQ0lJIGNoYXJhY3RlcnMuICAqLwogICByZXR1cm4gbG9va3VwX2ZhY2UgKGYsIGF0 dHJzKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMveG1lbnUuYycKLS0tIHNyYy94bWVudS5j CTIwMTQtMDctMjcgMTM6MjE6MzAgKzAwMDAKKysrIHNyYy94bWVudS5jCTIwMTQtMDktMDUg MDY6MDM6MjggKzAwMDAKQEAgLTIwMjMsNyArMjAyMyw4IEBACiAgIFdpbmRvdyByb290Owog ICBYTWVudSAqbWVudTsKICAgaW50IHBhbmUsIHNlbGlkeCwgbHBhbmUsIHN0YXR1czsKLSAg TGlzcF9PYmplY3QgZW50cnksIHBhbmVfcHJlZml4OworICBMaXNwX09iamVjdCBlbnRyeSA9 IFFuaWw7CisgIExpc3BfT2JqZWN0IHBhbmVfcHJlZml4OwogICBjaGFyICpkYXRhcDsKICAg aW50IHVseCwgdWx5LCB3aWR0aCwgaGVpZ2h0OwogICBpbnQgZGlzcHdpZHRoLCBkaXNwaGVp Z2h0OwpAQCAtMjA0NSw2ICsyMDQ2LDcgQEAKICAgICAgIHJldHVybiBRbmlsOwogICAgIH0K IAorICBVU0VfU0FGRV9BTExPQ0E7CiAgIGJsb2NrX2lucHV0ICgpOwogCiAgIC8qIEZpZ3Vy ZSBvdXQgd2hpY2ggcm9vdCB3aW5kb3cgRiBpcyBvbi4gICovCkBAIC0yMDU3LDggKzIwNTks NyBAQAogICBpZiAobWVudSA9PSBOVUxMKQogICAgIHsKICAgICAgICplcnJvcl9uYW1lID0g IkNhbid0IGNyZWF0ZSBtZW51IjsKLSAgICAgIHVuYmxvY2tfaW5wdXQgKCk7Ci0gICAgICBy ZXR1cm4gUW5pbDsKKyAgICAgIGdvdG8gcmV0dXJuX2VudHJ5OwogICAgIH0KIAogICAvKiBE b24ndCBHQyB3aGlsZSB3ZSBwcmVwYXJlIGFuZCBzaG93IHRoZSBtZW51LApAQCAtMjEwMSw4 ICsyMTAyLDcgQEAKIAkgICAgewogCSAgICAgIFhNZW51RGVzdHJveSAoRlJBTUVfWF9ESVNQ TEFZIChmKSwgbWVudSk7CiAJICAgICAgKmVycm9yX25hbWUgPSAiQ2FuJ3QgY3JlYXRlIHBh bmUiOwotCSAgICAgIHVuYmxvY2tfaW5wdXQgKCk7Ci0JICAgICAgcmV0dXJuIFFuaWw7CisJ ICAgICAgZ290byByZXR1cm5fZW50cnk7CiAJICAgIH0KIAkgIGkgKz0gTUVOVV9JVEVNU19Q QU5FX0xFTkdUSDsKIApAQCAtMjE0Niw5ICsyMTQ2LDcgQEAKIAogCSAgaWYgKCFOSUxQIChk ZXNjcmlwKSkKIAkgICAgewotCSAgICAgIC8qIGlmIGFsbG9jYSBpcyBmYXN0LCB1c2UgdGhh dCB0byBtYWtlIHRoZSBzcGFjZSwKLQkJIHRvIHJlZHVjZSBnYyBuZWVkcy4gICovCi0JICAg ICAgaXRlbV9kYXRhID0gYWxsb2NhIChtYXh3aWR0aCArIFNCWVRFUyAoZGVzY3JpcCkgKyAx KTsKKwkgICAgICBpdGVtX2RhdGEgPSBTQUZFX0FMTE9DQSAobWF4d2lkdGggKyBTQllURVMg KGRlc2NyaXApICsgMSk7CiAJICAgICAgbWVtY3B5IChpdGVtX2RhdGEsIFNTREFUQSAoaXRl bV9uYW1lKSwgU0JZVEVTIChpdGVtX25hbWUpKTsKIAkgICAgICBmb3IgKGogPSBTQ0hBUlMg KGl0ZW1fbmFtZSk7IGogPCBtYXh3aWR0aDsgaisrKQogCQlpdGVtX2RhdGFbal0gPSAnICc7 CkBAIC0yMTY2LDggKzIxNjQsNyBAQAogCSAgICB7CiAJICAgICAgWE1lbnVEZXN0cm95IChG UkFNRV9YX0RJU1BMQVkgKGYpLCBtZW51KTsKIAkgICAgICAqZXJyb3JfbmFtZSA9ICJDYW4n dCBhZGQgc2VsZWN0aW9uIHRvIG1lbnUiOwotCSAgICAgIHVuYmxvY2tfaW5wdXQgKCk7Ci0J ICAgICAgcmV0dXJuIFFuaWw7CisJICAgICAgZ290byByZXR1cm5fZW50cnk7CiAJICAgIH0K IAkgIGkgKz0gTUVOVV9JVEVNU19JVEVNX0xFTkdUSDsKICAgICAgICAgICBsaW5lcysrOwpA QCAtMjI0MSw3ICsyMjM4LDcgQEAKICAgc3RhdHVzID0gWE1lbnVBY3RpdmF0ZSAoRlJBTUVf WF9ESVNQTEFZIChmKSwgbWVudSwgJnBhbmUsICZzZWxpZHgsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHgsIHksIEJ1dHRvblJlbGVhc2VNYXNrLCAmZGF0YXAsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lbnVfaGVscF9jYWxsYmFjayk7Ci0gIGVudHJ5ID0gcGFuZV9w cmVmaXggPSBRbmlsOworICBwYW5lX3ByZWZpeCA9IFFuaWw7CiAKICAgc3dpdGNoIChzdGF0 dXMpCiAgICAgewpAQCAtMjMwMCwxMCArMjI5NywxMCBAQAogICAgICAgYnJlYWs7CiAgICAg fQogCisgcmV0dXJuX2VudHJ5OgogICB1bmJsb2NrX2lucHV0ICgpOwotICB1bmJpbmRfdG8g KHNwZWNwZGxfY291bnQsIFFuaWwpOwotCi0gIHJldHVybiBlbnRyeTsKKyAgU0FGRV9GUkVF ICgpOworICByZXR1cm4gdW5iaW5kX3RvIChzcGVjcGRsX2NvdW50LCBlbnRyeSk7CiB9CiAK ICNlbmRpZiAvKiBub3QgVVNFX1hfVE9PTEtJVCAqLwoK --------------070202020006090104060805-- From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 04:45:44 2014 Received: (at 18410) by debbugs.gnu.org; 5 Sep 2014 08:45:44 +0000 Received: from localhost ([127.0.0.1]:59266 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPp9M-0004nL-2X for submit@debbugs.gnu.org; Fri, 05 Sep 2014 04:45:44 -0400 Received: from forward4l.mail.yandex.net ([84.201.143.137]:37284) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPp9H-0004n3-B3 for 18410@debbugs.gnu.org; Fri, 05 Sep 2014 04:45:40 -0400 Received: from smtp4o.mail.yandex.net (smtp4o.mail.yandex.net [37.140.190.29]) by forward4l.mail.yandex.net (Yandex) with ESMTP id 919B214411B2; Fri, 5 Sep 2014 12:45:32 +0400 (MSK) Received: from smtp4o.mail.yandex.net (localhost [127.0.0.1]) by smtp4o.mail.yandex.net (Yandex) with ESMTP id 0C4B52321770; Fri, 5 Sep 2014 12:45:31 +0400 (MSK) Received: from unknown (unknown [37.139.80.10]) by smtp4o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id PxId2sg86M-jTAOKZ9c; Fri, 5 Sep 2014 12:45:30 +0400 (using TLSv1.2 with cipher AES128-SHA (128/128 bits)) (Client certificate not present) X-Yandex-Uniq: 3e05f8ae-75a7-4311-9222-d288dc780291 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1409906731; bh=s72vi3cEzPtz+F+G5wRAw0ATnM94tDldxcPXIX8aOxA=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=lJFPe6ZKsUuTPJNTYZfV9DjDoPpYVIswmk2ypWUxb7aH97g1xxRvw01Y0jyD8pcTL nrGSgmWnZ4x4i39pzba33aT79aKN6h+6qgYpwu0JepWCbfF/G1wjDx1I1x8Ohcl2lZ 39ZFJo6s8G/iDUNelKbI383vjdaJbMyYTRPidmJA= Authentication-Results: smtp4o.mail.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: <54097827.1020508@yandex.ru> Date: Fri, 05 Sep 2014 12:45:27 +0400 From: Dmitry Antipov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> In-Reply-To: <5409536B.5090201@cs.ucla.edu> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) On 09/05/2014 10:08 AM, Paul Eggert wrote: > Attached is a patch to fix the unbounded alloca calls that I found when auditing the Emacs source. > I'm sending this to bug-gnu-emacs to give Eli a heads-up, as some of the fixes affect Windows code. > This patch is relative to Emacs trunk bzr 117822. Code like: USE_SAFE_ALLOCA; |- ptrdiff_t count = SPECPDL_INDEX (); |- | ... | inner bind | outer bind Lisp_Object result = unbind_to (count, Fsome_func ()); |- | SAFE_FREE (); |- return result; looks suboptimal because it calls unbind_to twice. May be we need SAFE_FREE_RETURN, somewhat similar to RETURN_UNGCPRO? I.e. we should be able to say: USE_SAFE_ALLOCA; ptrdiff_t count = SPECPDL_INDEX (); ... SAFE_FREE_RETURN (Fsome_func ()); Minor note: why specbind can't return previous binding level? To avoid extra typing, someone can write: ptrdiff_t count = specbind (Qsome_var, Qnil); instead of: ptrdiff_t count = SPECPDL_INDEX (); specbind (Qsome_var, Qnil); Dmitry From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 04:59:43 2014 Received: (at 18410) by debbugs.gnu.org; 5 Sep 2014 08:59:43 +0000 Received: from localhost ([127.0.0.1]:59271 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPpMs-00057w-Nf for submit@debbugs.gnu.org; Fri, 05 Sep 2014 04:59:42 -0400 Received: from forward1j.cmail.yandex.net ([5.255.227.19]:49423) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPpMl-00057d-Nq for 18410@debbugs.gnu.org; Fri, 05 Sep 2014 04:59:40 -0400 Received: from smtp12.mail.yandex.net (smtp12.mail.yandex.net [95.108.131.191]) by forward1j.cmail.yandex.net (Yandex) with ESMTP id E0647137A; Fri, 5 Sep 2014 12:59:28 +0400 (MSK) Received: from smtp12.mail.yandex.net (localhost [127.0.0.1]) by smtp12.mail.yandex.net (Yandex) with ESMTP id A9E4616A14D4; Fri, 5 Sep 2014 12:59:28 +0400 (MSK) Received: from unknown (unknown [37.139.80.10]) by smtp12.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id Yxha0U2thZ-xRCWkVAU; Fri, 5 Sep 2014 12:59:28 +0400 (using TLSv1.2 with cipher AES128-SHA (128/128 bits)) (Client certificate not present) X-Yandex-Uniq: 9ea8d9c3-4e4b-4efe-a7e7-1f0733a45111 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1409907568; bh=Zo7vpRd9dzFSfOk6dVCULxlO2WRyXIu2m59YwibSKlA=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=Bpfe1IWhDxlpuTA80JSZvVMSLIMstw6vI4mNskafmzwZnFfXfjMmBNEFlww80/LJU fcaGTyRJlym8jvVk4j4i1wi+iJ0WDiTw4wIgU9CwGlPDwkc0y1b3VGIeRS4RhIE8xo iUN6qJP9L1Q60YCoBLVQ3Oifmc+TJAIbDy1LoDsg= Authentication-Results: smtp12.mail.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: <54097B6F.8000306@yandex.ru> Date: Fri, 05 Sep 2014 12:59:27 +0400 From: Dmitry Antipov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> In-Reply-To: <5409536B.5090201@cs.ucla.edu> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) On 09/05/2014 10:08 AM, Paul Eggert wrote: > Attached is a patch to fix the unbounded alloca calls that I found when auditing the Emacs source. > I'm sending this to bug-gnu-emacs to give Eli a heads-up, as some of the fixes affect Windows code. > This patch is relative to Emacs trunk bzr 117822. If __GNUC__, can't we use __attribute__ ((cleanup (freeing_function))) for implicit calls to SAFE_FREE, similar to destructors in C++? Dmitry From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 11:01:51 2014 Received: (at 18410) by debbugs.gnu.org; 5 Sep 2014 15:01:51 +0000 Received: from localhost ([127.0.0.1]:59962 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPv1K-00089I-Mz for submit@debbugs.gnu.org; Fri, 05 Sep 2014 11:01:51 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:47288) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPv1G-000891-Mk for 18410@debbugs.gnu.org; Fri, 05 Sep 2014 11:01:47 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id AB5BDA60020; Fri, 5 Sep 2014 08:01:40 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r8A+MvGie2MJ; Fri, 5 Sep 2014 08:01:32 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id EB2C8A60003; Fri, 5 Sep 2014 08:01:31 -0700 (PDT) Message-ID: <5409D04B.90009@cs.ucla.edu> Date: Fri, 05 Sep 2014 08:01:31 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Dmitry Antipov Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> <54097827.1020508@yandex.ru> In-Reply-To: <54097827.1020508@yandex.ru> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) Dmitry Antipov wrote: > USE_SAFE_ALLOCA; |- > ptrdiff_t count = SPECPDL_INDEX (); |- | > ... | inner bind | > outer bind > Lisp_Object result = unbind_to (count, Fsome_func ()); |- | > SAFE_FREE (); |- > return result; > > looks suboptimal because it calls unbind_to twice. I noticed that too, and actually coded up something along those lines, but decided to discard it as it added complexity and the patch was already pretty large. There is some virtue in having a simpler API, even if it's a tad suboptimal. Perhaps we can think of a way of combining SAFE_FREE and unbind_to so that there aren't two different ways in the source code of doing the same thing. To be honest I've never been a fan of 'RETURN_UNGCPRO (expr);', and would rather not encourage other macros along those lines. I was hoping that we could get rid of all the GCPRO stuff, and simplify the code under the assumption that GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS. I do like the idea about specbind returning the previous SPECPDL_INDEX, as that would simplify the code. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 11:04:09 2014 Received: (at 18410) by debbugs.gnu.org; 5 Sep 2014 15:04:10 +0000 Received: from localhost ([127.0.0.1]:59966 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPv3Z-0008DU-BJ for submit@debbugs.gnu.org; Fri, 05 Sep 2014 11:04:09 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:47426) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPv3W-0008Cz-Q2 for 18410@debbugs.gnu.org; Fri, 05 Sep 2014 11:04:07 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 696F6A6001A; Fri, 5 Sep 2014 08:04:01 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4zSHTN9KWJjk; Fri, 5 Sep 2014 08:03:54 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 467EDA60003; Fri, 5 Sep 2014 08:03:54 -0700 (PDT) Message-ID: <5409D0DA.8010402@cs.ucla.edu> Date: Fri, 05 Sep 2014 08:03:54 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Dmitry Antipov Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> <54097B6F.8000306@yandex.ru> In-Reply-To: <54097B6F.8000306@yandex.ru> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) Dmitry Antipov wrote: > If __GNUC__, can't we use __attribute__ ((cleanup (freeing_function))) > for implicit calls > to SAFE_FREE We could, but I don't see how this would help. For non-GNUC we need to call the freeing function explicitly anyway, so __attribute__ ((cleanup ...)) would simply clutter up the source, no? Or perhaps I'm not understanding the suggestion. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 11:44:53 2014 Received: (at 18410) by debbugs.gnu.org; 5 Sep 2014 15:44:53 +0000 Received: from localhost ([127.0.0.1]:59978 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPvgy-0000mi-JU for submit@debbugs.gnu.org; Fri, 05 Sep 2014 11:44:52 -0400 Received: from mercure.iro.umontreal.ca ([132.204.24.67]:46991) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPvgw-0000ma-Of for 18410@debbugs.gnu.org; Fri, 05 Sep 2014 11:44:51 -0400 Received: from hidalgo.iro.umontreal.ca (hidalgo.iro.umontreal.ca [132.204.27.50]) by mercure.iro.umontreal.ca (Postfix) with ESMTP id 13FC584F4C; Fri, 5 Sep 2014 11:44:50 -0400 (EDT) Received: from lechon.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by hidalgo.iro.umontreal.ca (Postfix) with ESMTP id E273A1E5B8A; Fri, 5 Sep 2014 11:44:25 -0400 (EDT) Received: by lechon.iro.umontreal.ca (Postfix, from userid 20848) id BFC16B4171; Fri, 5 Sep 2014 11:44:25 -0400 (EDT) From: Stefan Monnier To: Dmitry Antipov Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Message-ID: References: <5409536B.5090201@cs.ucla.edu> <54097827.1020508@yandex.ru> Date: Fri, 05 Sep 2014 11:44:25 -0400 In-Reply-To: <54097827.1020508@yandex.ru> (Dmitry Antipov's message of "Fri, 05 Sep 2014 12:45:27 +0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-DIRO-MailScanner-Information: Please contact the ISP for more information X-DIRO-MailScanner: Found to be clean X-DIRO-MailScanner-SpamCheck: n'est pas un polluriel, SpamAssassin (score=-2.82, requis 5, autolearn=not spam, ALL_TRUSTED -2.82, MC_TSTLAST 0.00) X-DIRO-MailScanner-From: monnier@iro.umontreal.ca X-Spam-Status: No X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 18410 Cc: Paul Eggert , 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) > USE_SAFE_ALLOCA; |- > ptrdiff_t count = SPECPDL_INDEX (); |- | > ... | inner bind | outer bind > Lisp_Object result = unbind_to (count, Fsome_func ()); |- | > SAFE_FREE (); |- > return result; > > looks suboptimal because it calls unbind_to twice. Only if the object is "too large" and requires heap allocation. BTW, AFAIK Lisp_Object result = unbind_to (count, Fsome_func ()); can always be written Lisp_Object result = Fsome_func (); unbind_to (count, Qnil); which I find more readable (if it were me, unbind_to would take a single arg and return void). Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 12:05:01 2014 Received: (at 18410) by debbugs.gnu.org; 5 Sep 2014 16:05:02 +0000 Received: from localhost ([127.0.0.1]:59986 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPw0S-0001JK-VU for submit@debbugs.gnu.org; Fri, 05 Sep 2014 12:05:01 -0400 Received: from mail-out.m-online.net ([212.18.0.10]:33322) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPw0P-0001J8-QZ for 18410@debbugs.gnu.org; Fri, 05 Sep 2014 12:04:58 -0400 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3hqNxz5s8Fz3hj9w; Fri, 5 Sep 2014 18:04:55 +0200 (CEST) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3hqNxz19lgzvk7v; Fri, 5 Sep 2014 18:04:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id Wl2CMhIvzPKD; Fri, 5 Sep 2014 18:04:54 +0200 (CEST) X-Auth-Info: A8LZned1U1PCSF4VyJxShmfMunwTrFYgE358vgeMZaaubLiLN5UhMkG9uBp1FAY8 Received: from igel.home (ppp-188-174-144-93.dynamic.mnet-online.de [188.174.144.93]) by mail.mnet-online.de (Postfix) with ESMTPA; Fri, 5 Sep 2014 18:04:53 +0200 (CEST) Received: by igel.home (Postfix, from userid 1000) id A852D2C0C41; Fri, 5 Sep 2014 18:04:53 +0200 (CEST) From: Andreas Schwab To: Stefan Monnier Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> <54097827.1020508@yandex.ru> X-Yow: World War Three can be averted by adherence to a strictly enforced dress code! Date: Fri, 05 Sep 2014 18:04:53 +0200 In-Reply-To: (Stefan Monnier's message of "Fri, 05 Sep 2014 11:44:25 -0400") Message-ID: <87egvqgije.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.93 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 18410 Cc: Dmitry Antipov , 18410@debbugs.gnu.org, Paul Eggert X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Stefan Monnier writes: > BTW, AFAIK > > Lisp_Object result = unbind_to (count, Fsome_func ()); > > can always be written > > Lisp_Object result = Fsome_func (); > unbind_to (count, Qnil); Only if the result is already protected, since unbind_to can GC. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 13:22:52 2014 Received: (at 18410) by debbugs.gnu.org; 5 Sep 2014 17:22:52 +0000 Received: from localhost ([127.0.0.1]:60038 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPxDn-0003Pe-TX for submit@debbugs.gnu.org; Fri, 05 Sep 2014 13:22:52 -0400 Received: from mercure.iro.umontreal.ca ([132.204.24.67]:57971) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XPxDk-0003PU-UB for 18410@debbugs.gnu.org; Fri, 05 Sep 2014 13:22:49 -0400 Received: from hidalgo.iro.umontreal.ca (hidalgo.iro.umontreal.ca [132.204.27.50]) by mercure.iro.umontreal.ca (Postfix) with ESMTP id 7775A85039; Fri, 5 Sep 2014 13:22:48 -0400 (EDT) Received: from lechon.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by hidalgo.iro.umontreal.ca (Postfix) with ESMTP id 7A1EF1E5B8A; Fri, 5 Sep 2014 13:22:21 -0400 (EDT) Received: by lechon.iro.umontreal.ca (Postfix, from userid 20848) id 4FF50B41B5; Fri, 5 Sep 2014 13:22:21 -0400 (EDT) From: Stefan Monnier To: Andreas Schwab Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Message-ID: References: <5409536B.5090201@cs.ucla.edu> <54097827.1020508@yandex.ru> <87egvqgije.fsf@linux-m68k.org> Date: Fri, 05 Sep 2014 13:22:21 -0400 In-Reply-To: <87egvqgije.fsf@linux-m68k.org> (Andreas Schwab's message of "Fri, 05 Sep 2014 18:04:53 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-DIRO-MailScanner-Information: Please contact the ISP for more information X-DIRO-MailScanner: Found to be clean X-DIRO-MailScanner-SpamCheck: n'est pas un polluriel, SpamAssassin (score=-2.82, requis 5, autolearn=not spam, ALL_TRUSTED -2.82, MC_TSTLAST 0.00) X-DIRO-MailScanner-From: monnier@iro.umontreal.ca X-Spam-Status: No X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 18410 Cc: Dmitry Antipov , 18410@debbugs.gnu.org, Paul Eggert X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) >> Lisp_Object result = unbind_to (count, Fsome_func ()); >> can always be written >> Lisp_Object result = Fsome_func (); >> unbind_to (count, Qnil); > Only if the result is already protected, since unbind_to can GC. Indeed, if you need GCPRO, then it's not necessarily true any more. Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 03:20:55 2014 Received: (at 18410-done) by debbugs.gnu.org; 7 Sep 2014 07:20:55 +0000 Received: from localhost ([127.0.0.1]:60846 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQWmN-0004PD-3t for submit@debbugs.gnu.org; Sun, 07 Sep 2014 03:20:55 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:36533) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQWmJ-0004Or-IF for 18410-done@debbugs.gnu.org; Sun, 07 Sep 2014 03:20:52 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 6E6F7A6001A for <18410-done@debbugs.gnu.org>; Sun, 7 Sep 2014 00:20:45 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FZSVdNtpRi3i for <18410-done@debbugs.gnu.org>; Sun, 7 Sep 2014 00:20:36 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id CE00FA60007 for <18410-done@debbugs.gnu.org>; Sun, 7 Sep 2014 00:20:36 -0700 (PDT) Message-ID: <540C0741.8090900@cs.ucla.edu> Date: Sun, 07 Sep 2014 00:20:33 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: 18410-done@debbugs.gnu.org Subject: Re: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 18410-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) I installed the patch as trunk bzr 117829 and am marking this as done. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 13:09:30 2014 Received: (at 18410) by debbugs.gnu.org; 7 Sep 2014 17:09:30 +0000 Received: from localhost ([127.0.0.1]:32950 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQfxy-0003dd-30 for submit@debbugs.gnu.org; Sun, 07 Sep 2014 13:09:30 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:52365) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQfxu-0003dL-Uw for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 13:09:28 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0NBJ00L00JFA9000@a-mtaout20.012.net.il> for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 20:09:20 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NBJ00K8GJNJQ9B0@a-mtaout20.012.net.il>; Sun, 07 Sep 2014 20:09:20 +0300 (IDT) Date: Sun, 07 Sep 2014 20:09:25 +0300 From: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. In-reply-to: <540C0741.8090900@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83bnqrcq7u.fsf@gnu.org> References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > Date: Sun, 07 Sep 2014 00:20:33 -0700 > From: Paul Eggert > > I installed the patch as trunk bzr 117829 and am marking this as done. What is the rationale for tests such as this one in callproc.c: if (MAX_ALLOCA / sizeof *env - 2 < new_length) exec_failed (new_argv[0], ENOMEM); MAX_ALLOCA is a relatively small number compared to the stack space available on modern systems, so I see no reason to fail and exit in these cases, it sounds too drastic. Perhaps we should have a separate constant with platform-specific value, if we want such tests. Or maybe make them conditional on ENABLE_CHECKING. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 16:33:27 2014 Received: (at 18410) by debbugs.gnu.org; 7 Sep 2014 20:33:28 +0000 Received: from localhost ([127.0.0.1]:33036 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQj9L-0000Fh-8r for submit@debbugs.gnu.org; Sun, 07 Sep 2014 16:33:27 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:60284) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQj9J-0000FS-P6 for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 16:33:26 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id C05AAA60006; Sun, 7 Sep 2014 13:33:19 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ceBfqNGHWxN9; Sun, 7 Sep 2014 13:33:11 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 1174439E8012; Sun, 7 Sep 2014 13:33:11 -0700 (PDT) Message-ID: <540CC106.8040705@cs.ucla.edu> Date: Sun, 07 Sep 2014 13:33:10 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> In-Reply-To: <83bnqrcq7u.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) Eli Zaretskii wrote: > MAX_ALLOCA is a relatively small number compared to the stack space > available on modern systems, so I see no reason to fail and exit in > these cases, it sounds too drastic. Usually MAX_ALLOCA-related code falls back on malloc, and does not exit merely because a request was larger. callproc.c's child_setup function is special, though, as it executes in a vforked child that cannot safely call malloc because that would screw up the parent's malloc arena. In this special case the child exits (Emacs itself doesn't), so it's not that drastic. It'd be nicer if Emacs would allocate the memory before vforking the child, as that would avoid the limitation, but I daresay it's not urgent to fix this. It should be commented better, though, and I gave that a shot in trunk bzr 117837. Quite possibly we should increase MAX_ALLOCA on many modern systems. As I recall we last discussed that in July, and Stefan was worried about max-lisp-eval-depth * MAX_ALLOCA * N overflowing the C stack, where N is the maximum nesting depth of SAFE_ALLOCA-using C functions between Lisp functions. Perhaps some of that discussion is moot now, with the stack overflow checking that Dmitry added last month? From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 22:22:32 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 02:22:32 +0000 Received: from localhost ([127.0.0.1]:33088 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQob9-0000P3-Hm for submit@debbugs.gnu.org; Sun, 07 Sep 2014 22:22:32 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:27176) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQob7-0000Op-Qf for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 22:22:30 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUGAIDvNVNFpZEG/2dsb2JhbABZDoJ4g0rAPYEXF3SCJQEBAQECAVYjBQsLNBIUGA0kiAQI0hkXjnoHhDgEoyqFb4FqgnBcIQ X-IPAS-Result: ArUGAIDvNVNFpZEG/2dsb2JhbABZDoJ4g0rAPYEXF3SCJQEBAQECAVYjBQsLNBIUGA0kiAQI0hkXjnoHhDgEoyqFb4FqgnBcIQ X-IronPort-AV: E=Sophos;i="4.97,753,1389762000"; d="scan'208";a="89048290" Received: from 69-165-145-6.dsl.teksavvy.com (HELO ceviche.home) ([69.165.145.6]) by ironport2-out.teksavvy.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 07 Sep 2014 22:22:24 -0400 Received: by ceviche.home (Postfix, from userid 20848) id DAB41660C4; Sun, 7 Sep 2014 22:22:23 -0400 (EDT) From: Stefan Monnier To: Paul Eggert Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Message-ID: References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> Date: Sun, 07 Sep 2014 22:22:23 -0400 In-Reply-To: <540CC106.8040705@cs.ucla.edu> (Paul Eggert's message of "Sun, 07 Sep 2014 13:33:10 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 18410 Cc: Eli Zaretskii , 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) > Usually MAX_ALLOCA-related code falls back on malloc, and does not exit > merely because a request was larger. callproc.c's child_setup function is MAX_ALLOCA is chosen small so that we can allocate several/many objects of size MAX_ALLOCA. Whereas in this case, after this alloca we're not expected to use up the stack much more (we're about to `exec' anyway, right?). So MAX_ALLOCA is much too conservative for this case. Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 22:35:32 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 02:35:32 +0000 Received: from localhost ([127.0.0.1]:33107 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQonj-0000je-Tj for submit@debbugs.gnu.org; Sun, 07 Sep 2014 22:35:32 -0400 Received: from mtaout25.012.net.il ([80.179.55.181]:48696) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQong-0000jP-OA for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 22:35:30 -0400 Received: from conversion-daemon.mtaout25.012.net.il by mtaout25.012.net.il (HyperSendmail v2007.08) id <0NBK00O009G30O00@mtaout25.012.net.il> for 18410@debbugs.gnu.org; Mon, 08 Sep 2014 05:29:51 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout25.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NBK00I9E9LRQY50@mtaout25.012.net.il>; Mon, 08 Sep 2014 05:29:51 +0300 (IDT) Date: Mon, 08 Sep 2014 05:35:28 +0300 From: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. In-reply-to: X-012-Sender: halo1@inter.net.il To: Stefan Monnier Message-id: <83wq9ec00f.fsf@gnu.org> References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 18410 Cc: eggert@cs.ucla.edu, 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > From: Stefan Monnier > Cc: Eli Zaretskii , 18410@debbugs.gnu.org > Date: Sun, 07 Sep 2014 22:22:23 -0400 > > > Usually MAX_ALLOCA-related code falls back on malloc, and does not exit > > merely because a request was larger. callproc.c's child_setup function is > > MAX_ALLOCA is chosen small so that we can allocate several/many objects > of size MAX_ALLOCA. Whereas in this case, after this alloca we're not > expected to use up the stack much more (we're about to `exec' anyway, > right?). So MAX_ALLOCA is much too conservative for this case. Indeed, I agree. So I think we should increase the limit in callproc.c, especially if we are going to keep the exit with failed status when the limit is exceeded. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 22:36:26 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 02:36:27 +0000 Received: from localhost ([127.0.0.1]:33111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQooc-0000lG-DP for submit@debbugs.gnu.org; Sun, 07 Sep 2014 22:36:26 -0400 Received: from mtaout27.012.net.il ([80.179.55.183]:55411) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQooZ-0000l2-WF for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 22:36:24 -0400 Received: from conversion-daemon.mtaout27.012.net.il by mtaout27.012.net.il (HyperSendmail v2007.08) id <0NBK005009M41S00@mtaout27.012.net.il> for 18410@debbugs.gnu.org; Mon, 08 Sep 2014 05:30:38 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout27.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NBK00L829N2OK70@mtaout27.012.net.il>; Mon, 08 Sep 2014 05:30:38 +0300 (IDT) Date: Mon, 08 Sep 2014 05:36:24 +0300 From: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. In-reply-to: <540CC106.8040705@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83vboybzyv.fsf@gnu.org> References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > Date: Sun, 07 Sep 2014 13:33:10 -0700 > From: Paul Eggert > CC: 18410@debbugs.gnu.org > > Perhaps some of that discussion is moot now, with the stack overflow > checking that Dmitry added last month? I'd say it's definitely moot on systems where that stack-overflow code is working. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 22:38:38 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 02:38:38 +0000 Received: from localhost ([127.0.0.1]:33115 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQoqk-0000rL-2v for submit@debbugs.gnu.org; Sun, 07 Sep 2014 22:38:38 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:42490) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQoqg-0000r3-II for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 22:38:35 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id C55B4A60005; Sun, 7 Sep 2014 19:38:26 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pI0LZm0ukiql; Sun, 7 Sep 2014 19:38:18 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 15DA239E8011; Sun, 7 Sep 2014 19:38:18 -0700 (PDT) Message-ID: <540D1699.2030903@cs.ucla.edu> Date: Sun, 07 Sep 2014 19:38:17 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Stefan Monnier Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 18410 Cc: Eli Zaretskii , 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) Stefan Monnier wrote: > MAX_ALLOCA is chosen small so that we can allocate several/many objects > of size MAX_ALLOCA. That's one reason, but another is that stack-overflow checking often relies on guard pages. If we blindly increase MAX_ALLOCA (or some variant of it, just for call-process) Emacs could bypass stack-overflow checking, resulting in behavior that could be worse than simply dumping core. If I understand things correctly, Dmitry's recent stack-overflow changes don't affect this, as they don't deal with the guard-page region size. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 22:43:58 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 02:43:58 +0000 Received: from localhost ([127.0.0.1]:33123 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQovt-0000zh-Hi for submit@debbugs.gnu.org; Sun, 07 Sep 2014 22:43:57 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:62164) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQovs-0000zP-BJ for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 22:43:56 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUGAIDvNVNFpZEG/2dsb2JhbABZgwaDSsA9gRcXdIIlAQEBAQIBViMFCws0EhQYDSSIBAjSGReOGQpXB4Q4AQOjKoVvgWqDTCGBLQ X-IPAS-Result: ArUGAIDvNVNFpZEG/2dsb2JhbABZgwaDSsA9gRcXdIIlAQEBAQIBViMFCws0EhQYDSSIBAjSGReOGQpXB4Q4AQOjKoVvgWqDTCGBLQ X-IronPort-AV: E=Sophos;i="4.97,753,1389762000"; d="scan'208";a="89050395" Received: from 69-165-145-6.dsl.teksavvy.com (HELO ceviche.home) ([69.165.145.6]) by ironport2-out.teksavvy.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 07 Sep 2014 22:43:50 -0400 Received: by ceviche.home (Postfix, from userid 20848) id 291EF660C4; Sun, 7 Sep 2014 22:43:50 -0400 (EDT) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Message-ID: References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <83wq9ec00f.fsf@gnu.org> Date: Sun, 07 Sep 2014 22:43:50 -0400 In-Reply-To: <83wq9ec00f.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Sep 2014 05:35:28 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 18410 Cc: eggert@cs.ucla.edu, 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) > Indeed, I agree. So I think we should increase the limit in > callproc.c, especially if we are going to keep the exit with failed > status when the limit is exceeded. I don't even see any need for checking at all. Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 23:17:41 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 03:17:41 +0000 Received: from localhost ([127.0.0.1]:33144 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQpSX-00037d-1X for submit@debbugs.gnu.org; Sun, 07 Sep 2014 23:17:41 -0400 Received: from mail-yh0-f53.google.com ([209.85.213.53]:62232) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQpST-00037K-M8 for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 23:17:38 -0400 Received: by mail-yh0-f53.google.com with SMTP id a41so8727197yho.26 for <18410@debbugs.gnu.org>; Sun, 07 Sep 2014 20:17:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:references:in-reply-to:subject:date:message-id :mime-version:content-type:content-transfer-encoding:thread-index :content-language; bh=Q4gO43P5+Y9qM85pwi4dAfhR/cV4r9hXKjkfJ2CfGIQ=; b=ikPK2HP+H3fdS628PbiKtpOYyLi1k4S+CcaPNpQ482/5EoMCUj6S4a7HmFAGoXosDw 1drvDo0ST1eWIppemf5EYv0SFOHAjyzWz9eZmZYlcpYs8nCCpDh+mZRQWsX2LAkMMHQf E4WasUIgwb7QbgkLXBS3vPfZfUSrceLDZ84ZpirR0t0jtQhwXWrSvqwtL2TxKGMNxX0k bM3Ackzih/pYfPRRIIG9ebKeJNas4DDHpxVd9ZXM6CFu3loQh2qboc2vp7vDXypWNL+1 +WNGXokfTSaC0Z+uwf4sizcxxxr0JMQnQu6rwgAyMEmZTMsr5BCdJsTxK2U3wwrbaMuS 7wKg== X-Received: by 10.236.61.69 with SMTP id v45mr86769yhc.130.1410146252003; Sun, 07 Sep 2014 20:17:32 -0700 (PDT) Received: from admin (c-71-236-63-161.hsd1.tn.comcast.net. [71.236.63.161]) by mx.google.com with ESMTPSA id b59sm3914154yha.33.2014.09.07.20.17.31 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 07 Sep 2014 20:17:31 -0700 (PDT) From: "Demetrios Obenour" To: "'Paul Eggert'" , "'Stefan Monnier'" References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <540D1699.2030903@cs.ucla.edu> In-Reply-To: <540D1699.2030903@cs.ucla.edu> Subject: RE: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Date: Sun, 7 Sep 2014 23:17:30 -0400 Message-ID: <020201cfcb13$6d851890$488f49b0$@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 15.0 Thread-Index: AQIbHmv0S5k5dv+xo5sOLfqUvwXvlgE5FuACAoMkd9MCPkb5hQLifywuAnFZF4KbBXbBsA== Content-Language: en-us X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) This is crucial. Otherwise, a security vulnerability could result. MAX_ALLOCA should not be larger than the page size for the target = architecture. Demetrios Obenour -----Original Message----- From: bug-gnu-emacs-bounces+demetriobenour=3Dgmail.com@gnu.org = [mailto:bug-gnu-emacs-bounces+demetriobenour=3Dgmail.com@gnu.org] On = Behalf Of Paul Eggert Sent: Sunday, September 7, 2014 10:38 PM To: Stefan Monnier Cc: 18410@debbugs.gnu.org Subject: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack = allocation. Stefan Monnier wrote: > MAX_ALLOCA is chosen small so that we can allocate several/many=20 > objects of size MAX_ALLOCA. That's one reason, but another is that stack-overflow checking often = relies on guard pages. If we blindly increase MAX_ALLOCA (or some = variant of it, just for call-process) Emacs could bypass stack-overflow = checking, resulting in behavior that could be worse than simply dumping = core. If I understand things correctly, Dmitry's recent stack-overflow changes = don't affect this, as they don't deal with the guard-page region size. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 23:20:00 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 03:20:00 +0000 Received: from localhost ([127.0.0.1]:33148 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQpUl-0003BJ-Ov for submit@debbugs.gnu.org; Sun, 07 Sep 2014 23:20:00 -0400 Received: from dancol.org ([96.126.100.184]:38123) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQpUj-0003B8-4a for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 23:19:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Type:In-Reply-To:References:Subject:CC:To:MIME-Version:From:Date:Message-ID; bh=l0ej6d0x2e4BC73g8hDoOAd3t3vM/D7pVyYWSmgN+Fk=; b=lSBWhEuLQ4QOaqKQZZRziwEcgJ65GFab9OxuG+DtLRKOjNcsiJM27Qpvq4P2RBhnVhnuIUK+EGjr07lxCjUFBA5O6uHXiHGFUXsUW2yDmGr0Rxkq1Mf/oGMVZ+AVsNSiPtVOFf+PvFLjg2wQLRODMVao/5NDukk+QPughnrgXV5Tfyp6b3ZfSmxEfKzkKc4Rszon1SIcOSZEeQRsv4Iel8VJGusjqSPYsnZHxaJNmR9PtVu3JIqAm/GCOg6k+k/nG8DYmLuHys5fYWXCKIHcLOE2L0aT1elzgGYbkkX/SI3wwtRtpCHeZ5D6ztKzNynd2RtH7VfTD184dgeDqIIFNQ==; Received: from [2620:0:1cfe:9a:863a:4bff:fec8:e538] by dancol.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_RC2) (envelope-from ) id 1XQpUg-0005YS-Qe; Sun, 07 Sep 2014 20:19:54 -0700 Message-ID: <540D2054.4000909@dancol.org> Date: Sun, 07 Sep 2014 20:19:48 -0700 From: Daniel Colascione User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Demetrios Obenour , 'Paul Eggert' , 'Stefan Monnier' Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <540D1699.2030903@cs.ucla.edu> <020201cfcb13$6d851890$488f49b0$@gmail.com> In-Reply-To: <020201cfcb13$6d851890$488f49b0$@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="7Jjk5lvW4aV2OGMlj4B704tM5LdDeCt34" X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.6 (-) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --7Jjk5lvW4aV2OGMlj4B704tM5LdDeCt34 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 09/07/2014 08:17 PM, Demetrios Obenour wrote: > This is crucial. Otherwise, a security vulnerability could result. >=20 > MAX_ALLOCA should not be larger than the page size for the target archi= tecture. You could just touch every page inside a large alloca. --7Jjk5lvW4aV2OGMlj4B704tM5LdDeCt34 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBCAAGBQJUDSBUAAoJEN4WImmbpWBldVoP/2FnpZ8EvYST00r0mBF+8zkw XC8ddVYIGsxRT0iwhSS+g5uP90iaz4XHyUj/oYwcd3uvXf7f8o1RC3kk47xMHBHK 13ES4h7J0W6PXvIafmJBzbSnxhE3x114rk1IBLT6S4hG4eKIW05erKJaqEEXr5vi 6G4f63tk/VHwZ0VzRh6NVruWncoqnD7B6hYSPDk16fJa4jKJ2lAL+QOfkxhSgevX zVEFG93esFSG1zXlyV3e3tmnRIBXOYGc6t2UZUeH88RmiDwZxxA0HOzFNvSj6d62 yFMSc8/cLRxbKX7ZLFhw9PsMF4W411u9/JGc2QtXxMMg7iQka/md/CohrrwlBgsY R0mZynp1UahJu5UjkEcEiphMF9CERxKj8QxpCZoApT7c5EkgygJAZANTUFa3mkF0 vTMbLWxRIuvIV8+wgHlMhM0P0gSWetoISt+cCeUGHCEIn+hoG5dKqF2rdUuSZ8nJ QJwqlF0PCH4sHufVJtfe8cMaFNm9AsQN8FYllOwjK8aFvTtosTy5Wry6tMPYRdr7 fVHKYEsY1PX4+Io78AD0qwjsk5rTWMkK4UET5ZjyBMtfTeesVtX2vArZp72TyWkf SIBZ6sCIjyunRtyOe0IZ5aIXtBYenAWjS3RwXcKZQ4GscIufhAnEI+/sfnPYijMt /y0lBpsyRZ3bdaG/ziS7 =9jj/ -----END PGP SIGNATURE----- --7Jjk5lvW4aV2OGMlj4B704tM5LdDeCt34-- From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 07 23:20:57 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 03:20:57 +0000 Received: from localhost ([127.0.0.1]:33153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQpVg-0003D0-NX for submit@debbugs.gnu.org; Sun, 07 Sep 2014 23:20:57 -0400 Received: from mail-yk0-f180.google.com ([209.85.160.180]:49895) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQpVd-0003Cm-K2 for 18410@debbugs.gnu.org; Sun, 07 Sep 2014 23:20:54 -0400 Received: by mail-yk0-f180.google.com with SMTP id q9so893179ykb.11 for <18410@debbugs.gnu.org>; Sun, 07 Sep 2014 20:20:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:references:in-reply-to:subject:date:message-id :mime-version:content-type:content-transfer-encoding:thread-index :content-language; bh=+Un9K74gQ2l2i7cuhvDnmcf0Gsxwtdu+UmSjxMuWnHc=; b=gXpxU7OMoXrH6dR+/k2Qzm5Au1IaMf+JZjUVIYVuog2udb3Cjtx03jcSC3MW7oDhcy Gzm70DWW90bLLa5QkAwoix9W8zwXAcG/Hc8I/zJPRbMGDCHhysbYMDG1sbF1GUeMoRXV +NoZGz6r1gN9PH52z/UL/bUYxT2IlkpZYg7ENk+hnPsngWUW0AWvkhs/ipyCxLv9B+YT rBDoN2nLvGARdlWQhn1poECDK+8NKQLv4Aih495R0Q0Zi3FbsGmd3VLzFP+h0h5Dris/ HW50xBotEuDEyBdgGTs/IUI733DeeHfoCUEC43kQOR5N9nx6ust9Dnabe3M6TvGpXO3L wxAA== X-Received: by 10.236.45.33 with SMTP id o21mr885997yhb.109.1410146448106; Sun, 07 Sep 2014 20:20:48 -0700 (PDT) Received: from admin (c-71-236-63-161.hsd1.tn.comcast.net. [71.236.63.161]) by mx.google.com with ESMTPSA id t3sm3924789yhp.19.2014.09.07.20.20.47 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 07 Sep 2014 20:20:47 -0700 (PDT) From: "Demetrios Obenour" To: "'Daniel Colascione'" , "'Paul Eggert'" , "'Stefan Monnier'" References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <540D1699.2030903@cs.ucla.edu> <020201cfcb13$6d851890$488f49b0$@gmail.com> <540D2054.4000909@dancol.org> In-Reply-To: <540D2054.4000909@dancol.org> Subject: RE: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Date: Sun, 7 Sep 2014 23:20:47 -0400 Message-ID: <022901cfcb13$e2785db0$a7691910$@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 15.0 Thread-Index: AQIbHmv0S5k5dv+xo5sOLfqUvwXvlgE5FuACAoMkd9MCPkb5hQLifywuAnFZF4ICM09JqgKtaNkJmt5yPVA= Content-Language: en-us X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) That would work also, and is probably the best approach. -----Original Message----- From: Daniel Colascione [mailto:dancol@dancol.org]=20 Sent: Sunday, September 7, 2014 11:20 PM To: Demetrios Obenour; 'Paul Eggert'; 'Stefan Monnier' Cc: 18410@debbugs.gnu.org Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack = allocation. On 09/07/2014 08:17 PM, Demetrios Obenour wrote: > This is crucial. Otherwise, a security vulnerability could result. >=20 > MAX_ALLOCA should not be larger than the page size for the target = architecture. You could just touch every page inside a large alloca. From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 08 03:26:20 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 07:26:20 +0000 Received: from localhost ([127.0.0.1]:33185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQtL9-0001xr-ID for submit@debbugs.gnu.org; Mon, 08 Sep 2014 03:26:19 -0400 Received: from forward3h.cmail.yandex.net ([87.250.230.18]:41433) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQtL6-0001xa-Go for 18410@debbugs.gnu.org; Mon, 08 Sep 2014 03:26:18 -0400 Received: from smtp2o.mail.yandex.net (smtp2o.mail.yandex.net [37.140.190.27]) by forward3h.cmail.yandex.net (Yandex) with ESMTP id 365CC14A1; Mon, 8 Sep 2014 11:26:09 +0400 (MSK) Received: from smtp2o.mail.yandex.net (localhost [127.0.0.1]) by smtp2o.mail.yandex.net (Yandex) with ESMTP id C8F2136A2972; Mon, 8 Sep 2014 11:26:08 +0400 (MSK) Received: from unknown (unknown [37.139.80.10]) by smtp2o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id wh4SOaC6sN-Q7riY5uf; Mon, 8 Sep 2014 11:26:07 +0400 (using TLSv1.2 with cipher AES128-SHA (128/128 bits)) (Client certificate not present) X-Yandex-Uniq: 1de7c0bc-08e2-4ebf-8063-34894d343fad DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1410161168; bh=25hEGsEGBTJroDgDfLUxnEYszb6CbqTyQM6qHwLUzZ8=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=mcPmZtRCgzdcmRpAdSREI3W2oM0gsOsvfS5wNBska6foh8dpUCPJ+6xvCxBKFkKJz 0ylfbcid6VDOO5Rpd/8MdMhotSrmm6oOawna68LN6oilN11LcITv4vCOv5ne+XV+pr ObWPyzpfIt9Y03pdAJpX/+Xb5Aq4D/0gE3TK9tNw= Authentication-Results: smtp2o.mail.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: <540D5A0D.1070607@yandex.ru> Date: Mon, 08 Sep 2014 11:26:05 +0400 From: Dmitry Antipov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 MIME-Version: 1.0 To: Paul Eggert , Stefan Monnier Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <540D1699.2030903@cs.ucla.edu> In-Reply-To: <540D1699.2030903@cs.ucla.edu> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 18410 Cc: 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) On 09/08/2014 06:38 AM, Paul Eggert wrote: > If I understand things correctly, Dmitry's recent stack-overflow changes > don't affect this, as they don't deal with the guard-page region size. Yes. Guard-page approach has an unsolvable problem with dynamically adjusted stack size (prlimit on GNU/Linux) - you just don't know where the guard page should be, and there is no OS-level capability to notify an application about stack size change. Dmitry From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 08 08:49:02 2014 Received: (at 18410) by debbugs.gnu.org; 8 Sep 2014 12:49:02 +0000 Received: from localhost ([127.0.0.1]:33373 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQyNS-0002Tn-Ac for submit@debbugs.gnu.org; Mon, 08 Sep 2014 08:49:02 -0400 Received: from chene.dit.umontreal.ca ([132.204.246.20]:45737) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XQyNP-0002TO-TD for 18410@debbugs.gnu.org; Mon, 08 Sep 2014 08:49:00 -0400 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id s88Cmo5l007742; Mon, 8 Sep 2014 08:48:51 -0400 Received: by pastel.home (Postfix, from userid 20848) id C02CB60BF3; Mon, 8 Sep 2014 08:48:50 -0400 (EDT) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Message-ID: References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <83vboybzyv.fsf@gnu.org> Date: Mon, 08 Sep 2014 08:48:50 -0400 In-Reply-To: <83vboybzyv.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Sep 2014 05:36:24 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV5058=0 X-NAI-Spam-Version: 2.3.0.9378 : core <5058> : inlines <1260> : streams <1284485> : uri <1811668> X-Spam-Score: -3.8 (---) X-Debbugs-Envelope-To: 18410 Cc: Paul Eggert , 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.8 (---) >> Perhaps some of that discussion is moot now, with the stack overflow >> checking that Dmitry added last month? > I'd say it's definitely moot on systems where that stack-overflow code > is working. I disagree. Even if the new stack-overflow code works, it doesn't change the fact that a stack-overflow is a problem for the end-user and we should try to avoid causing such things. IOW, Dmitry's overflow-handling is good because it makes the failure a bit cleaner, but it's still a failure that we should strive to avoid. Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 09 09:17:42 2014 Received: (at 18410) by debbugs.gnu.org; 9 Sep 2014 13:17:42 +0000 Received: from localhost ([127.0.0.1]:34559 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XRLIj-0001l1-M9 for submit@debbugs.gnu.org; Tue, 09 Sep 2014 09:17:42 -0400 Received: from mtaout27.012.net.il ([80.179.55.183]:60546) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XRLIf-0001km-Va for 18410@debbugs.gnu.org; Tue, 09 Sep 2014 09:17:39 -0400 Received: from conversion-daemon.mtaout27.012.net.il by mtaout27.012.net.il (HyperSendmail v2007.08) id <0NBM00E00XNK4900@mtaout27.012.net.il> for 18410@debbugs.gnu.org; Tue, 09 Sep 2014 16:11:49 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout27.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NBM00881XZPJ570@mtaout27.012.net.il>; Tue, 09 Sep 2014 16:11:49 +0300 (IDT) Date: Tue, 09 Sep 2014 16:17:41 +0300 From: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. In-reply-to: X-012-Sender: halo1@inter.net.il To: Stefan Monnier Message-id: <83lhptaq6i.fsf@gnu.org> References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <83vboybzyv.fsf@gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 18410 Cc: eggert@cs.ucla.edu, 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > From: Stefan Monnier > Cc: Paul Eggert , 18410@debbugs.gnu.org > Date: Mon, 08 Sep 2014 08:48:50 -0400 > > >> Perhaps some of that discussion is moot now, with the stack overflow > >> checking that Dmitry added last month? > > I'd say it's definitely moot on systems where that stack-overflow code > > is working. > > I disagree. Even if the new stack-overflow code works, it doesn't > change the fact that a stack-overflow is a problem for the end-user and > we should try to avoid causing such things. > > IOW, Dmitry's overflow-handling is good because it makes the failure > a bit cleaner, but it's still a failure that we should strive to avoid. Actually, we are in violent agreement. The point I was making is that given that we want to check for stack overflow, we don't need 2 such checks. I didn't mean at all to say that we should be less careful about avoiding stack overflows. From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 09 09:49:44 2014 Received: (at 18410) by debbugs.gnu.org; 9 Sep 2014 13:49:44 +0000 Received: from localhost ([127.0.0.1]:34579 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XRLnk-0002Yy-GF for submit@debbugs.gnu.org; Tue, 09 Sep 2014 09:49:44 -0400 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:35378) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XRLni-0002Yq-8I for 18410@debbugs.gnu.org; Tue, 09 Sep 2014 09:49:42 -0400 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id s89DnWGS014972; Tue, 9 Sep 2014 09:49:32 -0400 Received: by pastel.home (Postfix, from userid 20848) id 45D9660787; Tue, 9 Sep 2014 09:49:32 -0400 (EDT) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#18410: Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. Message-ID: References: <5409536B.5090201@cs.ucla.edu> <540C0741.8090900@cs.ucla.edu> <83bnqrcq7u.fsf@gnu.org> <540CC106.8040705@cs.ucla.edu> <83vboybzyv.fsf@gnu.org> <83lhptaq6i.fsf@gnu.org> Date: Tue, 09 Sep 2014 09:49:32 -0400 In-Reply-To: <83lhptaq6i.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Sep 2014 16:17:41 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV5059=0 X-NAI-Spam-Version: 2.3.0.9378 : core <5059> : inlines <1267> : streams <1285457> : uri <1812045> X-Spam-Score: -3.8 (---) X-Debbugs-Envelope-To: 18410 Cc: eggert@cs.ucla.edu, 18410@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.8 (---) > Actually, we are in violent agreement. The point I was making is that > given that we want to check for stack overflow, we don't need 2 such > checks. I didn't mean at all to say that we should be less careful > about avoiding stack overflows. Good. I just wanted to clarify since the "moot discussion" was about increasing MAX_ALLOCA, which would increase the risk of stack overflow. Stefan From unknown Sat Jun 21 10:25:28 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 08 Oct 2014 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator