Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hxRus-0001T2-35 for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Aug 2019 08:12:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hxRuq-0007T5-Ds for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Aug 2019 08:12:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hxRuq-0007RS-4B for pgsql-hackers@lists.postgresql.org; Tue, 13 Aug 2019 08:12:24 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hxRui-0004UM-VN for pgsql-hackers@postgresql.org; Tue, 13 Aug 2019 08:12:23 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id F250A3FC; Tue, 13 Aug 2019 04:12:13 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Tue, 13 Aug 2019 04:12:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=p6ZuvV /q/7e8OLYK6xhtujSyDrv8P6xDuMJoOv4Je5E=; b=x7dfrM0CTq/g/mnl2yam7A 35ECn9RVIKN0vz51ZpuGm5z1K8JTgfKYmp8DjDNLb1BznqHE/bE45/LV/rJDP7tO JzWnn/TmySkPgXRKdDJrcFPVQcVNqiimLL2dwXBXdvrzHiy6+jD1Jp2fsTQMf7Sl zUisRnLCIjywI+EiiC2tiWTIguYpjWVS59A6BkYFkWBwTpncgEaK1TdCRjleZjYQ ixosYdxbApPphD6vEn+/6qqM1hSAm61NqCAs9DO/xt1/T4SJtlFND+mmBiH0e0Jg lxkHFgU/qT9pti15oVQagwEQmoH3VXlsJqsRZOTcuHG4+x+ehHMUzxoD0ctATnDw == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduvddruddvhedguddvkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefuhffvfhhokffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvght vghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnug hquhgrughrrghnthdrtghomheqnecuffhomhgrihhnpedvnhguqhhurggurhgrnhhtrdgt ohhmnecukfhppeelfedrvdegvddrgedtrddvtddvnecurfgrrhgrmhepmhgrihhlfhhroh hmpehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomhen ucevlhhushhtvghrufhiiigvpedt X-ME-Proxy: Received: from april.pezone.net (p5df228ca.dip0.t-ipconnect.de [93.242.40.202]) by mail.messagingengine.com (Postfix) with ESMTPA id B00EA80065; Tue, 13 Aug 2019 04:12:11 -0400 (EDT) Subject: Re: errbacktrace From: Peter Eisentraut To: pgsql-hackers References: <20190708162851.GA11054@alvherre.pgsql> <3814a094-7dcd-106b-d2ad-7ef78f563356@2ndquadrant.com> Cc: Alvaro Herrera , Dmitry Dolgov <9erthalion6@gmail.com>, Thomas Munro Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 3jI= Organization: 2ndQuadrant Message-ID: <35beac83-bf15-9d79-05c4-2dccd0834993@2ndquadrant.com> Date: Tue, 13 Aug 2019 10:12:10 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <3814a094-7dcd-106b-d2ad-7ef78f563356@2ndquadrant.com> Content-Type: multipart/mixed; boundary="------------141D8826D1F4B634646DD8ED" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------141D8826D1F4B634646DD8ED Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 2019-07-22 20:19, Peter Eisentraut wrote: > On 2019-07-09 11:43, Peter Eisentraut wrote: >> After further research I'm thinking about dropping the libunwind >> support. The backtrace()/backtrace_symbols() API is more widely >> available: darwin, freebsd, linux, netbsd, openbsd (via port), solaris, >> and of course it's built-in, whereas libunwind is only available for >> linux, freebsd, hpux, solaris, and requires an external dependency. > > Here is an updated patch without the libunwind support, some minor > cleanups, documentation, and automatic back traces from assertion failures. Another updated version. I have changed the configuration setting to backtrace_functions plural, so that you can debug more than one location at once. I had originally wanted to do that but using existing functions like SplitIdentifierString() resulted in lots of complications with error handling (inside error handling!). So here I just hand-coded the list splitting. Seems simple enough. I think this patch is now good to go from my perspective. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------141D8826D1F4B634646DD8ED Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v4-0001-Add-backtrace-support.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v4-0001-Add-backtrace-support.patch" RnJvbSBmOWQ0NDBlYzQxZjQ5NDY0NjYxOTYwYzU4MGMyOWNlMDU1OGExNjQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxMyBBdWcgMjAxOSAwMTo0NzoyMiArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjRdIEFkZCBiYWNrdHJhY2Ugc3VwcG9ydAoKQWRkIHNvbWUgc3VwcG9ydCBm b3IgYXV0b21hdGljYWxseSBzaG93aW5nIGJhY2t0cmFjZXMgaW4gY2VydGFpbiBlcnJvcgpz aXR1YXRpb25zIGluIHRoZSBzZXJ2ZXIuICBCYWNrdHJhY2VzIGFyZSBzaG93biBvbiBhc3Nl cnRpb24gZmFpbHVyZS4KQSBuZXcgc2V0dGluZyBiYWNrdHJhY2VfZnVuY3Rpb25zIGNhbiBi ZSBzZXQgdG8gYSBsaXN0IG9mIEMgZnVuY3Rpb24KbmFtZXMsIGFuZCBhbGwgZXJlcG9ydCgp cyBhbmQgZWxvZygpcyBmcm9tIHRoZSBmdW5jdGlvbnMgd2lsbCBoYXZlCmJhY2t0cmFjZXMg Z2VuZXJhdGVkLiAgRmluYWxseSwgdGhlIGZ1bmN0aW9uIGVycmJhY2t0cmFjZSgpIGNhbiBi ZQptYW51YWxseSBhZGRlZCB0byBhbiBlcmVwb3J0KCkgY2FsbCB0byBnZW5lcmF0ZSBhIGJh Y2t0cmFjZSBmb3IgdGhhdApjYWxsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzVmNDhjYjQ3LWJmMWUtMDViNi03YWFlLTNiZjJj ZDAxNTg2ZEAybmRxdWFkcmFudC5jb20KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAg ICAgICAgICB8ICA2MSArKysrKysrKysrKysrKystCiBjb25maWd1cmUuaW4gICAgICAgICAg ICAgICAgICAgICB8ICAgNCArKwogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAg fCAgMjYgKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvYXNzZXJ0LmMgfCAgMTMg KysrKwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jICAgfCAxMTUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAg ICAgfCAgMTIgKysrKwogc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gICAgICAgfCAgIDYg KysKIHNyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaCAgICAgICAgIHwgICAzICsKIHNyYy9pbmNs dWRlL3V0aWxzL2d1Yy5oICAgICAgICAgIHwgICAxICsKIDkgZmlsZXMgY2hhbmdlZCwgMjM5 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJl IGIvY29uZmlndXJlCmluZGV4IDdhNmJmYzIzMzkuLmZiZDgyMjRmNTAgMTAwNzU1Ci0tLSBh L2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTExNjYyLDYgKzExNjYyLDYzIEBAIGlm IHRlc3QgIiRhY19yZXMiICE9IG5vOyB0aGVuIDoKIAogZmkKIAorIyAqQlNEOgoreyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbGlicmFy eSBjb250YWluaW5nIGJhY2t0cmFjZV9zeW1ib2xzIiA+JjUKKyRhc19lY2hvX24gImNoZWNr aW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgYmFja3RyYWNlX3N5bWJvbHMuLi4gIiA+JjY7 IH0KK2lmICR7YWNfY3Zfc2VhcmNoX2JhY2t0cmFjZV9zeW1ib2xzKzp9IGZhbHNlOyB0aGVu IDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfZnVuY19zZWFy Y2hfc2F2ZV9MSUJTPSRMSUJTCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBH Q0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIg YmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBi dWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw bHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIg YmFja3RyYWNlX3N5bWJvbHMgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBiYWNrdHJh Y2Vfc3ltYm9scyAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorZm9yIGFjX2xp YiBpbiAnJyBleGVjaW5mbzsgZG8KKyAgaWYgdGVzdCAteiAiJGFjX2xpYiI7IHRoZW4KKyAg ICBhY19yZXM9Im5vbmUgcmVxdWlyZWQiCisgIGVsc2UKKyAgICBhY19yZXM9LWwkYWNfbGli CisgICAgTElCUz0iLWwkYWNfbGliICAkYWNfZnVuY19zZWFyY2hfc2F2ZV9MSUJTIgorICBm aQorICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3Nl YXJjaF9iYWNrdHJhY2Vfc3ltYm9scz0kYWNfcmVzCitmaQorcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0Cisg IGlmICR7YWNfY3Zfc2VhcmNoX2JhY2t0cmFjZV9zeW1ib2xzKzp9IGZhbHNlOyB0aGVuIDoK KyAgYnJlYWsKK2ZpCitkb25lCitpZiAke2FjX2N2X3NlYXJjaF9iYWNrdHJhY2Vfc3ltYm9s cys6fSBmYWxzZTsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY3Zfc2VhcmNoX2JhY2t0cmFjZV9z eW1ib2xzPW5vCitmaQorcm0gY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfZnVuY19zZWFy Y2hfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRhY19jdl9zZWFyY2hfYmFja3RyYWNlX3N5bWJvbHMiID4mNQorJGFz X2VjaG8gIiRhY19jdl9zZWFyY2hfYmFja3RyYWNlX3N5bWJvbHMiID4mNjsgfQorYWNfcmVz PSRhY19jdl9zZWFyY2hfYmFja3RyYWNlX3N5bWJvbHMKK2lmIHRlc3QgIiRhY19yZXMiICE9 IG5vOyB0aGVuIDoKKyAgdGVzdCAiJGFjX3JlcyIgPSAibm9uZSByZXF1aXJlZCIgfHwgTElC Uz0iJGFjX3JlcyAkTElCUyIKKworZmkKKwogCiBpZiB0ZXN0ICIkd2l0aF9yZWFkbGluZSIg PSB5ZXM7IHRoZW4KIApAQCAtMTI3NjAsNyArMTI4MTcsNyBAQCAkYXNfZWNobyAiI2RlZmlu ZSBIQVZFX1NUREJPT0xfSCAxIiA+PmNvbmZkZWZzLmgKIGZpCiAKIAotZm9yIGFjX2hlYWRl ciBpbiBhdG9taWMuaCBjb3B5ZmlsZS5oIGNyeXB0LmggZnBfY2xhc3MuaCBnZXRvcHQuaCBp ZWVlZnAuaCBpZmFkZHJzLmggbGFuZ2luZm8uaCBtYmFycmllci5oIHBvbGwuaCBzeXMvZXBv bGwuaCBzeXMvaXBjLmggc3lzL3ByY3RsLmggc3lzL3Byb2NjdGwuaCBzeXMvcHN0YXQuaCBz eXMvcmVzb3VyY2UuaCBzeXMvc2VsZWN0Lmggc3lzL3NlbS5oIHN5cy9zaG0uaCBzeXMvc29j a2lvLmggc3lzL3Rhcy5oIHN5cy91bi5oIHRlcm1pb3MuaCB1Y3JlZC5oIHV0aW1lLmggd2No YXIuaCB3Y3R5cGUuaAorZm9yIGFjX2hlYWRlciBpbiBhdG9taWMuaCBjb3B5ZmlsZS5oIGNy eXB0LmggZXhlY2luZm8uaCBmcF9jbGFzcy5oIGdldG9wdC5oIGllZWVmcC5oIGlmYWRkcnMu aCBsYW5naW5mby5oIG1iYXJyaWVyLmggcG9sbC5oIHN5cy9lcG9sbC5oIHN5cy9pcGMuaCBz eXMvcHJjdGwuaCBzeXMvcHJvY2N0bC5oIHN5cy9wc3RhdC5oIHN5cy9yZXNvdXJjZS5oIHN5 cy9zZWxlY3QuaCBzeXMvc2VtLmggc3lzL3NobS5oIHN5cy9zb2NraW8uaCBzeXMvdGFzLmgg c3lzL3VuLmggdGVybWlvcy5oIHVjcmVkLmggdXRpbWUuaCB3Y2hhci5oIHdjdHlwZS5oCiBk byA6CiAgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVy IiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8i ICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgpA QCAtMTUxNDMsNyArMTUyMDAsNyBAQCBmaQogTElCU19pbmNsdWRpbmdfcmVhZGxpbmU9IiRM SUJTIgogTElCUz1gZWNobyAiJExJQlMiIHwgc2VkIC1lICdzLy1sZWRpdC8vZycgLWUgJ3Mv LWxyZWFkbGluZS8vZydgCiAKLWZvciBhY19mdW5jIGluIGNicnQgY2xvY2tfZ2V0dGltZSBj b3B5ZmlsZSBmZGF0YXN5bmMgZ2V0aWZhZGRycyBnZXRwZWVydWNyZWQgZ2V0cmxpbWl0IG1i c3Rvd2NzX2wgbWVtbW92ZSBwb2xsIHBvc2l4X2ZhbGxvY2F0ZSBwcG9sbCBwc3RhdCBwdGhy ZWFkX2lzX3RocmVhZGVkX25wIHJlYWRsaW5rIHNldHByb2N0aXRsZSBzZXRwcm9jdGl0bGVf ZmFzdCBzZXRzaWQgc2htX29wZW4gc3RyY2hybnVsIHN0cnNpZ25hbCBzeW1saW5rIHN5bmNf ZmlsZV9yYW5nZSB1c2Vsb2NhbGUgdXRpbWUgdXRpbWVzIHdjc3RvbWJzX2wKK2ZvciBhY19m dW5jIGluIGJhY2t0cmFjZV9zeW1ib2xzIGNicnQgY2xvY2tfZ2V0dGltZSBjb3B5ZmlsZSBm ZGF0YXN5bmMgZ2V0aWZhZGRycyBnZXRwZWVydWNyZWQgZ2V0cmxpbWl0IG1ic3Rvd2NzX2wg bWVtbW92ZSBwb2xsIHBvc2l4X2ZhbGxvY2F0ZSBwcG9sbCBwc3RhdCBwdGhyZWFkX2lzX3Ro cmVhZGVkX25wIHJlYWRsaW5rIHNldHByb2N0aXRsZSBzZXRwcm9jdGl0bGVfZmFzdCBzZXRz aWQgc2htX29wZW4gc3RyY2hybnVsIHN0cnNpZ25hbCBzeW1saW5rIHN5bmNfZmlsZV9yYW5n ZSB1c2Vsb2NhbGUgdXRpbWUgdXRpbWVzIHdjc3RvbWJzX2wKIGRvIDoKICAgYXNfYWNfdmFy PWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBhY19mbl9j X2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCmRpZmYgLS1n aXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KaW5kZXggZGRlM2VlYzg5Zi4uZjBj NWVjOWY0NyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmluCisrKyBiL2NvbmZpZ3VyZS5pbgpA QCAtMTEzMSw2ICsxMTMxLDggQEAgQUNfU0VBUkNIX0xJQlMoc2NoZWRfeWllbGQsIHJ0KQog QUNfU0VBUkNIX0xJQlMoZ2V0aG9zdGJ5bmFtZV9yLCBuc2wpCiAjIEN5Z3dpbjoKIEFDX1NF QVJDSF9MSUJTKHNobWdldCwgY3lnaXBjKQorIyAqQlNEOgorQUNfU0VBUkNIX0xJQlMoYmFj a3RyYWNlX3N5bWJvbHMsIGV4ZWNpbmZvKQogCiBpZiB0ZXN0ICIkd2l0aF9yZWFkbGluZSIg PSB5ZXM7IHRoZW4KICAgUEdBQ19DSEVDS19SRUFETElORQpAQCAtMTI3NCw2ICsxMjc2LDcg QEAgQUNfQ0hFQ0tfSEVBREVSUyhtNF9ub3JtYWxpemUoWwogCWF0b21pYy5oCiAJY29weWZp bGUuaAogCWNyeXB0LmgKKwlleGVjaW5mby5oCiAJZnBfY2xhc3MuaAogCWdldG9wdC5oCiAJ aWVlZWZwLmgKQEAgLTE1ODgsNiArMTU5MSw3IEBAIExJQlNfaW5jbHVkaW5nX3JlYWRsaW5l PSIkTElCUyIKIExJQlM9YGVjaG8gIiRMSUJTIiB8IHNlZCAtZSAncy8tbGVkaXQvL2cnIC1l ICdzLy1scmVhZGxpbmUvL2cnYAogCiBBQ19DSEVDS19GVU5DUyhtNF9ub3JtYWxpemUoWwor CWJhY2t0cmFjZV9zeW1ib2xzCiAJY2JydAogCWNsb2NrX2dldHRpbWUKIAljb3B5ZmlsZQpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sCmluZGV4IGNkYzMwZmE1ZTMuLjEwZTZjODBhYzEgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK QEAgLTkyODUsNiArOTI4NSwzMiBAQCA8dGl0bGU+RGV2ZWxvcGVyIE9wdGlvbnM8L3RpdGxl PgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZh cmxpc3RlbnRyeSBpZD0iZ3VjLWJhY2t0cmFjZS1mdW5jdGlvbnMiIHhyZWZsYWJlbD0iYmFj a3RyYWNlX2Z1bmN0aW9ucyI+CisgICAgICA8dGVybT48dmFybmFtZT5iYWNrdHJhY2VfZnVu Y3Rpb25zPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPikKKyAgICAgIDxpbmRleHRl cm0+CisgICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmJhY2t0cmFjZV9mdW5jdGlvbnM8L3Zh cm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRl eHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIGEgY29tbWEtc2VwYXJhdGVkIGxp c3Qgb2YgQyBmdW5jdGlvbiBuYW1lcy4KKyAgICAgICAgSWYgYW4gZXJyb3IgaXMgcmFpc2Vk IGFuZCB0aGUgbmFtZSBvZiB0aGUgaW50ZXJuYWwgQyBmdW5jdGlvbiB3aGVyZQorICAgICAg ICB0aGUgZXJyb3IgaGFwcGVucyBtYXRjaGVzIGEgdmFsdWUgaW4gdGhlIGxpc3QsIHRoZW4g YSBiYWNrdHJhY2UgaXMKKyAgICAgICAgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZyB0b2dl dGhlciB3aXRoIHRoZSBlcnJvciBtZXNzYWdlLiAgVGhpcyBjYW4KKyAgICAgICAgYmUgdXNl ZCB0byBkZWJ1ZyBzcGVjaWZpYyBhcmVhcyBvZiB0aGUgc291cmNlIGNvZGUuCisgICAgICAg PC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIEJhY2t0cmFjZSBzdXBwb3J0IGlz IG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcywgYW5kIHRoZSBxdWFsaXR5CisgICAg ICAgIG9mIHRoZSBiYWNrdHJhY2VzIGRlcGVuZHMgb24gY29tcGlsYXRpb24gb3B0aW9ucy4K KyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBwYXJhbWV0 ZXIgY2FuIG9ubHkgYmUgc2V0IGJ5IHN1cGVydXNlcnMuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3Rl bnRyeSBpZD0iZ3VjLWlnbm9yZS1zeXN0ZW0taW5kZXhlcyIgeHJlZmxhYmVsPSJpZ25vcmVf c3lzdGVtX2luZGV4ZXMiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+aWdub3JlX3N5c3RlbV9p bmRleGVzPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0 ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvYXNzZXJ0LmMgYi9z cmMvYmFja2VuZC91dGlscy9lcnJvci9hc3NlcnQuYwppbmRleCAyMDUwYjQzNTVkLi4xNDcw N2ZjMjk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9hc3NlcnQuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9hc3NlcnQuYwpAQCAtMTgsNiArMTgsOSBA QAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpZmRl ZiBIQVZFX0VYRUNJTkZPX0gKKyNpbmNsdWRlIDxleGVjaW5mby5oPgorI2VuZGlmCiAKIC8q CiAgKiBFeGNlcHRpb25hbENvbmRpdGlvbiAtIEhhbmRsZXMgdGhlIGZhaWx1cmUgb2YgYW4g QXNzZXJ0KCkKQEAgLTQyLDYgKzQ1LDE2IEBAIEV4Y2VwdGlvbmFsQ29uZGl0aW9uKGNvbnN0 IGNoYXIgKmNvbmRpdGlvbk5hbWUsCiAJLyogVXN1YWxseSB0aGlzIHNob3VsZG4ndCBiZSBu ZWVkZWQsIGJ1dCBtYWtlIHN1cmUgdGhlIG1zZyB3ZW50IG91dCAqLwogCWZmbHVzaChzdGRl cnIpOwogCisjaWZkZWYgSEFWRV9CQUNLVFJBQ0VfU1lNQk9MUworCXsKKwkJdm9pZAkgICAq YnVmWzEwMF07CisJCWludAkJCW5mcmFtZXM7CisKKwkJbmZyYW1lcyA9IGJhY2t0cmFjZShi dWYsIHNpemVvZihidWYpKTsKKwkJYmFja3RyYWNlX3N5bWJvbHNfZmQoYnVmLCBuZnJhbWVz LCBmaWxlbm8oc3RkZXJyKSk7CisJfQorI2VuZGlmCisKICNpZmRlZiBTTEVFUF9PTl9BU1NF UlQKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMg Yi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKaW5kZXggOGI0NzIwZWYzYS4uMTJh MzdlNGFjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwpAQCAtNjIsNiArNjIsOSBAQAog I2lmZGVmIEhBVkVfU1lTTE9HCiAjaW5jbHVkZSA8c3lzbG9nLmg+CiAjZW5kaWYKKyNpZmRl ZiBIQVZFX0VYRUNJTkZPX0gKKyNpbmNsdWRlIDxleGVjaW5mby5oPgorI2VuZGlmCiAKICNp bmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCkBA IC0xNjYsNiArMTY5LDcgQEAgc3RhdGljIGNoYXIgZm9ybWF0dGVkX2xvZ190aW1lW0ZPUk1B VFRFRF9UU19MRU5dOwogCX0gd2hpbGUgKDApCiAKIAorc3RhdGljIHBnX25vaW5saW5lIHZv aWQgc2V0X2JhY2t0cmFjZShFcnJvckRhdGEgKmVkYXRhLCBpbnQgbnVtX3NraXApOwogc3Rh dGljIGNvbnN0IGNoYXIgKmVycl9nZXR0ZXh0KGNvbnN0IGNoYXIgKnN0cikgcGdfYXR0cmli dXRlX2Zvcm1hdF9hcmcoMSk7CiBzdGF0aWMgdm9pZCBzZXRfZXJyZGF0YV9maWVsZChNZW1v cnlDb250ZXh0RGF0YSAqY3h0LCBjaGFyICoqcHRyLCBjb25zdCBjaGFyICpzdHIpOwogc3Rh dGljIHZvaWQgd3JpdGVfY29uc29sZShjb25zdCBjaGFyICpsaW5lLCBpbnQgbGVuKTsKQEAg LTM5OCw2ICs0MDIsMzMgQEAgZXJyc3RhcnQoaW50IGVsZXZlbCwgY29uc3QgY2hhciAqZmls ZW5hbWUsIGludCBsaW5lbm8sCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBDaGVja3Mg d2hldGhlciB0aGUgZ2l2ZW4gZnVuY25hbWUgbWF0Y2hlcyB0aGUgY29tbWEtc2VwYXJhdGVk IGxpc3QgaW4gYmFja3RyYWNlX2Z1bmN0aW9ucy4KKyAqCisgKiBUaGlzIGlzIGNvZGVkIHNl cGFyYXRlbHkgaGVyZSBpbnN0ZWFkIG9mIHVzaW5nIGFuIGV4aXN0aW5nIGxpc3Qtc3BsaXR0 aW5nCisgKiBmdW5jdGlvbiBzbyB0aGF0IHdlIGNhbiBjb250cm9sIHRoZSBlcnJvciBiZWhh dmlvciBjYXJlZnVsbHksIHNpbmNlIHRoaXMgaXMKKyAqIGNhbGxlZCBkdXJpbmcgZXJyb3Ig cHJvY2Vzc2luZy4KKyAqLworc3RhdGljIGJvb2wKK21hdGNoZXNfYmFja3RyYWNlX2Z1bmN0 aW9ucyhjb25zdCBjaGFyICpmdW5jbmFtZSkKK3sKKwljaGFyCSAgICpzZXR0aW5nID0gc3Ry ZHVwKGJhY2t0cmFjZV9mdW5jdGlvbnMpOworCisJaWYgKCFzZXR0aW5nKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlmb3IgKGNoYXIgKnRva2VuID0gc3RydG9rKHNldHRpbmcsICIsIik7IHRv a2VuOyB0b2tlbiA9IHN0cnRvayhOVUxMLCAiLCIpKQorCXsKKwkJaWYgKHN0cmNtcCh0b2tl biwgZnVuY25hbWUpID09IDApCisJCXsKKwkJCWZyZWUoc2V0dGluZyk7CisJCQlyZXR1cm4g dHJ1ZTsKKwkJfQorCX0KKwlmcmVlKHNldHRpbmcpOworCXJldHVybiBmYWxzZTsKK30KKwog LyoKICAqIGVycmZpbmlzaCAtLS0gZW5kIGFuIGVycm9yLXJlcG9ydGluZyBjeWNsZQogICoK QEAgLTQyNCw2ICs0NTUsMTIgQEAgZXJyZmluaXNoKGludCBkdW1teSwuLi4pCiAJICovCiAJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhFcnJvckNvbnRleHQpOwogCisJ aWYgKCFlZGF0YS0+YmFja3RyYWNlICYmCisJCWVkYXRhLT5mdW5jbmFtZSAmJgorCQliYWNr dHJhY2VfZnVuY3Rpb25zICYmCisJCW1hdGNoZXNfYmFja3RyYWNlX2Z1bmN0aW9ucyhlZGF0 YS0+ZnVuY25hbWUpKQorCQlzZXRfYmFja3RyYWNlKGVkYXRhLCAyKTsKKwogCS8qCiAJICog Q2FsbCBhbnkgY29udGV4dCBjYWxsYmFjayBmdW5jdGlvbnMuICBFcnJvcnMgb2NjdXJyaW5n IGluIGNhbGxiYWNrCiAJICogZnVuY3Rpb25zIHdpbGwgYmUgdHJlYXRlZCBhcyByZWN1cnNp dmUgZXJyb3JzIC0tLSB0aGlzIGVuc3VyZXMgd2Ugd2lsbApAQCAtNDg4LDYgKzUyNSw4IEBA IGVycmZpbmlzaChpbnQgZHVtbXksLi4uKQogCQlwZnJlZShlZGF0YS0+aGludCk7CiAJaWYg KGVkYXRhLT5jb250ZXh0KQogCQlwZnJlZShlZGF0YS0+Y29udGV4dCk7CisJaWYgKGVkYXRh LT5iYWNrdHJhY2UpCisJCXBmcmVlKGVkYXRhLT5iYWNrdHJhY2UpOwogCWlmIChlZGF0YS0+ c2NoZW1hX25hbWUpCiAJCXBmcmVlKGVkYXRhLT5zY2hlbWFfbmFtZSk7CiAJaWYgKGVkYXRh LT50YWJsZV9uYW1lKQpAQCAtNzk4LDYgKzgzNyw2MiBAQCBlcnJtc2coY29uc3QgY2hhciAq Zm10LC4uLikKIAlyZXR1cm4gMDsJCQkJCS8qIHJldHVybiB2YWx1ZSBkb2VzIG5vdCBtYXR0 ZXIgKi8KIH0KIAorLyoKKyAqIEFkZCBhIGJhY2t0cmFjZSB0byB0aGUgY29udGFpbmluZyBl cmVwb3J0KCkgY2FsbC4gIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUKKyAqIGFkZGVkIHRlbXBv cmFyaWx5IGR1cmluZyBkZWJ1Z2dpbmcuCisgKi8KK2ludAorZXJyYmFja3RyYWNlKHZvaWQp Cit7CisJRXJyb3JEYXRhICAgKmVkYXRhID0gJmVycm9yZGF0YVtlcnJvcmRhdGFfc3RhY2tf ZGVwdGhdOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCXJlY3Vyc2lvbl9kZXB0 aCsrOworCUNIRUNLX1NUQUNLX0RFUFRIKCk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhlZGF0YS0+YXNzb2NfY29udGV4dCk7CisKKwlzZXRfYmFja3RyYWNlKGVk YXRhLCAxKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwlyZWN1 cnNpb25fZGVwdGgtLTsKKworCXJldHVybiAwOworfQorCisvKgorICogQ29tcHV0ZSBiYWNr dHJhY2UgZGF0YSBhbmQgYWRkIGl0IHRvIHRoZSBzdXBwbGllZCBFcnJvckRhdGEuICBudW1f c2tpcAorICogc3BlY2lmaWVzIGhvdyBtYW55IGlubmVyIGZyYW1lcyB0byBza2lwLiAgVXNl IHRoaXMgdG8gYXZvaWQgc2hvd2luZyB0aGUKKyAqIGludGVybmFsIGJhY2t0cmFjZSBzdXBw b3J0IGZ1bmN0aW9ucyBpbiB0aGUgYmFja3RyYWNlLiAgVGhpcyByZXF1aXJlcyB0aGF0Cisg KiB0aGlzIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgbm90IGlubGluZWQuCisgKi8KK3N0 YXRpYyB2b2lkCitzZXRfYmFja3RyYWNlKEVycm9yRGF0YSAqZWRhdGEsIGludCBudW1fc2tp cCkKK3sKKwlTdHJpbmdJbmZvRGF0YSBlcnJ0cmFjZTsKKworCWluaXRTdHJpbmdJbmZvKCZl cnJ0cmFjZSk7CisKKyNpZmRlZiBIQVZFX0JBQ0tUUkFDRV9TWU1CT0xTCisJeworCQl2b2lk CSAgICpidWZbMTAwXTsKKwkJaW50CQkJbmZyYW1lczsKKwkJY2hhcgkgICoqc3RyZnJtczsK KworCQluZnJhbWVzID0gYmFja3RyYWNlKGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQlzdHJmcm1z ID0gYmFja3RyYWNlX3N5bWJvbHMoYnVmLCBuZnJhbWVzKTsKKwkJaWYgKHN0cmZybXMgPT0g TlVMTCkKKwkJCXJldHVybjsKKworCQlmb3IgKGludCBpID0gbnVtX3NraXA7IGkgPCBuZnJh bWVzOyBpKyspCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJ0cmFjZSwgIlxuJXMiLCBzdHJm cm1zW2ldKTsKKwkJZnJlZShzdHJmcm1zKTsKKwl9CisjZWxzZQorCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmVycnRyYWNlLCAiYmFja3RyYWNlIG5vdCBzdXBwb3J0ZWQiKTsKKyNlbmRp ZgorCisJZWRhdGEtPmJhY2t0cmFjZSA9IGVycnRyYWNlLmRhdGE7Cit9CiAKIC8qCiAgKiBl cnJtc2dfaW50ZXJuYWwgLS0tIGFkZCBhIHByaW1hcnkgZXJyb3IgbWVzc2FnZSB0ZXh0IHRv IHRoZSBjdXJyZW50IGVycm9yCkBAIC0xMzUzLDYgKzE0NDgsMTEgQEAgZWxvZ19maW5pc2go aW50IGVsZXZlbCwgY29uc3QgY2hhciAqZm10LC4uLikKIAlyZWN1cnNpb25fZGVwdGgrKzsK IAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVkYXRhLT5hc3NvY19jb250 ZXh0KTsKIAorCWlmICghZWRhdGEtPmJhY2t0cmFjZSAmJgorCQllZGF0YS0+ZnVuY25hbWUg JiYKKwkJbWF0Y2hlc19iYWNrdHJhY2VfZnVuY3Rpb25zKGVkYXRhLT5mdW5jbmFtZSkgPT0g MCkKKwkJc2V0X2JhY2t0cmFjZShlZGF0YSwgMik7CisKIAllZGF0YS0+bWVzc2FnZV9pZCA9 IGZtdDsKIAlFVkFMVUFURV9NRVNTQUdFKGVkYXRhLT5kb21haW4sIG1lc3NhZ2UsIGZhbHNl LCBmYWxzZSk7CiAKQEAgLTE1MDksNiArMTYwOSw4IEBAIENvcHlFcnJvckRhdGEodm9pZCkK IAkJbmV3ZWRhdGEtPmhpbnQgPSBwc3RyZHVwKG5ld2VkYXRhLT5oaW50KTsKIAlpZiAobmV3 ZWRhdGEtPmNvbnRleHQpCiAJCW5ld2VkYXRhLT5jb250ZXh0ID0gcHN0cmR1cChuZXdlZGF0 YS0+Y29udGV4dCk7CisJaWYgKG5ld2VkYXRhLT5iYWNrdHJhY2UpCisJCW5ld2VkYXRhLT5i YWNrdHJhY2UgPSBwc3RyZHVwKG5ld2VkYXRhLT5iYWNrdHJhY2UpOwogCWlmIChuZXdlZGF0 YS0+c2NoZW1hX25hbWUpCiAJCW5ld2VkYXRhLT5zY2hlbWFfbmFtZSA9IHBzdHJkdXAobmV3 ZWRhdGEtPnNjaGVtYV9uYW1lKTsKIAlpZiAobmV3ZWRhdGEtPnRhYmxlX25hbWUpCkBAIC0x NTQ3LDYgKzE2NDksOCBAQCBGcmVlRXJyb3JEYXRhKEVycm9yRGF0YSAqZWRhdGEpCiAJCXBm cmVlKGVkYXRhLT5oaW50KTsKIAlpZiAoZWRhdGEtPmNvbnRleHQpCiAJCXBmcmVlKGVkYXRh LT5jb250ZXh0KTsKKwlpZiAoZWRhdGEtPmJhY2t0cmFjZSkKKwkJcGZyZWUoZWRhdGEtPmJh Y2t0cmFjZSk7CiAJaWYgKGVkYXRhLT5zY2hlbWFfbmFtZSkKIAkJcGZyZWUoZWRhdGEtPnNj aGVtYV9uYW1lKTsKIAlpZiAoZWRhdGEtPnRhYmxlX25hbWUpCkBAIC0xNjIyLDYgKzE3MjYs OCBAQCBUaHJvd0Vycm9yRGF0YShFcnJvckRhdGEgKmVkYXRhKQogCQluZXdlZGF0YS0+aGlu dCA9IHBzdHJkdXAoZWRhdGEtPmhpbnQpOwogCWlmIChlZGF0YS0+Y29udGV4dCkKIAkJbmV3 ZWRhdGEtPmNvbnRleHQgPSBwc3RyZHVwKGVkYXRhLT5jb250ZXh0KTsKKwlpZiAoZWRhdGEt PmJhY2t0cmFjZSkKKwkJbmV3ZWRhdGEtPmJhY2t0cmFjZSA9IHBzdHJkdXAoZWRhdGEtPmJh Y2t0cmFjZSk7CiAJLyogYXNzdW1lIG1lc3NhZ2VfaWQgaXMgbm90IGF2YWlsYWJsZSAqLwog CWlmIChlZGF0YS0+c2NoZW1hX25hbWUpCiAJCW5ld2VkYXRhLT5zY2hlbWFfbmFtZSA9IHBz dHJkdXAoZWRhdGEtPnNjaGVtYV9uYW1lKTsKQEAgLTE2ODksNiArMTc5NSw4IEBAIFJlVGhy b3dFcnJvcihFcnJvckRhdGEgKmVkYXRhKQogCQluZXdlZGF0YS0+aGludCA9IHBzdHJkdXAo bmV3ZWRhdGEtPmhpbnQpOwogCWlmIChuZXdlZGF0YS0+Y29udGV4dCkKIAkJbmV3ZWRhdGEt PmNvbnRleHQgPSBwc3RyZHVwKG5ld2VkYXRhLT5jb250ZXh0KTsKKwlpZiAobmV3ZWRhdGEt PmJhY2t0cmFjZSkKKwkJbmV3ZWRhdGEtPmJhY2t0cmFjZSA9IHBzdHJkdXAobmV3ZWRhdGEt PmJhY2t0cmFjZSk7CiAJaWYgKG5ld2VkYXRhLT5zY2hlbWFfbmFtZSkKIAkJbmV3ZWRhdGEt PnNjaGVtYV9uYW1lID0gcHN0cmR1cChuZXdlZGF0YS0+c2NoZW1hX25hbWUpOwogCWlmIChu ZXdlZGF0YS0+dGFibGVfbmFtZSkKQEAgLTI5MTQsNiArMzAyMiwxMyBAQCBzZW5kX21lc3Nh Z2VfdG9fc2VydmVyX2xvZyhFcnJvckRhdGEgKmVkYXRhKQogCQkJYXBwZW5kX3dpdGhfdGFi cygmYnVmLCBlZGF0YS0+Y29udGV4dCk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVm LCAnXG4nKTsKIAkJfQorCQlpZiAoZWRhdGEtPmJhY2t0cmFjZSkKKwkJeworCQkJbG9nX2xp bmVfcHJlZml4KCZidWYsIGVkYXRhKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgXygiQkFDS1RSQUNFOiAgIikpOworCQkJYXBwZW5kX3dpdGhfdGFicygmYnVmLCBlZGF0 YS0+YmFja3RyYWNlKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICdcbicpOwor CQl9CiAJCWlmIChMb2dfZXJyb3JfdmVyYm9zaXR5ID49IFBHRVJST1JfVkVSQk9TRSkKIAkJ ewogCQkJLyogYXNzdW1lIG5vIG5ld2xpbmVzIGluIGZ1bmNuYW1lIG9yIGZpbGVuYW1lLi4u ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBlYjc4NTIyMDUzLi4yYmIwNTQxNGUxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTUxMyw2ICs1MTMsNyBAQCBpbnQJCQlsb2dfbWlu X2R1cmF0aW9uX3N0YXRlbWVudCA9IC0xOwogaW50CQkJbG9nX3RlbXBfZmlsZXMgPSAtMTsK IGRvdWJsZQkJbG9nX3hhY3Rfc2FtcGxlX3JhdGUgPSAwOwogaW50CQkJdHJhY2VfcmVjb3Zl cnlfbWVzc2FnZXMgPSBMT0c7CitjaGFyCSAgICpiYWNrdHJhY2VfZnVuY3Rpb25zOwogCiBp bnQJCQl0ZW1wX2ZpbGVfbGltaXQgPSAtMTsKIApAQCAtNDE5OSw2ICs0MjAwLDE3IEBAIHN0 YXRpYyBzdHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJ TlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsiYmFja3RyYWNlX2Z1bmN0aW9ucyIs IFBHQ19TVVNFVCwgREVWRUxPUEVSX09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkxvZyBi YWNrdHJhY2UgZm9yIGVycm9ycyBpbiB0aGVzZSBmdW5jdGlvbnMuIiksCisJCQlOVUxMLAor CQkJR1VDX05PVF9JTl9TQU1QTEUKKwkJfSwKKwkJJmJhY2t0cmFjZV9mdW5jdGlvbnMsCisJ CSIiLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtl ciAqLwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBi L3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCmluZGV4IDUxMjIxM2FhMzIuLjIxY2QwMWE2 NmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9p bmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC05Niw2ICs5Niw5IEBACiAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgPGF0b21pYy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBI QVZFX0FUT01JQ19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmFja3Ry YWNlX3N5bWJvbHMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQkFDS1RSQUNFX1NZTUJP TFMKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBCSU9fZ2V0X2RhdGEnIGZ1 bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQklPX0dFVF9EQVRBCiAKQEAgLTIwMSw2ICsyMDQs OSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlZGl0bGluZS9yZWFkbGlu ZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0VESVRMSU5FX1JFQURMSU5FX0gK IAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxleGVjaW5mby5oPiBoZWFkZXIg ZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0VYRUNJTkZPX0gKKwogLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGBmZGF0YXN5bmMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkRB VEFTWU5DCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL2Vsb2cuaAppbmRleCBiYTBiN2Y2Zjc5Li42YTMxNTQxNGUyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvZWxvZy5oCkBAIC0xODksNiArMTg5LDggQEAgZXh0ZXJuIGludAllcnJjb250ZXh0X21z Zyhjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIpOwogZXh0 ZXJuIGludAllcnJoaWRlc3RtdChib29sIGhpZGVfc3RtdCk7CiBleHRlcm4gaW50CWVycmhp ZGVjb250ZXh0KGJvb2wgaGlkZV9jdHgpOwogCitleHRlcm4gaW50CWVycmJhY2t0cmFjZSh2 b2lkKTsKKwogZXh0ZXJuIGludAllcnJmdW5jdGlvbihjb25zdCBjaGFyICpmdW5jbmFtZSk7 CiBleHRlcm4gaW50CWVycnBvc2l0aW9uKGludCBjdXJzb3Jwb3MpOwogCkBAIC0zNjIsNiAr MzY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXJyb3JEYXRhCiAJY2hhcgkgICAqZGV0YWlsX2xv ZzsJCS8qIGRldGFpbCBlcnJvciBtZXNzYWdlIGZvciBzZXJ2ZXIgbG9nIG9ubHkgKi8KIAlj aGFyCSAgICpoaW50OwkJCS8qIGhpbnQgbWVzc2FnZSAqLwogCWNoYXIJICAgKmNvbnRleHQ7 CQkvKiBjb250ZXh0IG1lc3NhZ2UgKi8KKwljaGFyCSAgICpiYWNrdHJhY2U7CQkvKiBiYWNr dHJhY2UgKi8KIAljb25zdCBjaGFyICptZXNzYWdlX2lkOwkJLyogcHJpbWFyeSBtZXNzYWdl J3MgaWQgKG9yaWdpbmFsIHN0cmluZykgKi8KIAljaGFyCSAgICpzY2hlbWFfbmFtZTsJLyog bmFtZSBvZiBzY2hlbWEgKi8KIAljaGFyCSAgICp0YWJsZV9uYW1lOwkJLyogbmFtZSBvZiB0 YWJsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmggYi9zcmMvaW5j bHVkZS91dGlscy9ndWMuaAppbmRleCA2NzkxZTBjYmMyLi5hZjhkNWE2Y2RkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9ndWMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9n dWMuaApAQCAtMjU0LDYgKzI1NCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY2xpZW50 X21pbl9tZXNzYWdlczsKIGV4dGVybiBpbnQJbG9nX21pbl9kdXJhdGlvbl9zdGF0ZW1lbnQ7 CiBleHRlcm4gaW50CWxvZ190ZW1wX2ZpbGVzOwogZXh0ZXJuIGRvdWJsZSBsb2dfeGFjdF9z YW1wbGVfcmF0ZTsKK2V4dGVybiBjaGFyICpiYWNrdHJhY2VfZnVuY3Rpb25zOwogCiBleHRl cm4gaW50CXRlbXBfZmlsZV9saW1pdDsKIAoKYmFzZS1jb21taXQ6IDY2YmRlNDlkOTZhOWRk YWNjNDlkY2JkZjFiNDdiNWJkNmUzMWVhZDUKLS0gCjIuMjIuMAoK --------------141D8826D1F4B634646DD8ED--