From unknown Mon Aug 18 04:41:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 03 Dec 2012 20:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 13070@debbugs.gnu.org Cc: Eli Zaretskii , Fabrice Popineau X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.13545669621778 (code B ref -1); Mon, 03 Dec 2012 20:37:01 +0000 Received: (at submit) by debbugs.gnu.org; 3 Dec 2012 20:36:02 +0000 Received: from localhost ([127.0.0.1]:51957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfckC-0000SK-Fg for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:36:02 -0500 Received: from eggs.gnu.org ([208.118.235.92]:34266) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfck6-0000S9-BP for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:35:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tfchi-0003Ls-7y for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:33:30 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:49779) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfchi-0003Ln-3l for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:33:26 -0500 Received: from eggs.gnu.org ([208.118.235.92]:46620) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfchd-0005e6-E9 for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:33:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfchT-0003K6-81 for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:33:20 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:34276) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfchS-0003JE-NG; Mon, 03 Dec 2012 15:33:11 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 2807EA60003; Mon, 3 Dec 2012 12:33:00 -0800 (PST) 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 7imZSepGUAjn; Mon, 3 Dec 2012 12:32:56 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id BE391A60001; Mon, 3 Dec 2012 12:32:56 -0800 (PST) Message-ID: <50BD0C72.7070601@cs.ucla.edu> Date: Mon, 03 Dec 2012 12:32:50 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020805030603090107030509" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) This is a multi-part message in MIME format. --------------020805030603090107030509 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch The attached patch is in response to last week's thread on emacs-devel . It's relative to trunk bzr 111078. Tested on Fedora 17. I don't see any issues related to the Microsoft port but I'm CC:ing this to Eli and Fabrice just in case, as the original bug seems to be Windows-related. --------------020805030603090107030509 Content-Type: text/plain; charset=us-ascii; name="setenv.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setenv.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTExLTMw IDE4OjI1OjU5ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMi0wMyAyMDowMzoyMiArMDAw MApAQCAtMSwzICsxLDExIEBACisyMDEyLTEyLTAzICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KKworCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlp bmcgZW52aXJvbiBkaXJlY3RseS4KKwkqIGxpYi9wdXRlbnYuYywgbGliL3Vuc2V0ZW52LmMs IG00L3B1dGVudi5tNCwgbTQvc2V0ZW52Lm00OgorCU5ldyBmaWxlcywgY29waWVkIGF1dG9t YXRpY2FsbHkgZnJvbSBnbnVsaWIuCisJKiBsaWIvZ251bGliLm1rLCBtNC9nbnVsaWItY29t cC5tNDogUmVnZW5lcmF0ZS4KKwkqIG1lcmdlLWdudWxpYiAoR05VTElCX01PRFVMRVMpOiBB ZGQgcHV0ZW52LCB1bnNldGVudi4KKwogMjAxMi0xMS0zMCAgUGF1bCBFZ2dlcnQgIDxlZ2dl cnRAY3MudWNsYS5lZHU+CiAKIAlNZXJnZSBmcm9tIGdudWxpYiBmb3IgJ2lubGluZScgKEJ1 ZyMxMzA0MCksIGluY29ycG9yYXRpbmc6Cgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4vQ2hh bmdlTG9nJwotLS0gYWRtaW4vQ2hhbmdlTG9nCTIwMTItMTEtMjQgMTc6MjA6NDkgKzAwMDAK KysrIGFkbWluL0NoYW5nZUxvZwkyMDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0xLDMg KzEsOCBAQAorMjAxMi0xMi0wMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+ CisKKwlVc2UgcHV0ZW52K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24g ZGlyZWN0bHkuCisJKiBtZXJnZS1nbnVsaWIgKEdOVUxJQl9NT0RVTEVTKTogQWRkIHB1dGVu diwgdW5zZXRlbnYuCisKIDIwMTItMTEtMjQgIEtlbiBCcm93biAgPGticm93bkBjb3JuZWxs LmVkdT4KIAogCSogQ1BQLURFRklORVMgKEhBVkVfTU9VU0UpOiBSZW1vdmUuCgo9PT0gbW9k aWZpZWQgZmlsZSAnYWRtaW4vbWVyZ2UtZ251bGliJwotLS0gYWRtaW4vbWVyZ2UtZ251bGli CTIwMTItMTEtMTcgMjI6MTI6NDcgKzAwMDAKKysrIGFkbWluL21lcmdlLWdudWxpYgkyMDEy LTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0zMSwxMCArMzEsMTAgQEAKICAgZHRvYXN0ciBk dG90aW1lc3BlYyBkdXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0CiAgIGZjbnRsLWgg ZmlsZW1vZGUgZ2V0bG9hZGF2ZyBnZXRvcHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5CiAg IGlnbm9yZS12YWx1ZSBpbnRwcm9wcyBsYXJnZWZpbGUgbHN0YXQKLSAgbWFueXdhcm5pbmdz IG1rdGltZSBwc2VsZWN0IHB0aHJlYWRfc2lnbWFzayByZWFkbGluaworICBtYW55d2Fybmlu Z3MgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluawogICBz b2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcgc3RkYm9vbCBzdGRpbwogICBzdHJm dGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lzX3N0YXQKLSAgc3lzX3RpbWUg dGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1zdWIgdXRpbWVucworICBz eXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1bnNl dGVudiB1dGltZW5zCiAgIHdhcm5pbmdzCiAnCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaWIv Z251bGliLm1rJwotLS0gbGliL2dudWxpYi5tawkyMDEyLTExLTMwIDE4OjI1OjU5ICswMDAw CisrKyBsaWIvZ251bGliLm1rCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTIxLDcg KzIxLDcgQEAKICMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9m IHRoYXQgcHJvZ3JhbS4KICMKICMgR2VuZXJhdGVkIGJ5IGdudWxpYi10b29sLgotIyBSZXBy b2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1wb3J0IC0tZGlyPS4gLS1saWI9bGliZ251IC0t c291cmNlLWJhc2U9bGliIC0tbTQtYmFzZT1tNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJh c2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLWF2b2lkPWF0LWludGVybmFsIC0tYXZv aWQ9ZXJybm8gLS1hdm9pZD1mY2hkaXIgLS1hdm9pZD1mY250bCAtLWF2b2lkPWZzdGF0IC0t YXZvaWQ9bWFsbG9jLXBvc2l4IC0tYXZvaWQ9bXN2Yy1pbnZhbCAtLWF2b2lkPW1zdmMtbm90 aHJvdyAtLWF2b2lkPW9wZW5hdC1kaWUgLS1hdm9pZD1vcGVuYXQtaCAtLWF2b2lkPXJhaXNl IC0tYXZvaWQ9c2F2ZS1jd2QgLS1hdm9pZD1zZWxlY3QgLS1hdm9pZD1zaWdwcm9jbWFzayAt LWF2b2lkPXN5c190eXBlcyAtLWF2b2lkPXRocmVhZGxpYiAtLW1ha2VmaWxlLW5hbWU9Z251 bGliLm1rIC0tY29uZGl0aW9uYWwtZGVwZW5kZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3Jv LXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGFsbG9jYS1vcHQgYy1jdHlwZSBjLXN0cmNhc2Ug Y2FyZWFkbGlua2F0IGNsb3NlLXN0cmVhbSBjcnlwdG8vbWQ1IGNyeXB0by9zaGExIGNyeXB0 by9zaGEyNTYgY3J5cHRvL3NoYTUxMiBkdG9hc3RyIGR0b3RpbWVzcGVjIGR1cDIgZW52aXJv biBleGVjaW5mbyBmYWNjZXNzYXQgZmNudGwtaCBmaWxlbW9kZSBnZXRsb2FkYXZnIGdldG9w dC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkgaWdub3JlLXZhbHVlIGludHByb3BzIGxhcmdl ZmlsZSBsc3RhdCBtYW55d2FybmluZ3MgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNr IHJlYWRsaW5rIHNvY2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0 ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdCBzeXNf dGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1dGltZW5z IHdhcm5pbmdzCisjIFJlcHJvZHVjZSBieTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9 LiAtLWxpYj1saWJnbnUgLS1zb3VyY2UtYmFzZT1saWIgLS1tNC1iYXNlPW00IC0tZG9jLWJh c2U9ZG9jIC0tdGVzdHMtYmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tYXZvaWQ9 YXQtaW50ZXJuYWwgLS1hdm9pZD1lcnJubyAtLWF2b2lkPWZjaGRpciAtLWF2b2lkPWZjbnRs IC0tYXZvaWQ9ZnN0YXQgLS1hdm9pZD1tYWxsb2MtcG9zaXggLS1hdm9pZD1tc3ZjLWludmFs IC0tYXZvaWQ9bXN2Yy1ub3Rocm93IC0tYXZvaWQ9b3BlbmF0LWRpZSAtLWF2b2lkPW9wZW5h dC1oIC0tYXZvaWQ9cmFpc2UgLS1hdm9pZD1zYXZlLWN3ZCAtLWF2b2lkPXNlbGVjdCAtLWF2 b2lkPXNpZ3Byb2NtYXNrIC0tYXZvaWQ9c3lzX3R5cGVzIC0tYXZvaWQ9dGhyZWFkbGliIC0t bWFrZWZpbGUtbmFtZT1nbnVsaWIubWsgLS1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1u by1saWJ0b29sIC0tbWFjcm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYWxsb2NhLW9wdCBj LWN0eXBlIGMtc3RyY2FzZSBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUg Y3J5cHRvL3NoYTEgY3J5cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyIGR0b2FzdHIgZHRvdGlt ZXNwZWMgZHVwMiBlbnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdCBmY250bC1oIGZpbGVtb2Rl IGdldGxvYWRhdmcgZ2V0b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFs dWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxzdGF0IG1hbnl3YXJuaW5ncyBta3RpbWUgcHNlbGVj dCBwdGhyZWFkX3NpZ21hc2sgcHV0ZW52IHJlYWRsaW5rIHNvY2tsZW4gc3RhdC10aW1lIHN0 ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3Vt YXggc3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMt YWRkIHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdhcm5pbmdzCiAKIAogTU9TVExZ Q0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC00MzksNiArNDM5LDE1IEBACiAK ICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgcHRocmVhZF9zaWdtYXNrCiAKKyMjIGJlZ2luIGdu dWxpYiBtb2R1bGUgcHV0ZW52CisKKworRVhUUkFfRElTVCArPSBwdXRlbnYuYworCitFWFRS QV9saWJnbnVfYV9TT1VSQ0VTICs9IHB1dGVudi5jCisKKyMjIGVuZCAgIGdudWxpYiBtb2R1 bGUgcHV0ZW52CisKICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgcmVhZGxpbmsKIAogCkBAIC0x NDAwLDYgKzE0MDksMTUgQEAKIAogIyMgZW5kICAgZ251bGliIG1vZHVsZSB1bmlzdGQKIAor IyMgYmVnaW4gZ251bGliIG1vZHVsZSB1bnNldGVudgorCisKK0VYVFJBX0RJU1QgKz0gdW5z ZXRlbnYuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9IHVuc2V0ZW52LmMKKworIyMg ZW5kICAgZ251bGliIG1vZHVsZSB1bnNldGVudgorCiAjIyBiZWdpbiBnbnVsaWIgbW9kdWxl IHV0aW1lbnMKIAogbGliZ251X2FfU09VUkNFUyArPSB1dGltZW5zLmMKCj09PSBhZGRlZCBm aWxlICdsaWIvcHV0ZW52LmMnCi0tLSBsaWIvcHV0ZW52LmMJMTk3MC0wMS0wMSAwMDowMDow MCArMDAwMAorKysgbGliL3B1dGVudi5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAg LTAsMCArMSwxMzQgQEAKKy8qIENvcHlyaWdodCAoQykgMTk5MSwgMTk5NCwgMTk5Ny0xOTk4 LCAyMDAwLCAyMDAzLTIwMTIgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLgor CisgICBOT1RFOiBUaGUgY2Fub25pY2FsIHNvdXJjZSBvZiB0aGlzIGZpbGUgaXMgbWFpbnRh aW5lZCB3aXRoIHRoZSBHTlUgQworICAgTGlicmFyeS4gIEJ1Z3MgY2FuIGJlIHJlcG9ydGVk IHRvIGJ1Zy1nbGliY0BwcmVwLmFpLm1pdC5lZHUuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgYW55CisgICBsYXRlciB2ZXJzaW9u LgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisKKy8q IFNwZWNpZmljYXRpb24uICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8 c3RkZGVmLmg+CisKKy8qIEluY2x1ZGUgZXJybm8uaCAqYWZ0ZXIqIHN5cy90eXBlcy5oIHRv IHdvcmsgYXJvdW5kIGhlYWRlciBwcm9ibGVtcworICAgb24gQUlYIDMuMi41LiAgKi8KKyNp bmNsdWRlIDxlcnJuby5oPgorI2lmbmRlZiBfX3NldF9lcnJubworIyBkZWZpbmUgX19zZXRf ZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5n Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBfTElCQworIyBpZiBIQVZFX0dOVV9M RAorIyAgZGVmaW5lIGVudmlyb24gX19lbnZpcm9uCisjIGVsc2UKK2V4dGVybiBjaGFyICoq ZW52aXJvbjsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBw cm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9u Jy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZp bmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xp YmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBkZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3Vu bG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRlZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sK KyNlbmRpZgorCitzdGF0aWMgaW50CitfdW5zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUpCit7 CisgIHNpemVfdCBsZW47CisgIGNoYXIgKiplcDsKKworICBpZiAobmFtZSA9PSBOVUxMIHx8 ICpuYW1lID09ICdcMCcgfHwgc3RyY2hyIChuYW1lLCAnPScpICE9IE5VTEwpCisgICAgewor ICAgICAgX19zZXRfZXJybm8gKEVJTlZBTCk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQor CisgIGxlbiA9IHN0cmxlbiAobmFtZSk7CisKKyAgTE9DSzsKKworICBlcCA9IGVudmlyb247 CisgIHdoaWxlICgqZXAgIT0gTlVMTCkKKyAgICBpZiAoIXN0cm5jbXAgKCplcCwgbmFtZSwg bGVuKSAmJiAoKmVwKVtsZW5dID09ICc9JykKKyAgICAgIHsKKyAgICAgICAgLyogRm91bmQg aXQuICBSZW1vdmUgdGhpcyBwb2ludGVyIGJ5IG1vdmluZyBsYXRlciBvbmVzIGJhY2suICAq LworICAgICAgICBjaGFyICoqZHAgPSBlcDsKKworICAgICAgICBkbworICAgICAgICAgIGRw WzBdID0gZHBbMV07CisgICAgICAgIHdoaWxlICgqZHArKyk7CisgICAgICAgIC8qIENvbnRp bnVlIHRoZSBsb29wIGluIGNhc2UgTkFNRSBhcHBlYXJzIGFnYWluLiAgKi8KKyAgICAgIH0K KyAgICBlbHNlCisgICAgICArK2VwOworCisgIFVOTE9DSzsKKworICByZXR1cm4gMDsKK30K KworCisvKiBQdXQgU1RSSU5HLCB3aGljaCBpcyBvZiB0aGUgZm9ybSAiTkFNRT1WQUxVRSIs IGluIHRoZSBlbnZpcm9ubWVudC4KKyAgIElmIFNUUklORyBjb250YWlucyBubyAnPScsIHRo ZW4gcmVtb3ZlIFNUUklORyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gICovCitpbnQKK3B1dGVu diAoY2hhciAqc3RyaW5nKQoreworICBjb25zdCBjaGFyICpjb25zdCBuYW1lX2VuZCA9IHN0 cmNociAoc3RyaW5nLCAnPScpOworICByZWdpc3RlciBzaXplX3Qgc2l6ZTsKKyAgcmVnaXN0 ZXIgY2hhciAqKmVwOworCisgIGlmIChuYW1lX2VuZCA9PSBOVUxMKQorICAgIHsKKyAgICAg IC8qIFJlbW92ZSB0aGUgdmFyaWFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQuICAqLworICAg ICAgcmV0dXJuIF91bnNldGVudiAoc3RyaW5nKTsKKyAgICB9CisKKyAgc2l6ZSA9IDA7Cisg IGZvciAoZXAgPSBlbnZpcm9uOyAqZXAgIT0gTlVMTDsgKytlcCkKKyAgICBpZiAoIXN0cm5j bXAgKCplcCwgc3RyaW5nLCBuYW1lX2VuZCAtIHN0cmluZykgJiYKKyAgICAgICAgKCplcClb bmFtZV9lbmQgLSBzdHJpbmddID09ICc9JykKKyAgICAgIGJyZWFrOworICAgIGVsc2UKKyAg ICAgICsrc2l6ZTsKKworICBpZiAoKmVwID09IE5VTEwpCisgICAgeworICAgICAgc3RhdGlj IGNoYXIgKipsYXN0X2Vudmlyb24gPSBOVUxMOworICAgICAgY2hhciAqKm5ld19lbnZpcm9u ID0gKGNoYXIgKiopIG1hbGxvYyAoKHNpemUgKyAyKSAqIHNpemVvZiAoY2hhciAqKSk7Cisg ICAgICBpZiAobmV3X2Vudmlyb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAg ICAgKHZvaWQpIG1lbWNweSAoKHZvaWQgKikgbmV3X2Vudmlyb24sICh2b2lkICopIGVudmly b24sCisgICAgICAgICAgICAgICAgICAgICBzaXplICogc2l6ZW9mIChjaGFyICopKTsKKyAg ICAgIG5ld19lbnZpcm9uW3NpemVdID0gKGNoYXIgKikgc3RyaW5nOworICAgICAgbmV3X2Vu dmlyb25bc2l6ZSArIDFdID0gTlVMTDsKKyAgICAgIGZyZWUgKGxhc3RfZW52aXJvbik7Cisg ICAgICBsYXN0X2Vudmlyb24gPSBuZXdfZW52aXJvbjsKKyAgICAgIGVudmlyb24gPSBuZXdf ZW52aXJvbjsKKyAgICB9CisgIGVsc2UKKyAgICAqZXAgPSBzdHJpbmc7CisKKyAgcmV0dXJu IDA7Cit9Cgo9PT0gYWRkZWQgZmlsZSAnbGliL3Vuc2V0ZW52LmMnCi0tLSBsaWIvdW5zZXRl bnYuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBsaWIvdW5zZXRlbnYuYwkyMDEy LTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTI3IEBACisvKiBDb3B5cmlnaHQg KEMpIDE5OTIsIDE5OTUtMjAwMiwgMjAwNS0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisK KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKworLyogRG9uJ3QgdXNlIF9fYXR0 cmlidXRlX18gX19ub25udWxsX18gaW4gdGhpcyBjb21waWxhdGlvbiB1bml0LiAgT3RoZXJ3 aXNlIGdjYworICAgb3B0aW1pemVzIGF3YXkgdGhlIG5hbWUgPT0gTlVMTCB0ZXN0IGJlbG93 LiAgKi8KKyNkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykKKworLyogU3BlY2lmaWNh dGlvbi4gICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgor I2lmICFfTElCQworIyBkZWZpbmUgX19zZXRfZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkK KyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisK KyNpZiAhX0xJQkMKKyMgZGVmaW5lIF9fZW52aXJvbiAgICAgIGVudmlyb24KKyNlbmRpZgor CisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBwcm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91 cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9uJy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGli Yy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52 bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xpYmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBk ZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3VubG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRl ZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sKKyNlbmRpZgorCisvKiBJbiB0aGUgR05VIEMg bGlicmFyeSB3ZSBtdXN0IGtlZXAgdGhlIG5hbWVzcGFjZSBjbGVhbi4gICovCisjaWZkZWYg X0xJQkMKKyMgZGVmaW5lIHVuc2V0ZW52IF9fdW5zZXRlbnYKKyNlbmRpZgorCisjaWYgX0xJ QkMgfHwgIUhBVkVfVU5TRVRFTlYKKworaW50Cit1bnNldGVudiAoY29uc3QgY2hhciAqbmFt ZSkKK3sKKyAgc2l6ZV90IGxlbjsKKyAgY2hhciAqKmVwOworCisgIGlmIChuYW1lID09IE5V TEwgfHwgKm5hbWUgPT0gJ1wwJyB8fCBzdHJjaHIgKG5hbWUsICc9JykgIT0gTlVMTCkKKyAg ICB7CisgICAgICBfX3NldF9lcnJubyAoRUlOVkFMKTsKKyAgICAgIHJldHVybiAtMTsKKyAg ICB9CisKKyAgbGVuID0gc3RybGVuIChuYW1lKTsKKworICBMT0NLOworCisgIGVwID0gX19l bnZpcm9uOworICB3aGlsZSAoKmVwICE9IE5VTEwpCisgICAgaWYgKCFzdHJuY21wICgqZXAs IG5hbWUsIGxlbikgJiYgKCplcClbbGVuXSA9PSAnPScpCisgICAgICB7CisgICAgICAgIC8q IEZvdW5kIGl0LiAgUmVtb3ZlIHRoaXMgcG9pbnRlciBieSBtb3ZpbmcgbGF0ZXIgb25lcyBi YWNrLiAgKi8KKyAgICAgICAgY2hhciAqKmRwID0gZXA7CisKKyAgICAgICAgZG8KKyAgICAg ICAgICBkcFswXSA9IGRwWzFdOworICAgICAgICB3aGlsZSAoKmRwKyspOworICAgICAgICAv KiBDb250aW51ZSB0aGUgbG9vcCBpbiBjYXNlIE5BTUUgYXBwZWFycyBhZ2Fpbi4gICovCisg ICAgICB9CisgICAgZWxzZQorICAgICAgKytlcDsKKworICBVTkxPQ0s7CisKKyAgcmV0dXJu IDA7Cit9CisKKyNpZmRlZiBfTElCQworIyB1bmRlZiB1bnNldGVudgord2Vha19hbGlhcyAo X191bnNldGVudiwgdW5zZXRlbnYpCisjZW5kaWYKKworI2Vsc2UgLyogSEFWRV9VTlNFVEVO ViAqLworCisjIHVuZGVmIHVuc2V0ZW52CisjIGlmICFIQVZFX0RFQ0xfVU5TRVRFTlYKKyMg IGlmIFZPSURfVU5TRVRFTlYKK2V4dGVybiB2b2lkIHVuc2V0ZW52IChjb25zdCBjaGFyICop OworIyAgZWxzZQorZXh0ZXJuIGludCB1bnNldGVudiAoY29uc3QgY2hhciAqKTsKKyMgIGVu ZGlmCisjIGVuZGlmCisKKy8qIENhbGwgdGhlIHVuZGVybHlpbmcgdW5zZXRlbnYsIGluIGNh c2UgdGhlcmUgaXMgaGlkZGVuIGJvb2trZWVwaW5nCisgICB0aGF0IG5lZWRzIHVwZGF0aW5n IGJleW9uZCBqdXN0IG1vZGlmeWluZyBlbnZpcm9uLiAgKi8KK2ludAorcnBsX3Vuc2V0ZW52 IChjb25zdCBjaGFyICpuYW1lKQoreworICBpbnQgcmVzdWx0ID0gMDsKKyAgaWYgKCFuYW1l IHx8ICEqbmFtZSB8fCBzdHJjaHIgKG5hbWUsICc9JykpCisgICAgeworICAgICAgZXJybm8g PSBFSU5WQUw7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB3aGlsZSAoZ2V0ZW52IChu YW1lKSkKKyMgaWYgIVZPSURfVU5TRVRFTlYKKyAgICByZXN1bHQgPQorIyBlbmRpZgorICAg ICAgdW5zZXRlbnYgKG5hbWUpOworICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLyog SEFWRV9VTlNFVEVOViAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ200L2dudWxpYi1jb21wLm00 JwotLS0gbTQvZ251bGliLWNvbXAubTQJMjAxMi0xMS0zMCAxODoyNTo1OSArMDAwMAorKysg bTQvZ251bGliLWNvbXAubTQJMjAxMi0xMi0wMyAyMDowMzoyMiArMDAwMApAQCAtODUsNiAr ODUsNyBAQAogICAjIENvZGUgZnJvbSBtb2R1bGUgcGF0aG1heDoKICAgIyBDb2RlIGZyb20g bW9kdWxlIHBzZWxlY3Q6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBwdGhyZWFkX3NpZ21hc2s6 CisgICMgQ29kZSBmcm9tIG1vZHVsZSBwdXRlbnY6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBy ZWFkbGluazoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHJvb3QtdWlkOgogICAjIENvZGUgZnJv bSBtb2R1bGUgc2lnbmFsLWg6CkBAIC0xMjUsNiArMTI2LDcgQEAKICAgIyBDb2RlIGZyb20g bW9kdWxlIHRpbWVzcGVjLXN1YjoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHU2NDoKICAgIyBD b2RlIGZyb20gbW9kdWxlIHVuaXN0ZDoKKyAgIyBDb2RlIGZyb20gbW9kdWxlIHVuc2V0ZW52 OgogICAjIENvZGUgZnJvbSBtb2R1bGUgdXRpbWVuczoKICAgIyBDb2RlIGZyb20gbW9kdWxl IHZlcmlmeToKICAgIyBDb2RlIGZyb20gbW9kdWxlIHdhcm5pbmdzOgpAQCAtMjM5LDYgKzI0 MSwxMSBAQAogICAgIGdsX1BSRVJFUV9QVEhSRUFEX1NJR01BU0sKICAgZmkKICAgZ2xfU0lH TkFMX01PRFVMRV9JTkRJQ0FUT1IoW3B0aHJlYWRfc2lnbWFza10pCisgIGdsX0ZVTkNfUFVU RU5WCisgIGlmIHRlc3QgJFJFUExBQ0VfUFVURU5WID0gMTsgdGhlbgorICAgIEFDX0xJQk9C SihbcHV0ZW52XSkKKyAgZmkKKyAgZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW3B1dGVu dl0pCiAgIGdsX0ZVTkNfUkVBRExJTksKICAgaWYgdGVzdCAkSEFWRV9SRUFETElOSyA9IDAg fHwgdGVzdCAkUkVQTEFDRV9SRUFETElOSyA9IDE7IHRoZW4KICAgICBBQ19MSUJPQkooW3Jl YWRsaW5rXSkKQEAgLTI5MSw2ICsyOTgsMTIgQEAKICAgZ2xfVElNRVJfVElNRQogICBnbF9U SU1FU1BFQwogICBnbF9VTklTVERfSAorICBnbF9GVU5DX1VOU0VURU5WCisgIGlmIHRlc3Qg JEhBVkVfVU5TRVRFTlYgPSAwIHx8IHRlc3QgJFJFUExBQ0VfVU5TRVRFTlYgPSAxOyB0aGVu CisgICAgQUNfTElCT0JKKFt1bnNldGVudl0pCisgICAgZ2xfUFJFUkVRX1VOU0VURU5WCisg IGZpCisgIGdsX1NURExJQl9NT0RVTEVfSU5ESUNBVE9SKFt1bnNldGVudl0pCiAgIGdsX1VU SU1FTlMKICAgZ2xfZ251bGliX2VuYWJsZWRfZG9zbmFtZT1mYWxzZQogICBnbF9nbnVsaWJf ZW5hYmxlZF9ldWlkYWNjZXNzPWZhbHNlCkBAIC02NzMsNiArNjg2LDcgQEAKICAgbGliL3Bh dGhtYXguaAogICBsaWIvcHNlbGVjdC5jCiAgIGxpYi9wdGhyZWFkX3NpZ21hc2suYworICBs aWIvcHV0ZW52LmMKICAgbGliL3JlYWRsaW5rLmMKICAgbGliL3Jvb3QtdWlkLmgKICAgbGli L3NoYTEuYwpAQCAtNzE1LDYgKzcyOSw3IEBACiAgIGxpYi91NjQuaAogICBsaWIvdW5pc3Rk LmMKICAgbGliL3VuaXN0ZC5pbi5oCisgIGxpYi91bnNldGVudi5jCiAgIGxpYi91dGltZW5z LmMKICAgbGliL3V0aW1lbnMuaAogICBsaWIvdmVyaWZ5LmgKQEAgLTc1Niw3ICs3NzEsOSBA QAogICBtNC9wYXRobWF4Lm00CiAgIG00L3BzZWxlY3QubTQKICAgbTQvcHRocmVhZF9zaWdt YXNrLm00CisgIG00L3B1dGVudi5tNAogICBtNC9yZWFkbGluay5tNAorICBtNC9zZXRlbnYu bTQKICAgbTQvc2hhMS5tNAogICBtNC9zaGEyNTYubTQKICAgbTQvc2hhNTEyLm00Cgo9PT0g YWRkZWQgZmlsZSAnbTQvcHV0ZW52Lm00JwotLS0gbTQvcHV0ZW52Lm00CTE5NzAtMDEtMDEg MDA6MDA6MDAgKzAwMDAKKysrIG00L3B1dGVudi5tNAkyMDEyLTEyLTAzIDIwOjAzOjIyICsw MDAwCkBAIC0wLDAgKzEsNTAgQEAKKyMgcHV0ZW52Lm00IHNlcmlhbCAxOQorZG5sIENvcHly aWdodCAoQykgMjAwMi0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5s IFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlz dHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9u ZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEppbSBNZXllcmlu Zy4KK2RubAorZG5sIENoZWNrIHdoZXRoZXIgcHV0ZW52ICgiRk9PIikgcmVtb3ZlcyBGT08g ZnJvbSB0aGUgZW52aXJvbm1lbnQuCitkbmwgVGhlIHB1dGVudiBpbiBsaWJjIG9uIGF0IGxl YXN0IFN1bk9TIDQuMS40IGRvZXMgKm5vdCogZG8gdGhhdC4KKworQUNfREVGVU4oW2dsX0ZV TkNfUFVURU5WXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfU1RETElCX0hfREVGQVVMVFNdKQor ICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGls ZXMKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBwdXRlbnYgY29tcGF0aWJsZSB3aXRoIEdOVSBh bmQgU1ZJRF0sCisgICBbZ2xfY3ZfZnVuY19zdmlkX3B1dGVudl0sCisgICBbQUNfUlVOX0lG RUxTRShbQUNfTEFOR19QUk9HUkFNKFtBQ19JTkNMVURFU19ERUZBVUxUXSxbWworICAgIC8q IFB1dCBpdCBpbiBlbnYuICAqLworICAgIGlmIChwdXRlbnYgKCJDT05GVEVTVF9wdXRlbnY9 dmFsIikpCisgICAgICByZXR1cm4gMTsKKworICAgIC8qIFRyeSB0byByZW1vdmUgaXQuICAq LworICAgIGlmIChwdXRlbnYgKCJDT05GVEVTVF9wdXRlbnYiKSkKKyAgICAgIHJldHVybiAy OworCisgICAgLyogTWFrZSBzdXJlIGl0IHdhcyBkZWxldGVkLiAgKi8KKyAgICBpZiAoZ2V0 ZW52ICgiQ09ORlRFU1RfcHV0ZW52IikgIT0gMCkKKyAgICAgIHJldHVybiAzOworCisgICAg cmV0dXJuIDA7CisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgZ2xfY3ZfZnVu Y19zdmlkX3B1dGVudj15ZXMsCisgICAgICAgICAgICAgZ2xfY3ZfZnVuY19zdmlkX3B1dGVu dj1ubywKKyAgICAgICAgICAgICBkbmwgV2hlbiBjcm9zc2NvbXBpbGluZywgYXNzdW1lIHB1 dGVudiBpcyBicm9rZW4uCisgICAgICAgICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAg ICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcy4KKyAg ICAgICAgICAgICAgICAqLWdudSopIGdsX2N2X2Z1bmNfc3ZpZF9wdXRlbnY9Imd1ZXNzaW5n IHllcyIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywg YXNzdW1lIHRoZSB3b3JzdC4KKyAgICAgICAgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNf c3ZpZF9wdXRlbnY9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAg ICAgICAgICAgXSkKKyAgIF0pCisgIGNhc2UgIiRnbF9jdl9mdW5jX3N2aWRfcHV0ZW52IiBp bgorICAgICp5ZXMpIDs7CisgICAgKikKKyAgICAgIFJFUExBQ0VfUFVURU5WPTEKKyAgICAg IDs7CisgIGVzYWMKK10pCgo9PT0gYWRkZWQgZmlsZSAnbTQvc2V0ZW52Lm00JwotLS0gbTQv c2V0ZW52Lm00CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIG00L3NldGVudi5tNAky MDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTYwIEBACisjIHNldGVudi5t NCBzZXJpYWwgMjYKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCwgMjAwNi0yMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNv ZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1p dGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRo IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuCisKK0FDX0RFRlVOKFtnbF9GVU5DX1NFVEVOVl0sCitbCisgIEFDX1JFUVVJ UkUoW2dsX0ZVTkNfU0VURU5WX1NFUEFSQVRFXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05J Q0FMX0hPU1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisgIGlmIHRlc3QgJGFjX2N2X2Z1 bmNfc2V0ZW52ID0gbm87IHRoZW4KKyAgICBIQVZFX1NFVEVOVj0wCisgIGVsc2UKKyAgICBB Q19DQUNIRV9DSEVDSyhbd2hldGhlciBzZXRlbnYgdmFsaWRhdGVzIGFyZ3VtZW50c10sCisg ICAgICBbZ2xfY3ZfZnVuY19zZXRlbnZfd29ya3NdLAorICAgICAgW0FDX1JVTl9JRkVMU0Uo W0FDX0xBTkdfUFJPR1JBTShbWworICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAgICAg ICAjaW5jbHVkZSA8ZXJybm8uaD4KKyAgICAgICAjaW5jbHVkZSA8c3RyaW5nLmg+CisgICAg ICBdXSwgW1sKKyAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICB7CisgICAgICAgICBp ZiAoc2V0ZW52ICgiIiwgIiIsIDApICE9IC0xKQorICAgICAgICAgICByZXN1bHQgfD0gMTsK KyAgICAgICAgIGVsc2UgaWYgKGVycm5vICE9IEVJTlZBTCkKKyAgICAgICAgICAgcmVzdWx0 IHw9IDI7CisgICAgICAgfQorICAgICAgIHsKKyAgICAgICAgIGlmIChzZXRlbnYgKCJhIiwg Ij0iLCAxKSAhPSAwKQorICAgICAgICAgICByZXN1bHQgfD0gNDsKKyAgICAgICAgIGVsc2Ug aWYgKHN0cmNtcCAoZ2V0ZW52ICgiYSIpLCAiPSIpICE9IDApCisgICAgICAgICAgIHJlc3Vs dCB8PSA4OworICAgICAgIH0KKyAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgXV0pXSwK KyAgICAgIFtnbF9jdl9mdW5jX3NldGVudl93b3Jrcz15ZXNdLCBbZ2xfY3ZfZnVuY19zZXRl bnZfd29ya3M9bm9dLAorICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAg ICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgorICAgICAgICAgKi1nbnUqKSBn bF9jdl9mdW5jX3NldGVudl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAg ICAgICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCisgICAgICAgICAq KSAgICAgIGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtzPSJndWVzc2luZyBubyIgOzsKKyAgICAg ICBlc2FjCisgICAgICBdKV0pCisgICAgY2FzZSAiJGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtz IiBpbgorICAgICAgKnllcykgOzsKKyAgICAgICopCisgICAgICAgIFJFUExBQ0VfU0VURU5W PTEKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGZpCitdKQorCisjIExpa2UgZ2xfRlVOQ19T RVRFTlYsIGV4Y2VwdCBwcmVwYXJlIGZvciBzZXBhcmF0ZSBjb21waWxhdGlvbgorIyAobm8g UkVQTEFDRV9TRVRFTlYsIG5vIEFDX0xJQk9CSikuCitBQ19ERUZVTihbZ2xfRlVOQ19TRVRF TlZfU0VQQVJBVEVdLAorWworICBBQ19SRVFVSVJFKFtnbF9TVERMSUJfSF9ERUZBVUxUU10p CisgIEFDX0NIRUNLX0RFQ0xTX09OQ0UoW3NldGVudl0pCisgIGlmIHRlc3QgJGFjX2N2X2hh dmVfZGVjbF9zZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfREVDTF9TRVRFTlY9MAorICBm aQorICBBQ19DSEVDS19GVU5DU19PTkNFKFtzZXRlbnZdKQorICBnbF9QUkVSRVFfU0VURU5W CitdKQorCitBQ19ERUZVTihbZ2xfRlVOQ19VTlNFVEVOVl0sCitbCisgIEFDX1JFUVVJUkUo W2dsX1NURExJQl9IX0RFRkFVTFRTXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hP U1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisgIEFDX0NIRUNLX0RFQ0xTX09OQ0UoW3Vu c2V0ZW52XSkKKyAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3Vuc2V0ZW52ID0gbm87IHRo ZW4KKyAgICBIQVZFX0RFQ0xfVU5TRVRFTlY9MAorICBmaQorICBBQ19DSEVDS19GVU5DUyhb dW5zZXRlbnZdKQorICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Vuc2V0ZW52ID0gbm87IHRoZW4K KyAgICBIQVZFX1VOU0VURU5WPTAKKyAgZWxzZQorICAgIEhBVkVfVU5TRVRFTlY9MQorICAg IGRubCBTb21lIEJTRHMgcmV0dXJuIHZvaWQsIGZhaWxpbmcgdG8gZG8gZXJyb3IgY2hlY2tp bmcuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB1bnNldGVudigpIHJldHVybiB0eXBlXSwg W2d0X2N2X2Z1bmNfdW5zZXRlbnZfcmV0XSwKKyAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgK KyAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICBbWworI3VuZGVmIF9C U0QKKyNkZWZpbmUgX0JTRCAxIC8qIHVuaGlkZSB1bnNldGVudiBkZWNsYXJhdGlvbiBpbiBP U0YvMSA1LjEgPHN0ZGxpYi5oPiAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorZXh0ZXJuCisj aWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCitpbnQgdW5zZXRlbnYgKGNvbnN0IGNo YXIgKm5hbWUpOworICAgICAgICAgICAgXV0sCisgICAgICAgICAgICBbW11dKV0sCisgICAg ICAgICBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXQ9J2ludCddLAorICAgICAgICAgW2d0X2N2 X2Z1bmNfdW5zZXRlbnZfcmV0PSd2b2lkJ10pXSkKKyAgICBpZiB0ZXN0ICRndF9jdl9mdW5j X3Vuc2V0ZW52X3JldCA9ICd2b2lkJzsgdGhlbgorICAgICAgQUNfREVGSU5FKFtWT0lEX1VO U0VURU5WXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgdW5zZXRlbnYgcmV0dXJucyB2b2lkCisg ICAgICAgaW5zdGVhZCBvZiBpbnQuXSkKKyAgICAgIFJFUExBQ0VfVU5TRVRFTlY9MQorICAg IGZpCisKKyAgICBkbmwgU29sYXJpcyAxMCB1bnNldGVudiBkb2VzIG5vdCByZW1vdmUgYWxs IGNvcGllcyBvZiBhIG5hbWUuCisgICAgZG5sIEhhaWt1IGFscGhhIDIgdW5zZXRlbnYgZ2V0 cyBjb25mdXNlZCBieSBhc3NpZ25tZW50IHRvIGVudmlyb24uCisgICAgZG5sIE9wZW5CU0Qg NC43IHVuc2V0ZW52KCIiKSBkb2VzIG5vdCBmYWlsLgorICAgIEFDX0NBQ0hFX0NIRUNLKFt3 aGV0aGVyIHVuc2V0ZW52IG9iZXlzIFBPU0lYXSwKKyAgICAgIFtnbF9jdl9mdW5jX3Vuc2V0 ZW52X3dvcmtzXSwKKyAgICAgIFtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sK KyAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgI2luY2x1ZGUgPGVycm5vLmg+ CisgICAgICAgZXh0ZXJuIGNoYXIgKiplbnZpcm9uOworICAgICAgXV0sIFtbCisgICAgICAg Y2hhciBlbnRyeTFbXSA9ICJhPTEiOworICAgICAgIGNoYXIgZW50cnkyW10gPSAiYj0yIjsK KyAgICAgICBjaGFyICplbnZbXSA9IHsgZW50cnkxLCBlbnRyeTIsIE5VTEwgfTsKKyAgICAg ICBpZiAocHV0ZW52ICgoY2hhciAqKSAiYT0xIikpIHJldHVybiAxOworICAgICAgIGlmIChw dXRlbnYgKGVudHJ5MikpIHJldHVybiAyOworICAgICAgIGVudHJ5MlswXSA9ICdhJzsKKyAg ICAgICB1bnNldGVudiAoImEiKTsKKyAgICAgICBpZiAoZ2V0ZW52ICgiYSIpKSByZXR1cm4g MzsKKyAgICAgICBpZiAoIXVuc2V0ZW52ICgiIikgfHwgZXJybm8gIT0gRUlOVkFMKSByZXR1 cm4gNDsKKyAgICAgICBlbnRyeTJbMF0gPSAnYic7CisgICAgICAgZW52aXJvbiA9IGVudjsK KyAgICAgICBpZiAoIWdldGVudiAoImEiKSkgcmV0dXJuIDU7CisgICAgICAgZW50cnkyWzBd ID0gJ2EnOworICAgICAgIHVuc2V0ZW52ICgiYSIpOworICAgICAgIGlmIChnZXRlbnYgKCJh IikpIHJldHVybiA2OworICAgICAgXV0pXSwKKyAgICAgIFtnbF9jdl9mdW5jX3Vuc2V0ZW52 X3dvcmtzPXllc10sIFtnbF9jdl9mdW5jX3Vuc2V0ZW52X3dvcmtzPW5vXSwKKyAgICAgIFtj YXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xp YmMgc3lzdGVtcy4KKyAgICAgICAgICotZ251KikgZ2xfY3ZfZnVuY191bnNldGVudl93b3Jr cz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtu b3csIGFzc3VtZSB0aGUgd29yc3QuCisgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNfdW5z ZXRlbnZfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgIGVzYWMKKyAgICAgIF0pXSkK KyAgICBjYXNlICIkZ2xfY3ZfZnVuY191bnNldGVudl93b3JrcyIgaW4KKyAgICAgICp5ZXMp IDs7CisgICAgICAqKQorICAgICAgICBSRVBMQUNFX1VOU0VURU5WPTEKKyAgICAgICAgOzsK KyAgICBlc2FjCisgIGZpCitdKQorCisjIFByZXJlcXVpc2l0ZXMgb2YgbGliL3NldGVudi5j LgorQUNfREVGVU4oW2dsX1BSRVJFUV9TRVRFTlZdLAorWworICBBQ19SRVFVSVJFKFtBQ19G VU5DX0FMTE9DQV0pCisgIEFDX1JFUVVJUkUoW2dsX0VOVklST05dKQorICBBQ19DSEVDS19I RUFERVJTX09OQ0UoW3VuaXN0ZC5oXSkKKyAgQUNfQ0hFQ0tfSEVBREVSUyhbc2VhcmNoLmhd KQorICBBQ19DSEVDS19GVU5DUyhbdHNlYXJjaF0pCitdKQorCisjIFByZXJlcXVpc2l0ZXMg b2YgbGliL3Vuc2V0ZW52LmMuCitBQ19ERUZVTihbZ2xfUFJFUkVRX1VOU0VURU5WXSwKK1sK KyAgQUNfUkVRVUlSRShbZ2xfRU5WSVJPTl0pCisgIEFDX0NIRUNLX0hFQURFUlNfT05DRShb dW5pc3RkLmhdKQorXSkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwotLS0g c3JjL0NoYW5nZUxvZwkyMDEyLTEyLTAzIDE5OjE2OjE3ICswMDAwCisrKyBzcmMvQ2hhbmdl TG9nCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0x Mi0wMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlVc2UgcHV0ZW52 K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24gZGlyZWN0bHkuCisJKiBh bGxvYy5jICh4cHV0ZW52KTogTmV3IGZ1bmN0aW9uLgorCSogZGJ1c2JpbmQuYyAoRmRidXNf aW5pdF9idXMpOgorCSogZW1hY3MuYyAobWFpbik6CisJKiB4dGVybS5jICh4X3Rlcm1faW5p dCk6CisJVXNlIHhwdXRlbnYgaW5zdGVhZCBvZiBzZXRlbnYgb3IgcHV0ZW52LCB0byBkZXRl Y3QgbWVtb3J5IGV4aGF1c3Rpb24uCisJKiBlZGl0Zm5zLmMgKGluaXRpYWxfdHopOiBNb3Zl IHN0YXRpYyB2YXIgZGVjbCB1cC4KKwkodHp2YWxidWZfaW5fZW52aXJvbik6IE5ldyBzdGF0 aWMgdmFyLgorCShpbml0X2VkaXRmbnMpOglJbml0aWFsaXplIHRoZXNlIHR3byBzdGF0aWMg dmFycy4KKwkoRmVuY29kZV90aW1lKTogRG9uJ3QgYXNzdW1lIGFyYml0cmFyeSBsaW1pdCBv biBFTUFDU19JTlQgd2lkdGguCisJU2F2ZSBvbGQgVFogdmFsdWUgb24gc3RhY2ssIGlmIGl0 J3Mgc21hbGwuCisJKEZlbmNvZGVfdGltZSwgc2V0X3RpbWVfem9uZV9ydWxlKTogRG9uJ3Qg bW9kaWZ5ICdlbnZpcm9uJyBkaXJlY3RseTsKKwlpbnN0ZWFkLCB1c2UgeHB1dGVudit1bnNl dGVudiB0byBzZXQgYW5kIHJlc3RvcmUgVFouCisJKGVudmlyb25idWYpOiBSZW1vdmUgc3Rh dGljIHZhci4gIEFsbCB1c2VzIHJlbW92ZWQuCisJKEZzZXRfdGltZV96b25lX3J1bGUpOiBE byBub3Qgc2F2ZSBUWiBhbmQgZW52aXJvbjsgbm8gbG9uZ2VyIG5lZWRlZCBoZXJlLgorCShz ZXRfdGltZV96b25lX3J1bGVfdHoxLCBzZXRfdGltZV96b25lX3J1bGVfdHoyKSBbTE9DQUxU SU1FX0NBQ0hFXToKKwlNb3ZlIHRvIGluc2lkZSBzZXRfdGltZV96b25lX3J1bGU7IHRoZXkg ZG9uJ3QgbmVlZCBmaWxlIHNjb3BlIGFueSBtb3JlLgorCShzZXRfdGltZV96b25lX3J1bGUp OiBNYWludGFpbiB0aGUgVFo9dmFsdWUgc3RyaW5nIHNlcGFyYXRlbHkuCisJKHN5bXNfb2Zf ZWRpdGZucyk6IERvbid0IGluaXRpYWxpemUgaW5pdGlhbF90ejsgaW5pdF9lZGl0Zm5zIG5v dyBkb2VzIGl0LgorCSogZW1hY3MuYyAoZHVtcF90eikgW0hBVkVfVFpTRVRdOiBOb3cgY29u c3QuCisJKiBsaXNwLmggKHhwdXRlbnYpOiBOZXcgZGVjbC4KKwogMjAxMi0xMi0wMyAgSmFu IERqw6RydiAgPGphbi5oLmRAc3dpcG5ldC5zZT4KIAogCSogZ3RrdXRpbC5jIChteV9sb2df aGFuZGxlcik6IE5ldyBmdW5jdGlvbi4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYWxsb2Mu YycKLS0tIHNyYy9hbGxvYy5jCTIwMTItMTItMDMgMDg6MDY6MDIgKzAwMDAKKysrIHNyYy9h bGxvYy5jCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTgyMCw2ICs4MjAsMTUgQEAK ICAgcmV0dXJuIHA7CiB9CiAKKy8qIExpa2UgcHV0ZW52LCBidXQgKDEpIHVzZSB0aGUgZXF1 aXZhbGVudCBvZiB4bWFsbG9jIGFuZCAoMikgdGhlCisgICBhcmd1bWVudCBpcyBhIGNvbnN0 IHBvaW50ZXIuICAqLworCit2b2lkCit4cHV0ZW52IChjaGFyIGNvbnN0ICpzdHJpbmcpCit7 CisgIGlmIChwdXRlbnYgKChjaGFyICopIHN0cmluZykgIT0gMCkKKyAgICBtZW1vcnlfZnVs bCAoMCk7Cit9CiAKIC8qIFVud2luZCBmb3IgU0FGRV9BTExPQ0EgKi8KIAoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9kYnVzYmluZC5jJwotLS0gc3JjL2RidXNiaW5kLmMJMjAxMi0xMC0z MSAxMTo0NTo0MCArMDAwMAorKysgc3JjL2RidXNiaW5kLmMJMjAxMi0xMi0wMyAyMDowMzoy MiArMDAwMApAQCAtMTIwMyw3ICsxMjAzLDcgQEAKICAgICAgIHhkX3JlZ2lzdGVyZWRfYnVz ZXMgPSBGY29ucyAoRmNvbnMgKGJ1cywgdmFsKSwgeGRfcmVnaXN0ZXJlZF9idXNlcyk7CiAK ICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIGFib3J0LiAgKi8KLSAgICAgIHB1dGVudiAo KGNoYXIgKikgIkRCVVNfRkFUQUxfV0FSTklOR1M9MCIpOworICAgICAgeHB1dGVudiAoIkRC VVNfRkFUQUxfV0FSTklOR1M9MCIpOwogCiAgICAgICAvKiBDbGVhbnVwLiAgKi8KICAgICAg IGRidXNfZXJyb3JfZnJlZSAoJmRlcnJvcik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Vk aXRmbnMuYycKLS0tIHNyYy9lZGl0Zm5zLmMJMjAxMi0xMi0wMyAxNDoxMzowNiArMDAwMAor Kysgc3JjL2VkaXRmbnMuYwkyMDEyLTEyLTAzIDIwOjA3OjEzICswMDAwCkBAIC03OCw2ICs3 OCwxNSBAQAogCiBzdGF0aWMgTGlzcF9PYmplY3QgUWJvdW5kYXJ5OwogCisvKiBUaGUgc3Rh cnR1cCB2YWx1ZSBvZiB0aGUgVFogZW52aXJvbm1lbnQgdmFyaWFibGUgc28gaXQgY2FuIGJl CisgICByZXN0b3JlZCBpZiB0aGUgdXNlciBjYWxscyBzZXQtdGltZS16b25lLXJ1bGUgd2l0 aCBhIG5pbAorICAgYXJndW1lbnQuICBJZiBudWxsLCB0aGUgVFogZW52aXJvbm1lbnQgdmFy aWFibGUgd2FzIHVuc2V0LiAgKi8KK3N0YXRpYyBjaGFyIGNvbnN0ICppbml0aWFsX3R6Owor CisvKiBUcnVlIGlmIHRoZSBzdGF0aWMgdmFyaWFibGUgdHp2YWxidWYgKGRlZmluZWQgaW4K KyAgIHNldF90aW1lX3pvbmVfcnVsZSkgaXMgcGFydCBvZiAnZW52aXJvbicuICAqLworc3Rh dGljIGJvb2wgdHp2YWxidWZfaW5fZW52aXJvbjsKKwogCiB2b2lkCiBpbml0X2VkaXRmbnMg KHZvaWQpCkBAIC05Niw2ICsxMDUsOSBAQAogICAgIHJldHVybjsKICNlbmRpZiAvKiBub3Qg Q0FOTk9UX0RVTVAgKi8KIAorICBpbml0aWFsX3R6ID0gZ2V0ZW52ICgiVFoiKTsKKyAgdHp2 YWxidWZfaW5fZW52aXJvbiA9IDA7CisKICAgcHcgPSBnZXRwd3VpZCAoZ2V0dWlkICgpKTsK ICNpZmRlZiBNU0RPUwogICAvKiBXZSBsZXQgdGhlIHJlYWwgdXNlciBuYW1lIGRlZmF1bHQg dG8gInJvb3QiIGJlY2F1c2UgdGhhdCdzIHF1aXRlCkBAIC0xOTAwLDkgKzE5MTIsMTEgQEAK ICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBjaGFyIHR6YnVmWzEwMF07CisgICAgICBz dGF0aWMgY2hhciBjb25zdCB0emJ1Zl9mb3JtYXRbXSA9ICJYWFglcyUicEkiZDolMDJkOiUw MmQiOworICAgICAgY2hhciB0emJ1ZltzaXplb2YgdHpidWZfZm9ybWF0ICsgSU5UX1NUUkxF Tl9CT1VORCAoRU1BQ1NfSU5UKV07CisgICAgICBjaGFyICpvbGRfdHpzdHJpbmc7CiAgICAg ICBjb25zdCBjaGFyICp0enN0cmluZzsKLSAgICAgIGNoYXIgKipvbGRlbnYgPSBlbnZpcm9u LCAqKm5ld2VudjsKKyAgICAgIFVTRV9TQUZFX0FMTE9DQTsKIAogICAgICAgaWYgKEVRICh6 b25lLCBRdCkpCiAJdHpzdHJpbmcgPSAiVVRDMCI7CkBAIC0xOTE0LDEzICsxOTI4LDIwIEBA CiAJICBFTUFDU19JTlQgem9uZV9ociA9IGFic3pvbmUgLyAoNjAqNjApOwogCSAgaW50IHpv bmVfbWluID0gKGFic3pvbmUvNjApICUgNjA7CiAJICBpbnQgem9uZV9zZWMgPSBhYnN6b25l ICUgNjA7Ci0JICBzcHJpbnRmICh0emJ1ZiwgIlhYWCVzJSJwSSJkOiUwMmQ6JTAyZCIsICIt IiArIChYSU5UICh6b25lKSA8IDApLAorCSAgc3ByaW50ZiAodHpidWYsIHR6YnVmX2Zvcm1h dCwgIi0iICsgKFhJTlQgKHpvbmUpIDwgMCksCiAJCSAgIHpvbmVfaHIsIHpvbmVfbWluLCB6 b25lX3NlYyk7CiAJICB0enN0cmluZyA9IHR6YnVmOwogCX0KICAgICAgIGVsc2UKIAllcnJv ciAoIkludmFsaWQgdGltZSB6b25lIHNwZWNpZmljYXRpb24iKTsKIAorICAgICAgb2xkX3R6 c3RyaW5nID0gZ2V0ZW52ICgiVFoiKTsKKyAgICAgIGlmIChvbGRfdHpzdHJpbmcpCisJewor CSAgY2hhciAqYnVmID0gU0FGRV9BTExPQ0EgKHN0cmxlbiAob2xkX3R6c3RyaW5nKSArIDEp OworCSAgb2xkX3R6c3RyaW5nID0gc3RyY3B5IChidWYsIG9sZF90enN0cmluZyk7CisJfQor CiAgICAgICBibG9ja19pbnB1dCAoKTsKIAogICAgICAgLyogU2V0IFRaIGJlZm9yZSBjYWxs aW5nIG1rdGltZTsgbWVyZWx5IGFkanVzdGluZyBta3RpbWUncyByZXR1cm5lZApAQCAtMTky OSwxNSArMTk1MCwxMiBAQAogCiAgICAgICB2YWx1ZSA9IG1rdGltZSAoJnRtKTsKIAotICAg ICAgLyogUmVzdG9yZSBUWiB0byBwcmV2aW91cyB2YWx1ZS4gICovCi0gICAgICBuZXdlbnYg PSBlbnZpcm9uOwotICAgICAgZW52aXJvbiA9IG9sZGVudjsKKyAgICAgIHNldF90aW1lX3pv bmVfcnVsZSAob2xkX3R6c3RyaW5nKTsKICNpZmRlZiBMT0NBTFRJTUVfQ0FDSEUKICAgICAg IHR6c2V0ICgpOwogI2VuZGlmCiAgICAgICB1bmJsb2NrX2lucHV0ICgpOwotCi0gICAgICB4 ZnJlZSAobmV3ZW52KTsKKyAgICAgIFNBRkVfRlJFRSAoKTsKICAgICB9CiAKICAgaWYgKHZh bHVlID09ICh0aW1lX3QpIC0xKQpAQCAtMjA2NywxNiArMjA4NSw2IEBACiAgIHJldHVybiBs aXN0MiAoem9uZV9vZmZzZXQsIHpvbmVfbmFtZSk7CiB9CiAKLS8qIFRoaXMgaG9sZHMgdGhl IHZhbHVlIG9mIGBlbnZpcm9uJyBwcm9kdWNlZCBieSB0aGUgcHJldmlvdXMKLSAgIGNhbGwg dG8gRnNldF90aW1lX3pvbmVfcnVsZSwgb3IgMCBpZiBGc2V0X3RpbWVfem9uZV9ydWxlCi0g ICBoYXMgbmV2ZXIgYmVlbiBjYWxsZWQuICAqLwotc3RhdGljIGNoYXIgKiplbnZpcm9uYnVm OwotCi0vKiBUaGlzIGhvbGRzIHRoZSBzdGFydHVwIHZhbHVlIG9mIHRoZSBUWiBlbnZpcm9u bWVudCB2YXJpYWJsZSBzbyBpdAotICAgY2FuIGJlIHJlc3RvcmVkIGlmIHRoZSB1c2VyIGNh bGxzIHNldC10aW1lLXpvbmUtcnVsZSB3aXRoIGEgbmlsCi0gICBhcmd1bWVudC4gICovCi1z dGF0aWMgY2hhciAqaW5pdGlhbF90ejsKLQogREVGVU4gKCJzZXQtdGltZS16b25lLXJ1bGUi LCBGc2V0X3RpbWVfem9uZV9ydWxlLCBTc2V0X3RpbWVfem9uZV9ydWxlLCAxLCAxLCAwLAog ICAgICAgIGRvYzogLyogU2V0IHRoZSBsb2NhbCB0aW1lIHpvbmUgdXNpbmcgVFosIGEgc3Ry aW5nIHNwZWNpZnlpbmcgYSB0aW1lIHpvbmUgcnVsZS4KIElmIFRaIGlzIG5pbCwgdXNlIGlt cGxlbWVudGF0aW9uLWRlZmluZWQgZGVmYXVsdCB0aW1lIHpvbmUgaW5mb3JtYXRpb24uCkBA IC0yMDg5LDE4ICsyMDk3LDEwIEBACiAgIChMaXNwX09iamVjdCB0eikKIHsKICAgY29uc3Qg Y2hhciAqdHpzdHJpbmc7Ci0gIGNoYXIgKipvbGRfZW52aXJvbmJ1ZjsKIAogICBpZiAoISAo TklMUCAodHopIHx8IEVRICh0eiwgUXQpKSkKICAgICBDSEVDS19TVFJJTkcgKHR6KTsKIAot ICBibG9ja19pbnB1dCAoKTsKLQotICAvKiBXaGVuIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRp bWUsIHNhdmUgdGhlIG9yaWdpbmFsIFRaLiAgKi8KLSAgb2xkX2Vudmlyb25idWYgPSBlbnZp cm9uYnVmOwotICBpZiAoIW9sZF9lbnZpcm9uYnVmKQotICAgIGluaXRpYWxfdHogPSAoY2hh ciAqKSBnZXRlbnYgKCJUWiIpOwotCiAgIGlmIChOSUxQICh0eikpCiAgICAgdHpzdHJpbmcg PSBpbml0aWFsX3R6OwogICBlbHNlIGlmIChFUSAodHosIFF0KSkKQEAgLTIxMDgsMTA2ICsy MTA4LDk3IEBACiAgIGVsc2UKICAgICB0enN0cmluZyA9IFNTREFUQSAodHopOwogCisgIGJs b2NrX2lucHV0ICgpOwogICBzZXRfdGltZV96b25lX3J1bGUgKHR6c3RyaW5nKTsKLSAgZW52 aXJvbmJ1ZiA9IGVudmlyb247Ci0KICAgdW5ibG9ja19pbnB1dCAoKTsKIAotICB4ZnJlZSAo b2xkX2Vudmlyb25idWYpOwogICByZXR1cm4gUW5pbDsKIH0KIAotI2lmZGVmIExPQ0FMVElN RV9DQUNIRQotCi0vKiBUaGVzZSB0d28gdmFsdWVzIGFyZSBrbm93biB0byBsb2FkIHR6IGZp bGVzIGluIGJ1Z2d5IGltcGxlbWVudGF0aW9ucywKLSAgIGkuZS4gU29sYXJpcyAxIGV4ZWN1 dGFibGVzIHJ1bm5pbmcgdW5kZXIgZWl0aGVyIFNvbGFyaXMgMSBvciBTb2xhcmlzIDIuCi0g ICBUaGVpciB2YWx1ZXMgc2hvdWxkbid0IG1hdHRlciBpbiBub24tYnVnZ3kgaW1wbGVtZW50 YXRpb25zLgotICAgV2UgZG9uJ3QgdXNlIHN0cmluZyBsaXRlcmFscyBmb3IgdGhlc2Ugc3Ry aW5ncywKLSAgIHNpbmNlIGlmIGEgc3RyaW5nIGluIHRoZSBlbnZpcm9ubWVudCBpcyBpbiBy ZWFkb25seQotICAgc3RvcmFnZSwgaXQgcnVucyBhZm91bCBvZiBidWdzIGluIFNWUjQgYW5k IFNvbGFyaXMgMi4zLgotICAgU2VlIFN1biBidWdzIDExMTMwOTUgYW5kIDExMTQxMTQsIGBg VGltZXpvbmUgcm91dGluZXMKLSAgIGltcHJvcGVybHkgbW9kaWZ5IGVudmlyb25tZW50Jycu ICAqLwotCi1zdGF0aWMgY2hhciBzZXRfdGltZV96b25lX3J1bGVfdHoxW10gPSAiVFo9R01U KzAiOwotc3RhdGljIGNoYXIgc2V0X3RpbWVfem9uZV9ydWxlX3R6MltdID0gIlRaPUdNVCsx IjsKLQotI2VuZGlmCi0KIC8qIFNldCB0aGUgbG9jYWwgdGltZSB6b25lIHJ1bGUgdG8gVFpT VFJJTkcuCi0gICBUaGlzIGFsbG9jYXRlcyBtZW1vcnkgaW50byBgZW52aXJvbicsIHdoaWNo IGl0IGlzIHRoZSBjYWxsZXIncwotICAgcmVzcG9uc2liaWxpdHkgdG8gZnJlZS4gICovCisK KyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZC1zYWZlLCBwYXJ0bHkgYmVjYXVzZSBw dXRlbnYsIHVuc2V0ZW52CisgICBhbmQgdHpzZXQgYXJlIG5vdCwgYW5kIHBhcnRseSBiZWNh dXNlIG9mIHRoZSBzdGF0aWMgc3RvcmFnZSBpdAorICAgdXBkYXRlcy4gIE90aGVyIHRocmVh ZHMgdGhhdCBpbnZva2UgbG9jYWx0aW1lIGV0Yy4gbWF5IGJlIGFkdmVyc2VseQorICAgYWZm ZWN0ZWQgd2hpbGUgdGhpcyBmdW5jdGlvbiBpcyBleGVjdXRpbmcuICAqLwogCiB2b2lkCiBz ZXRfdGltZV96b25lX3J1bGUgKGNvbnN0IGNoYXIgKnR6c3RyaW5nKQogewotICBwdHJkaWZm X3QgZW52cHRyczsKLSAgY2hhciAqKmZyb20sICoqdG8sICoqbmV3ZW52OwotCi0gIC8qIE1h a2UgdGhlIEVOVklST04gdmVjdG9yIGxvbmdlciB3aXRoIHJvb20gZm9yIFRaU1RSSU5HLiAg Ki8KLSAgZm9yIChmcm9tID0gZW52aXJvbjsgKmZyb207IGZyb20rKykKLSAgICBjb250aW51 ZTsKLSAgZW52cHRycyA9IGZyb20gLSBlbnZpcm9uICsgMjsKLSAgbmV3ZW52ID0gdG8gPSB4 bWFsbG9jIChlbnZwdHJzICogc2l6ZW9mICpuZXdlbnYKLQkJCSArICh0enN0cmluZyA/IHN0 cmxlbiAodHpzdHJpbmcpICsgNCA6IDApKTsKLQotICAvKiBBZGQgVFpTVFJJTkcgdG8gdGhl IGVuZCBvZiBlbnZpcm9uLCBhcyBhIHZhbHVlIGZvciBUWi4gICovCisgIC8qIEEgYnVmZmVy IGhvbGRpbmcgYSBzdHJpbmcgb2YgdGhlIGZvcm0gIlRaPXZhbHVlIiwgaW50ZW5kZWQKKyAg ICAgdG8gYmUgcGFydCBvZiB0aGUgZW52aXJvbm1lbnQuICAqLworICBzdGF0aWMgY2hhciAq dHp2YWxidWY7CisgIHN0YXRpYyBwdHJkaWZmX3QgdHp2YWxidWZzaXplOworCisgIGludCB0 emVxbGVuID0gc2l6ZW9mICJUWj0iIC0gMTsKKworI2lmZGVmIExPQ0FMVElNRV9DQUNIRQor ICAvKiBUaGVzZSB0d28gdmFsdWVzIGFyZSBrbm93biB0byBsb2FkIHR6IGZpbGVzIGluIGJ1 Z2d5IGltcGxlbWVudGF0aW9ucywKKyAgICAgaS5lLiBTb2xhcmlzIDEgZXhlY3V0YWJsZXMg cnVubmluZyB1bmRlciBlaXRoZXIgU29sYXJpcyAxIG9yIFNvbGFyaXMgMi4KKyAgICAgVGhl aXIgdmFsdWVzIHNob3VsZG4ndCBtYXR0ZXIgaW4gbm9uLWJ1Z2d5IGltcGxlbWVudGF0aW9u cy4KKyAgICAgV2UgZG9uJ3QgdXNlIHN0cmluZyBsaXRlcmFscyBmb3IgdGhlc2Ugc3RyaW5n cywKKyAgICAgc2luY2UgaWYgYSBzdHJpbmcgaW4gdGhlIGVudmlyb25tZW50IGlzIGluIHJl YWRvbmx5CisgICAgIHN0b3JhZ2UsIGl0IHJ1bnMgYWZvdWwgb2YgYnVncyBpbiBTVlI0IGFu ZCBTb2xhcmlzIDIuMy4KKyAgICAgU2VlIFN1biBidWdzIDExMTMwOTUgYW5kIDExMTQxMTQs IGBgVGltZXpvbmUgcm91dGluZXMKKyAgICAgaW1wcm9wZXJseSBtb2RpZnkgZW52aXJvbm1l bnQnJy4gICovCisKKyAgc3RhdGljIGNoYXIgc2V0X3RpbWVfem9uZV9ydWxlX3R6W11bc2l6 ZW9mICJUWj1HTVQrMCJdCisgICAgPSB7ICJUWj1HTVQrMCIsICJUWj1HTVQrMSIgfTsKKwor ICAvKiBJbiBTdW5PUyA0LjEuM19VMSBhbmQgNC4xLjQsIGlmIFRaIGhhcyBhIHZhbHVlIGxp a2UKKyAgICAgIlVTL1BhY2lmaWMiIHRoYXQgbG9hZHMgYSB0eiBmaWxlLCB0aGVuIGNoYW5n ZXMgdG8gYSB2YWx1ZSBsaWtlCisgICAgICJYWFgwIiB0aGF0IGRvZXMgbm90IGxvYWQgYSB0 eiBmaWxlLCBhbmQgdGhlbiBjaGFuZ2VzIGJhY2sgdG8KKyAgICAgaXRzIG9yaWdpbmFsIHZh bHVlLCB0aGUgbGFzdCBjaGFuZ2UgaXMgKGluY29ycmVjdGx5KSBpZ25vcmVkLgorICAgICBB bHNvLCBpZiBUWiBjaGFuZ2VzIHR3aWNlIGluIHN1Y2Nlc3Npb24gdG8gdmFsdWVzIHRoYXQg ZG8KKyAgICAgbm90IGxvYWQgYSB0eiBmaWxlLCB0enNldCBjYW4gZHVtcCBjb3JlIChzZWUg U3VuIGJ1ZyMxMjI1MTc5KS4KKyAgICAgVGhlIGZvbGxvd2luZyBjb2RlIHdvcmtzIGFyb3Vu ZCB0aGVzZSBidWdzLiAgKi8KKwogICBpZiAodHpzdHJpbmcpCiAgICAgewotICAgICAgY2hh ciAqdCA9IChjaGFyICopICh0byArIGVudnB0cnMpOwotICAgICAgc3RyY3B5ICh0LCAiVFo9 Iik7Ci0gICAgICBzdHJjYXQgKHQsIHR6c3RyaW5nKTsKLSAgICAgICp0bysrID0gdDsKLSAg ICB9Ci0KLSAgLyogQ29weSB0aGUgb2xkIGVudmlyb24gdmVjdG9yIGVsZW1lbnRzIGludG8g TkVXRU5WLAotICAgICBidXQgZG9uJ3QgY29weSB0aGUgVFogdmFyaWFibGUuCi0gICAgIFNv IHdlIGhhdmUgb25seSBvbmUgZGVmaW5pdGlvbiBvZiBUWiwgd2hpY2ggY2FtZSBmcm9tIFRa U1RSSU5HLiAgKi8KLSAgZm9yIChmcm9tID0gZW52aXJvbjsgKmZyb207IGZyb20rKykKLSAg ICBpZiAoc3RybmNtcCAoKmZyb20sICJUWj0iLCAzKSAhPSAwKQotICAgICAgKnRvKysgPSAq ZnJvbTsKLSAgKnRvID0gMDsKLQotICBlbnZpcm9uID0gbmV3ZW52OwotCi0gIC8qIElmIHdl IGRvIGhhdmUgYSBUWlNUUklORywgTkVXRU5WIHBvaW50cyB0byB0aGUgdmVjdG9yIHNsb3Qg d2hlcmUKLSAgICAgdGhlIFRaIHZhcmlhYmxlIGlzIHN0b3JlZC4gIElmIHdlIGRvIG5vdCBo YXZlIGEgVFpTVFJJTkcsCi0gICAgIFRPIHBvaW50cyB0byB0aGUgdmVjdG9yIHNsb3Qgd2hp Y2ggaGFzIHRoZSB0ZXJtaW5hdGluZyBudWxsLiAgKi8KKyAgICAgIC8qIFRlbXBvcmFyaWx5 IHNldCBUWiB0byBhIHZhbHVlIHRoYXQgbG9hZHMgYSB0eiBmaWxlCisJIGFuZCB0aGF0IGRp ZmZlcnMgZnJvbSB0enN0cmluZy4gICovCisgICAgICBib29sIGVxMCA9IHN0cmNtcCAodHpz dHJpbmcsIHNldF90aW1lX3pvbmVfcnVsZV90elswXSArIHR6ZXFsZW4pID09IDA7CisgICAg ICB4cHV0ZW52IChzZXRfdGltZV96b25lX3J1bGVfdHpbZXEwXSk7CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgLyogVGhlIGltcGxpZWQgdHpzdHJpbmcgaXMgdW5rbm93biwgc28g dGVtcG9yYXJpbHkgc2V0IFRaIHRvCisJIHR3byBkaWZmZXJlbnQgdmFsdWVzIHRoYXQgZWFj aCBsb2FkIGEgdHogZmlsZS4gICovCisgICAgICB4cHV0ZW52IChzZXRfdGltZV96b25lX3J1 bGVfdHpbMF0pOworICAgICAgdHpzZXQgKCk7CisgICAgICB4cHV0ZW52IChzZXRfdGltZV96 b25lX3J1bGVfdHpbMV0pOworICAgIH0KKyAgdHpzZXQgKCk7CisjZW5kaWYKKworICBpZiAo IXR6c3RyaW5nKQorICAgIHsKKyAgICAgIHVuc2V0ZW52ICgiVFoiKTsKKyAgICAgIHR6dmFs YnVmX2luX2Vudmlyb24gPSAwOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHB0cmRp ZmZfdCB0enN0cmluZ2xlbiA9IHN0cmxlbiAodHpzdHJpbmcpOworCisgICAgICBpZiAodHp2 YWxidWZzaXplIDw9IHR6ZXFsZW4gKyB0enN0cmluZ2xlbikKKwl7CisJICB1bnNldGVudiAo IlRaIik7CisJICB0enZhbGJ1Zl9pbl9lbnZpcm9uID0gMDsKKwkgIHR6dmFsYnVmID0geHBh bGxvYyAodHp2YWxidWYsICZ0enZhbGJ1ZnNpemUsCisJCQkgICAgICB0emVxbGVuICsgdHpz dHJpbmdsZW4gLSB0enZhbGJ1ZnNpemUgKyAxLCAtMSwgMSk7CisJICBtZW1jcHkgKHR6dmFs YnVmLCAiVFo9IiwgdHplcWxlbik7CisJfQorCisgICAgICBzdHJjcHkgKHR6dmFsYnVmICsg dHplcWxlbiwgdHpzdHJpbmcpOworCisgICAgICBpZiAoIXR6dmFsYnVmX2luX2Vudmlyb24p CisJeworCSAgeHB1dGVudiAodHp2YWxidWYpOworCSAgdHp2YWxidWZfaW5fZW52aXJvbiA9 IDE7CisJfQorICAgIH0KIAogI2lmZGVmIExPQ0FMVElNRV9DQUNIRQotICB7Ci0gICAgLyog SW4gU3VuT1MgNC4xLjNfVTEgYW5kIDQuMS40LCBpZiBUWiBoYXMgYSB2YWx1ZSBsaWtlCi0g ICAgICAgIlVTL1BhY2lmaWMiIHRoYXQgbG9hZHMgYSB0eiBmaWxlLCB0aGVuIGNoYW5nZXMg dG8gYSB2YWx1ZSBsaWtlCi0gICAgICAgIlhYWDAiIHRoYXQgZG9lcyBub3QgbG9hZCBhIHR6 IGZpbGUsIGFuZCB0aGVuIGNoYW5nZXMgYmFjayB0bwotICAgICAgIGl0cyBvcmlnaW5hbCB2 YWx1ZSwgdGhlIGxhc3QgY2hhbmdlIGlzIChpbmNvcnJlY3RseSkgaWdub3JlZC4KLSAgICAg ICBBbHNvLCBpZiBUWiBjaGFuZ2VzIHR3aWNlIGluIHN1Y2Nlc3Npb24gdG8gdmFsdWVzIHRo YXQgZG8KLSAgICAgICBub3QgbG9hZCBhIHR6IGZpbGUsIHR6c2V0IGNhbiBkdW1wIGNvcmUg KHNlZSBTdW4gYnVnIzEyMjUxNzkpLgotICAgICAgIFRoZSBmb2xsb3dpbmcgY29kZSB3b3Jr cyBhcm91bmQgdGhlc2UgYnVncy4gICovCi0KLSAgICBpZiAodHpzdHJpbmcpCi0gICAgICB7 Ci0JLyogVGVtcG9yYXJpbHkgc2V0IFRaIHRvIGEgdmFsdWUgdGhhdCBsb2FkcyBhIHR6IGZp bGUKLQkgICBhbmQgdGhhdCBkaWZmZXJzIGZyb20gdHpzdHJpbmcuICAqLwotCWNoYXIgKnR6 ID0gKm5ld2VudjsKLQkqbmV3ZW52ID0gKHN0cmNtcCAodHpzdHJpbmcsIHNldF90aW1lX3pv bmVfcnVsZV90ejEgKyAzKSA9PSAwCi0JCSAgID8gc2V0X3RpbWVfem9uZV9ydWxlX3R6MiA6 IHNldF90aW1lX3pvbmVfcnVsZV90ejEpOwotCXR6c2V0ICgpOwotCSpuZXdlbnYgPSB0ejsK LSAgICAgIH0KLSAgICBlbHNlCi0gICAgICB7Ci0JLyogVGhlIGltcGxpZWQgdHpzdHJpbmcg aXMgdW5rbm93biwgc28gdGVtcG9yYXJpbHkgc2V0IFRaIHRvCi0JICAgdHdvIGRpZmZlcmVu dCB2YWx1ZXMgdGhhdCBlYWNoIGxvYWQgYSB0eiBmaWxlLiAgKi8KLQkqdG8gPSBzZXRfdGlt ZV96b25lX3J1bGVfdHoxOwotCXRvWzFdID0gMDsKLQl0enNldCAoKTsKLQkqdG8gPSBzZXRf dGltZV96b25lX3J1bGVfdHoyOwotCXR6c2V0ICgpOwotCSp0byA9IDA7Ci0gICAgICB9Ci0K LSAgICAvKiBOb3cgVFogaGFzIHRoZSBkZXNpcmVkIHZhbHVlLCBhbmQgdHpzZXQgY2FuIGJl IGludm9rZWQgc2FmZWx5LiAgKi8KLSAgfQotCiAgIHR6c2V0ICgpOwogI2VuZGlmCiB9CkBA IC00Nzk5LDkgKzQ3OTAsNiBAQAogdm9pZAogc3ltc19vZl9lZGl0Zm5zICh2b2lkKQogewot ICBlbnZpcm9uYnVmID0gMDsKLSAgaW5pdGlhbF90eiA9IDA7Ci0KICAgREVGU1lNIChRYnVm ZmVyX2FjY2Vzc19mb250aWZ5X2Z1bmN0aW9ucywgImJ1ZmZlci1hY2Nlc3MtZm9udGlmeS1m dW5jdGlvbnMiKTsKIAogICBERUZWQVJfTElTUCAoImluaGliaXQtZmllbGQtdGV4dC1tb3Rp b24iLCBWaW5oaWJpdF9maWVsZF90ZXh0X21vdGlvbiwKCj09PSBtb2RpZmllZCBmaWxlICdz cmMvZW1hY3MuYycKLS0tIHNyYy9lbWFjcy5jCTIwMTItMTEtMjEgMDQ6NDc6NTUgKzAwMDAK KysrIHNyYy9lbWFjcy5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTUzNSw3ICs1 MzUsNyBAQAogI2lmZGVmIEhBVkVfVFpTRVQKIC8qIEEgdmFsaWQgYnV0IHVubGlrZWx5IHZh bHVlIGZvciB0aGUgVFogZW52aXJvbm1lbnQgdmFsdWUuCiAgICBJdCBpcyBPSyAodGhvdWdo IGEgYml0IHNsb3dlcikgaWYgdGhlIHVzZXIgYWN0dWFsbHkgY2hvb3NlcyB0aGlzIHZhbHVl LiAgKi8KLXN0YXRpYyBjaGFyIGR1bXBfdHpbXSA9ICJVdEMwIjsKK3N0YXRpYyBjaGFyIGNv bnN0IGR1bXBfdHpbXSA9ICJVdEMwIjsKICNlbmRpZgogCiAjaWZuZGVmIE9SRElOQVJZX0xJ TksKQEAgLTcxNyw3ICs3MTcsNyBAQAogCiAjaWZkZWYgR19TTElDRV9BTFdBWVNfTUFMTE9D CiAgIC8qIFRoaXMgaXMgdXNlZCBieSB0aGUgQ3lnd2luIGJ1aWxkLiAgKi8KLSAgc2V0ZW52 ICgiR19TTElDRSIsICJhbHdheXMtbWFsbG9jIiwgMSk7CisgIHhwdXRlbnYgKCJHX1NMSUNF PWFsd2F5cy1tYWxsb2MiKTsKICNlbmRpZgogCiAjaWZkZWYgR05VX0xJTlVYCkBAIC04MDMs OSArODAzLDggQEAKICNpZmRlZiBIQVZFX1BFUlNPTkFMSVRZX0xJTlVYMzIKICAgaWYgKGR1 bXBpbmcgJiYgISBnZXRlbnYgKCJFTUFDU19IRUFQX0VYRUMiKSkKICAgICB7Ci0gICAgICBz dGF0aWMgY2hhciBoZWFwZXhlY1tdID0gIkVNQUNTX0hFQVBfRVhFQz10cnVlIjsKICAgICAg IC8qIFNldCB0aGlzIHNvIHdlIG9ubHkgZG8gdGhpcyBvbmNlLiAgKi8KLSAgICAgIHB1dGVu diAoaGVhcGV4ZWMpOworICAgICAgeHB1dGVudiAoIkVNQUNTX0hFQVBfRVhFQz10cnVlIik7 CiAKICAgICAgIC8qIEEgZmxhZyB0byB0dXJuIG9mZiBhZGRyZXNzIHJhbmRvbWl6YXRpb24g d2hpY2ggaXMgaW50cm9kdWNlZAogICAgICAgICAgaW4gbGludXgga2VybmVsIHNoaXBwZWQg d2l0aCBmZWRvcmEgY29yZSA0ICovCkBAIC0xMzA5LDcgKzEzMDgsNyBAQAogICAgICBkb24n dCBwb2xsdXRlIFZnbG9iYWxfZW52aXJvbm1lbnQuICAqLwogICAvKiBTZXR0aW5nIExBTkcg aGVyZSB3aWxsIGRlZmVhdCB0aGUgc3RhcnR1cCBsb2NhbGUgcHJvY2Vzc2luZy4uLiAgKi8K ICNpZmRlZiBBSVgKLSAgcHV0ZW52ICgiTEFORz1DIik7CisgIHhwdXRlbnYgKCJMQU5HPUMi KTsKICNlbmRpZgogCiAgIGluaXRfYnVmZmVyICgpOwkvKiBJbml0IGRlZmF1bHQgZGlyZWN0 b3J5IG9mIG1haW4gYnVmZmVyLiAgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbGlzcC5o JwotLS0gc3JjL2xpc3AuaAkyMDEyLTEyLTAzIDE0OjEzOjA2ICswMDAwCisrKyBzcmMvbGlz cC5oCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTM1OTQsNiArMzU5NCw3IEBACiBl eHRlcm4gdm9pZCAqeHBhbGxvYyAodm9pZCAqLCBwdHJkaWZmX3QgKiwgcHRyZGlmZl90LCBw dHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAKIGV4dGVybiBjaGFyICp4c3RyZHVwIChjb25zdCBj aGFyICopOworZXh0ZXJuIHZvaWQgeHB1dGVudiAoY29uc3QgY2hhciAqKTsKIAogZXh0ZXJu IGNoYXIgKmVnZXRlbnYgKGNvbnN0IGNoYXIgKik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdz cmMveHRlcm0uYycKLS0tIHNyYy94dGVybS5jCTIwMTItMTItMDEgMjM6MDY6MTQgKzAwMDAK KysrIHNyYy94dGVybS5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTk5MDksMTAg Kzk5MDksNyBAQAogCiAgICAgICAgIC8qIEVtYWNzIGNhbiBvbmx5IGhhbmRsZSBjb3JlIGlu cHV0IGV2ZW50cywgc28gbWFrZSBzdXJlCiAgICAgICAgICAgIEd0ayBkb2Vzbid0IHVzZSBY aW5wdXQgb3IgWGlucHV0MiBleHRlbnNpb25zLiAgKi8KLSAgICAgICAgewotICAgICAgICAg IHN0YXRpYyBjaGFyIGZpeF9ldmVudHNbXSA9ICJHREtfQ09SRV9ERVZJQ0VfRVZFTlRTPTEi OwotICAgICAgICAgIHB1dGVudiAoZml4X2V2ZW50cyk7Ci0gICAgICAgIH0KKwl4cHV0ZW52 ICgiR0RLX0NPUkVfREVWSUNFX0VWRU5UUz0xIik7CiAKICAgICAgICAgLyogV29yayBhcm91 bmQgR0xpYiBidWcgdGhhdCBvdXRwdXRzIGEgZmF1bHR5IHdhcm5pbmcuIFNlZQogICAgICAg ICAgICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzNjI3 LiAgKi8KCg== --------------020805030603090107030509-- From unknown Mon Aug 18 04:41:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Resent-From: Fabrice Popineau Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 04 Dec 2012 16:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Paul Eggert Cc: 13070@debbugs.gnu.org, eliz@gnu.org X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org, Eli Zaretskii Received: via spool by submit@debbugs.gnu.org id=B.135463971923007 (code B ref -1); Tue, 04 Dec 2012 16:49:02 +0000 Received: (at submit) by debbugs.gnu.org; 4 Dec 2012 16:48:39 +0000 Received: from localhost ([127.0.0.1]:53461 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfvfi-0005z1-CQ for submit@debbugs.gnu.org; Tue, 04 Dec 2012 11:48:39 -0500 Received: from eggs.gnu.org ([208.118.235.92]:35743) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfsxK-0001kI-IX for submit@debbugs.gnu.org; Tue, 04 Dec 2012 08:54:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tfsut-0006un-DA for submit@debbugs.gnu.org; Tue, 04 Dec 2012 08:52:10 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_LOW,T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:40222) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfsut-0006uc-7t for submit@debbugs.gnu.org; Tue, 04 Dec 2012 08:52:07 -0500 Received: from eggs.gnu.org ([208.118.235.92]:53519) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfsuS-0002xF-23 for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 08:52:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfsuG-0006nu-Ef for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 08:51:39 -0500 Received: from mail-wi0-f173.google.com ([209.85.212.173]:63301) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfsuG-0006nb-5j; Tue, 04 Dec 2012 08:51:28 -0500 Received: by mail-wi0-f173.google.com with SMTP id hn17so583109wib.12 for ; Tue, 04 Dec 2012 05:51:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=Md5f/47rBlcdPfS+CBMAvDAy19weLQFCCI5gFJkehfg=; b=m88XXlzeKoysJhquetaC+mJlKMzPMKcCxCMVbiHqJSbvaYa8yAH4ko5hWFkB10QX/w wwHknBaZFYUuHbHOrW5FoMqcemg/kYjvUzV5sx9umdLgjLW15Q6aWjii2ZuKlJUfaOjT YVUPi1RE+D6eIyvPHrLecP6hqJocy/jfa7OpLJZS0l2nk2a/sHGy3WXQ4bp8l4/SFQzp 19uPJErpQ1ALvmG1Yg+/R0Sd0RLlm7PslQB7fAmG0WABgaovpcNtiSH1wybLPhdkvyhT gdxrk4CY/dTOQFGnksUE+IP+SruaVXIHFCyKAto8XJlQVpr1Y75CcXTjyCxgji2lR3Kd FZSg== Received: by 10.216.85.211 with SMTP id u61mr5180705wee.212.1354629086569; Tue, 04 Dec 2012 05:51:26 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.94.197 with HTTP; Tue, 4 Dec 2012 05:51:06 -0800 (PST) In-Reply-To: <50BD0C72.7070601@cs.ucla.edu> References: <50BD0C72.7070601@cs.ucla.edu> From: Fabrice Popineau Date: Tue, 4 Dec 2012 14:51:06 +0100 Message-ID: Content-Type: multipart/alternative; boundary=001636c5a59881e47804d00729f7 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -3.4 (---) X-Mailman-Approved-At: Tue, 04 Dec 2012 11:48:37 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.2 (----) --001636c5a59881e47804d00729f7 Content-Type: text/plain; charset=ISO-8859-1 Great. Up to now, it seems to run ok. Provided I added some unsetenv() function for w32. (And it is much cleaner that the quick and dirty hack I applied for myself.) Thanks, Fabrice 2012/12/3 Paul Eggert > Tags: patch > > The attached patch is in response to last week's thread on emacs-devel > . > It's relative to trunk bzr 111078. Tested on Fedora 17. I don't see > any issues related to the Microsoft port but I'm CC:ing this to Eli > and Fabrice just in case, as the original bug seems to be Windows-related. > --001636c5a59881e47804d00729f7 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Great.

Up to now, it seems to run ok. Provided I added s= ome unsetenv() function for w32.
(And it is much cleaner that the= quick and dirty hack I applied for myself.)

Thank= s,

Fabrice

2012/12/3 Paul Eggert <eggert@cs.ucla.edu>
Tags: patch

The attached patch is in response to last week's thread on emacs-devel<= br> <http://lists.gnu.org/archive/html/emacs-devel/20= 12-11/msg00514.html>.
It's relative to trunk bzr 111078. =A0Tested on Fedora 17. =A0I don'= ;t see
any issues related to the Microsoft port but I'm CC:ing this to Eli
and Fabrice just in case, as the original bug seems to be Windows-related.<= br>

--001636c5a59881e47804d00729f7-- From unknown Mon Aug 18 04:41:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 04 Dec 2012 17:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Fabrice Popineau Cc: 13070@debbugs.gnu.org, eggert@cs.ucla.edu X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org, eggert@cs.ucla.edu Reply-To: Eli Zaretskii Received: via spool by submit@debbugs.gnu.org id=B.135464350228924 (code B ref -1); Tue, 04 Dec 2012 17:52:01 +0000 Received: (at submit) by debbugs.gnu.org; 4 Dec 2012 17:51:42 +0000 Received: from localhost ([127.0.0.1]:53510 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfwek-0007WT-1l for submit@debbugs.gnu.org; Tue, 04 Dec 2012 12:51:42 -0500 Received: from eggs.gnu.org ([208.118.235.92]:52417) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfweg-0007WJ-Md for submit@debbugs.gnu.org; Tue, 04 Dec 2012 12:51:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfwcB-0004Sz-0i for submit@debbugs.gnu.org; Tue, 04 Dec 2012 12:49:09 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-101.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, USER_IN_WHITELIST autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:48909) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfwcA-0004Sv-Ty for submit@debbugs.gnu.org; Tue, 04 Dec 2012 12:49:02 -0500 Received: from eggs.gnu.org ([208.118.235.92]:35535) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfwc5-0003ig-5u for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 12:49:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tfwbz-0004Rv-DU for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 12:48:57 -0500 Received: from mtaout21.012.net.il ([80.179.55.169]:49297) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfwbz-0004Rn-4p for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 12:48:51 -0500 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0MEI00400PBROP00@a-mtaout21.012.net.il> for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 19:48:48 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MEI0045CPHCE7B0@a-mtaout21.012.net.il>; Tue, 04 Dec 2012 19:48:48 +0200 (IST) Date: Tue, 04 Dec 2012 19:48:46 +0200 From: Eli Zaretskii In-reply-to: X-012-Sender: halo1@inter.net.il Message-id: <83r4n5r9mp.fsf@gnu.org> References: <50BD0C72.7070601@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -4.2 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) > From: Fabrice Popineau > Date: Tue, 4 Dec 2012 14:51:06 +0100 > Cc: bug-gnu-emacs@gnu.org, Eli Zaretskii > > Up to now, it seems to run ok. Provided I added some unsetenv() function > for w32. If you can show your unsetenv, we can commit it in your name, in preparation for Paul's commit. Thanks. From unknown Mon Aug 18 04:41:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Dec 2012 04:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Fabrice Popineau Cc: 13070@debbugs.gnu.org, Eli Zaretskii Received: via spool by 13070-submit@debbugs.gnu.org id=B13070.13549393872790 (code B ref 13070); Sat, 08 Dec 2012 04:04:02 +0000 Received: (at 13070) by debbugs.gnu.org; 8 Dec 2012 04:03:07 +0000 Received: from localhost ([127.0.0.1]:59737 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThBd3-0000it-Ix for submit@debbugs.gnu.org; Fri, 07 Dec 2012 23:03:07 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:55159) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThBcw-0000iP-2r for 13070@debbugs.gnu.org; Fri, 07 Dec 2012 23:03:02 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 36A4D39E810A; Fri, 7 Dec 2012 20:02:35 -0800 (PST) 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 yGOoUy8GdWvI; Fri, 7 Dec 2012 20:02:32 -0800 (PST) Received: from [192.168.1.3] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 7CAE739E8008; Fri, 7 Dec 2012 20:02:32 -0800 (PST) Message-ID: <50C2BBD9.8060401@cs.ucla.edu> Date: Fri, 07 Dec 2012 20:02:33 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 References: <50BD0C72.7070601@cs.ucla.edu> In-Reply-To: Content-Type: multipart/mixed; boundary="------------090204060905090807070004" X-Spam-Score: -4.2 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.2 (----) This is a multi-part message in MIME format. --------------090204060905090807070004 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 12/04/2012 05:51 AM, Fabrice Popineau wrote: > Provided I added some unsetenv() function for w32. Can you just add $(BLD)/unsetenv.$(O) to GNULIBOBJS in lib/makefile.w32-in, or something like that? No point in having two implementations of unsetenv. I've attached a revised patch (sans any change to makefile.w32-in), relative to trunk bzr 111151. --------------090204060905090807070004 Content-Type: text/plain; charset=UTF-8; name="setenv.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setenv.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTEyLTA4 IDAyOjMwOjUxICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAw MApAQCAtMSw1ICsxLDExIEBACiAyMDEyLTEyLTA4ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KIAorCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlp bmcgZW52aXJvbiBkaXJlY3RseSAoQnVnIzEzMDcwKS4KKwkqIGxpYi9wdXRlbnYuYywgbGli L3Vuc2V0ZW52LmMsIG00L3B1dGVudi5tNCwgbTQvc2V0ZW52Lm00OgorCU5ldyBmaWxlcywg Y29waWVkIGF1dG9tYXRpY2FsbHkgZnJvbSBnbnVsaWIuCisJKiBsaWIvZ251bGliLm1rLCBt NC9nbnVsaWItY29tcC5tNDogUmVnZW5lcmF0ZS4KKwkqIG1lcmdlLWdudWxpYiAoR05VTElC X01PRFVMRVMpOiBBZGQgcHV0ZW52LCB1bnNldGVudi4KKwogCUFzc3VtZSBQT1NJWCAxMDAz LjEtMTk4OCBvciBsYXRlciBmb3Igc2lnbmFsLmggKEJ1ZyMxMzAyNikuCiAJKiBjb25maWd1 cmUuYWMgKFBUWV9PUEVOLCBQVFlfVFRZX05BTUVfU1BSSU5URik6CiAJVXNlIFNJR0NITEQg cmF0aGVyIHRoYW4gU0lHQ0xELgoKPT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NoYW5nZUxv ZycKLS0tIGFkbWluL0NoYW5nZUxvZwkyMDEyLTEyLTA4IDAyOjMwOjUxICswMDAwCisrKyBh ZG1pbi9DaGFuZ2VMb2cJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMSw0ICsxLDcg QEAKLTIwMTItMTItMDMgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorMjAx Mi0xMi0wOCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlVc2UgcHV0 ZW52K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24gZGlyZWN0bHkgKEJ1 ZyMxMzA3MCkuCisJKiBtZXJnZS1nbnVsaWIgKEdOVUxJQl9NT0RVTEVTKTogQWRkIHB1dGVu diwgdW5zZXRlbnYuCiAKIAlBc3N1bWUgUE9TSVggMTAwMy4xLTE5ODggb3IgbGF0ZXIgZm9y IHNpZ25hbC5oIChCdWcjMTMwMjYpLgogCSogQ1BQLURFRklORVMgKFNJR0FMUk0sIFNJR0NI TEQsIFNJR0hVUCwgU0lHS0lMTCwgU0lHUElQRSwgU0lHUVVJVCk6Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnYWRtaW4vbWVyZ2UtZ251bGliJwotLS0gYWRtaW4vbWVyZ2UtZ251bGliCTIwMTIt MTItMDggMDI6MzA6NTEgKzAwMDAKKysrIGFkbWluL21lcmdlLWdudWxpYgkyMDEyLTEyLTA4 IDAzOjQ2OjU5ICswMDAwCkBAIC0zMSwxMCArMzEsMTAgQEAKICAgZHRvYXN0ciBkdG90aW1l c3BlYyBkdXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0CiAgIGZjbnRsLWggZmlsZW1v ZGUgZ2V0bG9hZGF2ZyBnZXRvcHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5CiAgIGlnbm9y ZS12YWx1ZSBpbnRwcm9wcyBsYXJnZWZpbGUgbHN0YXQKLSAgbWFueXdhcm5pbmdzIG1rdGlt ZSBwc2VsZWN0IHB0aHJlYWRfc2lnbWFzayByZWFkbGluaworICBtYW55d2FybmluZ3MgbWt0 aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluawogICBzaWcyc3Ry IHNvY2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvCiAgIHN0 cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdAotICBzeXNfdGlt ZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1dGltZW5zCisg IHN5c190aW1lIHRpbWUgdGltZXItdGltZSB0aW1lc3BlYy1hZGQgdGltZXNwZWMtc3ViIHVu c2V0ZW52IHV0aW1lbnMKICAgd2FybmluZ3MKICcKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ2xp Yi9nbnVsaWIubWsnCi0tLSBsaWIvZ251bGliLm1rCTIwMTItMTItMDggMDI6MzA6NTEgKzAw MDAKKysrIGxpYi9nbnVsaWIubWsJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMjEs NyArMjEsNyBAQAogIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qg b2YgdGhhdCBwcm9ncmFtLgogIwogIyBHZW5lcmF0ZWQgYnkgZ251bGliLXRvb2wuCi0jIFJl cHJvZHVjZSBieTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxpYj1saWJnbnUg LS1zb3VyY2UtYmFzZT1saWIgLS1tNC1iYXNlPW00IC0tZG9jLWJhc2U9ZG9jIC0tdGVzdHMt YmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tYXZvaWQ9YXQtaW50ZXJuYWwgLS1h dm9pZD1lcnJubyAtLWF2b2lkPWZjaGRpciAtLWF2b2lkPWZjbnRsIC0tYXZvaWQ9ZnN0YXQg LS1hdm9pZD1tYWxsb2MtcG9zaXggLS1hdm9pZD1tc3ZjLWludmFsIC0tYXZvaWQ9bXN2Yy1u b3Rocm93IC0tYXZvaWQ9b3BlbmF0LWRpZSAtLWF2b2lkPW9wZW5hdC1oIC0tYXZvaWQ9cmFp c2UgLS1hdm9pZD1zYXZlLWN3ZCAtLWF2b2lkPXNlbGVjdCAtLWF2b2lkPXNpZ3Byb2NtYXNr IC0tYXZvaWQ9c3lzX3R5cGVzIC0tYXZvaWQ9dGhyZWFkbGliIC0tbWFrZWZpbGUtbmFtZT1n bnVsaWIubWsgLS1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1uby1saWJ0b29sIC0tbWFj cm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYWxsb2NhLW9wdCBjLWN0eXBlIGMtc3RyY2Fz ZSBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUgY3J5cHRvL3NoYTEgY3J5 cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyIGR0b2FzdHIgZHRvdGltZXNwZWMgZHVwMiBlbnZp cm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdCBmY250bC1oIGZpbGVtb2RlIGdldGxvYWRhdmcgZ2V0 b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFsdWUgaW50cHJvcHMgbGFy Z2VmaWxlIGxzdGF0IG1hbnl3YXJuaW5ncyBta3RpbWUgcHNlbGVjdCBwdGhyZWFkX3NpZ21h c2sgcmVhZGxpbmsgc2lnMnN0ciBzb2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcg c3RkYm9vbCBzdGRpbyBzdHJmdGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lz X3N0YXQgc3lzX3RpbWUgdGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1z dWIgdXRpbWVucyB3YXJuaW5ncworIyBSZXByb2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1w b3J0IC0tZGlyPS4gLS1saWI9bGliZ251IC0tc291cmNlLWJhc2U9bGliIC0tbTQtYmFzZT1t NCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1 eCAtLWF2b2lkPWF0LWludGVybmFsIC0tYXZvaWQ9ZXJybm8gLS1hdm9pZD1mY2hkaXIgLS1h dm9pZD1mY250bCAtLWF2b2lkPWZzdGF0IC0tYXZvaWQ9bWFsbG9jLXBvc2l4IC0tYXZvaWQ9 bXN2Yy1pbnZhbCAtLWF2b2lkPW1zdmMtbm90aHJvdyAtLWF2b2lkPW9wZW5hdC1kaWUgLS1h dm9pZD1vcGVuYXQtaCAtLWF2b2lkPXJhaXNlIC0tYXZvaWQ9c2F2ZS1jd2QgLS1hdm9pZD1z ZWxlY3QgLS1hdm9pZD1zaWdwcm9jbWFzayAtLWF2b2lkPXN5c190eXBlcyAtLWF2b2lkPXRo cmVhZGxpYiAtLW1ha2VmaWxlLW5hbWU9Z251bGliLm1rIC0tY29uZGl0aW9uYWwtZGVwZW5k ZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGFs bG9jYS1vcHQgYy1jdHlwZSBjLXN0cmNhc2UgY2FyZWFkbGlua2F0IGNsb3NlLXN0cmVhbSBj cnlwdG8vbWQ1IGNyeXB0by9zaGExIGNyeXB0by9zaGEyNTYgY3J5cHRvL3NoYTUxMiBkdG9h c3RyIGR0b3RpbWVzcGVjIGR1cDIgZW52aXJvbiBleGVjaW5mbyBmYWNjZXNzYXQgZmNudGwt aCBmaWxlbW9kZSBnZXRsb2FkYXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkg aWdub3JlLXZhbHVlIGludHByb3BzIGxhcmdlZmlsZSBsc3RhdCBtYW55d2FybmluZ3MgbWt0 aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluayBzaWcyc3RyIHNv Y2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1l IHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRp bWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdh cm5pbmdzCiAKIAogTU9TVExZQ0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC00 MzksNiArNDM5LDE1IEBACiAKICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgcHRocmVhZF9zaWdt YXNrCiAKKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgcHV0ZW52CisKKworRVhUUkFfRElTVCAr PSBwdXRlbnYuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9IHB1dGVudi5jCisKKyMj IGVuZCAgIGdudWxpYiBtb2R1bGUgcHV0ZW52CisKICMjIGJlZ2luIGdudWxpYiBtb2R1bGUg cmVhZGxpbmsKIAogCkBAIC0xNDA5LDYgKzE0MTgsMTUgQEAKIAogIyMgZW5kICAgZ251bGli IG1vZHVsZSB1bmlzdGQKIAorIyMgYmVnaW4gZ251bGliIG1vZHVsZSB1bnNldGVudgorCisK K0VYVFJBX0RJU1QgKz0gdW5zZXRlbnYuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9 IHVuc2V0ZW52LmMKKworIyMgZW5kICAgZ251bGliIG1vZHVsZSB1bnNldGVudgorCiAjIyBi ZWdpbiBnbnVsaWIgbW9kdWxlIHV0aW1lbnMKIAogbGliZ251X2FfU09VUkNFUyArPSB1dGlt ZW5zLmMKCj09PSBhZGRlZCBmaWxlICdsaWIvcHV0ZW52LmMnCi0tLSBsaWIvcHV0ZW52LmMJ MTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbGliL3B1dGVudi5jCTIwMTItMTItMDMg MjA6MDM6MjIgKzAwMDAKQEAgLTAsMCArMSwxMzQgQEAKKy8qIENvcHlyaWdodCAoQykgMTk5 MSwgMTk5NCwgMTk5Ny0xOTk4LCAyMDAwLCAyMDAzLTIwMTIgRnJlZSBTb2Z0d2FyZQorICAg Rm91bmRhdGlvbiwgSW5jLgorCisgICBOT1RFOiBUaGUgY2Fub25pY2FsIHNvdXJjZSBvZiB0 aGlzIGZpbGUgaXMgbWFpbnRhaW5lZCB3aXRoIHRoZSBHTlUgQworICAgTGlicmFyeS4gIEJ1 Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGJ1Zy1nbGliY0BwcmVwLmFpLm1pdC5lZHUuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgYW55 CisgICBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVk ZSA8Y29uZmlnLmg+CisKKy8qIFNwZWNpZmljYXRpb24uICAqLworI2luY2x1ZGUgPHN0ZGxp Yi5oPgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKy8qIEluY2x1ZGUgZXJybm8uaCAqYWZ0 ZXIqIHN5cy90eXBlcy5oIHRvIHdvcmsgYXJvdW5kIGhlYWRlciBwcm9ibGVtcworICAgb24g QUlYIDMuMi41LiAgKi8KKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmbmRlZiBfX3NldF9lcnJu bworIyBkZWZpbmUgX19zZXRfZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkKKyNlbmRpZgor CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBfTElC QworIyBpZiBIQVZFX0dOVV9MRAorIyAgZGVmaW5lIGVudmlyb24gX19lbnZpcm9uCisjIGVs c2UKK2V4dGVybiBjaGFyICoqZW52aXJvbjsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgX0xJ QkMKKy8qIFRoaXMgbG9jayBwcm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmlj YXRpb25zIG9mICdlbnZpcm9uJy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+ CitfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52bG9jaykKKyMg ZGVmaW5lIExPQ0sgICBfX2xpYmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBkZWZpbmUgVU5M T0NLIF9fbGliY19sb2NrX3VubG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRlZmluZSBMT0NL CisjIGRlZmluZSBVTkxPQ0sKKyNlbmRpZgorCitzdGF0aWMgaW50CitfdW5zZXRlbnYgKGNv bnN0IGNoYXIgKm5hbWUpCit7CisgIHNpemVfdCBsZW47CisgIGNoYXIgKiplcDsKKworICBp ZiAobmFtZSA9PSBOVUxMIHx8ICpuYW1lID09ICdcMCcgfHwgc3RyY2hyIChuYW1lLCAnPScp ICE9IE5VTEwpCisgICAgeworICAgICAgX19zZXRfZXJybm8gKEVJTlZBTCk7CisgICAgICBy ZXR1cm4gLTE7CisgICAgfQorCisgIGxlbiA9IHN0cmxlbiAobmFtZSk7CisKKyAgTE9DSzsK KworICBlcCA9IGVudmlyb247CisgIHdoaWxlICgqZXAgIT0gTlVMTCkKKyAgICBpZiAoIXN0 cm5jbXAgKCplcCwgbmFtZSwgbGVuKSAmJiAoKmVwKVtsZW5dID09ICc9JykKKyAgICAgIHsK KyAgICAgICAgLyogRm91bmQgaXQuICBSZW1vdmUgdGhpcyBwb2ludGVyIGJ5IG1vdmluZyBs YXRlciBvbmVzIGJhY2suICAqLworICAgICAgICBjaGFyICoqZHAgPSBlcDsKKworICAgICAg ICBkbworICAgICAgICAgIGRwWzBdID0gZHBbMV07CisgICAgICAgIHdoaWxlICgqZHArKyk7 CisgICAgICAgIC8qIENvbnRpbnVlIHRoZSBsb29wIGluIGNhc2UgTkFNRSBhcHBlYXJzIGFn YWluLiAgKi8KKyAgICAgIH0KKyAgICBlbHNlCisgICAgICArK2VwOworCisgIFVOTE9DSzsK KworICByZXR1cm4gMDsKK30KKworCisvKiBQdXQgU1RSSU5HLCB3aGljaCBpcyBvZiB0aGUg Zm9ybSAiTkFNRT1WQUxVRSIsIGluIHRoZSBlbnZpcm9ubWVudC4KKyAgIElmIFNUUklORyBj b250YWlucyBubyAnPScsIHRoZW4gcmVtb3ZlIFNUUklORyBmcm9tIHRoZSBlbnZpcm9ubWVu dC4gICovCitpbnQKK3B1dGVudiAoY2hhciAqc3RyaW5nKQoreworICBjb25zdCBjaGFyICpj b25zdCBuYW1lX2VuZCA9IHN0cmNociAoc3RyaW5nLCAnPScpOworICByZWdpc3RlciBzaXpl X3Qgc2l6ZTsKKyAgcmVnaXN0ZXIgY2hhciAqKmVwOworCisgIGlmIChuYW1lX2VuZCA9PSBO VUxMKQorICAgIHsKKyAgICAgIC8qIFJlbW92ZSB0aGUgdmFyaWFibGUgZnJvbSB0aGUgZW52 aXJvbm1lbnQuICAqLworICAgICAgcmV0dXJuIF91bnNldGVudiAoc3RyaW5nKTsKKyAgICB9 CisKKyAgc2l6ZSA9IDA7CisgIGZvciAoZXAgPSBlbnZpcm9uOyAqZXAgIT0gTlVMTDsgKytl cCkKKyAgICBpZiAoIXN0cm5jbXAgKCplcCwgc3RyaW5nLCBuYW1lX2VuZCAtIHN0cmluZykg JiYKKyAgICAgICAgKCplcClbbmFtZV9lbmQgLSBzdHJpbmddID09ICc9JykKKyAgICAgIGJy ZWFrOworICAgIGVsc2UKKyAgICAgICsrc2l6ZTsKKworICBpZiAoKmVwID09IE5VTEwpCisg ICAgeworICAgICAgc3RhdGljIGNoYXIgKipsYXN0X2Vudmlyb24gPSBOVUxMOworICAgICAg Y2hhciAqKm5ld19lbnZpcm9uID0gKGNoYXIgKiopIG1hbGxvYyAoKHNpemUgKyAyKSAqIHNp emVvZiAoY2hhciAqKSk7CisgICAgICBpZiAobmV3X2Vudmlyb24gPT0gTlVMTCkKKyAgICAg ICAgcmV0dXJuIC0xOworICAgICAgKHZvaWQpIG1lbWNweSAoKHZvaWQgKikgbmV3X2Vudmly b24sICh2b2lkICopIGVudmlyb24sCisgICAgICAgICAgICAgICAgICAgICBzaXplICogc2l6 ZW9mIChjaGFyICopKTsKKyAgICAgIG5ld19lbnZpcm9uW3NpemVdID0gKGNoYXIgKikgc3Ry aW5nOworICAgICAgbmV3X2Vudmlyb25bc2l6ZSArIDFdID0gTlVMTDsKKyAgICAgIGZyZWUg KGxhc3RfZW52aXJvbik7CisgICAgICBsYXN0X2Vudmlyb24gPSBuZXdfZW52aXJvbjsKKyAg ICAgIGVudmlyb24gPSBuZXdfZW52aXJvbjsKKyAgICB9CisgIGVsc2UKKyAgICAqZXAgPSBz dHJpbmc7CisKKyAgcmV0dXJuIDA7Cit9Cgo9PT0gYWRkZWQgZmlsZSAnbGliL3Vuc2V0ZW52 LmMnCi0tLSBsaWIvdW5zZXRlbnYuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBs aWIvdW5zZXRlbnYuYwkyMDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTI3 IEBACisvKiBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTUtMjAwMiwgMjAwNS0yMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBDIExpYnJhcnkuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKwor LyogRG9uJ3QgdXNlIF9fYXR0cmlidXRlX18gX19ub25udWxsX18gaW4gdGhpcyBjb21waWxh dGlvbiB1bml0LiAgT3RoZXJ3aXNlIGdjYworICAgb3B0aW1pemVzIGF3YXkgdGhlIG5hbWUg PT0gTlVMTCB0ZXN0IGJlbG93LiAgKi8KKyNkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFt cykKKworLyogU3BlY2lmaWNhdGlvbi4gICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNp bmNsdWRlIDxlcnJuby5oPgorI2lmICFfTElCQworIyBkZWZpbmUgX19zZXRfZXJybm8oZXYp ICgoZXJybm8pID0gKGV2KSkKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j bHVkZSA8dW5pc3RkLmg+CisKKyNpZiAhX0xJQkMKKyMgZGVmaW5lIF9fZW52aXJvbiAgICAg IGVudmlyb24KKyNlbmRpZgorCisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBwcm90ZWN0cyBh Z2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9uJy4gICovCisj IGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlh bGl6ZWQgKHN0YXRpYywgZW52bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xpYmNfbG9ja19s b2NrIChlbnZsb2NrKQorIyBkZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3VubG9jayAoZW52 bG9jaykKKyNlbHNlCisjIGRlZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sKKyNlbmRpZgor CisvKiBJbiB0aGUgR05VIEMgbGlicmFyeSB3ZSBtdXN0IGtlZXAgdGhlIG5hbWVzcGFjZSBj bGVhbi4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIHVuc2V0ZW52IF9fdW5zZXRlbnYK KyNlbmRpZgorCisjaWYgX0xJQkMgfHwgIUhBVkVfVU5TRVRFTlYKKworaW50Cit1bnNldGVu diAoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgc2l6ZV90IGxlbjsKKyAgY2hhciAqKmVwOwor CisgIGlmIChuYW1lID09IE5VTEwgfHwgKm5hbWUgPT0gJ1wwJyB8fCBzdHJjaHIgKG5hbWUs ICc9JykgIT0gTlVMTCkKKyAgICB7CisgICAgICBfX3NldF9lcnJubyAoRUlOVkFMKTsKKyAg ICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgbGVuID0gc3RybGVuIChuYW1lKTsKKworICBM T0NLOworCisgIGVwID0gX19lbnZpcm9uOworICB3aGlsZSAoKmVwICE9IE5VTEwpCisgICAg aWYgKCFzdHJuY21wICgqZXAsIG5hbWUsIGxlbikgJiYgKCplcClbbGVuXSA9PSAnPScpCisg ICAgICB7CisgICAgICAgIC8qIEZvdW5kIGl0LiAgUmVtb3ZlIHRoaXMgcG9pbnRlciBieSBt b3ZpbmcgbGF0ZXIgb25lcyBiYWNrLiAgKi8KKyAgICAgICAgY2hhciAqKmRwID0gZXA7CisK KyAgICAgICAgZG8KKyAgICAgICAgICBkcFswXSA9IGRwWzFdOworICAgICAgICB3aGlsZSAo KmRwKyspOworICAgICAgICAvKiBDb250aW51ZSB0aGUgbG9vcCBpbiBjYXNlIE5BTUUgYXBw ZWFycyBhZ2Fpbi4gICovCisgICAgICB9CisgICAgZWxzZQorICAgICAgKytlcDsKKworICBV TkxPQ0s7CisKKyAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBfTElCQworIyB1bmRlZiB1bnNl dGVudgord2Vha19hbGlhcyAoX191bnNldGVudiwgdW5zZXRlbnYpCisjZW5kaWYKKworI2Vs c2UgLyogSEFWRV9VTlNFVEVOViAqLworCisjIHVuZGVmIHVuc2V0ZW52CisjIGlmICFIQVZF X0RFQ0xfVU5TRVRFTlYKKyMgIGlmIFZPSURfVU5TRVRFTlYKK2V4dGVybiB2b2lkIHVuc2V0 ZW52IChjb25zdCBjaGFyICopOworIyAgZWxzZQorZXh0ZXJuIGludCB1bnNldGVudiAoY29u c3QgY2hhciAqKTsKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIENhbGwgdGhlIHVuZGVybHlp bmcgdW5zZXRlbnYsIGluIGNhc2UgdGhlcmUgaXMgaGlkZGVuIGJvb2trZWVwaW5nCisgICB0 aGF0IG5lZWRzIHVwZGF0aW5nIGJleW9uZCBqdXN0IG1vZGlmeWluZyBlbnZpcm9uLiAgKi8K K2ludAorcnBsX3Vuc2V0ZW52IChjb25zdCBjaGFyICpuYW1lKQoreworICBpbnQgcmVzdWx0 ID0gMDsKKyAgaWYgKCFuYW1lIHx8ICEqbmFtZSB8fCBzdHJjaHIgKG5hbWUsICc9JykpCisg ICAgeworICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICByZXR1cm4gLTE7CisgICAgfQor ICB3aGlsZSAoZ2V0ZW52IChuYW1lKSkKKyMgaWYgIVZPSURfVU5TRVRFTlYKKyAgICByZXN1 bHQgPQorIyBlbmRpZgorICAgICAgdW5zZXRlbnYgKG5hbWUpOworICByZXR1cm4gcmVzdWx0 OworfQorCisjZW5kaWYgLyogSEFWRV9VTlNFVEVOViAqLwoKPT09IG1vZGlmaWVkIGZpbGUg J200L2dudWxpYi1jb21wLm00JwotLS0gbTQvZ251bGliLWNvbXAubTQJMjAxMi0xMi0wOCAw MjozMDo1MSArMDAwMAorKysgbTQvZ251bGliLWNvbXAubTQJMjAxMi0xMi0wOCAwMzo0Njo1 OSArMDAwMApAQCAtODUsNiArODUsNyBAQAogICAjIENvZGUgZnJvbSBtb2R1bGUgcGF0aG1h eDoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHBzZWxlY3Q6CiAgICMgQ29kZSBmcm9tIG1vZHVs ZSBwdGhyZWFkX3NpZ21hc2s6CisgICMgQ29kZSBmcm9tIG1vZHVsZSBwdXRlbnY6CiAgICMg Q29kZSBmcm9tIG1vZHVsZSByZWFkbGluazoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHJvb3Qt dWlkOgogICAjIENvZGUgZnJvbSBtb2R1bGUgc2lnMnN0cjoKQEAgLTEyNiw2ICsxMjcsNyBA QAogICAjIENvZGUgZnJvbSBtb2R1bGUgdGltZXNwZWMtc3ViOgogICAjIENvZGUgZnJvbSBt b2R1bGUgdTY0OgogICAjIENvZGUgZnJvbSBtb2R1bGUgdW5pc3RkOgorICAjIENvZGUgZnJv bSBtb2R1bGUgdW5zZXRlbnY6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSB1dGltZW5zOgogICAj IENvZGUgZnJvbSBtb2R1bGUgdmVyaWZ5OgogICAjIENvZGUgZnJvbSBtb2R1bGUgd2Fybmlu Z3M6CkBAIC0yNDAsNiArMjQyLDExIEBACiAgICAgZ2xfUFJFUkVRX1BUSFJFQURfU0lHTUFT SwogICBmaQogICBnbF9TSUdOQUxfTU9EVUxFX0lORElDQVRPUihbcHRocmVhZF9zaWdtYXNr XSkKKyAgZ2xfRlVOQ19QVVRFTlYKKyAgaWYgdGVzdCAkUkVQTEFDRV9QVVRFTlYgPSAxOyB0 aGVuCisgICAgQUNfTElCT0JKKFtwdXRlbnZdKQorICBmaQorICBnbF9TVERMSUJfTU9EVUxF X0lORElDQVRPUihbcHV0ZW52XSkKICAgZ2xfRlVOQ19SRUFETElOSwogICBpZiB0ZXN0ICRI QVZFX1JFQURMSU5LID0gMCB8fCB0ZXN0ICRSRVBMQUNFX1JFQURMSU5LID0gMTsgdGhlbgog ICAgIEFDX0xJQk9CSihbcmVhZGxpbmtdKQpAQCAtMjk3LDYgKzMwNCwxMiBAQAogICBnbF9U SU1FUl9USU1FCiAgIGdsX1RJTUVTUEVDCiAgIGdsX1VOSVNURF9ICisgIGdsX0ZVTkNfVU5T RVRFTlYKKyAgaWYgdGVzdCAkSEFWRV9VTlNFVEVOViA9IDAgfHwgdGVzdCAkUkVQTEFDRV9V TlNFVEVOViA9IDE7IHRoZW4KKyAgICBBQ19MSUJPQkooW3Vuc2V0ZW52XSkKKyAgICBnbF9Q UkVSRVFfVU5TRVRFTlYKKyAgZmkKKyAgZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW3Vu c2V0ZW52XSkKICAgZ2xfVVRJTUVOUwogICBnbF9nbnVsaWJfZW5hYmxlZF9kb3NuYW1lPWZh bHNlCiAgIGdsX2dudWxpYl9lbmFibGVkX2V1aWRhY2Nlc3M9ZmFsc2UKQEAgLTY3OSw2ICs2 OTIsNyBAQAogICBsaWIvcGF0aG1heC5oCiAgIGxpYi9wc2VsZWN0LmMKICAgbGliL3B0aHJl YWRfc2lnbWFzay5jCisgIGxpYi9wdXRlbnYuYwogICBsaWIvcmVhZGxpbmsuYwogICBsaWIv cm9vdC11aWQuaAogICBsaWIvc2hhMS5jCkBAIC03MjMsNiArNzM3LDcgQEAKICAgbGliL3U2 NC5oCiAgIGxpYi91bmlzdGQuYwogICBsaWIvdW5pc3RkLmluLmgKKyAgbGliL3Vuc2V0ZW52 LmMKICAgbGliL3V0aW1lbnMuYwogICBsaWIvdXRpbWVucy5oCiAgIGxpYi92ZXJpZnkuaApA QCAtNzY0LDcgKzc3OSw5IEBACiAgIG00L3BhdGhtYXgubTQKICAgbTQvcHNlbGVjdC5tNAog ICBtNC9wdGhyZWFkX3NpZ21hc2subTQKKyAgbTQvcHV0ZW52Lm00CiAgIG00L3JlYWRsaW5r Lm00CisgIG00L3NldGVudi5tNAogICBtNC9zaGExLm00CiAgIG00L3NoYTI1Ni5tNAogICBt NC9zaGE1MTIubTQKCj09PSBhZGRlZCBmaWxlICdtNC9wdXRlbnYubTQnCi0tLSBtNC9wdXRl bnYubTQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbTQvcHV0ZW52Lm00CTIwMTIt MTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTAsMCArMSw1MCBAQAorIyBwdXRlbnYubTQgc2Vy aWFsIDE5CitkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0 byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2Rp ZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5s IEZyb20gSmltIE1leWVyaW5nLgorZG5sCitkbmwgQ2hlY2sgd2hldGhlciBwdXRlbnYgKCJG T08iKSByZW1vdmVzIEZPTyBmcm9tIHRoZSBlbnZpcm9ubWVudC4KK2RubCBUaGUgcHV0ZW52 IGluIGxpYmMgb24gYXQgbGVhc3QgU3VuT1MgNC4xLjQgZG9lcyAqbm90KiBkbyB0aGF0Lgor CitBQ19ERUZVTihbZ2xfRlVOQ19QVVRFTlZdLAorWworICBBQ19SRVFVSVJFKFtnbF9TVERM SUJfSF9ERUZBVUxUU10pCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkgZG5s IGZvciBjcm9zcy1jb21waWxlcworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHB1dGVudiBjb21w YXRpYmxlIHdpdGggR05VIGFuZCBTVklEXSwKKyAgIFtnbF9jdl9mdW5jX3N2aWRfcHV0ZW52 XSwKKyAgIFtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW0FDX0lOQ0xVREVTX0RF RkFVTFRdLFtbCisgICAgLyogUHV0IGl0IGluIGVudi4gICovCisgICAgaWYgKHB1dGVudiAo IkNPTkZURVNUX3B1dGVudj12YWwiKSkKKyAgICAgIHJldHVybiAxOworCisgICAgLyogVHJ5 IHRvIHJlbW92ZSBpdC4gICovCisgICAgaWYgKHB1dGVudiAoIkNPTkZURVNUX3B1dGVudiIp KQorICAgICAgcmV0dXJuIDI7CisKKyAgICAvKiBNYWtlIHN1cmUgaXQgd2FzIGRlbGV0ZWQu ICAqLworICAgIGlmIChnZXRlbnYgKCJDT05GVEVTVF9wdXRlbnYiKSAhPSAwKQorICAgICAg cmV0dXJuIDM7CisKKyAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAg ICAgICAgICBnbF9jdl9mdW5jX3N2aWRfcHV0ZW52PXllcywKKyAgICAgICAgICAgICBnbF9j dl9mdW5jX3N2aWRfcHV0ZW52PW5vLAorICAgICAgICAgICAgIGRubCBXaGVuIGNyb3NzY29t cGlsaW5nLCBhc3N1bWUgcHV0ZW52IGlzIGJyb2tlbi4KKyAgICAgICAgICAgICBbY2FzZSAi JGhvc3Rfb3MiIGluCisgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBn bGliYyBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICotZ251KikgZ2xfY3ZfZnVuY19zdmlk X3B1dGVudj0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAgICAgICAgIyBJ ZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgorICAgICAgICAgICAgICAgICop ICAgICAgZ2xfY3ZfZnVuY19zdmlkX3B1dGVudj0iZ3Vlc3Npbmcgbm8iIDs7CisgICAgICAg ICAgICAgIGVzYWMKKyAgICAgICAgICAgICBdKQorICAgXSkKKyAgY2FzZSAiJGdsX2N2X2Z1 bmNfc3ZpZF9wdXRlbnYiIGluCisgICAgKnllcykgOzsKKyAgICAqKQorICAgICAgUkVQTEFD RV9QVVRFTlY9MQorICAgICAgOzsKKyAgZXNhYworXSkKCj09PSBhZGRlZCBmaWxlICdtNC9z ZXRlbnYubTQnCi0tLSBtNC9zZXRlbnYubTQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAor KysgbTQvc2V0ZW52Lm00CTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTAsMCArMSwx NjAgQEAKKyMgc2V0ZW52Lm00IHNlcmlhbCAyNgorZG5sIENvcHlyaWdodCAoQykgMjAwMS0y MDA0LCAyMDA2LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24K K2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmli dXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFz IHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworQUNfREVGVU4oW2dsX0ZVTkNfU0VURU5W XSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfRlVOQ19TRVRFTlZfU0VQQVJBVEVdKQorICBBQ19S RVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGlsZXMKKyAg aWYgdGVzdCAkYWNfY3ZfZnVuY19zZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfU0VURU5W PTAKKyAgZWxzZQorICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHNldGVudiB2YWxpZGF0 ZXMgYXJndW1lbnRzXSwKKyAgICAgIFtnbF9jdl9mdW5jX3NldGVudl93b3Jrc10sCisgICAg ICBbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisgICAgICAgI2luY2x1ZGUg PHN0ZGxpYi5oPgorICAgICAgICNpbmNsdWRlIDxlcnJuby5oPgorICAgICAgICNpbmNsdWRl IDxzdHJpbmcuaD4KKyAgICAgIF1dLCBbWworICAgICAgIGludCByZXN1bHQgPSAwOworICAg ICAgIHsKKyAgICAgICAgIGlmIChzZXRlbnYgKCIiLCAiIiwgMCkgIT0gLTEpCisgICAgICAg ICAgIHJlc3VsdCB8PSAxOworICAgICAgICAgZWxzZSBpZiAoZXJybm8gIT0gRUlOVkFMKQor ICAgICAgICAgICByZXN1bHQgfD0gMjsKKyAgICAgICB9CisgICAgICAgeworICAgICAgICAg aWYgKHNldGVudiAoImEiLCAiPSIsIDEpICE9IDApCisgICAgICAgICAgIHJlc3VsdCB8PSA0 OworICAgICAgICAgZWxzZSBpZiAoc3RyY21wIChnZXRlbnYgKCJhIiksICI9IikgIT0gMCkK KyAgICAgICAgICAgcmVzdWx0IHw9IDg7CisgICAgICAgfQorICAgICAgIHJldHVybiByZXN1 bHQ7CisgICAgICBdXSldLAorICAgICAgW2dsX2N2X2Z1bmNfc2V0ZW52X3dvcmtzPXllc10s IFtnbF9jdl9mdW5jX3NldGVudl93b3Jrcz1ub10sCisgICAgICBbY2FzZSAiJGhvc3Rfb3Mi IGluCisgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIGdsaWJjIHN5c3RlbXMuCisg ICAgICAgICAqLWdudSopIGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtzPSJndWVzc2luZyB5ZXMi IDs7CisgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywgYXNzdW1lIHRoZSB3 b3JzdC4KKyAgICAgICAgICopICAgICAgZ2xfY3ZfZnVuY19zZXRlbnZfd29ya3M9Imd1ZXNz aW5nIG5vIiA7OworICAgICAgIGVzYWMKKyAgICAgIF0pXSkKKyAgICBjYXNlICIkZ2xfY3Zf ZnVuY19zZXRlbnZfd29ya3MiIGluCisgICAgICAqeWVzKSA7OworICAgICAgKikKKyAgICAg ICAgUkVQTEFDRV9TRVRFTlY9MQorICAgICAgICA7OworICAgIGVzYWMKKyAgZmkKK10pCisK KyMgTGlrZSBnbF9GVU5DX1NFVEVOViwgZXhjZXB0IHByZXBhcmUgZm9yIHNlcGFyYXRlIGNv bXBpbGF0aW9uCisjIChubyBSRVBMQUNFX1NFVEVOViwgbm8gQUNfTElCT0JKKS4KK0FDX0RF RlVOKFtnbF9GVU5DX1NFVEVOVl9TRVBBUkFURV0sCitbCisgIEFDX1JFUVVJUkUoW2dsX1NU RExJQl9IX0RFRkFVTFRTXSkKKyAgQUNfQ0hFQ0tfREVDTFNfT05DRShbc2V0ZW52XSkKKyAg aWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3NldGVudiA9IG5vOyB0aGVuCisgICAgSEFWRV9E RUNMX1NFVEVOVj0wCisgIGZpCisgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3NldGVudl0pCisg IGdsX1BSRVJFUV9TRVRFTlYKK10pCisKK0FDX0RFRlVOKFtnbF9GVU5DX1VOU0VURU5WXSwK K1sKKyAgQUNfUkVRVUlSRShbZ2xfU1RETElCX0hfREVGQVVMVFNdKQorICBBQ19SRVFVSVJF KFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGlsZXMKKyAgQUNfQ0hF Q0tfREVDTFNfT05DRShbdW5zZXRlbnZdKQorICBpZiB0ZXN0ICRhY19jdl9oYXZlX2RlY2xf dW5zZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfREVDTF9VTlNFVEVOVj0wCisgIGZpCisg IEFDX0NIRUNLX0ZVTkNTKFt1bnNldGVudl0pCisgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfdW5z ZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfVU5TRVRFTlY9MAorICBlbHNlCisgICAgSEFW RV9VTlNFVEVOVj0xCisgICAgZG5sIFNvbWUgQlNEcyByZXR1cm4gdm9pZCwgZmFpbGluZyB0 byBkbyBlcnJvciBjaGVja2luZy4KKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHVuc2V0ZW52 KCkgcmV0dXJuIHR5cGVdLCBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXRdLAorICAgICAgW0FD X0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAg ICAgIFtbCisjdW5kZWYgX0JTRAorI2RlZmluZSBfQlNEIDEgLyogdW5oaWRlIHVuc2V0ZW52 IGRlY2xhcmF0aW9uIGluIE9TRi8xIDUuMSA8c3RkbGliLmg+ICovCisjaW5jbHVkZSA8c3Rk bGliLmg+CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKK2ludCB1 bnNldGVudiAoY29uc3QgY2hhciAqbmFtZSk7CisgICAgICAgICAgICBdXSwKKyAgICAgICAg ICAgIFtbXV0pXSwKKyAgICAgICAgIFtndF9jdl9mdW5jX3Vuc2V0ZW52X3JldD0naW50J10s CisgICAgICAgICBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXQ9J3ZvaWQnXSldKQorICAgIGlm IHRlc3QgJGd0X2N2X2Z1bmNfdW5zZXRlbnZfcmV0ID0gJ3ZvaWQnOyB0aGVuCisgICAgICBB Q19ERUZJTkUoW1ZPSURfVU5TRVRFTlZdLCBbMV0sIFtEZWZpbmUgdG8gMSBpZiB1bnNldGVu diByZXR1cm5zIHZvaWQKKyAgICAgICBpbnN0ZWFkIG9mIGludC5dKQorICAgICAgUkVQTEFD RV9VTlNFVEVOVj0xCisgICAgZmkKKworICAgIGRubCBTb2xhcmlzIDEwIHVuc2V0ZW52IGRv ZXMgbm90IHJlbW92ZSBhbGwgY29waWVzIG9mIGEgbmFtZS4KKyAgICBkbmwgSGFpa3UgYWxw aGEgMiB1bnNldGVudiBnZXRzIGNvbmZ1c2VkIGJ5IGFzc2lnbm1lbnQgdG8gZW52aXJvbi4K KyAgICBkbmwgT3BlbkJTRCA0LjcgdW5zZXRlbnYoIiIpIGRvZXMgbm90IGZhaWwuCisgICAg QUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdW5zZXRlbnYgb2JleXMgUE9TSVhdLAorICAgICAg W2dsX2N2X2Z1bmNfdW5zZXRlbnZfd29ya3NdLAorICAgICAgW0FDX1JVTl9JRkVMU0UoW0FD X0xBTkdfUFJPR1JBTShbWworICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAgICAgICAj aW5jbHVkZSA8ZXJybm8uaD4KKyAgICAgICBleHRlcm4gY2hhciAqKmVudmlyb247CisgICAg ICBdXSwgW1sKKyAgICAgICBjaGFyIGVudHJ5MVtdID0gImE9MSI7CisgICAgICAgY2hhciBl bnRyeTJbXSA9ICJiPTIiOworICAgICAgIGNoYXIgKmVudltdID0geyBlbnRyeTEsIGVudHJ5 MiwgTlVMTCB9OworICAgICAgIGlmIChwdXRlbnYgKChjaGFyICopICJhPTEiKSkgcmV0dXJu IDE7CisgICAgICAgaWYgKHB1dGVudiAoZW50cnkyKSkgcmV0dXJuIDI7CisgICAgICAgZW50 cnkyWzBdID0gJ2EnOworICAgICAgIHVuc2V0ZW52ICgiYSIpOworICAgICAgIGlmIChnZXRl bnYgKCJhIikpIHJldHVybiAzOworICAgICAgIGlmICghdW5zZXRlbnYgKCIiKSB8fCBlcnJu byAhPSBFSU5WQUwpIHJldHVybiA0OworICAgICAgIGVudHJ5MlswXSA9ICdiJzsKKyAgICAg ICBlbnZpcm9uID0gZW52OworICAgICAgIGlmICghZ2V0ZW52ICgiYSIpKSByZXR1cm4gNTsK KyAgICAgICBlbnRyeTJbMF0gPSAnYSc7CisgICAgICAgdW5zZXRlbnYgKCJhIik7CisgICAg ICAgaWYgKGdldGVudiAoImEiKSkgcmV0dXJuIDY7CisgICAgICBdXSldLAorICAgICAgW2ds X2N2X2Z1bmNfdW5zZXRlbnZfd29ya3M9eWVzXSwgW2dsX2N2X2Z1bmNfdW5zZXRlbnZfd29y a3M9bm9dLAorICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAgICAgICAj IEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgorICAgICAgICAgKi1nbnUqKSBnbF9jdl9m dW5jX3Vuc2V0ZW52X3dvcmtzPSJndWVzc2luZyB5ZXMiIDs7CisgICAgICAgICAgICAgICAg ICMgSWYgd2UgZG9uJ3Qga25vdywgYXNzdW1lIHRoZSB3b3JzdC4KKyAgICAgICAgICopICAg ICAgZ2xfY3ZfZnVuY191bnNldGVudl93b3Jrcz0iZ3Vlc3Npbmcgbm8iIDs7CisgICAgICAg ZXNhYworICAgICAgXSldKQorICAgIGNhc2UgIiRnbF9jdl9mdW5jX3Vuc2V0ZW52X3dvcmtz IiBpbgorICAgICAgKnllcykgOzsKKyAgICAgICopCisgICAgICAgIFJFUExBQ0VfVU5TRVRF TlY9MQorICAgICAgICA7OworICAgIGVzYWMKKyAgZmkKK10pCisKKyMgUHJlcmVxdWlzaXRl cyBvZiBsaWIvc2V0ZW52LmMuCitBQ19ERUZVTihbZ2xfUFJFUkVRX1NFVEVOVl0sCitbCisg IEFDX1JFUVVJUkUoW0FDX0ZVTkNfQUxMT0NBXSkKKyAgQUNfUkVRVUlSRShbZ2xfRU5WSVJP Tl0pCisgIEFDX0NIRUNLX0hFQURFUlNfT05DRShbdW5pc3RkLmhdKQorICBBQ19DSEVDS19I RUFERVJTKFtzZWFyY2guaF0pCisgIEFDX0NIRUNLX0ZVTkNTKFt0c2VhcmNoXSkKK10pCisK KyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvdW5zZXRlbnYuYy4KK0FDX0RFRlVOKFtnbF9QUkVS RVFfVU5TRVRFTlZdLAorWworICBBQ19SRVFVSVJFKFtnbF9FTlZJUk9OXSkKKyAgQUNfQ0hF Q0tfSEVBREVSU19PTkNFKFt1bmlzdGQuaF0pCitdKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3Ny Yy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIwMTItMTItMDggMDI6MzA6NTEgKzAw MDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMSw1 ICsxLDI3IEBACiAyMDEyLTEyLTA4ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVk dT4KIAorCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlpbmcgZW52aXJv biBkaXJlY3RseSAoQnVnIzEzMDcwKS4KKwkqIGFsbG9jLmMgKHhwdXRlbnYpOiBOZXcgZnVu Y3Rpb24uCisJKiBkYnVzYmluZC5jIChGZGJ1c19pbml0X2J1cyk6CisJKiBlbWFjcy5jICht YWluKToKKwkqIHh0ZXJtLmMgKHhfdGVybV9pbml0KToKKwlVc2UgeHB1dGVudiBpbnN0ZWFk IG9mIHNldGVudiBvciBwdXRlbnYsIHRvIGRldGVjdCBtZW1vcnkgZXhoYXVzdGlvbi4KKwkq IGVkaXRmbnMuYyAoaW5pdGlhbF90eik6IE1vdmUgc3RhdGljIHZhciBkZWNsIHVwLgorCSh0 enZhbGJ1Zl9pbl9lbnZpcm9uKTogTmV3IHN0YXRpYyB2YXIuCisJKGluaXRfZWRpdGZucyk6 CUluaXRpYWxpemUgdGhlc2UgdHdvIHN0YXRpYyB2YXJzLgorCShGZW5jb2RlX3RpbWUpOiBE b24ndCBhc3N1bWUgYXJiaXRyYXJ5IGxpbWl0IG9uIEVNQUNTX0lOVCB3aWR0aC4KKwlTYXZl IG9sZCBUWiB2YWx1ZSBvbiBzdGFjaywgaWYgaXQncyBzbWFsbC4KKwkoRmVuY29kZV90aW1l LCBzZXRfdGltZV96b25lX3J1bGUpOiBEb24ndCBtb2RpZnkgJ2Vudmlyb24nIGRpcmVjdGx5 OworCWluc3RlYWQsIHVzZSB4cHV0ZW52K3Vuc2V0ZW52IHRvIHNldCBhbmQgcmVzdG9yZSBU Wi4KKwkoZW52aXJvbmJ1Zik6IFJlbW92ZSBzdGF0aWMgdmFyLiAgQWxsIHVzZXMgcmVtb3Zl ZC4KKwkoRnNldF90aW1lX3pvbmVfcnVsZSk6IERvIG5vdCBzYXZlIFRaIGFuZCBlbnZpcm9u OyBubyBsb25nZXIgbmVlZGVkIGhlcmUuCisJKHNldF90aW1lX3pvbmVfcnVsZV90ejEsIHNl dF90aW1lX3pvbmVfcnVsZV90ejIpIFtMT0NBTFRJTUVfQ0FDSEVdOgorCU1vdmUgdG8gaW5z aWRlIHNldF90aW1lX3pvbmVfcnVsZTsgdGhleSBkb24ndCBuZWVkIGZpbGUgc2NvcGUgYW55 IG1vcmUuCisJKHNldF90aW1lX3pvbmVfcnVsZSk6IE1haW50YWluIHRoZSBUWj12YWx1ZSBz dHJpbmcgc2VwYXJhdGVseS4KKwkoc3ltc19vZl9lZGl0Zm5zKTogRG9uJ3QgaW5pdGlhbGl6 ZSBpbml0aWFsX3R6OyBpbml0X2VkaXRmbnMgbm93IGRvZXMgaXQuCisJKiBlbWFjcy5jIChk dW1wX3R6KSBbSEFWRV9UWlNFVF06IE5vdyBjb25zdC4KKwkqIGxpc3AuaCAoeHB1dGVudik6 IE5ldyBkZWNsLgorCiAJQXNzdW1lIFBPU0lYIDEwMDMuMS0xOTg4IG9yIGxhdGVyIGZvciBz aWduYWwuaCAoQnVnIzEzMDI2KS4KIAlFeGNlcHRpb25zOiBkbyBub3QgYXNzdW1lIFNJR0NP TlQsIFNJR1NUT1AsIFNJR1RTVFAsIFNJR1RUSU4sCiAJU0lHVFRPVSwgU0lHVVNSMSwgU0lH VVNSMiwgYXMgTWljcm9zb2Z0IHBsYXRmb3JtcyBsYWNrIHRoZXNlLgoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0xMi0wMyAwODowNjow MiArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0xMi0wMyAyMDowNzoxMyArMDAwMApAQCAt ODIwLDYgKzgyMCwxNSBAQAogICByZXR1cm4gcDsKIH0KIAorLyogTGlrZSBwdXRlbnYsIGJ1 dCAoMSkgdXNlIHRoZSBlcXVpdmFsZW50IG9mIHhtYWxsb2MgYW5kICgyKSB0aGUKKyAgIGFy Z3VtZW50IGlzIGEgY29uc3QgcG9pbnRlci4gICovCisKK3ZvaWQKK3hwdXRlbnYgKGNoYXIg Y29uc3QgKnN0cmluZykKK3sKKyAgaWYgKHB1dGVudiAoKGNoYXIgKikgc3RyaW5nKSAhPSAw KQorICAgIG1lbW9yeV9mdWxsICgwKTsKK30KIAogLyogVW53aW5kIGZvciBTQUZFX0FMTE9D QSAqLwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RidXNiaW5kLmMnCi0tLSBzcmMvZGJ1 c2JpbmQuYwkyMDEyLTEwLTMxIDExOjQ1OjQwICswMDAwCisrKyBzcmMvZGJ1c2JpbmQuYwky MDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0xMjAzLDcgKzEyMDMsNyBAQAogICAgICAg eGRfcmVnaXN0ZXJlZF9idXNlcyA9IEZjb25zIChGY29ucyAoYnVzLCB2YWwpLCB4ZF9yZWdp c3RlcmVkX2J1c2VzKTsKIAogICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gYWJvcnQuICAq LwotICAgICAgcHV0ZW52ICgoY2hhciAqKSAiREJVU19GQVRBTF9XQVJOSU5HUz0wIik7Cisg ICAgICB4cHV0ZW52ICgiREJVU19GQVRBTF9XQVJOSU5HUz0wIik7CiAKICAgICAgIC8qIENs ZWFudXAuICAqLwogICAgICAgZGJ1c19lcnJvcl9mcmVlICgmZGVycm9yKTsKCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvZWRpdGZucy5jJwotLS0gc3JjL2VkaXRmbnMuYwkyMDEyLTEyLTAz IDE0OjEzOjA2ICswMDAwCisrKyBzcmMvZWRpdGZucy5jCTIwMTItMTItMDMgMjA6MDc6MTMg KzAwMDAKQEAgLTc4LDYgKzc4LDE1IEBACiAKIHN0YXRpYyBMaXNwX09iamVjdCBRYm91bmRh cnk7CiAKKy8qIFRoZSBzdGFydHVwIHZhbHVlIG9mIHRoZSBUWiBlbnZpcm9ubWVudCB2YXJp YWJsZSBzbyBpdCBjYW4gYmUKKyAgIHJlc3RvcmVkIGlmIHRoZSB1c2VyIGNhbGxzIHNldC10 aW1lLXpvbmUtcnVsZSB3aXRoIGEgbmlsCisgICBhcmd1bWVudC4gIElmIG51bGwsIHRoZSBU WiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3YXMgdW5zZXQuICAqLworc3RhdGljIGNoYXIgY29u c3QgKmluaXRpYWxfdHo7CisKKy8qIFRydWUgaWYgdGhlIHN0YXRpYyB2YXJpYWJsZSB0enZh bGJ1ZiAoZGVmaW5lZCBpbgorICAgc2V0X3RpbWVfem9uZV9ydWxlKSBpcyBwYXJ0IG9mICdl bnZpcm9uJy4gICovCitzdGF0aWMgYm9vbCB0enZhbGJ1Zl9pbl9lbnZpcm9uOworCiAKIHZv aWQKIGluaXRfZWRpdGZucyAodm9pZCkKQEAgLTk2LDYgKzEwNSw5IEBACiAgICAgcmV0dXJu OwogI2VuZGlmIC8qIG5vdCBDQU5OT1RfRFVNUCAqLwogCisgIGluaXRpYWxfdHogPSBnZXRl bnYgKCJUWiIpOworICB0enZhbGJ1Zl9pbl9lbnZpcm9uID0gMDsKKwogICBwdyA9IGdldHB3 dWlkIChnZXR1aWQgKCkpOwogI2lmZGVmIE1TRE9TCiAgIC8qIFdlIGxldCB0aGUgcmVhbCB1 c2VyIG5hbWUgZGVmYXVsdCB0byAicm9vdCIgYmVjYXVzZSB0aGF0J3MgcXVpdGUKQEAgLTE5 MDAsOSArMTkxMiwxMSBAQAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIGNoYXIgdHpi dWZbMTAwXTsKKyAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHR6YnVmX2Zvcm1hdFtdID0gIlhY WCVzJSJwSSJkOiUwMmQ6JTAyZCI7CisgICAgICBjaGFyIHR6YnVmW3NpemVvZiB0emJ1Zl9m b3JtYXQgKyBJTlRfU1RSTEVOX0JPVU5EIChFTUFDU19JTlQpXTsKKyAgICAgIGNoYXIgKm9s ZF90enN0cmluZzsKICAgICAgIGNvbnN0IGNoYXIgKnR6c3RyaW5nOwotICAgICAgY2hhciAq Km9sZGVudiA9IGVudmlyb24sICoqbmV3ZW52OworICAgICAgVVNFX1NBRkVfQUxMT0NBOwog CiAgICAgICBpZiAoRVEgKHpvbmUsIFF0KSkKIAl0enN0cmluZyA9ICJVVEMwIjsKQEAgLTE5 MTQsMTMgKzE5MjgsMjAgQEAKIAkgIEVNQUNTX0lOVCB6b25lX2hyID0gYWJzem9uZSAvICg2 MCo2MCk7CiAJICBpbnQgem9uZV9taW4gPSAoYWJzem9uZS82MCkgJSA2MDsKIAkgIGludCB6 b25lX3NlYyA9IGFic3pvbmUgJSA2MDsKLQkgIHNwcmludGYgKHR6YnVmLCAiWFhYJXMlInBJ ImQ6JTAyZDolMDJkIiwgIi0iICsgKFhJTlQgKHpvbmUpIDwgMCksCisJICBzcHJpbnRmICh0 emJ1ZiwgdHpidWZfZm9ybWF0LCAiLSIgKyAoWElOVCAoem9uZSkgPCAwKSwKIAkJICAgem9u ZV9ociwgem9uZV9taW4sIHpvbmVfc2VjKTsKIAkgIHR6c3RyaW5nID0gdHpidWY7CiAJfQog ICAgICAgZWxzZQogCWVycm9yICgiSW52YWxpZCB0aW1lIHpvbmUgc3BlY2lmaWNhdGlvbiIp OwogCisgICAgICBvbGRfdHpzdHJpbmcgPSBnZXRlbnYgKCJUWiIpOworICAgICAgaWYgKG9s ZF90enN0cmluZykKKwl7CisJICBjaGFyICpidWYgPSBTQUZFX0FMTE9DQSAoc3RybGVuIChv bGRfdHpzdHJpbmcpICsgMSk7CisJICBvbGRfdHpzdHJpbmcgPSBzdHJjcHkgKGJ1Ziwgb2xk X3R6c3RyaW5nKTsKKwl9CisKICAgICAgIGJsb2NrX2lucHV0ICgpOwogCiAgICAgICAvKiBT ZXQgVFogYmVmb3JlIGNhbGxpbmcgbWt0aW1lOyBtZXJlbHkgYWRqdXN0aW5nIG1rdGltZSdz IHJldHVybmVkCkBAIC0xOTI5LDE1ICsxOTUwLDEyIEBACiAKICAgICAgIHZhbHVlID0gbWt0 aW1lICgmdG0pOwogCi0gICAgICAvKiBSZXN0b3JlIFRaIHRvIHByZXZpb3VzIHZhbHVlLiAg Ki8KLSAgICAgIG5ld2VudiA9IGVudmlyb247Ci0gICAgICBlbnZpcm9uID0gb2xkZW52Owor ICAgICAgc2V0X3RpbWVfem9uZV9ydWxlIChvbGRfdHpzdHJpbmcpOwogI2lmZGVmIExPQ0FM VElNRV9DQUNIRQogICAgICAgdHpzZXQgKCk7CiAjZW5kaWYKICAgICAgIHVuYmxvY2tfaW5w dXQgKCk7Ci0KLSAgICAgIHhmcmVlIChuZXdlbnYpOworICAgICAgU0FGRV9GUkVFICgpOwog ICAgIH0KIAogICBpZiAodmFsdWUgPT0gKHRpbWVfdCkgLTEpCkBAIC0yMDY3LDE2ICsyMDg1 LDYgQEAKICAgcmV0dXJuIGxpc3QyICh6b25lX29mZnNldCwgem9uZV9uYW1lKTsKIH0KIAot LyogVGhpcyBob2xkcyB0aGUgdmFsdWUgb2YgYGVudmlyb24nIHByb2R1Y2VkIGJ5IHRoZSBw cmV2aW91cwotICAgY2FsbCB0byBGc2V0X3RpbWVfem9uZV9ydWxlLCBvciAwIGlmIEZzZXRf dGltZV96b25lX3J1bGUKLSAgIGhhcyBuZXZlciBiZWVuIGNhbGxlZC4gICovCi1zdGF0aWMg Y2hhciAqKmVudmlyb25idWY7Ci0KLS8qIFRoaXMgaG9sZHMgdGhlIHN0YXJ0dXAgdmFsdWUg b2YgdGhlIFRaIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIGl0Ci0gICBjYW4gYmUgcmVzdG9y ZWQgaWYgdGhlIHVzZXIgY2FsbHMgc2V0LXRpbWUtem9uZS1ydWxlIHdpdGggYSBuaWwKLSAg IGFyZ3VtZW50LiAgKi8KLXN0YXRpYyBjaGFyICppbml0aWFsX3R6OwotCiBERUZVTiAoInNl dC10aW1lLXpvbmUtcnVsZSIsIEZzZXRfdGltZV96b25lX3J1bGUsIFNzZXRfdGltZV96b25l X3J1bGUsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQgdGhlIGxvY2FsIHRpbWUgem9u ZSB1c2luZyBUWiwgYSBzdHJpbmcgc3BlY2lmeWluZyBhIHRpbWUgem9uZSBydWxlLgogSWYg VFogaXMgbmlsLCB1c2UgaW1wbGVtZW50YXRpb24tZGVmaW5lZCBkZWZhdWx0IHRpbWUgem9u ZSBpbmZvcm1hdGlvbi4KQEAgLTIwODksMTggKzIwOTcsMTAgQEAKICAgKExpc3BfT2JqZWN0 IHR6KQogewogICBjb25zdCBjaGFyICp0enN0cmluZzsKLSAgY2hhciAqKm9sZF9lbnZpcm9u YnVmOwogCiAgIGlmICghIChOSUxQICh0eikgfHwgRVEgKHR6LCBRdCkpKQogICAgIENIRUNL X1NUUklORyAodHopOwogCi0gIGJsb2NrX2lucHV0ICgpOwotCi0gIC8qIFdoZW4gY2FsbGVk IGZvciB0aGUgZmlyc3QgdGltZSwgc2F2ZSB0aGUgb3JpZ2luYWwgVFouICAqLwotICBvbGRf ZW52aXJvbmJ1ZiA9IGVudmlyb25idWY7Ci0gIGlmICghb2xkX2Vudmlyb25idWYpCi0gICAg aW5pdGlhbF90eiA9IChjaGFyICopIGdldGVudiAoIlRaIik7Ci0KICAgaWYgKE5JTFAgKHR6 KSkKICAgICB0enN0cmluZyA9IGluaXRpYWxfdHo7CiAgIGVsc2UgaWYgKEVRICh0eiwgUXQp KQpAQCAtMjEwOCwxMDYgKzIxMDgsOTcgQEAKICAgZWxzZQogICAgIHR6c3RyaW5nID0gU1NE QVRBICh0eik7CiAKKyAgYmxvY2tfaW5wdXQgKCk7CiAgIHNldF90aW1lX3pvbmVfcnVsZSAo dHpzdHJpbmcpOwotICBlbnZpcm9uYnVmID0gZW52aXJvbjsKLQogICB1bmJsb2NrX2lucHV0 ICgpOwogCi0gIHhmcmVlIChvbGRfZW52aXJvbmJ1Zik7CiAgIHJldHVybiBRbmlsOwogfQog Ci0jaWZkZWYgTE9DQUxUSU1FX0NBQ0hFCi0KLS8qIFRoZXNlIHR3byB2YWx1ZXMgYXJlIGtu b3duIHRvIGxvYWQgdHogZmlsZXMgaW4gYnVnZ3kgaW1wbGVtZW50YXRpb25zLAotICAgaS5l LiBTb2xhcmlzIDEgZXhlY3V0YWJsZXMgcnVubmluZyB1bmRlciBlaXRoZXIgU29sYXJpcyAx IG9yIFNvbGFyaXMgMi4KLSAgIFRoZWlyIHZhbHVlcyBzaG91bGRuJ3QgbWF0dGVyIGluIG5v bi1idWdneSBpbXBsZW1lbnRhdGlvbnMuCi0gICBXZSBkb24ndCB1c2Ugc3RyaW5nIGxpdGVy YWxzIGZvciB0aGVzZSBzdHJpbmdzLAotICAgc2luY2UgaWYgYSBzdHJpbmcgaW4gdGhlIGVu dmlyb25tZW50IGlzIGluIHJlYWRvbmx5Ci0gICBzdG9yYWdlLCBpdCBydW5zIGFmb3VsIG9m IGJ1Z3MgaW4gU1ZSNCBhbmQgU29sYXJpcyAyLjMuCi0gICBTZWUgU3VuIGJ1Z3MgMTExMzA5 NSBhbmQgMTExNDExNCwgYGBUaW1lem9uZSByb3V0aW5lcwotICAgaW1wcm9wZXJseSBtb2Rp ZnkgZW52aXJvbm1lbnQnJy4gICovCi0KLXN0YXRpYyBjaGFyIHNldF90aW1lX3pvbmVfcnVs ZV90ejFbXSA9ICJUWj1HTVQrMCI7Ci1zdGF0aWMgY2hhciBzZXRfdGltZV96b25lX3J1bGVf dHoyW10gPSAiVFo9R01UKzEiOwotCi0jZW5kaWYKLQogLyogU2V0IHRoZSBsb2NhbCB0aW1l IHpvbmUgcnVsZSB0byBUWlNUUklORy4KLSAgIFRoaXMgYWxsb2NhdGVzIG1lbW9yeSBpbnRv IGBlbnZpcm9uJywgd2hpY2ggaXQgaXMgdGhlIGNhbGxlcidzCi0gICByZXNwb25zaWJpbGl0 eSB0byBmcmVlLiAgKi8KKworICAgVGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkLXNhZmUs IHBhcnRseSBiZWNhdXNlIHB1dGVudiwgdW5zZXRlbnYKKyAgIGFuZCB0enNldCBhcmUgbm90 LCBhbmQgcGFydGx5IGJlY2F1c2Ugb2YgdGhlIHN0YXRpYyBzdG9yYWdlIGl0CisgICB1cGRh dGVzLiAgT3RoZXIgdGhyZWFkcyB0aGF0IGludm9rZSBsb2NhbHRpbWUgZXRjLiBtYXkgYmUg YWR2ZXJzZWx5CisgICBhZmZlY3RlZCB3aGlsZSB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGlu Zy4gICovCiAKIHZvaWQKIHNldF90aW1lX3pvbmVfcnVsZSAoY29uc3QgY2hhciAqdHpzdHJp bmcpCiB7Ci0gIHB0cmRpZmZfdCBlbnZwdHJzOwotICBjaGFyICoqZnJvbSwgKip0bywgKipu ZXdlbnY7Ci0KLSAgLyogTWFrZSB0aGUgRU5WSVJPTiB2ZWN0b3IgbG9uZ2VyIHdpdGggcm9v bSBmb3IgVFpTVFJJTkcuICAqLwotICBmb3IgKGZyb20gPSBlbnZpcm9uOyAqZnJvbTsgZnJv bSsrKQotICAgIGNvbnRpbnVlOwotICBlbnZwdHJzID0gZnJvbSAtIGVudmlyb24gKyAyOwot ICBuZXdlbnYgPSB0byA9IHhtYWxsb2MgKGVudnB0cnMgKiBzaXplb2YgKm5ld2VudgotCQkJ ICsgKHR6c3RyaW5nID8gc3RybGVuICh0enN0cmluZykgKyA0IDogMCkpOwotCi0gIC8qIEFk ZCBUWlNUUklORyB0byB0aGUgZW5kIG9mIGVudmlyb24sIGFzIGEgdmFsdWUgZm9yIFRaLiAg Ki8KKyAgLyogQSBidWZmZXIgaG9sZGluZyBhIHN0cmluZyBvZiB0aGUgZm9ybSAiVFo9dmFs dWUiLCBpbnRlbmRlZAorICAgICB0byBiZSBwYXJ0IG9mIHRoZSBlbnZpcm9ubWVudC4gICov CisgIHN0YXRpYyBjaGFyICp0enZhbGJ1ZjsKKyAgc3RhdGljIHB0cmRpZmZfdCB0enZhbGJ1 ZnNpemU7CisKKyAgaW50IHR6ZXFsZW4gPSBzaXplb2YgIlRaPSIgLSAxOworCisjaWZkZWYg TE9DQUxUSU1FX0NBQ0hFCisgIC8qIFRoZXNlIHR3byB2YWx1ZXMgYXJlIGtub3duIHRvIGxv YWQgdHogZmlsZXMgaW4gYnVnZ3kgaW1wbGVtZW50YXRpb25zLAorICAgICBpLmUuIFNvbGFy aXMgMSBleGVjdXRhYmxlcyBydW5uaW5nIHVuZGVyIGVpdGhlciBTb2xhcmlzIDEgb3IgU29s YXJpcyAyLgorICAgICBUaGVpciB2YWx1ZXMgc2hvdWxkbid0IG1hdHRlciBpbiBub24tYnVn Z3kgaW1wbGVtZW50YXRpb25zLgorICAgICBXZSBkb24ndCB1c2Ugc3RyaW5nIGxpdGVyYWxz IGZvciB0aGVzZSBzdHJpbmdzLAorICAgICBzaW5jZSBpZiBhIHN0cmluZyBpbiB0aGUgZW52 aXJvbm1lbnQgaXMgaW4gcmVhZG9ubHkKKyAgICAgc3RvcmFnZSwgaXQgcnVucyBhZm91bCBv ZiBidWdzIGluIFNWUjQgYW5kIFNvbGFyaXMgMi4zLgorICAgICBTZWUgU3VuIGJ1Z3MgMTEx MzA5NSBhbmQgMTExNDExNCwgYGBUaW1lem9uZSByb3V0aW5lcworICAgICBpbXByb3Blcmx5 IG1vZGlmeSBlbnZpcm9ubWVudCcnLiAgKi8KKworICBzdGF0aWMgY2hhciBzZXRfdGltZV96 b25lX3J1bGVfdHpbXVtzaXplb2YgIlRaPUdNVCswIl0KKyAgICA9IHsgIlRaPUdNVCswIiwg IlRaPUdNVCsxIiB9OworCisgIC8qIEluIFN1bk9TIDQuMS4zX1UxIGFuZCA0LjEuNCwgaWYg VFogaGFzIGEgdmFsdWUgbGlrZQorICAgICAiVVMvUGFjaWZpYyIgdGhhdCBsb2FkcyBhIHR6 IGZpbGUsIHRoZW4gY2hhbmdlcyB0byBhIHZhbHVlIGxpa2UKKyAgICAgIlhYWDAiIHRoYXQg ZG9lcyBub3QgbG9hZCBhIHR6IGZpbGUsIGFuZCB0aGVuIGNoYW5nZXMgYmFjayB0bworICAg ICBpdHMgb3JpZ2luYWwgdmFsdWUsIHRoZSBsYXN0IGNoYW5nZSBpcyAoaW5jb3JyZWN0bHkp IGlnbm9yZWQuCisgICAgIEFsc28sIGlmIFRaIGNoYW5nZXMgdHdpY2UgaW4gc3VjY2Vzc2lv biB0byB2YWx1ZXMgdGhhdCBkbworICAgICBub3QgbG9hZCBhIHR6IGZpbGUsIHR6c2V0IGNh biBkdW1wIGNvcmUgKHNlZSBTdW4gYnVnIzEyMjUxNzkpLgorICAgICBUaGUgZm9sbG93aW5n IGNvZGUgd29ya3MgYXJvdW5kIHRoZXNlIGJ1Z3MuICAqLworCiAgIGlmICh0enN0cmluZykK ICAgICB7Ci0gICAgICBjaGFyICp0ID0gKGNoYXIgKikgKHRvICsgZW52cHRycyk7Ci0gICAg ICBzdHJjcHkgKHQsICJUWj0iKTsKLSAgICAgIHN0cmNhdCAodCwgdHpzdHJpbmcpOwotICAg ICAgKnRvKysgPSB0OwotICAgIH0KLQotICAvKiBDb3B5IHRoZSBvbGQgZW52aXJvbiB2ZWN0 b3IgZWxlbWVudHMgaW50byBORVdFTlYsCi0gICAgIGJ1dCBkb24ndCBjb3B5IHRoZSBUWiB2 YXJpYWJsZS4KLSAgICAgU28gd2UgaGF2ZSBvbmx5IG9uZSBkZWZpbml0aW9uIG9mIFRaLCB3 aGljaCBjYW1lIGZyb20gVFpTVFJJTkcuICAqLwotICBmb3IgKGZyb20gPSBlbnZpcm9uOyAq ZnJvbTsgZnJvbSsrKQotICAgIGlmIChzdHJuY21wICgqZnJvbSwgIlRaPSIsIDMpICE9IDAp Ci0gICAgICAqdG8rKyA9ICpmcm9tOwotICAqdG8gPSAwOwotCi0gIGVudmlyb24gPSBuZXdl bnY7Ci0KLSAgLyogSWYgd2UgZG8gaGF2ZSBhIFRaU1RSSU5HLCBORVdFTlYgcG9pbnRzIHRv IHRoZSB2ZWN0b3Igc2xvdCB3aGVyZQotICAgICB0aGUgVFogdmFyaWFibGUgaXMgc3RvcmVk LiAgSWYgd2UgZG8gbm90IGhhdmUgYSBUWlNUUklORywKLSAgICAgVE8gcG9pbnRzIHRvIHRo ZSB2ZWN0b3Igc2xvdCB3aGljaCBoYXMgdGhlIHRlcm1pbmF0aW5nIG51bGwuICAqLworICAg ICAgLyogVGVtcG9yYXJpbHkgc2V0IFRaIHRvIGEgdmFsdWUgdGhhdCBsb2FkcyBhIHR6IGZp bGUKKwkgYW5kIHRoYXQgZGlmZmVycyBmcm9tIHR6c3RyaW5nLiAgKi8KKyAgICAgIGJvb2wg ZXEwID0gc3RyY21wICh0enN0cmluZywgc2V0X3RpbWVfem9uZV9ydWxlX3R6WzBdICsgdHpl cWxlbikgPT0gMDsKKyAgICAgIHhwdXRlbnYgKHNldF90aW1lX3pvbmVfcnVsZV90eltlcTBd KTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBUaGUgaW1wbGllZCB0enN0cmlu ZyBpcyB1bmtub3duLCBzbyB0ZW1wb3JhcmlseSBzZXQgVFogdG8KKwkgdHdvIGRpZmZlcmVu dCB2YWx1ZXMgdGhhdCBlYWNoIGxvYWQgYSB0eiBmaWxlLiAgKi8KKyAgICAgIHhwdXRlbnYg KHNldF90aW1lX3pvbmVfcnVsZV90elswXSk7CisgICAgICB0enNldCAoKTsKKyAgICAgIHhw dXRlbnYgKHNldF90aW1lX3pvbmVfcnVsZV90elsxXSk7CisgICAgfQorICB0enNldCAoKTsK KyNlbmRpZgorCisgIGlmICghdHpzdHJpbmcpCisgICAgeworICAgICAgdW5zZXRlbnYgKCJU WiIpOworICAgICAgdHp2YWxidWZfaW5fZW52aXJvbiA9IDA7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgcHRyZGlmZl90IHR6c3RyaW5nbGVuID0gc3RybGVuICh0enN0cmluZyk7 CisKKyAgICAgIGlmICh0enZhbGJ1ZnNpemUgPD0gdHplcWxlbiArIHR6c3RyaW5nbGVuKQor CXsKKwkgIHVuc2V0ZW52ICgiVFoiKTsKKwkgIHR6dmFsYnVmX2luX2Vudmlyb24gPSAwOwor CSAgdHp2YWxidWYgPSB4cGFsbG9jICh0enZhbGJ1ZiwgJnR6dmFsYnVmc2l6ZSwKKwkJCSAg ICAgIHR6ZXFsZW4gKyB0enN0cmluZ2xlbiAtIHR6dmFsYnVmc2l6ZSArIDEsIC0xLCAxKTsK KwkgIG1lbWNweSAodHp2YWxidWYsICJUWj0iLCB0emVxbGVuKTsKKwl9CisKKyAgICAgIHN0 cmNweSAodHp2YWxidWYgKyB0emVxbGVuLCB0enN0cmluZyk7CisKKyAgICAgIGlmICghdHp2 YWxidWZfaW5fZW52aXJvbikKKwl7CisJICB4cHV0ZW52ICh0enZhbGJ1Zik7CisJICB0enZh bGJ1Zl9pbl9lbnZpcm9uID0gMTsKKwl9CisgICAgfQogCiAjaWZkZWYgTE9DQUxUSU1FX0NB Q0hFCi0gIHsKLSAgICAvKiBJbiBTdW5PUyA0LjEuM19VMSBhbmQgNC4xLjQsIGlmIFRaIGhh cyBhIHZhbHVlIGxpa2UKLSAgICAgICAiVVMvUGFjaWZpYyIgdGhhdCBsb2FkcyBhIHR6IGZp bGUsIHRoZW4gY2hhbmdlcyB0byBhIHZhbHVlIGxpa2UKLSAgICAgICAiWFhYMCIgdGhhdCBk b2VzIG5vdCBsb2FkIGEgdHogZmlsZSwgYW5kIHRoZW4gY2hhbmdlcyBiYWNrIHRvCi0gICAg ICAgaXRzIG9yaWdpbmFsIHZhbHVlLCB0aGUgbGFzdCBjaGFuZ2UgaXMgKGluY29ycmVjdGx5 KSBpZ25vcmVkLgotICAgICAgIEFsc28sIGlmIFRaIGNoYW5nZXMgdHdpY2UgaW4gc3VjY2Vz c2lvbiB0byB2YWx1ZXMgdGhhdCBkbwotICAgICAgIG5vdCBsb2FkIGEgdHogZmlsZSwgdHpz ZXQgY2FuIGR1bXAgY29yZSAoc2VlIFN1biBidWcjMTIyNTE3OSkuCi0gICAgICAgVGhlIGZv bGxvd2luZyBjb2RlIHdvcmtzIGFyb3VuZCB0aGVzZSBidWdzLiAgKi8KLQotICAgIGlmICh0 enN0cmluZykKLSAgICAgIHsKLQkvKiBUZW1wb3JhcmlseSBzZXQgVFogdG8gYSB2YWx1ZSB0 aGF0IGxvYWRzIGEgdHogZmlsZQotCSAgIGFuZCB0aGF0IGRpZmZlcnMgZnJvbSB0enN0cmlu Zy4gICovCi0JY2hhciAqdHogPSAqbmV3ZW52OwotCSpuZXdlbnYgPSAoc3RyY21wICh0enN0 cmluZywgc2V0X3RpbWVfem9uZV9ydWxlX3R6MSArIDMpID09IDAKLQkJICAgPyBzZXRfdGlt ZV96b25lX3J1bGVfdHoyIDogc2V0X3RpbWVfem9uZV9ydWxlX3R6MSk7Ci0JdHpzZXQgKCk7 Ci0JKm5ld2VudiA9IHR6OwotICAgICAgfQotICAgIGVsc2UKLSAgICAgIHsKLQkvKiBUaGUg aW1wbGllZCB0enN0cmluZyBpcyB1bmtub3duLCBzbyB0ZW1wb3JhcmlseSBzZXQgVFogdG8K LQkgICB0d28gZGlmZmVyZW50IHZhbHVlcyB0aGF0IGVhY2ggbG9hZCBhIHR6IGZpbGUuICAq LwotCSp0byA9IHNldF90aW1lX3pvbmVfcnVsZV90ejE7Ci0JdG9bMV0gPSAwOwotCXR6c2V0 ICgpOwotCSp0byA9IHNldF90aW1lX3pvbmVfcnVsZV90ejI7Ci0JdHpzZXQgKCk7Ci0JKnRv ID0gMDsKLSAgICAgIH0KLQotICAgIC8qIE5vdyBUWiBoYXMgdGhlIGRlc2lyZWQgdmFsdWUs IGFuZCB0enNldCBjYW4gYmUgaW52b2tlZCBzYWZlbHkuICAqLwotICB9Ci0KICAgdHpzZXQg KCk7CiAjZW5kaWYKIH0KQEAgLTQ3OTksOSArNDc5MCw2IEBACiB2b2lkCiBzeW1zX29mX2Vk aXRmbnMgKHZvaWQpCiB7Ci0gIGVudmlyb25idWYgPSAwOwotICBpbml0aWFsX3R6ID0gMDsK LQogICBERUZTWU0gKFFidWZmZXJfYWNjZXNzX2ZvbnRpZnlfZnVuY3Rpb25zLCAiYnVmZmVy LWFjY2Vzcy1mb250aWZ5LWZ1bmN0aW9ucyIpOwogCiAgIERFRlZBUl9MSVNQICgiaW5oaWJp dC1maWVsZC10ZXh0LW1vdGlvbiIsIFZpbmhpYml0X2ZpZWxkX3RleHRfbW90aW9uLAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy9lbWFjcy5jJwotLS0gc3JjL2VtYWNzLmMJMjAxMi0xMS0y MSAwNDo0Nzo1NSArMDAwMAorKysgc3JjL2VtYWNzLmMJMjAxMi0xMi0wMyAyMDowMzoyMiAr MDAwMApAQCAtNTM1LDcgKzUzNSw3IEBACiAjaWZkZWYgSEFWRV9UWlNFVAogLyogQSB2YWxp ZCBidXQgdW5saWtlbHkgdmFsdWUgZm9yIHRoZSBUWiBlbnZpcm9ubWVudCB2YWx1ZS4KICAg IEl0IGlzIE9LICh0aG91Z2ggYSBiaXQgc2xvd2VyKSBpZiB0aGUgdXNlciBhY3R1YWxseSBj aG9vc2VzIHRoaXMgdmFsdWUuICAqLwotc3RhdGljIGNoYXIgZHVtcF90eltdID0gIlV0QzAi Oworc3RhdGljIGNoYXIgY29uc3QgZHVtcF90eltdID0gIlV0QzAiOwogI2VuZGlmCiAKICNp Zm5kZWYgT1JESU5BUllfTElOSwpAQCAtNzE3LDcgKzcxNyw3IEBACiAKICNpZmRlZiBHX1NM SUNFX0FMV0FZU19NQUxMT0MKICAgLyogVGhpcyBpcyB1c2VkIGJ5IHRoZSBDeWd3aW4gYnVp bGQuICAqLwotICBzZXRlbnYgKCJHX1NMSUNFIiwgImFsd2F5cy1tYWxsb2MiLCAxKTsKKyAg eHB1dGVudiAoIkdfU0xJQ0U9YWx3YXlzLW1hbGxvYyIpOwogI2VuZGlmCiAKICNpZmRlZiBH TlVfTElOVVgKQEAgLTgwMyw5ICs4MDMsOCBAQAogI2lmZGVmIEhBVkVfUEVSU09OQUxJVFlf TElOVVgzMgogICBpZiAoZHVtcGluZyAmJiAhIGdldGVudiAoIkVNQUNTX0hFQVBfRVhFQyIp KQogICAgIHsKLSAgICAgIHN0YXRpYyBjaGFyIGhlYXBleGVjW10gPSAiRU1BQ1NfSEVBUF9F WEVDPXRydWUiOwogICAgICAgLyogU2V0IHRoaXMgc28gd2Ugb25seSBkbyB0aGlzIG9uY2Uu ICAqLwotICAgICAgcHV0ZW52IChoZWFwZXhlYyk7CisgICAgICB4cHV0ZW52ICgiRU1BQ1Nf SEVBUF9FWEVDPXRydWUiKTsKIAogICAgICAgLyogQSBmbGFnIHRvIHR1cm4gb2ZmIGFkZHJl c3MgcmFuZG9taXphdGlvbiB3aGljaCBpcyBpbnRyb2R1Y2VkCiAgICAgICAgICBpbiBsaW51 eCBrZXJuZWwgc2hpcHBlZCB3aXRoIGZlZG9yYSBjb3JlIDQgKi8KQEAgLTEzMDksNyArMTMw OCw3IEBACiAgICAgIGRvbid0IHBvbGx1dGUgVmdsb2JhbF9lbnZpcm9ubWVudC4gICovCiAg IC8qIFNldHRpbmcgTEFORyBoZXJlIHdpbGwgZGVmZWF0IHRoZSBzdGFydHVwIGxvY2FsZSBw cm9jZXNzaW5nLi4uICAqLwogI2lmZGVmIEFJWAotICBwdXRlbnYgKCJMQU5HPUMiKTsKKyAg eHB1dGVudiAoIkxBTkc9QyIpOwogI2VuZGlmCiAKICAgaW5pdF9idWZmZXIgKCk7CS8qIElu aXQgZGVmYXVsdCBkaXJlY3Rvcnkgb2YgbWFpbiBidWZmZXIuICAqLwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9saXNwLmgnCi0tLSBzcmMvbGlzcC5oCTIwMTItMTItMDQgMTU6MTU6MzAg KzAwMDAKKysrIHNyYy9saXNwLmgJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMzU5 NCw2ICszNTk0LDcgQEAKIGV4dGVybiB2b2lkICp4cGFsbG9jICh2b2lkICosIHB0cmRpZmZf dCAqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKIAogZXh0ZXJuIGNoYXIg KnhzdHJkdXAgKGNvbnN0IGNoYXIgKik7CitleHRlcm4gdm9pZCB4cHV0ZW52IChjb25zdCBj aGFyICopOwogCiBleHRlcm4gY2hhciAqZWdldGVudiAoY29uc3QgY2hhciAqKTsKIAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy94dGVybS5jJwotLS0gc3JjL3h0ZXJtLmMJMjAxMi0xMi0w NCAxNToxNTozMCArMDAwMAorKysgc3JjL3h0ZXJtLmMJMjAxMi0xMi0wOCAwMzo0Njo1OSAr MDAwMApAQCAtOTkwOCwxMCArOTkwOCw3IEBACiAKICAgICAgICAgLyogRW1hY3MgY2FuIG9u bHkgaGFuZGxlIGNvcmUgaW5wdXQgZXZlbnRzLCBzbyBtYWtlIHN1cmUKICAgICAgICAgICAg R3RrIGRvZXNuJ3QgdXNlIFhpbnB1dCBvciBYaW5wdXQyIGV4dGVuc2lvbnMuICAqLwotICAg ICAgICB7Ci0gICAgICAgICAgc3RhdGljIGNoYXIgZml4X2V2ZW50c1tdID0gIkdES19DT1JF X0RFVklDRV9FVkVOVFM9MSI7Ci0gICAgICAgICAgcHV0ZW52IChmaXhfZXZlbnRzKTsKLSAg ICAgICAgfQorCXhwdXRlbnYgKCJHREtfQ09SRV9ERVZJQ0VfRVZFTlRTPTEiKTsKIAogICAg ICAgICAvKiBXb3JrIGFyb3VuZCBHTGliIGJ1ZyB0aGF0IG91dHB1dHMgYSBmYXVsdHkgd2Fy bmluZy4gU2VlCiAgICAgICAgICAgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3df YnVnLmNnaT9pZD01NjM2MjcuICAqLwoK --------------090204060905090807070004-- From unknown Mon Aug 18 04:41:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Dec 2012 11:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Paul Eggert Cc: 13070@debbugs.gnu.org, fabrice.popineau@gmail.com Reply-To: Eli Zaretskii Received: via spool by 13070-submit@debbugs.gnu.org id=B13070.135496700820905 (code B ref 13070); Sat, 08 Dec 2012 11:44:02 +0000 Received: (at 13070) by debbugs.gnu.org; 8 Dec 2012 11:43:28 +0000 Received: from localhost ([127.0.0.1]:59973 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThIoZ-0005R7-AJ for submit@debbugs.gnu.org; Sat, 08 Dec 2012 06:43:27 -0500 Received: from mtaout20.012.net.il ([80.179.55.166]:38273) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThIoW-0005Qz-M4 for 13070@debbugs.gnu.org; Sat, 08 Dec 2012 06:43:26 -0500 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MEP00I00MXRES00@a-mtaout20.012.net.il> for 13070@debbugs.gnu.org; Sat, 08 Dec 2012 13:42:59 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MEP00ISMN7ME520@a-mtaout20.012.net.il>; Sat, 08 Dec 2012 13:42:59 +0200 (IST) Date: Sat, 08 Dec 2012 13:42:43 +0200 From: Eli Zaretskii In-reply-to: <50C2BBD9.8060401@cs.ucla.edu> X-012-Sender: halo1@inter.net.il Message-id: <83zk1olqh8.fsf@gnu.org> References: <50BD0C72.7070601@cs.ucla.edu> <50C2BBD9.8060401@cs.ucla.edu> X-Spam-Score: 0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 07 Dec 2012 20:02:33 -0800 > From: Paul Eggert > CC: 13070@debbugs.gnu.org, Eli Zaretskii > > On 12/04/2012 05:51 AM, Fabrice Popineau wrote: > > Provided I added some unsetenv() function for w32. > > Can you just add $(BLD)/unsetenv.$(O) to GNULIBOBJS > in lib/makefile.w32-in, or something like that? No point in > having two implementations of unsetenv. I suspect the gnulib implementation won't work for Windows, for the same reasons the original code you are replacing didn't: it messes with the environ block, which is allocated on a heap that is different from the heap used by Emacs. Even if we don't use the gnulib putenv implementation, moving pointers in the environ block that belongs to the Windows runtime library is something I'd like to avoid if possible. However, I have just installed in trunk revision 111156 changes that add to w32.c an implementation of unsetenv, and a wrapper for putenv that makes it more Posix-compliant. So you can now commit your changes, and I believe they will work. > I've attached a revised patch (sans any change to makefile.w32-in), > relative to trunk bzr 111151. Thanks. > +void > +xputenv (char const *string) > +{ > + if (putenv ((char *) string) != 0) > + memory_full (0); > +} Shouldn't we refrain from signaling memory_full when errno is EINVAL? I'd suggest an eassert in that case. memory_full will emit a misleading diagnostic. From unknown Mon Aug 18 04:41:59 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.428 (Entity 5.428) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Paul Eggert Subject: bug#13070: closed (Re: Use putenv+unsetenv instead of modifying environ directly) Message-ID: References: <50C376F9.3000603@cs.ucla.edu> <50BD0C72.7070601@cs.ucla.edu> X-Gnu-PR-Message: they-closed 13070 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 13070@debbugs.gnu.org Date: Sat, 08 Dec 2012 17:22:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1354987322-21906-1" This is a multi-part message in MIME format... ------------=_1354987322-21906-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #13070: Use putenv+unsetenv instead of modifying environ directly which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 13070@debbugs.gnu.org. --=20 13070: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D13070 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1354987322-21906-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 13070-done) by debbugs.gnu.org; 8 Dec 2012 17:21:22 +0000 Received: from localhost ([127.0.0.1]:33094 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThO5Z-0005gK-No for submit@debbugs.gnu.org; Sat, 08 Dec 2012 12:21:21 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:47721) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThO5W-0005gC-US for 13070-done@debbugs.gnu.org; Sat, 08 Dec 2012 12:21:20 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 2695CA60002; Sat, 8 Dec 2012 09:20:53 -0800 (PST) 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 qWzfovDmM5FE; Sat, 8 Dec 2012 09:20:52 -0800 (PST) Received: from [192.168.1.3] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 6C630A60001; Sat, 8 Dec 2012 09:20:52 -0800 (PST) Message-ID: <50C376F9.3000603@cs.ucla.edu> Date: Sat, 08 Dec 2012 09:20:57 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Use putenv+unsetenv instead of modifying environ directly References: <50BD0C72.7070601@cs.ucla.edu> <50C2BBD9.8060401@cs.ucla.edu> <83zk1olqh8.fsf@gnu.org> In-Reply-To: <83zk1olqh8.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: 13070-done Cc: 13070-done@debbugs.gnu.org, fabrice.popineau@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.5 (-) On 12/08/2012 03:42 AM, Eli Zaretskii wrote: > Shouldn't we refrain from signaling memory_full when errno is EINVAL? > I'd suggest an eassert in that case. memory_full will emit a > misleading diagnostic. errno cannot be EINVAL, at least not on a POSIXish host: all strings are allowed as arguments to putenv. If Microsoft platforms are different it would make sense to put in an eassert, in w32.c presumably. I did see a minor problem in the w32.c implementation of unsetenv: /* MS docs says an environment variable cannot be longer than 32K. */ if (name_len > 32767) { errno = ENOMEM; return -1; } unsetenv should return 0 in that case, not -1, since the variable cannot possibly be in the environment. This bug doesn't affect Emacs so it's not a pressing one. I committed the patch as trunk bzr 111158 and am marking this bug as fixed. ------------=_1354987322-21906-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 3 Dec 2012 20:36:02 +0000 Received: from localhost ([127.0.0.1]:51957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfckC-0000SK-Fg for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:36:02 -0500 Received: from eggs.gnu.org ([208.118.235.92]:34266) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfck6-0000S9-BP for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:35:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tfchi-0003Ls-7y for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:33:30 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:49779) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfchi-0003Ln-3l for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:33:26 -0500 Received: from eggs.gnu.org ([208.118.235.92]:46620) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfchd-0005e6-E9 for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:33:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfchT-0003K6-81 for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:33:20 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:34276) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfchS-0003JE-NG; Mon, 03 Dec 2012 15:33:11 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 2807EA60003; Mon, 3 Dec 2012 12:33:00 -0800 (PST) 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 7imZSepGUAjn; Mon, 3 Dec 2012 12:32:56 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id BE391A60001; Mon, 3 Dec 2012 12:32:56 -0800 (PST) Message-ID: <50BD0C72.7070601@cs.ucla.edu> Date: Mon, 03 Dec 2012 12:32:50 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: Use putenv+unsetenv instead of modifying environ directly Content-Type: multipart/mixed; boundary="------------020805030603090107030509" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-Debbugs-Envelope-To: submit Cc: Eli Zaretskii , Fabrice Popineau X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) This is a multi-part message in MIME format. --------------020805030603090107030509 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch The attached patch is in response to last week's thread on emacs-devel . It's relative to trunk bzr 111078. Tested on Fedora 17. I don't see any issues related to the Microsoft port but I'm CC:ing this to Eli and Fabrice just in case, as the original bug seems to be Windows-related. --------------020805030603090107030509 Content-Type: text/plain; charset=us-ascii; name="setenv.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setenv.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTExLTMw IDE4OjI1OjU5ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMi0wMyAyMDowMzoyMiArMDAw MApAQCAtMSwzICsxLDExIEBACisyMDEyLTEyLTAzICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KKworCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlp bmcgZW52aXJvbiBkaXJlY3RseS4KKwkqIGxpYi9wdXRlbnYuYywgbGliL3Vuc2V0ZW52LmMs IG00L3B1dGVudi5tNCwgbTQvc2V0ZW52Lm00OgorCU5ldyBmaWxlcywgY29waWVkIGF1dG9t YXRpY2FsbHkgZnJvbSBnbnVsaWIuCisJKiBsaWIvZ251bGliLm1rLCBtNC9nbnVsaWItY29t cC5tNDogUmVnZW5lcmF0ZS4KKwkqIG1lcmdlLWdudWxpYiAoR05VTElCX01PRFVMRVMpOiBB ZGQgcHV0ZW52LCB1bnNldGVudi4KKwogMjAxMi0xMS0zMCAgUGF1bCBFZ2dlcnQgIDxlZ2dl cnRAY3MudWNsYS5lZHU+CiAKIAlNZXJnZSBmcm9tIGdudWxpYiBmb3IgJ2lubGluZScgKEJ1 ZyMxMzA0MCksIGluY29ycG9yYXRpbmc6Cgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4vQ2hh bmdlTG9nJwotLS0gYWRtaW4vQ2hhbmdlTG9nCTIwMTItMTEtMjQgMTc6MjA6NDkgKzAwMDAK KysrIGFkbWluL0NoYW5nZUxvZwkyMDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0xLDMg KzEsOCBAQAorMjAxMi0xMi0wMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+ CisKKwlVc2UgcHV0ZW52K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24g ZGlyZWN0bHkuCisJKiBtZXJnZS1nbnVsaWIgKEdOVUxJQl9NT0RVTEVTKTogQWRkIHB1dGVu diwgdW5zZXRlbnYuCisKIDIwMTItMTEtMjQgIEtlbiBCcm93biAgPGticm93bkBjb3JuZWxs LmVkdT4KIAogCSogQ1BQLURFRklORVMgKEhBVkVfTU9VU0UpOiBSZW1vdmUuCgo9PT0gbW9k aWZpZWQgZmlsZSAnYWRtaW4vbWVyZ2UtZ251bGliJwotLS0gYWRtaW4vbWVyZ2UtZ251bGli CTIwMTItMTEtMTcgMjI6MTI6NDcgKzAwMDAKKysrIGFkbWluL21lcmdlLWdudWxpYgkyMDEy LTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0zMSwxMCArMzEsMTAgQEAKICAgZHRvYXN0ciBk dG90aW1lc3BlYyBkdXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0CiAgIGZjbnRsLWgg ZmlsZW1vZGUgZ2V0bG9hZGF2ZyBnZXRvcHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5CiAg IGlnbm9yZS12YWx1ZSBpbnRwcm9wcyBsYXJnZWZpbGUgbHN0YXQKLSAgbWFueXdhcm5pbmdz IG1rdGltZSBwc2VsZWN0IHB0aHJlYWRfc2lnbWFzayByZWFkbGluaworICBtYW55d2Fybmlu Z3MgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluawogICBz b2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcgc3RkYm9vbCBzdGRpbwogICBzdHJm dGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lzX3N0YXQKLSAgc3lzX3RpbWUg dGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1zdWIgdXRpbWVucworICBz eXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1bnNl dGVudiB1dGltZW5zCiAgIHdhcm5pbmdzCiAnCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaWIv Z251bGliLm1rJwotLS0gbGliL2dudWxpYi5tawkyMDEyLTExLTMwIDE4OjI1OjU5ICswMDAw CisrKyBsaWIvZ251bGliLm1rCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTIxLDcg KzIxLDcgQEAKICMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9m IHRoYXQgcHJvZ3JhbS4KICMKICMgR2VuZXJhdGVkIGJ5IGdudWxpYi10b29sLgotIyBSZXBy b2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1wb3J0IC0tZGlyPS4gLS1saWI9bGliZ251IC0t c291cmNlLWJhc2U9bGliIC0tbTQtYmFzZT1tNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJh c2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLWF2b2lkPWF0LWludGVybmFsIC0tYXZv aWQ9ZXJybm8gLS1hdm9pZD1mY2hkaXIgLS1hdm9pZD1mY250bCAtLWF2b2lkPWZzdGF0IC0t YXZvaWQ9bWFsbG9jLXBvc2l4IC0tYXZvaWQ9bXN2Yy1pbnZhbCAtLWF2b2lkPW1zdmMtbm90 aHJvdyAtLWF2b2lkPW9wZW5hdC1kaWUgLS1hdm9pZD1vcGVuYXQtaCAtLWF2b2lkPXJhaXNl IC0tYXZvaWQ9c2F2ZS1jd2QgLS1hdm9pZD1zZWxlY3QgLS1hdm9pZD1zaWdwcm9jbWFzayAt LWF2b2lkPXN5c190eXBlcyAtLWF2b2lkPXRocmVhZGxpYiAtLW1ha2VmaWxlLW5hbWU9Z251 bGliLm1rIC0tY29uZGl0aW9uYWwtZGVwZW5kZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3Jv LXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGFsbG9jYS1vcHQgYy1jdHlwZSBjLXN0cmNhc2Ug Y2FyZWFkbGlua2F0IGNsb3NlLXN0cmVhbSBjcnlwdG8vbWQ1IGNyeXB0by9zaGExIGNyeXB0 by9zaGEyNTYgY3J5cHRvL3NoYTUxMiBkdG9hc3RyIGR0b3RpbWVzcGVjIGR1cDIgZW52aXJv biBleGVjaW5mbyBmYWNjZXNzYXQgZmNudGwtaCBmaWxlbW9kZSBnZXRsb2FkYXZnIGdldG9w dC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkgaWdub3JlLXZhbHVlIGludHByb3BzIGxhcmdl ZmlsZSBsc3RhdCBtYW55d2FybmluZ3MgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNr IHJlYWRsaW5rIHNvY2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0 ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdCBzeXNf dGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1dGltZW5z IHdhcm5pbmdzCisjIFJlcHJvZHVjZSBieTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9 LiAtLWxpYj1saWJnbnUgLS1zb3VyY2UtYmFzZT1saWIgLS1tNC1iYXNlPW00IC0tZG9jLWJh c2U9ZG9jIC0tdGVzdHMtYmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tYXZvaWQ9 YXQtaW50ZXJuYWwgLS1hdm9pZD1lcnJubyAtLWF2b2lkPWZjaGRpciAtLWF2b2lkPWZjbnRs IC0tYXZvaWQ9ZnN0YXQgLS1hdm9pZD1tYWxsb2MtcG9zaXggLS1hdm9pZD1tc3ZjLWludmFs IC0tYXZvaWQ9bXN2Yy1ub3Rocm93IC0tYXZvaWQ9b3BlbmF0LWRpZSAtLWF2b2lkPW9wZW5h dC1oIC0tYXZvaWQ9cmFpc2UgLS1hdm9pZD1zYXZlLWN3ZCAtLWF2b2lkPXNlbGVjdCAtLWF2 b2lkPXNpZ3Byb2NtYXNrIC0tYXZvaWQ9c3lzX3R5cGVzIC0tYXZvaWQ9dGhyZWFkbGliIC0t bWFrZWZpbGUtbmFtZT1nbnVsaWIubWsgLS1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1u by1saWJ0b29sIC0tbWFjcm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYWxsb2NhLW9wdCBj LWN0eXBlIGMtc3RyY2FzZSBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUg Y3J5cHRvL3NoYTEgY3J5cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyIGR0b2FzdHIgZHRvdGlt ZXNwZWMgZHVwMiBlbnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdCBmY250bC1oIGZpbGVtb2Rl IGdldGxvYWRhdmcgZ2V0b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFs dWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxzdGF0IG1hbnl3YXJuaW5ncyBta3RpbWUgcHNlbGVj dCBwdGhyZWFkX3NpZ21hc2sgcHV0ZW52IHJlYWRsaW5rIHNvY2tsZW4gc3RhdC10aW1lIHN0 ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3Vt YXggc3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMt YWRkIHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdhcm5pbmdzCiAKIAogTU9TVExZ Q0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC00MzksNiArNDM5LDE1IEBACiAK ICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgcHRocmVhZF9zaWdtYXNrCiAKKyMjIGJlZ2luIGdu dWxpYiBtb2R1bGUgcHV0ZW52CisKKworRVhUUkFfRElTVCArPSBwdXRlbnYuYworCitFWFRS QV9saWJnbnVfYV9TT1VSQ0VTICs9IHB1dGVudi5jCisKKyMjIGVuZCAgIGdudWxpYiBtb2R1 bGUgcHV0ZW52CisKICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgcmVhZGxpbmsKIAogCkBAIC0x NDAwLDYgKzE0MDksMTUgQEAKIAogIyMgZW5kICAgZ251bGliIG1vZHVsZSB1bmlzdGQKIAor IyMgYmVnaW4gZ251bGliIG1vZHVsZSB1bnNldGVudgorCisKK0VYVFJBX0RJU1QgKz0gdW5z ZXRlbnYuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9IHVuc2V0ZW52LmMKKworIyMg ZW5kICAgZ251bGliIG1vZHVsZSB1bnNldGVudgorCiAjIyBiZWdpbiBnbnVsaWIgbW9kdWxl IHV0aW1lbnMKIAogbGliZ251X2FfU09VUkNFUyArPSB1dGltZW5zLmMKCj09PSBhZGRlZCBm aWxlICdsaWIvcHV0ZW52LmMnCi0tLSBsaWIvcHV0ZW52LmMJMTk3MC0wMS0wMSAwMDowMDow MCArMDAwMAorKysgbGliL3B1dGVudi5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAg LTAsMCArMSwxMzQgQEAKKy8qIENvcHlyaWdodCAoQykgMTk5MSwgMTk5NCwgMTk5Ny0xOTk4 LCAyMDAwLCAyMDAzLTIwMTIgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLgor CisgICBOT1RFOiBUaGUgY2Fub25pY2FsIHNvdXJjZSBvZiB0aGlzIGZpbGUgaXMgbWFpbnRh aW5lZCB3aXRoIHRoZSBHTlUgQworICAgTGlicmFyeS4gIEJ1Z3MgY2FuIGJlIHJlcG9ydGVk IHRvIGJ1Zy1nbGliY0BwcmVwLmFpLm1pdC5lZHUuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgYW55CisgICBsYXRlciB2ZXJzaW9u LgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisKKy8q IFNwZWNpZmljYXRpb24uICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8 c3RkZGVmLmg+CisKKy8qIEluY2x1ZGUgZXJybm8uaCAqYWZ0ZXIqIHN5cy90eXBlcy5oIHRv IHdvcmsgYXJvdW5kIGhlYWRlciBwcm9ibGVtcworICAgb24gQUlYIDMuMi41LiAgKi8KKyNp bmNsdWRlIDxlcnJuby5oPgorI2lmbmRlZiBfX3NldF9lcnJubworIyBkZWZpbmUgX19zZXRf ZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5n Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBfTElCQworIyBpZiBIQVZFX0dOVV9M RAorIyAgZGVmaW5lIGVudmlyb24gX19lbnZpcm9uCisjIGVsc2UKK2V4dGVybiBjaGFyICoq ZW52aXJvbjsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBw cm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9u Jy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZp bmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xp YmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBkZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3Vu bG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRlZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sK KyNlbmRpZgorCitzdGF0aWMgaW50CitfdW5zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUpCit7 CisgIHNpemVfdCBsZW47CisgIGNoYXIgKiplcDsKKworICBpZiAobmFtZSA9PSBOVUxMIHx8 ICpuYW1lID09ICdcMCcgfHwgc3RyY2hyIChuYW1lLCAnPScpICE9IE5VTEwpCisgICAgewor ICAgICAgX19zZXRfZXJybm8gKEVJTlZBTCk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQor CisgIGxlbiA9IHN0cmxlbiAobmFtZSk7CisKKyAgTE9DSzsKKworICBlcCA9IGVudmlyb247 CisgIHdoaWxlICgqZXAgIT0gTlVMTCkKKyAgICBpZiAoIXN0cm5jbXAgKCplcCwgbmFtZSwg bGVuKSAmJiAoKmVwKVtsZW5dID09ICc9JykKKyAgICAgIHsKKyAgICAgICAgLyogRm91bmQg aXQuICBSZW1vdmUgdGhpcyBwb2ludGVyIGJ5IG1vdmluZyBsYXRlciBvbmVzIGJhY2suICAq LworICAgICAgICBjaGFyICoqZHAgPSBlcDsKKworICAgICAgICBkbworICAgICAgICAgIGRw WzBdID0gZHBbMV07CisgICAgICAgIHdoaWxlICgqZHArKyk7CisgICAgICAgIC8qIENvbnRp bnVlIHRoZSBsb29wIGluIGNhc2UgTkFNRSBhcHBlYXJzIGFnYWluLiAgKi8KKyAgICAgIH0K KyAgICBlbHNlCisgICAgICArK2VwOworCisgIFVOTE9DSzsKKworICByZXR1cm4gMDsKK30K KworCisvKiBQdXQgU1RSSU5HLCB3aGljaCBpcyBvZiB0aGUgZm9ybSAiTkFNRT1WQUxVRSIs IGluIHRoZSBlbnZpcm9ubWVudC4KKyAgIElmIFNUUklORyBjb250YWlucyBubyAnPScsIHRo ZW4gcmVtb3ZlIFNUUklORyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gICovCitpbnQKK3B1dGVu diAoY2hhciAqc3RyaW5nKQoreworICBjb25zdCBjaGFyICpjb25zdCBuYW1lX2VuZCA9IHN0 cmNociAoc3RyaW5nLCAnPScpOworICByZWdpc3RlciBzaXplX3Qgc2l6ZTsKKyAgcmVnaXN0 ZXIgY2hhciAqKmVwOworCisgIGlmIChuYW1lX2VuZCA9PSBOVUxMKQorICAgIHsKKyAgICAg IC8qIFJlbW92ZSB0aGUgdmFyaWFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQuICAqLworICAg ICAgcmV0dXJuIF91bnNldGVudiAoc3RyaW5nKTsKKyAgICB9CisKKyAgc2l6ZSA9IDA7Cisg IGZvciAoZXAgPSBlbnZpcm9uOyAqZXAgIT0gTlVMTDsgKytlcCkKKyAgICBpZiAoIXN0cm5j bXAgKCplcCwgc3RyaW5nLCBuYW1lX2VuZCAtIHN0cmluZykgJiYKKyAgICAgICAgKCplcClb bmFtZV9lbmQgLSBzdHJpbmddID09ICc9JykKKyAgICAgIGJyZWFrOworICAgIGVsc2UKKyAg ICAgICsrc2l6ZTsKKworICBpZiAoKmVwID09IE5VTEwpCisgICAgeworICAgICAgc3RhdGlj IGNoYXIgKipsYXN0X2Vudmlyb24gPSBOVUxMOworICAgICAgY2hhciAqKm5ld19lbnZpcm9u ID0gKGNoYXIgKiopIG1hbGxvYyAoKHNpemUgKyAyKSAqIHNpemVvZiAoY2hhciAqKSk7Cisg ICAgICBpZiAobmV3X2Vudmlyb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAg ICAgKHZvaWQpIG1lbWNweSAoKHZvaWQgKikgbmV3X2Vudmlyb24sICh2b2lkICopIGVudmly b24sCisgICAgICAgICAgICAgICAgICAgICBzaXplICogc2l6ZW9mIChjaGFyICopKTsKKyAg ICAgIG5ld19lbnZpcm9uW3NpemVdID0gKGNoYXIgKikgc3RyaW5nOworICAgICAgbmV3X2Vu dmlyb25bc2l6ZSArIDFdID0gTlVMTDsKKyAgICAgIGZyZWUgKGxhc3RfZW52aXJvbik7Cisg ICAgICBsYXN0X2Vudmlyb24gPSBuZXdfZW52aXJvbjsKKyAgICAgIGVudmlyb24gPSBuZXdf ZW52aXJvbjsKKyAgICB9CisgIGVsc2UKKyAgICAqZXAgPSBzdHJpbmc7CisKKyAgcmV0dXJu IDA7Cit9Cgo9PT0gYWRkZWQgZmlsZSAnbGliL3Vuc2V0ZW52LmMnCi0tLSBsaWIvdW5zZXRl bnYuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBsaWIvdW5zZXRlbnYuYwkyMDEy LTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTI3IEBACisvKiBDb3B5cmlnaHQg KEMpIDE5OTIsIDE5OTUtMjAwMiwgMjAwNS0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisK KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKworLyogRG9uJ3QgdXNlIF9fYXR0 cmlidXRlX18gX19ub25udWxsX18gaW4gdGhpcyBjb21waWxhdGlvbiB1bml0LiAgT3RoZXJ3 aXNlIGdjYworICAgb3B0aW1pemVzIGF3YXkgdGhlIG5hbWUgPT0gTlVMTCB0ZXN0IGJlbG93 LiAgKi8KKyNkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykKKworLyogU3BlY2lmaWNh dGlvbi4gICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgor I2lmICFfTElCQworIyBkZWZpbmUgX19zZXRfZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkK KyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisK KyNpZiAhX0xJQkMKKyMgZGVmaW5lIF9fZW52aXJvbiAgICAgIGVudmlyb24KKyNlbmRpZgor CisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBwcm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91 cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9uJy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGli Yy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52 bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xpYmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBk ZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3VubG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRl ZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sKKyNlbmRpZgorCisvKiBJbiB0aGUgR05VIEMg bGlicmFyeSB3ZSBtdXN0IGtlZXAgdGhlIG5hbWVzcGFjZSBjbGVhbi4gICovCisjaWZkZWYg X0xJQkMKKyMgZGVmaW5lIHVuc2V0ZW52IF9fdW5zZXRlbnYKKyNlbmRpZgorCisjaWYgX0xJ QkMgfHwgIUhBVkVfVU5TRVRFTlYKKworaW50Cit1bnNldGVudiAoY29uc3QgY2hhciAqbmFt ZSkKK3sKKyAgc2l6ZV90IGxlbjsKKyAgY2hhciAqKmVwOworCisgIGlmIChuYW1lID09IE5V TEwgfHwgKm5hbWUgPT0gJ1wwJyB8fCBzdHJjaHIgKG5hbWUsICc9JykgIT0gTlVMTCkKKyAg ICB7CisgICAgICBfX3NldF9lcnJubyAoRUlOVkFMKTsKKyAgICAgIHJldHVybiAtMTsKKyAg ICB9CisKKyAgbGVuID0gc3RybGVuIChuYW1lKTsKKworICBMT0NLOworCisgIGVwID0gX19l bnZpcm9uOworICB3aGlsZSAoKmVwICE9IE5VTEwpCisgICAgaWYgKCFzdHJuY21wICgqZXAs IG5hbWUsIGxlbikgJiYgKCplcClbbGVuXSA9PSAnPScpCisgICAgICB7CisgICAgICAgIC8q IEZvdW5kIGl0LiAgUmVtb3ZlIHRoaXMgcG9pbnRlciBieSBtb3ZpbmcgbGF0ZXIgb25lcyBi YWNrLiAgKi8KKyAgICAgICAgY2hhciAqKmRwID0gZXA7CisKKyAgICAgICAgZG8KKyAgICAg ICAgICBkcFswXSA9IGRwWzFdOworICAgICAgICB3aGlsZSAoKmRwKyspOworICAgICAgICAv KiBDb250aW51ZSB0aGUgbG9vcCBpbiBjYXNlIE5BTUUgYXBwZWFycyBhZ2Fpbi4gICovCisg ICAgICB9CisgICAgZWxzZQorICAgICAgKytlcDsKKworICBVTkxPQ0s7CisKKyAgcmV0dXJu IDA7Cit9CisKKyNpZmRlZiBfTElCQworIyB1bmRlZiB1bnNldGVudgord2Vha19hbGlhcyAo X191bnNldGVudiwgdW5zZXRlbnYpCisjZW5kaWYKKworI2Vsc2UgLyogSEFWRV9VTlNFVEVO ViAqLworCisjIHVuZGVmIHVuc2V0ZW52CisjIGlmICFIQVZFX0RFQ0xfVU5TRVRFTlYKKyMg IGlmIFZPSURfVU5TRVRFTlYKK2V4dGVybiB2b2lkIHVuc2V0ZW52IChjb25zdCBjaGFyICop OworIyAgZWxzZQorZXh0ZXJuIGludCB1bnNldGVudiAoY29uc3QgY2hhciAqKTsKKyMgIGVu ZGlmCisjIGVuZGlmCisKKy8qIENhbGwgdGhlIHVuZGVybHlpbmcgdW5zZXRlbnYsIGluIGNh c2UgdGhlcmUgaXMgaGlkZGVuIGJvb2trZWVwaW5nCisgICB0aGF0IG5lZWRzIHVwZGF0aW5n IGJleW9uZCBqdXN0IG1vZGlmeWluZyBlbnZpcm9uLiAgKi8KK2ludAorcnBsX3Vuc2V0ZW52 IChjb25zdCBjaGFyICpuYW1lKQoreworICBpbnQgcmVzdWx0ID0gMDsKKyAgaWYgKCFuYW1l IHx8ICEqbmFtZSB8fCBzdHJjaHIgKG5hbWUsICc9JykpCisgICAgeworICAgICAgZXJybm8g PSBFSU5WQUw7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB3aGlsZSAoZ2V0ZW52IChu YW1lKSkKKyMgaWYgIVZPSURfVU5TRVRFTlYKKyAgICByZXN1bHQgPQorIyBlbmRpZgorICAg ICAgdW5zZXRlbnYgKG5hbWUpOworICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLyog SEFWRV9VTlNFVEVOViAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ200L2dudWxpYi1jb21wLm00 JwotLS0gbTQvZ251bGliLWNvbXAubTQJMjAxMi0xMS0zMCAxODoyNTo1OSArMDAwMAorKysg bTQvZ251bGliLWNvbXAubTQJMjAxMi0xMi0wMyAyMDowMzoyMiArMDAwMApAQCAtODUsNiAr ODUsNyBAQAogICAjIENvZGUgZnJvbSBtb2R1bGUgcGF0aG1heDoKICAgIyBDb2RlIGZyb20g bW9kdWxlIHBzZWxlY3Q6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBwdGhyZWFkX3NpZ21hc2s6 CisgICMgQ29kZSBmcm9tIG1vZHVsZSBwdXRlbnY6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBy ZWFkbGluazoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHJvb3QtdWlkOgogICAjIENvZGUgZnJv bSBtb2R1bGUgc2lnbmFsLWg6CkBAIC0xMjUsNiArMTI2LDcgQEAKICAgIyBDb2RlIGZyb20g bW9kdWxlIHRpbWVzcGVjLXN1YjoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHU2NDoKICAgIyBD b2RlIGZyb20gbW9kdWxlIHVuaXN0ZDoKKyAgIyBDb2RlIGZyb20gbW9kdWxlIHVuc2V0ZW52 OgogICAjIENvZGUgZnJvbSBtb2R1bGUgdXRpbWVuczoKICAgIyBDb2RlIGZyb20gbW9kdWxl IHZlcmlmeToKICAgIyBDb2RlIGZyb20gbW9kdWxlIHdhcm5pbmdzOgpAQCAtMjM5LDYgKzI0 MSwxMSBAQAogICAgIGdsX1BSRVJFUV9QVEhSRUFEX1NJR01BU0sKICAgZmkKICAgZ2xfU0lH TkFMX01PRFVMRV9JTkRJQ0FUT1IoW3B0aHJlYWRfc2lnbWFza10pCisgIGdsX0ZVTkNfUFVU RU5WCisgIGlmIHRlc3QgJFJFUExBQ0VfUFVURU5WID0gMTsgdGhlbgorICAgIEFDX0xJQk9C SihbcHV0ZW52XSkKKyAgZmkKKyAgZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW3B1dGVu dl0pCiAgIGdsX0ZVTkNfUkVBRExJTksKICAgaWYgdGVzdCAkSEFWRV9SRUFETElOSyA9IDAg fHwgdGVzdCAkUkVQTEFDRV9SRUFETElOSyA9IDE7IHRoZW4KICAgICBBQ19MSUJPQkooW3Jl YWRsaW5rXSkKQEAgLTI5MSw2ICsyOTgsMTIgQEAKICAgZ2xfVElNRVJfVElNRQogICBnbF9U SU1FU1BFQwogICBnbF9VTklTVERfSAorICBnbF9GVU5DX1VOU0VURU5WCisgIGlmIHRlc3Qg JEhBVkVfVU5TRVRFTlYgPSAwIHx8IHRlc3QgJFJFUExBQ0VfVU5TRVRFTlYgPSAxOyB0aGVu CisgICAgQUNfTElCT0JKKFt1bnNldGVudl0pCisgICAgZ2xfUFJFUkVRX1VOU0VURU5WCisg IGZpCisgIGdsX1NURExJQl9NT0RVTEVfSU5ESUNBVE9SKFt1bnNldGVudl0pCiAgIGdsX1VU SU1FTlMKICAgZ2xfZ251bGliX2VuYWJsZWRfZG9zbmFtZT1mYWxzZQogICBnbF9nbnVsaWJf ZW5hYmxlZF9ldWlkYWNjZXNzPWZhbHNlCkBAIC02NzMsNiArNjg2LDcgQEAKICAgbGliL3Bh dGhtYXguaAogICBsaWIvcHNlbGVjdC5jCiAgIGxpYi9wdGhyZWFkX3NpZ21hc2suYworICBs aWIvcHV0ZW52LmMKICAgbGliL3JlYWRsaW5rLmMKICAgbGliL3Jvb3QtdWlkLmgKICAgbGli L3NoYTEuYwpAQCAtNzE1LDYgKzcyOSw3IEBACiAgIGxpYi91NjQuaAogICBsaWIvdW5pc3Rk LmMKICAgbGliL3VuaXN0ZC5pbi5oCisgIGxpYi91bnNldGVudi5jCiAgIGxpYi91dGltZW5z LmMKICAgbGliL3V0aW1lbnMuaAogICBsaWIvdmVyaWZ5LmgKQEAgLTc1Niw3ICs3NzEsOSBA QAogICBtNC9wYXRobWF4Lm00CiAgIG00L3BzZWxlY3QubTQKICAgbTQvcHRocmVhZF9zaWdt YXNrLm00CisgIG00L3B1dGVudi5tNAogICBtNC9yZWFkbGluay5tNAorICBtNC9zZXRlbnYu bTQKICAgbTQvc2hhMS5tNAogICBtNC9zaGEyNTYubTQKICAgbTQvc2hhNTEyLm00Cgo9PT0g YWRkZWQgZmlsZSAnbTQvcHV0ZW52Lm00JwotLS0gbTQvcHV0ZW52Lm00CTE5NzAtMDEtMDEg MDA6MDA6MDAgKzAwMDAKKysrIG00L3B1dGVudi5tNAkyMDEyLTEyLTAzIDIwOjAzOjIyICsw MDAwCkBAIC0wLDAgKzEsNTAgQEAKKyMgcHV0ZW52Lm00IHNlcmlhbCAxOQorZG5sIENvcHly aWdodCAoQykgMjAwMi0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5s IFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlz dHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9u ZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEppbSBNZXllcmlu Zy4KK2RubAorZG5sIENoZWNrIHdoZXRoZXIgcHV0ZW52ICgiRk9PIikgcmVtb3ZlcyBGT08g ZnJvbSB0aGUgZW52aXJvbm1lbnQuCitkbmwgVGhlIHB1dGVudiBpbiBsaWJjIG9uIGF0IGxl YXN0IFN1bk9TIDQuMS40IGRvZXMgKm5vdCogZG8gdGhhdC4KKworQUNfREVGVU4oW2dsX0ZV TkNfUFVURU5WXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfU1RETElCX0hfREVGQVVMVFNdKQor ICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGls ZXMKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBwdXRlbnYgY29tcGF0aWJsZSB3aXRoIEdOVSBh bmQgU1ZJRF0sCisgICBbZ2xfY3ZfZnVuY19zdmlkX3B1dGVudl0sCisgICBbQUNfUlVOX0lG RUxTRShbQUNfTEFOR19QUk9HUkFNKFtBQ19JTkNMVURFU19ERUZBVUxUXSxbWworICAgIC8q IFB1dCBpdCBpbiBlbnYuICAqLworICAgIGlmIChwdXRlbnYgKCJDT05GVEVTVF9wdXRlbnY9 dmFsIikpCisgICAgICByZXR1cm4gMTsKKworICAgIC8qIFRyeSB0byByZW1vdmUgaXQuICAq LworICAgIGlmIChwdXRlbnYgKCJDT05GVEVTVF9wdXRlbnYiKSkKKyAgICAgIHJldHVybiAy OworCisgICAgLyogTWFrZSBzdXJlIGl0IHdhcyBkZWxldGVkLiAgKi8KKyAgICBpZiAoZ2V0 ZW52ICgiQ09ORlRFU1RfcHV0ZW52IikgIT0gMCkKKyAgICAgIHJldHVybiAzOworCisgICAg cmV0dXJuIDA7CisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgZ2xfY3ZfZnVu Y19zdmlkX3B1dGVudj15ZXMsCisgICAgICAgICAgICAgZ2xfY3ZfZnVuY19zdmlkX3B1dGVu dj1ubywKKyAgICAgICAgICAgICBkbmwgV2hlbiBjcm9zc2NvbXBpbGluZywgYXNzdW1lIHB1 dGVudiBpcyBicm9rZW4uCisgICAgICAgICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAg ICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcy4KKyAg ICAgICAgICAgICAgICAqLWdudSopIGdsX2N2X2Z1bmNfc3ZpZF9wdXRlbnY9Imd1ZXNzaW5n IHllcyIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywg YXNzdW1lIHRoZSB3b3JzdC4KKyAgICAgICAgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNf c3ZpZF9wdXRlbnY9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAg ICAgICAgICAgXSkKKyAgIF0pCisgIGNhc2UgIiRnbF9jdl9mdW5jX3N2aWRfcHV0ZW52IiBp bgorICAgICp5ZXMpIDs7CisgICAgKikKKyAgICAgIFJFUExBQ0VfUFVURU5WPTEKKyAgICAg IDs7CisgIGVzYWMKK10pCgo9PT0gYWRkZWQgZmlsZSAnbTQvc2V0ZW52Lm00JwotLS0gbTQv c2V0ZW52Lm00CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIG00L3NldGVudi5tNAky MDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTYwIEBACisjIHNldGVudi5t NCBzZXJpYWwgMjYKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCwgMjAwNi0yMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNv ZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1p dGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRo IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuCisKK0FDX0RFRlVOKFtnbF9GVU5DX1NFVEVOVl0sCitbCisgIEFDX1JFUVVJ UkUoW2dsX0ZVTkNfU0VURU5WX1NFUEFSQVRFXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05J Q0FMX0hPU1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisgIGlmIHRlc3QgJGFjX2N2X2Z1 bmNfc2V0ZW52ID0gbm87IHRoZW4KKyAgICBIQVZFX1NFVEVOVj0wCisgIGVsc2UKKyAgICBB Q19DQUNIRV9DSEVDSyhbd2hldGhlciBzZXRlbnYgdmFsaWRhdGVzIGFyZ3VtZW50c10sCisg ICAgICBbZ2xfY3ZfZnVuY19zZXRlbnZfd29ya3NdLAorICAgICAgW0FDX1JVTl9JRkVMU0Uo W0FDX0xBTkdfUFJPR1JBTShbWworICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAgICAg ICAjaW5jbHVkZSA8ZXJybm8uaD4KKyAgICAgICAjaW5jbHVkZSA8c3RyaW5nLmg+CisgICAg ICBdXSwgW1sKKyAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICB7CisgICAgICAgICBp ZiAoc2V0ZW52ICgiIiwgIiIsIDApICE9IC0xKQorICAgICAgICAgICByZXN1bHQgfD0gMTsK KyAgICAgICAgIGVsc2UgaWYgKGVycm5vICE9IEVJTlZBTCkKKyAgICAgICAgICAgcmVzdWx0 IHw9IDI7CisgICAgICAgfQorICAgICAgIHsKKyAgICAgICAgIGlmIChzZXRlbnYgKCJhIiwg Ij0iLCAxKSAhPSAwKQorICAgICAgICAgICByZXN1bHQgfD0gNDsKKyAgICAgICAgIGVsc2Ug aWYgKHN0cmNtcCAoZ2V0ZW52ICgiYSIpLCAiPSIpICE9IDApCisgICAgICAgICAgIHJlc3Vs dCB8PSA4OworICAgICAgIH0KKyAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgXV0pXSwK KyAgICAgIFtnbF9jdl9mdW5jX3NldGVudl93b3Jrcz15ZXNdLCBbZ2xfY3ZfZnVuY19zZXRl bnZfd29ya3M9bm9dLAorICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAg ICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgorICAgICAgICAgKi1nbnUqKSBn bF9jdl9mdW5jX3NldGVudl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAg ICAgICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCisgICAgICAgICAq KSAgICAgIGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtzPSJndWVzc2luZyBubyIgOzsKKyAgICAg ICBlc2FjCisgICAgICBdKV0pCisgICAgY2FzZSAiJGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtz IiBpbgorICAgICAgKnllcykgOzsKKyAgICAgICopCisgICAgICAgIFJFUExBQ0VfU0VURU5W PTEKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGZpCitdKQorCisjIExpa2UgZ2xfRlVOQ19T RVRFTlYsIGV4Y2VwdCBwcmVwYXJlIGZvciBzZXBhcmF0ZSBjb21waWxhdGlvbgorIyAobm8g UkVQTEFDRV9TRVRFTlYsIG5vIEFDX0xJQk9CSikuCitBQ19ERUZVTihbZ2xfRlVOQ19TRVRF TlZfU0VQQVJBVEVdLAorWworICBBQ19SRVFVSVJFKFtnbF9TVERMSUJfSF9ERUZBVUxUU10p CisgIEFDX0NIRUNLX0RFQ0xTX09OQ0UoW3NldGVudl0pCisgIGlmIHRlc3QgJGFjX2N2X2hh dmVfZGVjbF9zZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfREVDTF9TRVRFTlY9MAorICBm aQorICBBQ19DSEVDS19GVU5DU19PTkNFKFtzZXRlbnZdKQorICBnbF9QUkVSRVFfU0VURU5W CitdKQorCitBQ19ERUZVTihbZ2xfRlVOQ19VTlNFVEVOVl0sCitbCisgIEFDX1JFUVVJUkUo W2dsX1NURExJQl9IX0RFRkFVTFRTXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hP U1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisgIEFDX0NIRUNLX0RFQ0xTX09OQ0UoW3Vu c2V0ZW52XSkKKyAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3Vuc2V0ZW52ID0gbm87IHRo ZW4KKyAgICBIQVZFX0RFQ0xfVU5TRVRFTlY9MAorICBmaQorICBBQ19DSEVDS19GVU5DUyhb dW5zZXRlbnZdKQorICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Vuc2V0ZW52ID0gbm87IHRoZW4K KyAgICBIQVZFX1VOU0VURU5WPTAKKyAgZWxzZQorICAgIEhBVkVfVU5TRVRFTlY9MQorICAg IGRubCBTb21lIEJTRHMgcmV0dXJuIHZvaWQsIGZhaWxpbmcgdG8gZG8gZXJyb3IgY2hlY2tp bmcuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB1bnNldGVudigpIHJldHVybiB0eXBlXSwg W2d0X2N2X2Z1bmNfdW5zZXRlbnZfcmV0XSwKKyAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgK KyAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICBbWworI3VuZGVmIF9C U0QKKyNkZWZpbmUgX0JTRCAxIC8qIHVuaGlkZSB1bnNldGVudiBkZWNsYXJhdGlvbiBpbiBP U0YvMSA1LjEgPHN0ZGxpYi5oPiAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorZXh0ZXJuCisj aWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCitpbnQgdW5zZXRlbnYgKGNvbnN0IGNo YXIgKm5hbWUpOworICAgICAgICAgICAgXV0sCisgICAgICAgICAgICBbW11dKV0sCisgICAg ICAgICBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXQ9J2ludCddLAorICAgICAgICAgW2d0X2N2 X2Z1bmNfdW5zZXRlbnZfcmV0PSd2b2lkJ10pXSkKKyAgICBpZiB0ZXN0ICRndF9jdl9mdW5j X3Vuc2V0ZW52X3JldCA9ICd2b2lkJzsgdGhlbgorICAgICAgQUNfREVGSU5FKFtWT0lEX1VO U0VURU5WXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgdW5zZXRlbnYgcmV0dXJucyB2b2lkCisg ICAgICAgaW5zdGVhZCBvZiBpbnQuXSkKKyAgICAgIFJFUExBQ0VfVU5TRVRFTlY9MQorICAg IGZpCisKKyAgICBkbmwgU29sYXJpcyAxMCB1bnNldGVudiBkb2VzIG5vdCByZW1vdmUgYWxs IGNvcGllcyBvZiBhIG5hbWUuCisgICAgZG5sIEhhaWt1IGFscGhhIDIgdW5zZXRlbnYgZ2V0 cyBjb25mdXNlZCBieSBhc3NpZ25tZW50IHRvIGVudmlyb24uCisgICAgZG5sIE9wZW5CU0Qg NC43IHVuc2V0ZW52KCIiKSBkb2VzIG5vdCBmYWlsLgorICAgIEFDX0NBQ0hFX0NIRUNLKFt3 aGV0aGVyIHVuc2V0ZW52IG9iZXlzIFBPU0lYXSwKKyAgICAgIFtnbF9jdl9mdW5jX3Vuc2V0 ZW52X3dvcmtzXSwKKyAgICAgIFtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sK KyAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgI2luY2x1ZGUgPGVycm5vLmg+ CisgICAgICAgZXh0ZXJuIGNoYXIgKiplbnZpcm9uOworICAgICAgXV0sIFtbCisgICAgICAg Y2hhciBlbnRyeTFbXSA9ICJhPTEiOworICAgICAgIGNoYXIgZW50cnkyW10gPSAiYj0yIjsK KyAgICAgICBjaGFyICplbnZbXSA9IHsgZW50cnkxLCBlbnRyeTIsIE5VTEwgfTsKKyAgICAg ICBpZiAocHV0ZW52ICgoY2hhciAqKSAiYT0xIikpIHJldHVybiAxOworICAgICAgIGlmIChw dXRlbnYgKGVudHJ5MikpIHJldHVybiAyOworICAgICAgIGVudHJ5MlswXSA9ICdhJzsKKyAg ICAgICB1bnNldGVudiAoImEiKTsKKyAgICAgICBpZiAoZ2V0ZW52ICgiYSIpKSByZXR1cm4g MzsKKyAgICAgICBpZiAoIXVuc2V0ZW52ICgiIikgfHwgZXJybm8gIT0gRUlOVkFMKSByZXR1 cm4gNDsKKyAgICAgICBlbnRyeTJbMF0gPSAnYic7CisgICAgICAgZW52aXJvbiA9IGVudjsK KyAgICAgICBpZiAoIWdldGVudiAoImEiKSkgcmV0dXJuIDU7CisgICAgICAgZW50cnkyWzBd ID0gJ2EnOworICAgICAgIHVuc2V0ZW52ICgiYSIpOworICAgICAgIGlmIChnZXRlbnYgKCJh IikpIHJldHVybiA2OworICAgICAgXV0pXSwKKyAgICAgIFtnbF9jdl9mdW5jX3Vuc2V0ZW52 X3dvcmtzPXllc10sIFtnbF9jdl9mdW5jX3Vuc2V0ZW52X3dvcmtzPW5vXSwKKyAgICAgIFtj YXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xp YmMgc3lzdGVtcy4KKyAgICAgICAgICotZ251KikgZ2xfY3ZfZnVuY191bnNldGVudl93b3Jr cz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtu b3csIGFzc3VtZSB0aGUgd29yc3QuCisgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNfdW5z ZXRlbnZfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgIGVzYWMKKyAgICAgIF0pXSkK KyAgICBjYXNlICIkZ2xfY3ZfZnVuY191bnNldGVudl93b3JrcyIgaW4KKyAgICAgICp5ZXMp IDs7CisgICAgICAqKQorICAgICAgICBSRVBMQUNFX1VOU0VURU5WPTEKKyAgICAgICAgOzsK KyAgICBlc2FjCisgIGZpCitdKQorCisjIFByZXJlcXVpc2l0ZXMgb2YgbGliL3NldGVudi5j LgorQUNfREVGVU4oW2dsX1BSRVJFUV9TRVRFTlZdLAorWworICBBQ19SRVFVSVJFKFtBQ19G VU5DX0FMTE9DQV0pCisgIEFDX1JFUVVJUkUoW2dsX0VOVklST05dKQorICBBQ19DSEVDS19I RUFERVJTX09OQ0UoW3VuaXN0ZC5oXSkKKyAgQUNfQ0hFQ0tfSEVBREVSUyhbc2VhcmNoLmhd KQorICBBQ19DSEVDS19GVU5DUyhbdHNlYXJjaF0pCitdKQorCisjIFByZXJlcXVpc2l0ZXMg b2YgbGliL3Vuc2V0ZW52LmMuCitBQ19ERUZVTihbZ2xfUFJFUkVRX1VOU0VURU5WXSwKK1sK KyAgQUNfUkVRVUlSRShbZ2xfRU5WSVJPTl0pCisgIEFDX0NIRUNLX0hFQURFUlNfT05DRShb dW5pc3RkLmhdKQorXSkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwotLS0g c3JjL0NoYW5nZUxvZwkyMDEyLTEyLTAzIDE5OjE2OjE3ICswMDAwCisrKyBzcmMvQ2hhbmdl TG9nCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0x Mi0wMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlVc2UgcHV0ZW52 K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24gZGlyZWN0bHkuCisJKiBh bGxvYy5jICh4cHV0ZW52KTogTmV3IGZ1bmN0aW9uLgorCSogZGJ1c2JpbmQuYyAoRmRidXNf aW5pdF9idXMpOgorCSogZW1hY3MuYyAobWFpbik6CisJKiB4dGVybS5jICh4X3Rlcm1faW5p dCk6CisJVXNlIHhwdXRlbnYgaW5zdGVhZCBvZiBzZXRlbnYgb3IgcHV0ZW52LCB0byBkZXRl Y3QgbWVtb3J5IGV4aGF1c3Rpb24uCisJKiBlZGl0Zm5zLmMgKGluaXRpYWxfdHopOiBNb3Zl IHN0YXRpYyB2YXIgZGVjbCB1cC4KKwkodHp2YWxidWZfaW5fZW52aXJvbik6IE5ldyBzdGF0 aWMgdmFyLgorCShpbml0X2VkaXRmbnMpOglJbml0aWFsaXplIHRoZXNlIHR3byBzdGF0aWMg dmFycy4KKwkoRmVuY29kZV90aW1lKTogRG9uJ3QgYXNzdW1lIGFyYml0cmFyeSBsaW1pdCBv biBFTUFDU19JTlQgd2lkdGguCisJU2F2ZSBvbGQgVFogdmFsdWUgb24gc3RhY2ssIGlmIGl0 J3Mgc21hbGwuCisJKEZlbmNvZGVfdGltZSwgc2V0X3RpbWVfem9uZV9ydWxlKTogRG9uJ3Qg bW9kaWZ5ICdlbnZpcm9uJyBkaXJlY3RseTsKKwlpbnN0ZWFkLCB1c2UgeHB1dGVudit1bnNl dGVudiB0byBzZXQgYW5kIHJlc3RvcmUgVFouCisJKGVudmlyb25idWYpOiBSZW1vdmUgc3Rh dGljIHZhci4gIEFsbCB1c2VzIHJlbW92ZWQuCisJKEZzZXRfdGltZV96b25lX3J1bGUpOiBE byBub3Qgc2F2ZSBUWiBhbmQgZW52aXJvbjsgbm8gbG9uZ2VyIG5lZWRlZCBoZXJlLgorCShz ZXRfdGltZV96b25lX3J1bGVfdHoxLCBzZXRfdGltZV96b25lX3J1bGVfdHoyKSBbTE9DQUxU SU1FX0NBQ0hFXToKKwlNb3ZlIHRvIGluc2lkZSBzZXRfdGltZV96b25lX3J1bGU7IHRoZXkg ZG9uJ3QgbmVlZCBmaWxlIHNjb3BlIGFueSBtb3JlLgorCShzZXRfdGltZV96b25lX3J1bGUp OiBNYWludGFpbiB0aGUgVFo9dmFsdWUgc3RyaW5nIHNlcGFyYXRlbHkuCisJKHN5bXNfb2Zf ZWRpdGZucyk6IERvbid0IGluaXRpYWxpemUgaW5pdGlhbF90ejsgaW5pdF9lZGl0Zm5zIG5v dyBkb2VzIGl0LgorCSogZW1hY3MuYyAoZHVtcF90eikgW0hBVkVfVFpTRVRdOiBOb3cgY29u c3QuCisJKiBsaXNwLmggKHhwdXRlbnYpOiBOZXcgZGVjbC4KKwogMjAxMi0xMi0wMyAgSmFu IERqw6RydiAgPGphbi5oLmRAc3dpcG5ldC5zZT4KIAogCSogZ3RrdXRpbC5jIChteV9sb2df aGFuZGxlcik6IE5ldyBmdW5jdGlvbi4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYWxsb2Mu YycKLS0tIHNyYy9hbGxvYy5jCTIwMTItMTItMDMgMDg6MDY6MDIgKzAwMDAKKysrIHNyYy9h bGxvYy5jCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTgyMCw2ICs4MjAsMTUgQEAK ICAgcmV0dXJuIHA7CiB9CiAKKy8qIExpa2UgcHV0ZW52LCBidXQgKDEpIHVzZSB0aGUgZXF1 aXZhbGVudCBvZiB4bWFsbG9jIGFuZCAoMikgdGhlCisgICBhcmd1bWVudCBpcyBhIGNvbnN0 IHBvaW50ZXIuICAqLworCit2b2lkCit4cHV0ZW52IChjaGFyIGNvbnN0ICpzdHJpbmcpCit7 CisgIGlmIChwdXRlbnYgKChjaGFyICopIHN0cmluZykgIT0gMCkKKyAgICBtZW1vcnlfZnVs bCAoMCk7Cit9CiAKIC8qIFVud2luZCBmb3IgU0FGRV9BTExPQ0EgKi8KIAoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9kYnVzYmluZC5jJwotLS0gc3JjL2RidXNiaW5kLmMJMjAxMi0xMC0z MSAxMTo0NTo0MCArMDAwMAorKysgc3JjL2RidXNiaW5kLmMJMjAxMi0xMi0wMyAyMDowMzoy MiArMDAwMApAQCAtMTIwMyw3ICsxMjAzLDcgQEAKICAgICAgIHhkX3JlZ2lzdGVyZWRfYnVz ZXMgPSBGY29ucyAoRmNvbnMgKGJ1cywgdmFsKSwgeGRfcmVnaXN0ZXJlZF9idXNlcyk7CiAK ICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIGFib3J0LiAgKi8KLSAgICAgIHB1dGVudiAo KGNoYXIgKikgIkRCVVNfRkFUQUxfV0FSTklOR1M9MCIpOworICAgICAgeHB1dGVudiAoIkRC VVNfRkFUQUxfV0FSTklOR1M9MCIpOwogCiAgICAgICAvKiBDbGVhbnVwLiAgKi8KICAgICAg IGRidXNfZXJyb3JfZnJlZSAoJmRlcnJvcik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Vk aXRmbnMuYycKLS0tIHNyYy9lZGl0Zm5zLmMJMjAxMi0xMi0wMyAxNDoxMzowNiArMDAwMAor Kysgc3JjL2VkaXRmbnMuYwkyMDEyLTEyLTAzIDIwOjA3OjEzICswMDAwCkBAIC03OCw2ICs3 OCwxNSBAQAogCiBzdGF0aWMgTGlzcF9PYmplY3QgUWJvdW5kYXJ5OwogCisvKiBUaGUgc3Rh cnR1cCB2YWx1ZSBvZiB0aGUgVFogZW52aXJvbm1lbnQgdmFyaWFibGUgc28gaXQgY2FuIGJl CisgICByZXN0b3JlZCBpZiB0aGUgdXNlciBjYWxscyBzZXQtdGltZS16b25lLXJ1bGUgd2l0 aCBhIG5pbAorICAgYXJndW1lbnQuICBJZiBudWxsLCB0aGUgVFogZW52aXJvbm1lbnQgdmFy aWFibGUgd2FzIHVuc2V0LiAgKi8KK3N0YXRpYyBjaGFyIGNvbnN0ICppbml0aWFsX3R6Owor CisvKiBUcnVlIGlmIHRoZSBzdGF0aWMgdmFyaWFibGUgdHp2YWxidWYgKGRlZmluZWQgaW4K KyAgIHNldF90aW1lX3pvbmVfcnVsZSkgaXMgcGFydCBvZiAnZW52aXJvbicuICAqLworc3Rh dGljIGJvb2wgdHp2YWxidWZfaW5fZW52aXJvbjsKKwogCiB2b2lkCiBpbml0X2VkaXRmbnMg KHZvaWQpCkBAIC05Niw2ICsxMDUsOSBAQAogICAgIHJldHVybjsKICNlbmRpZiAvKiBub3Qg Q0FOTk9UX0RVTVAgKi8KIAorICBpbml0aWFsX3R6ID0gZ2V0ZW52ICgiVFoiKTsKKyAgdHp2 YWxidWZfaW5fZW52aXJvbiA9IDA7CisKICAgcHcgPSBnZXRwd3VpZCAoZ2V0dWlkICgpKTsK ICNpZmRlZiBNU0RPUwogICAvKiBXZSBsZXQgdGhlIHJlYWwgdXNlciBuYW1lIGRlZmF1bHQg dG8gInJvb3QiIGJlY2F1c2UgdGhhdCdzIHF1aXRlCkBAIC0xOTAwLDkgKzE5MTIsMTEgQEAK ICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBjaGFyIHR6YnVmWzEwMF07CisgICAgICBz dGF0aWMgY2hhciBjb25zdCB0emJ1Zl9mb3JtYXRbXSA9ICJYWFglcyUicEkiZDolMDJkOiUw MmQiOworICAgICAgY2hhciB0emJ1ZltzaXplb2YgdHpidWZfZm9ybWF0ICsgSU5UX1NUUkxF Tl9CT1VORCAoRU1BQ1NfSU5UKV07CisgICAgICBjaGFyICpvbGRfdHpzdHJpbmc7CiAgICAg ICBjb25zdCBjaGFyICp0enN0cmluZzsKLSAgICAgIGNoYXIgKipvbGRlbnYgPSBlbnZpcm9u LCAqKm5ld2VudjsKKyAgICAgIFVTRV9TQUZFX0FMTE9DQTsKIAogICAgICAgaWYgKEVRICh6 b25lLCBRdCkpCiAJdHpzdHJpbmcgPSAiVVRDMCI7CkBAIC0xOTE0LDEzICsxOTI4LDIwIEBA CiAJICBFTUFDU19JTlQgem9uZV9ociA9IGFic3pvbmUgLyAoNjAqNjApOwogCSAgaW50IHpv bmVfbWluID0gKGFic3pvbmUvNjApICUgNjA7CiAJICBpbnQgem9uZV9zZWMgPSBhYnN6b25l ICUgNjA7Ci0JICBzcHJpbnRmICh0emJ1ZiwgIlhYWCVzJSJwSSJkOiUwMmQ6JTAyZCIsICIt IiArIChYSU5UICh6b25lKSA8IDApLAorCSAgc3ByaW50ZiAodHpidWYsIHR6YnVmX2Zvcm1h dCwgIi0iICsgKFhJTlQgKHpvbmUpIDwgMCksCiAJCSAgIHpvbmVfaHIsIHpvbmVfbWluLCB6 b25lX3NlYyk7CiAJICB0enN0cmluZyA9IHR6YnVmOwogCX0KICAgICAgIGVsc2UKIAllcnJv ciAoIkludmFsaWQgdGltZSB6b25lIHNwZWNpZmljYXRpb24iKTsKIAorICAgICAgb2xkX3R6 c3RyaW5nID0gZ2V0ZW52ICgiVFoiKTsKKyAgICAgIGlmIChvbGRfdHpzdHJpbmcpCisJewor CSAgY2hhciAqYnVmID0gU0FGRV9BTExPQ0EgKHN0cmxlbiAob2xkX3R6c3RyaW5nKSArIDEp OworCSAgb2xkX3R6c3RyaW5nID0gc3RyY3B5IChidWYsIG9sZF90enN0cmluZyk7CisJfQor CiAgICAgICBibG9ja19pbnB1dCAoKTsKIAogICAgICAgLyogU2V0IFRaIGJlZm9yZSBjYWxs aW5nIG1rdGltZTsgbWVyZWx5IGFkanVzdGluZyBta3RpbWUncyByZXR1cm5lZApAQCAtMTky OSwxNSArMTk1MCwxMiBAQAogCiAgICAgICB2YWx1ZSA9IG1rdGltZSAoJnRtKTsKIAotICAg ICAgLyogUmVzdG9yZSBUWiB0byBwcmV2aW91cyB2YWx1ZS4gICovCi0gICAgICBuZXdlbnYg PSBlbnZpcm9uOwotICAgICAgZW52aXJvbiA9IG9sZGVudjsKKyAgICAgIHNldF90aW1lX3pv bmVfcnVsZSAob2xkX3R6c3RyaW5nKTsKICNpZmRlZiBMT0NBTFRJTUVfQ0FDSEUKICAgICAg IHR6c2V0ICgpOwogI2VuZGlmCiAgICAgICB1bmJsb2NrX2lucHV0ICgpOwotCi0gICAgICB4 ZnJlZSAobmV3ZW52KTsKKyAgICAgIFNBRkVfRlJFRSAoKTsKICAgICB9CiAKICAgaWYgKHZh bHVlID09ICh0aW1lX3QpIC0xKQpAQCAtMjA2NywxNiArMjA4NSw2IEBACiAgIHJldHVybiBs aXN0MiAoem9uZV9vZmZzZXQsIHpvbmVfbmFtZSk7CiB9CiAKLS8qIFRoaXMgaG9sZHMgdGhl IHZhbHVlIG9mIGBlbnZpcm9uJyBwcm9kdWNlZCBieSB0aGUgcHJldmlvdXMKLSAgIGNhbGwg dG8gRnNldF90aW1lX3pvbmVfcnVsZSwgb3IgMCBpZiBGc2V0X3RpbWVfem9uZV9ydWxlCi0g ICBoYXMgbmV2ZXIgYmVlbiBjYWxsZWQuICAqLwotc3RhdGljIGNoYXIgKiplbnZpcm9uYnVm OwotCi0vKiBUaGlzIGhvbGRzIHRoZSBzdGFydHVwIHZhbHVlIG9mIHRoZSBUWiBlbnZpcm9u bWVudCB2YXJpYWJsZSBzbyBpdAotICAgY2FuIGJlIHJlc3RvcmVkIGlmIHRoZSB1c2VyIGNh bGxzIHNldC10aW1lLXpvbmUtcnVsZSB3aXRoIGEgbmlsCi0gICBhcmd1bWVudC4gICovCi1z dGF0aWMgY2hhciAqaW5pdGlhbF90ejsKLQogREVGVU4gKCJzZXQtdGltZS16b25lLXJ1bGUi LCBGc2V0X3RpbWVfem9uZV9ydWxlLCBTc2V0X3RpbWVfem9uZV9ydWxlLCAxLCAxLCAwLAog ICAgICAgIGRvYzogLyogU2V0IHRoZSBsb2NhbCB0aW1lIHpvbmUgdXNpbmcgVFosIGEgc3Ry aW5nIHNwZWNpZnlpbmcgYSB0aW1lIHpvbmUgcnVsZS4KIElmIFRaIGlzIG5pbCwgdXNlIGlt cGxlbWVudGF0aW9uLWRlZmluZWQgZGVmYXVsdCB0aW1lIHpvbmUgaW5mb3JtYXRpb24uCkBA IC0yMDg5LDE4ICsyMDk3LDEwIEBACiAgIChMaXNwX09iamVjdCB0eikKIHsKICAgY29uc3Qg Y2hhciAqdHpzdHJpbmc7Ci0gIGNoYXIgKipvbGRfZW52aXJvbmJ1ZjsKIAogICBpZiAoISAo TklMUCAodHopIHx8IEVRICh0eiwgUXQpKSkKICAgICBDSEVDS19TVFJJTkcgKHR6KTsKIAot ICBibG9ja19pbnB1dCAoKTsKLQotICAvKiBXaGVuIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRp bWUsIHNhdmUgdGhlIG9yaWdpbmFsIFRaLiAgKi8KLSAgb2xkX2Vudmlyb25idWYgPSBlbnZp cm9uYnVmOwotICBpZiAoIW9sZF9lbnZpcm9uYnVmKQotICAgIGluaXRpYWxfdHogPSAoY2hh ciAqKSBnZXRlbnYgKCJUWiIpOwotCiAgIGlmIChOSUxQICh0eikpCiAgICAgdHpzdHJpbmcg PSBpbml0aWFsX3R6OwogICBlbHNlIGlmIChFUSAodHosIFF0KSkKQEAgLTIxMDgsMTA2ICsy MTA4LDk3IEBACiAgIGVsc2UKICAgICB0enN0cmluZyA9IFNTREFUQSAodHopOwogCisgIGJs b2NrX2lucHV0ICgpOwogICBzZXRfdGltZV96b25lX3J1bGUgKHR6c3RyaW5nKTsKLSAgZW52 aXJvbmJ1ZiA9IGVudmlyb247Ci0KICAgdW5ibG9ja19pbnB1dCAoKTsKIAotICB4ZnJlZSAo b2xkX2Vudmlyb25idWYpOwogICByZXR1cm4gUW5pbDsKIH0KIAotI2lmZGVmIExPQ0FMVElN RV9DQUNIRQotCi0vKiBUaGVzZSB0d28gdmFsdWVzIGFyZSBrbm93biB0byBsb2FkIHR6IGZp bGVzIGluIGJ1Z2d5IGltcGxlbWVudGF0aW9ucywKLSAgIGkuZS4gU29sYXJpcyAxIGV4ZWN1 dGFibGVzIHJ1bm5pbmcgdW5kZXIgZWl0aGVyIFNvbGFyaXMgMSBvciBTb2xhcmlzIDIuCi0g ICBUaGVpciB2YWx1ZXMgc2hvdWxkbid0IG1hdHRlciBpbiBub24tYnVnZ3kgaW1wbGVtZW50 YXRpb25zLgotICAgV2UgZG9uJ3QgdXNlIHN0cmluZyBsaXRlcmFscyBmb3IgdGhlc2Ugc3Ry aW5ncywKLSAgIHNpbmNlIGlmIGEgc3RyaW5nIGluIHRoZSBlbnZpcm9ubWVudCBpcyBpbiBy ZWFkb25seQotICAgc3RvcmFnZSwgaXQgcnVucyBhZm91bCBvZiBidWdzIGluIFNWUjQgYW5k IFNvbGFyaXMgMi4zLgotICAgU2VlIFN1biBidWdzIDExMTMwOTUgYW5kIDExMTQxMTQsIGBg VGltZXpvbmUgcm91dGluZXMKLSAgIGltcHJvcGVybHkgbW9kaWZ5IGVudmlyb25tZW50Jycu ICAqLwotCi1zdGF0aWMgY2hhciBzZXRfdGltZV96b25lX3J1bGVfdHoxW10gPSAiVFo9R01U KzAiOwotc3RhdGljIGNoYXIgc2V0X3RpbWVfem9uZV9ydWxlX3R6MltdID0gIlRaPUdNVCsx IjsKLQotI2VuZGlmCi0KIC8qIFNldCB0aGUgbG9jYWwgdGltZSB6b25lIHJ1bGUgdG8gVFpT VFJJTkcuCi0gICBUaGlzIGFsbG9jYXRlcyBtZW1vcnkgaW50byBgZW52aXJvbicsIHdoaWNo IGl0IGlzIHRoZSBjYWxsZXIncwotICAgcmVzcG9uc2liaWxpdHkgdG8gZnJlZS4gICovCisK KyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZC1zYWZlLCBwYXJ0bHkgYmVjYXVzZSBw dXRlbnYsIHVuc2V0ZW52CisgICBhbmQgdHpzZXQgYXJlIG5vdCwgYW5kIHBhcnRseSBiZWNh dXNlIG9mIHRoZSBzdGF0aWMgc3RvcmFnZSBpdAorICAgdXBkYXRlcy4gIE90aGVyIHRocmVh ZHMgdGhhdCBpbnZva2UgbG9jYWx0aW1lIGV0Yy4gbWF5IGJlIGFkdmVyc2VseQorICAgYWZm ZWN0ZWQgd2hpbGUgdGhpcyBmdW5jdGlvbiBpcyBleGVjdXRpbmcuICAqLwogCiB2b2lkCiBz ZXRfdGltZV96b25lX3J1bGUgKGNvbnN0IGNoYXIgKnR6c3RyaW5nKQogewotICBwdHJkaWZm X3QgZW52cHRyczsKLSAgY2hhciAqKmZyb20sICoqdG8sICoqbmV3ZW52OwotCi0gIC8qIE1h a2UgdGhlIEVOVklST04gdmVjdG9yIGxvbmdlciB3aXRoIHJvb20gZm9yIFRaU1RSSU5HLiAg Ki8KLSAgZm9yIChmcm9tID0gZW52aXJvbjsgKmZyb207IGZyb20rKykKLSAgICBjb250aW51 ZTsKLSAgZW52cHRycyA9IGZyb20gLSBlbnZpcm9uICsgMjsKLSAgbmV3ZW52ID0gdG8gPSB4 bWFsbG9jIChlbnZwdHJzICogc2l6ZW9mICpuZXdlbnYKLQkJCSArICh0enN0cmluZyA/IHN0 cmxlbiAodHpzdHJpbmcpICsgNCA6IDApKTsKLQotICAvKiBBZGQgVFpTVFJJTkcgdG8gdGhl IGVuZCBvZiBlbnZpcm9uLCBhcyBhIHZhbHVlIGZvciBUWi4gICovCisgIC8qIEEgYnVmZmVy IGhvbGRpbmcgYSBzdHJpbmcgb2YgdGhlIGZvcm0gIlRaPXZhbHVlIiwgaW50ZW5kZWQKKyAg ICAgdG8gYmUgcGFydCBvZiB0aGUgZW52aXJvbm1lbnQuICAqLworICBzdGF0aWMgY2hhciAq dHp2YWxidWY7CisgIHN0YXRpYyBwdHJkaWZmX3QgdHp2YWxidWZzaXplOworCisgIGludCB0 emVxbGVuID0gc2l6ZW9mICJUWj0iIC0gMTsKKworI2lmZGVmIExPQ0FMVElNRV9DQUNIRQor ICAvKiBUaGVzZSB0d28gdmFsdWVzIGFyZSBrbm93biB0byBsb2FkIHR6IGZpbGVzIGluIGJ1 Z2d5IGltcGxlbWVudGF0aW9ucywKKyAgICAgaS5lLiBTb2xhcmlzIDEgZXhlY3V0YWJsZXMg cnVubmluZyB1bmRlciBlaXRoZXIgU29sYXJpcyAxIG9yIFNvbGFyaXMgMi4KKyAgICAgVGhl aXIgdmFsdWVzIHNob3VsZG4ndCBtYXR0ZXIgaW4gbm9uLWJ1Z2d5IGltcGxlbWVudGF0aW9u cy4KKyAgICAgV2UgZG9uJ3QgdXNlIHN0cmluZyBsaXRlcmFscyBmb3IgdGhlc2Ugc3RyaW5n cywKKyAgICAgc2luY2UgaWYgYSBzdHJpbmcgaW4gdGhlIGVudmlyb25tZW50IGlzIGluIHJl YWRvbmx5CisgICAgIHN0b3JhZ2UsIGl0IHJ1bnMgYWZvdWwgb2YgYnVncyBpbiBTVlI0IGFu ZCBTb2xhcmlzIDIuMy4KKyAgICAgU2VlIFN1biBidWdzIDExMTMwOTUgYW5kIDExMTQxMTQs IGBgVGltZXpvbmUgcm91dGluZXMKKyAgICAgaW1wcm9wZXJseSBtb2RpZnkgZW52aXJvbm1l bnQnJy4gICovCisKKyAgc3RhdGljIGNoYXIgc2V0X3RpbWVfem9uZV9ydWxlX3R6W11bc2l6 ZW9mICJUWj1HTVQrMCJdCisgICAgPSB7ICJUWj1HTVQrMCIsICJUWj1HTVQrMSIgfTsKKwor ICAvKiBJbiBTdW5PUyA0LjEuM19VMSBhbmQgNC4xLjQsIGlmIFRaIGhhcyBhIHZhbHVlIGxp a2UKKyAgICAgIlVTL1BhY2lmaWMiIHRoYXQgbG9hZHMgYSB0eiBmaWxlLCB0aGVuIGNoYW5n ZXMgdG8gYSB2YWx1ZSBsaWtlCisgICAgICJYWFgwIiB0aGF0IGRvZXMgbm90IGxvYWQgYSB0 eiBmaWxlLCBhbmQgdGhlbiBjaGFuZ2VzIGJhY2sgdG8KKyAgICAgaXRzIG9yaWdpbmFsIHZh bHVlLCB0aGUgbGFzdCBjaGFuZ2UgaXMgKGluY29ycmVjdGx5KSBpZ25vcmVkLgorICAgICBB bHNvLCBpZiBUWiBjaGFuZ2VzIHR3aWNlIGluIHN1Y2Nlc3Npb24gdG8gdmFsdWVzIHRoYXQg ZG8KKyAgICAgbm90IGxvYWQgYSB0eiBmaWxlLCB0enNldCBjYW4gZHVtcCBjb3JlIChzZWUg U3VuIGJ1ZyMxMjI1MTc5KS4KKyAgICAgVGhlIGZvbGxvd2luZyBjb2RlIHdvcmtzIGFyb3Vu ZCB0aGVzZSBidWdzLiAgKi8KKwogICBpZiAodHpzdHJpbmcpCiAgICAgewotICAgICAgY2hh ciAqdCA9IChjaGFyICopICh0byArIGVudnB0cnMpOwotICAgICAgc3RyY3B5ICh0LCAiVFo9 Iik7Ci0gICAgICBzdHJjYXQgKHQsIHR6c3RyaW5nKTsKLSAgICAgICp0bysrID0gdDsKLSAg ICB9Ci0KLSAgLyogQ29weSB0aGUgb2xkIGVudmlyb24gdmVjdG9yIGVsZW1lbnRzIGludG8g TkVXRU5WLAotICAgICBidXQgZG9uJ3QgY29weSB0aGUgVFogdmFyaWFibGUuCi0gICAgIFNv IHdlIGhhdmUgb25seSBvbmUgZGVmaW5pdGlvbiBvZiBUWiwgd2hpY2ggY2FtZSBmcm9tIFRa U1RSSU5HLiAgKi8KLSAgZm9yIChmcm9tID0gZW52aXJvbjsgKmZyb207IGZyb20rKykKLSAg ICBpZiAoc3RybmNtcCAoKmZyb20sICJUWj0iLCAzKSAhPSAwKQotICAgICAgKnRvKysgPSAq ZnJvbTsKLSAgKnRvID0gMDsKLQotICBlbnZpcm9uID0gbmV3ZW52OwotCi0gIC8qIElmIHdl IGRvIGhhdmUgYSBUWlNUUklORywgTkVXRU5WIHBvaW50cyB0byB0aGUgdmVjdG9yIHNsb3Qg d2hlcmUKLSAgICAgdGhlIFRaIHZhcmlhYmxlIGlzIHN0b3JlZC4gIElmIHdlIGRvIG5vdCBo YXZlIGEgVFpTVFJJTkcsCi0gICAgIFRPIHBvaW50cyB0byB0aGUgdmVjdG9yIHNsb3Qgd2hp Y2ggaGFzIHRoZSB0ZXJtaW5hdGluZyBudWxsLiAgKi8KKyAgICAgIC8qIFRlbXBvcmFyaWx5 IHNldCBUWiB0byBhIHZhbHVlIHRoYXQgbG9hZHMgYSB0eiBmaWxlCisJIGFuZCB0aGF0IGRp ZmZlcnMgZnJvbSB0enN0cmluZy4gICovCisgICAgICBib29sIGVxMCA9IHN0cmNtcCAodHpz dHJpbmcsIHNldF90aW1lX3pvbmVfcnVsZV90elswXSArIHR6ZXFsZW4pID09IDA7CisgICAg ICB4cHV0ZW52IChzZXRfdGltZV96b25lX3J1bGVfdHpbZXEwXSk7CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgLyogVGhlIGltcGxpZWQgdHpzdHJpbmcgaXMgdW5rbm93biwgc28g dGVtcG9yYXJpbHkgc2V0IFRaIHRvCisJIHR3byBkaWZmZXJlbnQgdmFsdWVzIHRoYXQgZWFj aCBsb2FkIGEgdHogZmlsZS4gICovCisgICAgICB4cHV0ZW52IChzZXRfdGltZV96b25lX3J1 bGVfdHpbMF0pOworICAgICAgdHpzZXQgKCk7CisgICAgICB4cHV0ZW52IChzZXRfdGltZV96 b25lX3J1bGVfdHpbMV0pOworICAgIH0KKyAgdHpzZXQgKCk7CisjZW5kaWYKKworICBpZiAo IXR6c3RyaW5nKQorICAgIHsKKyAgICAgIHVuc2V0ZW52ICgiVFoiKTsKKyAgICAgIHR6dmFs YnVmX2luX2Vudmlyb24gPSAwOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHB0cmRp ZmZfdCB0enN0cmluZ2xlbiA9IHN0cmxlbiAodHpzdHJpbmcpOworCisgICAgICBpZiAodHp2 YWxidWZzaXplIDw9IHR6ZXFsZW4gKyB0enN0cmluZ2xlbikKKwl7CisJICB1bnNldGVudiAo IlRaIik7CisJICB0enZhbGJ1Zl9pbl9lbnZpcm9uID0gMDsKKwkgIHR6dmFsYnVmID0geHBh bGxvYyAodHp2YWxidWYsICZ0enZhbGJ1ZnNpemUsCisJCQkgICAgICB0emVxbGVuICsgdHpz dHJpbmdsZW4gLSB0enZhbGJ1ZnNpemUgKyAxLCAtMSwgMSk7CisJICBtZW1jcHkgKHR6dmFs YnVmLCAiVFo9IiwgdHplcWxlbik7CisJfQorCisgICAgICBzdHJjcHkgKHR6dmFsYnVmICsg dHplcWxlbiwgdHpzdHJpbmcpOworCisgICAgICBpZiAoIXR6dmFsYnVmX2luX2Vudmlyb24p CisJeworCSAgeHB1dGVudiAodHp2YWxidWYpOworCSAgdHp2YWxidWZfaW5fZW52aXJvbiA9 IDE7CisJfQorICAgIH0KIAogI2lmZGVmIExPQ0FMVElNRV9DQUNIRQotICB7Ci0gICAgLyog SW4gU3VuT1MgNC4xLjNfVTEgYW5kIDQuMS40LCBpZiBUWiBoYXMgYSB2YWx1ZSBsaWtlCi0g ICAgICAgIlVTL1BhY2lmaWMiIHRoYXQgbG9hZHMgYSB0eiBmaWxlLCB0aGVuIGNoYW5nZXMg dG8gYSB2YWx1ZSBsaWtlCi0gICAgICAgIlhYWDAiIHRoYXQgZG9lcyBub3QgbG9hZCBhIHR6 IGZpbGUsIGFuZCB0aGVuIGNoYW5nZXMgYmFjayB0bwotICAgICAgIGl0cyBvcmlnaW5hbCB2 YWx1ZSwgdGhlIGxhc3QgY2hhbmdlIGlzIChpbmNvcnJlY3RseSkgaWdub3JlZC4KLSAgICAg ICBBbHNvLCBpZiBUWiBjaGFuZ2VzIHR3aWNlIGluIHN1Y2Nlc3Npb24gdG8gdmFsdWVzIHRo YXQgZG8KLSAgICAgICBub3QgbG9hZCBhIHR6IGZpbGUsIHR6c2V0IGNhbiBkdW1wIGNvcmUg KHNlZSBTdW4gYnVnIzEyMjUxNzkpLgotICAgICAgIFRoZSBmb2xsb3dpbmcgY29kZSB3b3Jr cyBhcm91bmQgdGhlc2UgYnVncy4gICovCi0KLSAgICBpZiAodHpzdHJpbmcpCi0gICAgICB7 Ci0JLyogVGVtcG9yYXJpbHkgc2V0IFRaIHRvIGEgdmFsdWUgdGhhdCBsb2FkcyBhIHR6IGZp bGUKLQkgICBhbmQgdGhhdCBkaWZmZXJzIGZyb20gdHpzdHJpbmcuICAqLwotCWNoYXIgKnR6 ID0gKm5ld2VudjsKLQkqbmV3ZW52ID0gKHN0cmNtcCAodHpzdHJpbmcsIHNldF90aW1lX3pv bmVfcnVsZV90ejEgKyAzKSA9PSAwCi0JCSAgID8gc2V0X3RpbWVfem9uZV9ydWxlX3R6MiA6 IHNldF90aW1lX3pvbmVfcnVsZV90ejEpOwotCXR6c2V0ICgpOwotCSpuZXdlbnYgPSB0ejsK LSAgICAgIH0KLSAgICBlbHNlCi0gICAgICB7Ci0JLyogVGhlIGltcGxpZWQgdHpzdHJpbmcg aXMgdW5rbm93biwgc28gdGVtcG9yYXJpbHkgc2V0IFRaIHRvCi0JICAgdHdvIGRpZmZlcmVu dCB2YWx1ZXMgdGhhdCBlYWNoIGxvYWQgYSB0eiBmaWxlLiAgKi8KLQkqdG8gPSBzZXRfdGlt ZV96b25lX3J1bGVfdHoxOwotCXRvWzFdID0gMDsKLQl0enNldCAoKTsKLQkqdG8gPSBzZXRf dGltZV96b25lX3J1bGVfdHoyOwotCXR6c2V0ICgpOwotCSp0byA9IDA7Ci0gICAgICB9Ci0K LSAgICAvKiBOb3cgVFogaGFzIHRoZSBkZXNpcmVkIHZhbHVlLCBhbmQgdHpzZXQgY2FuIGJl IGludm9rZWQgc2FmZWx5LiAgKi8KLSAgfQotCiAgIHR6c2V0ICgpOwogI2VuZGlmCiB9CkBA IC00Nzk5LDkgKzQ3OTAsNiBAQAogdm9pZAogc3ltc19vZl9lZGl0Zm5zICh2b2lkKQogewot ICBlbnZpcm9uYnVmID0gMDsKLSAgaW5pdGlhbF90eiA9IDA7Ci0KICAgREVGU1lNIChRYnVm ZmVyX2FjY2Vzc19mb250aWZ5X2Z1bmN0aW9ucywgImJ1ZmZlci1hY2Nlc3MtZm9udGlmeS1m dW5jdGlvbnMiKTsKIAogICBERUZWQVJfTElTUCAoImluaGliaXQtZmllbGQtdGV4dC1tb3Rp b24iLCBWaW5oaWJpdF9maWVsZF90ZXh0X21vdGlvbiwKCj09PSBtb2RpZmllZCBmaWxlICdz cmMvZW1hY3MuYycKLS0tIHNyYy9lbWFjcy5jCTIwMTItMTEtMjEgMDQ6NDc6NTUgKzAwMDAK KysrIHNyYy9lbWFjcy5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTUzNSw3ICs1 MzUsNyBAQAogI2lmZGVmIEhBVkVfVFpTRVQKIC8qIEEgdmFsaWQgYnV0IHVubGlrZWx5IHZh bHVlIGZvciB0aGUgVFogZW52aXJvbm1lbnQgdmFsdWUuCiAgICBJdCBpcyBPSyAodGhvdWdo IGEgYml0IHNsb3dlcikgaWYgdGhlIHVzZXIgYWN0dWFsbHkgY2hvb3NlcyB0aGlzIHZhbHVl LiAgKi8KLXN0YXRpYyBjaGFyIGR1bXBfdHpbXSA9ICJVdEMwIjsKK3N0YXRpYyBjaGFyIGNv bnN0IGR1bXBfdHpbXSA9ICJVdEMwIjsKICNlbmRpZgogCiAjaWZuZGVmIE9SRElOQVJZX0xJ TksKQEAgLTcxNyw3ICs3MTcsNyBAQAogCiAjaWZkZWYgR19TTElDRV9BTFdBWVNfTUFMTE9D CiAgIC8qIFRoaXMgaXMgdXNlZCBieSB0aGUgQ3lnd2luIGJ1aWxkLiAgKi8KLSAgc2V0ZW52 ICgiR19TTElDRSIsICJhbHdheXMtbWFsbG9jIiwgMSk7CisgIHhwdXRlbnYgKCJHX1NMSUNF PWFsd2F5cy1tYWxsb2MiKTsKICNlbmRpZgogCiAjaWZkZWYgR05VX0xJTlVYCkBAIC04MDMs OSArODAzLDggQEAKICNpZmRlZiBIQVZFX1BFUlNPTkFMSVRZX0xJTlVYMzIKICAgaWYgKGR1 bXBpbmcgJiYgISBnZXRlbnYgKCJFTUFDU19IRUFQX0VYRUMiKSkKICAgICB7Ci0gICAgICBz dGF0aWMgY2hhciBoZWFwZXhlY1tdID0gIkVNQUNTX0hFQVBfRVhFQz10cnVlIjsKICAgICAg IC8qIFNldCB0aGlzIHNvIHdlIG9ubHkgZG8gdGhpcyBvbmNlLiAgKi8KLSAgICAgIHB1dGVu diAoaGVhcGV4ZWMpOworICAgICAgeHB1dGVudiAoIkVNQUNTX0hFQVBfRVhFQz10cnVlIik7 CiAKICAgICAgIC8qIEEgZmxhZyB0byB0dXJuIG9mZiBhZGRyZXNzIHJhbmRvbWl6YXRpb24g d2hpY2ggaXMgaW50cm9kdWNlZAogICAgICAgICAgaW4gbGludXgga2VybmVsIHNoaXBwZWQg d2l0aCBmZWRvcmEgY29yZSA0ICovCkBAIC0xMzA5LDcgKzEzMDgsNyBAQAogICAgICBkb24n dCBwb2xsdXRlIFZnbG9iYWxfZW52aXJvbm1lbnQuICAqLwogICAvKiBTZXR0aW5nIExBTkcg aGVyZSB3aWxsIGRlZmVhdCB0aGUgc3RhcnR1cCBsb2NhbGUgcHJvY2Vzc2luZy4uLiAgKi8K ICNpZmRlZiBBSVgKLSAgcHV0ZW52ICgiTEFORz1DIik7CisgIHhwdXRlbnYgKCJMQU5HPUMi KTsKICNlbmRpZgogCiAgIGluaXRfYnVmZmVyICgpOwkvKiBJbml0IGRlZmF1bHQgZGlyZWN0 b3J5IG9mIG1haW4gYnVmZmVyLiAgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbGlzcC5o JwotLS0gc3JjL2xpc3AuaAkyMDEyLTEyLTAzIDE0OjEzOjA2ICswMDAwCisrKyBzcmMvbGlz cC5oCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTM1OTQsNiArMzU5NCw3IEBACiBl eHRlcm4gdm9pZCAqeHBhbGxvYyAodm9pZCAqLCBwdHJkaWZmX3QgKiwgcHRyZGlmZl90LCBw dHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAKIGV4dGVybiBjaGFyICp4c3RyZHVwIChjb25zdCBj aGFyICopOworZXh0ZXJuIHZvaWQgeHB1dGVudiAoY29uc3QgY2hhciAqKTsKIAogZXh0ZXJu IGNoYXIgKmVnZXRlbnYgKGNvbnN0IGNoYXIgKik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdz cmMveHRlcm0uYycKLS0tIHNyYy94dGVybS5jCTIwMTItMTItMDEgMjM6MDY6MTQgKzAwMDAK KysrIHNyYy94dGVybS5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTk5MDksMTAg Kzk5MDksNyBAQAogCiAgICAgICAgIC8qIEVtYWNzIGNhbiBvbmx5IGhhbmRsZSBjb3JlIGlu cHV0IGV2ZW50cywgc28gbWFrZSBzdXJlCiAgICAgICAgICAgIEd0ayBkb2Vzbid0IHVzZSBY aW5wdXQgb3IgWGlucHV0MiBleHRlbnNpb25zLiAgKi8KLSAgICAgICAgewotICAgICAgICAg IHN0YXRpYyBjaGFyIGZpeF9ldmVudHNbXSA9ICJHREtfQ09SRV9ERVZJQ0VfRVZFTlRTPTEi OwotICAgICAgICAgIHB1dGVudiAoZml4X2V2ZW50cyk7Ci0gICAgICAgIH0KKwl4cHV0ZW52 ICgiR0RLX0NPUkVfREVWSUNFX0VWRU5UUz0xIik7CiAKICAgICAgICAgLyogV29yayBhcm91 bmQgR0xpYiBidWcgdGhhdCBvdXRwdXRzIGEgZmF1bHR5IHdhcm5pbmcuIFNlZQogICAgICAg ICAgICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzNjI3 LiAgKi8KCg== --------------020805030603090107030509-- ------------=_1354987322-21906-1-- From unknown Mon Aug 18 04:41:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Dec 2012 18:33:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Paul Eggert Cc: 13070@debbugs.gnu.org, fabrice.popineau@gmail.com Reply-To: Eli Zaretskii Received: via spool by 13070-submit@debbugs.gnu.org id=B13070.135499152528264 (code B ref 13070); Sat, 08 Dec 2012 18:33:01 +0000 Received: (at 13070) by debbugs.gnu.org; 8 Dec 2012 18:32:05 +0000 Received: from localhost ([127.0.0.1]:33155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThPC0-0007Lo-Oc for submit@debbugs.gnu.org; Sat, 08 Dec 2012 13:32:04 -0500 Received: from mtaout23.012.net.il ([80.179.55.175]:34441) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThPBy-0007LP-DB for 13070@debbugs.gnu.org; Sat, 08 Dec 2012 13:32:04 -0500 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0MEQ00B005WQ3300@a-mtaout23.012.net.il> for 13070@debbugs.gnu.org; Sat, 08 Dec 2012 20:31:35 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MEQ00AFM64LZV10@a-mtaout23.012.net.il>; Sat, 08 Dec 2012 20:31:35 +0200 (IST) Date: Sat, 08 Dec 2012 20:31:18 +0200 From: Eli Zaretskii In-reply-to: <50C376F9.3000603@cs.ucla.edu> X-012-Sender: halo1@inter.net.il Message-id: <83vccccs5l.fsf@gnu.org> References: <50BD0C72.7070601@cs.ucla.edu> <50C2BBD9.8060401@cs.ucla.edu> <83zk1olqh8.fsf@gnu.org> <50C376F9.3000603@cs.ucla.edu> X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Date: Sat, 08 Dec 2012 09:20:57 -0800 > From: Paul Eggert > CC: fabrice.popineau@gmail.com, 13070-done@debbugs.gnu.org > > On 12/08/2012 03:42 AM, Eli Zaretskii wrote: > > Shouldn't we refrain from signaling memory_full when errno is EINVAL? > > I'd suggest an eassert in that case. memory_full will emit a > > misleading diagnostic. > > errno cannot be EINVAL, at least not on a POSIXish host: > all strings are allowed as arguments to putenv. [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.179.55.175 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.4374] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.7 (/) > Date: Sat, 08 Dec 2012 09:20:57 -0800 > From: Paul Eggert > CC: fabrice.popineau@gmail.com, 13070-done@debbugs.gnu.org > > On 12/08/2012 03:42 AM, Eli Zaretskii wrote: > > Shouldn't we refrain from signaling memory_full when errno is EINVAL? > > I'd suggest an eassert in that case. memory_full will emit a > > misleading diagnostic. > > errno cannot be EINVAL, at least not on a POSIXish host: > all strings are allowed as arguments to putenv. What about NULL pointers? Or strings without a '='? IMO, it's silly to rely on unspecified behavior, but suit yourself. > I did see a minor problem in the w32.c implementation of unsetenv: > > /* MS docs says an environment variable cannot be longer than 32K. */ > if (name_len > 32767) > { > errno = ENOMEM; > return -1; > } > > unsetenv should return 0 in that case, not -1, since > the variable cannot possibly be in the environment. Right, I fixed that. From unknown Mon Aug 18 04:41:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Dec 2012 20:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 13070@debbugs.gnu.org, fabrice.popineau@gmail.com Received: via spool by 13070-submit@debbugs.gnu.org id=B13070.13549967623421 (code B ref 13070); Sat, 08 Dec 2012 20:00:02 +0000 Received: (at 13070) by debbugs.gnu.org; 8 Dec 2012 19:59:22 +0000 Received: from localhost ([127.0.0.1]:33204 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThQYU-0000t7-2e for submit@debbugs.gnu.org; Sat, 08 Dec 2012 14:59:22 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:52479) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThQYR-0000sy-1I for 13070@debbugs.gnu.org; Sat, 08 Dec 2012 14:59:20 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id A46E039E8106; Sat, 8 Dec 2012 11:58:52 -0800 (PST) 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 0kecq4dII-IG; Sat, 8 Dec 2012 11:58:52 -0800 (PST) Received: from [192.168.1.3] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 36AD739E8008; Sat, 8 Dec 2012 11:58:52 -0800 (PST) Message-ID: <50C39C01.1020303@cs.ucla.edu> Date: Sat, 08 Dec 2012 11:58:57 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 References: <50BD0C72.7070601@cs.ucla.edu> <50C2BBD9.8060401@cs.ucla.edu> <83zk1olqh8.fsf@gnu.org> <50C376F9.3000603@cs.ucla.edu> <83vccccs5l.fsf@gnu.org> In-Reply-To: <83vccccs5l.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.5 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.5 (-) On 12/08/2012 10:31 AM, Eli Zaretskii wrote: > What about NULL pointers? putenv typically dumps core when passed NULL, so checking errno afterwards wouldn't help. > Or strings without a '='? Typically that's valid; it's equivalent to unsetenv. So typically, checking errno afterwards wouldn't help. > it's silly to rely on unspecified behavior Emacs doesn't rely on unspecified behavior, since it never passes NULL or '='-less strings to xputenv. Emacs has many, many places where we could put easserts, but we don't bother because the disadvantages of code clutter outweigh any advantages of catching bugs, and this appears to be one of those places.