Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qUeTY-00DgtR-H1 for pgsql-hackers@arkaria.postgresql.org; Sat, 12 Aug 2023 02:35:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qUeTW-00Dsuu-Tr for pgsql-hackers@arkaria.postgresql.org; Sat, 12 Aug 2023 02:35:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qUeTW-00Dss9-4P for pgsql-hackers@lists.postgresql.org; Sat, 12 Aug 2023 02:35:35 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qUeTO-001tlQ-Dq for pgsql-hackers@postgresql.org; Sat, 12 Aug 2023 02:35:33 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-1bc7e65ea44so18310545ad.1 for ; Fri, 11 Aug 2023 19:35:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20221208.gappssmtp.com; s=20221208; t=1691807725; x=1692412525; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=IHvKFTc38WsLyCSs+OynN8DxMLQ5VaoeAJDjzoeVoJU=; b=wI3HuWI1UoLy2c2fUYE7rGwzzt/5BE9fgRbCKb4k8uMN7h9mGf4lB+S9xNqyvVG9Y8 H3s8+YADDElhxhcJu/esW3DhW2FsYFu0SxfEmgU3quN17Zl3rKfRQDsL1popn/+a0qRk nKnzDePsSWtygusXIi3w7JSRBTneFx3FKOIg2VaL+/a0ZasKtAc+oqqaaPbkPGObH1nV 0ED+yfi09475AAsXfWTayvQ5tMlbiWXrGBeKodw5oyNQ+vG4CYQcj2PejLPTXxz4w0kK mMsHAbqd+VKNwAghssjKA2UnfTGHEYmbaKgJ9rst1NBpGTa2wV5QWuzWHC+vkxNvQfbY U64w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691807725; x=1692412525; h=mime-version:user-agent:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IHvKFTc38WsLyCSs+OynN8DxMLQ5VaoeAJDjzoeVoJU=; b=PPlmRLvg3SvaQ6wjyvvk+4megyUUOgrEsieOyZ/pvMkqtXCRz98/qMQofwTEW/Fvre rSNZu38K1ect7A/fUn9ur1k7O4XCAVMKDCeKbCw2zvKe8NpYOO5ZtXsmzMGwEMJrX7Na WAt+TAJdEx/Gpk+/XHZtQs05pZEACGSG/ygh5YRqNYDesvjVIoyvB77WzxwWPmKONHEe AfYTcgcVMQA2aTIg4pt+zClXHKbLeeCwEI3pt4+cfXZMudE1N7bmsuP2ITtgWZjKmxDx GJhKiurwOY/4Of9WYNmPc54cc1DuBiWmI936VvYMPMeqCD6V0Eb2i6PaIsBC5w0TFP8E h+3Q== X-Gm-Message-State: AOJu0YyqS2ZOCXdJZI8XpIdJsFmypZveBffm7a8pcMLfLE94PY4FDb5I zkMqT9Dm/mVzITe5CnkoPvN5B/iUtkNA7NeajS4= X-Google-Smtp-Source: AGHT+IES+8BNxp3YCzUCHh8ZLMk9qJlV0rklrqAzpstlr2RlaPF6aTteJF+FINJLptUbX7B1vrrqtg== X-Received: by 2002:a17:903:1cb:b0:1bc:40ce:e1ec with SMTP id e11-20020a17090301cb00b001bc40cee1ecmr4396968plh.30.1691807724722; Fri, 11 Aug 2023 19:35:24 -0700 (PDT) Received: from jeff-laptop.lan (c-98-45-81-55.hsd1.ca.comcast.net. [98.45.81.55]) by smtp.gmail.com with ESMTPSA id 12-20020a170902c10c00b001b7cbc5871csm4636602pli.53.2023.08.11.19.35.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Aug 2023 19:35:24 -0700 (PDT) Message-ID: <2710f56add351a1ed553efb677408e51b060e67c.camel@j-davis.com> Subject: CREATE FUNCTION ... SEARCH { DEFAULT | SYSTEM | SESSION } From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Fri, 11 Aug 2023 19:35:22 -0700 Content-Type: multipart/mixed; boundary="=-14Jpd0ubLGwByO86wRTd" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-14Jpd0ubLGwByO86wRTd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The attached patch implements a new SEARCH clause for CREATE FUNCTION. The SEARCH clause controls the search_path used when executing functions that were created without a SET clause. Background: Controlling search_path is critical for the correctness and security of functions. Right now, the author of a function without a SET clause has little ability to control the function's behavior, because even basic operators like "+" involve search_path. This is a big problem for, e.g. functions used in expression indexes which are called by any user with write privileges on the table. Motivation: I'd like to (eventually) get to safe-by-default behavior. In other words, the simplest function declaration should be safe for the most common use cases. To get there, we need some way to explicitly specify the less common cases. Right now there's no way for the function author to indicate that a function intends to use the session's search path. We also need an easier way to specify that the user wants a safe search_path ("SET search_path =3D pg_catalog, pg_temp" is arcane). And when we know more about the user's actual intent, then it will be easier to either form a transition plan to push users into the safer behavior, or at least warn strongly when the user is doing something dangerous (i.e. using a function that depends on the session's search path as part of an expression index). Today, the only information we have about the user's intent is the presence or absence of a "SET search_path" clause, which is not a strong signal. Proposal: Add SEARCH { DEFAULT | SYSTEM | SESSION } clause to CREATE/ALTER function. * SEARCH DEFAULT is the same as no SEARCH clause at all, and ends up stored in the catalog as prosearch=3D'd'. * SEARCH SYSTEM means that we switch to the safe search path of "pg_catalog, pg_temp" when executing the function. Stored as prosearch=3D'y'. * SEARCH SESSION means that we don't switch the search_path when executing the function, and it's inherited from the session. Stored as prosearch=3D'e'. Regardless of the SEARCH clause, a "SET search_path" clause will override it. The SEARCH clause only matters when "SET search_path" is not there. Additionally provide a GUC, defaulting to false for compatibility, that can interpret prosearch=3D'd' as if it were prosearch=3D'y'. It could help provide a transition path. I know there's a strong reluctance to adding these kinds of GUCs; I can remove it and I think the patch will still be worthwhile. Perhaps there are alternatives that could help with migration at pg_dump time instead? Benefits: 1. The user can be more explicit about their actual intent. Do they want safety and consistency? Or the flexibility of using the session's search_path? 2. We can more accurately serve the user's intent. For instance, the safe search_path of "pg_catalog, pg_temp" is arcane and seems to be there just because we don't have a way to specify that pg_temp be excluded entirely. But perhaps in the future we *do* want to exclude pg_temp entirely. Knowing that the user just wants "SEARCH SYSTEM" allows us some freedom to do that. 3. Users can be forward-compatible by specifying the functions that really do need to use the session's search path as SEARCH SESSION, so that they will never be broken in the future. That gives us a cleaner path toward making the default behavior safe. --=20 Jeff Davis PostgreSQL Contributor Team - AWS --=-14Jpd0ubLGwByO86wRTd Content-Disposition: attachment; filename="0001-CREATE-FUNCTION-.-SEARCH-DEFAULT-SYSTEM-SESSION.patch" Content-Type: text/x-patch; name="0001-CREATE-FUNCTION-.-SEARCH-DEFAULT-SYSTEM-SESSION.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwMjE4YjQ3MmJkMWFlODE1MmI4YmM4ZDkyZGU0YjdjYzEzZGJiYmFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDExIEF1ZyAyMDIzIDE0OjMzOjM2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQ1JFQVRFIEZV TkNUSU9OIC4uLiBTRUFSQ0ggeyBERUZBVUxUIHwgU1lTVEVNIHwgU0VTU0lPTiB9LgoKQ29udHJv bCB0aGUgc2VhcmNoX3BhdGggd2hpbGUgZXhlY3V0aW5nIGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGhv dXQgYW4KZXhwbGljaXQgU0VUIGNsYXVzZS4KCkFsbG93cyB1c2VycyB0byBiZSBmb3J3YXJkIGNv bXBhdGlibGUgYnkgZXhwbGljaXRseSBkZWNsYXJpbmcgdGhhdCBhCmZ1bmN0aW9uIGRlcGVuZHMg b24gdGhlIHNlc3Npb24ncyBzZWFyY2hfcGF0aCwgb3IgdGhhdCBpdCBvbmx5IGRlcGVuZHMKb24g dGhlIHNhZmUgc2VhcmNoX3BhdGggb2YgInBnX2NhdGFsb2csIHBnX3RlbXAiLgoKQWxzbyBhZGRz IGEgR1VDIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGNob29zZSBob3cgdG8gdHJlYXQgZnVuY3Rpb25z CnRoYXQgaGF2ZSBub3Qgc3BlY2lmaWVkIGEgU0VBUkNIIGNsYXVzZSBvciBhIFNFVCBjbGF1c2Uu IFRoZSBHVUMgaXMKZmFsc2UgYnkgZGVmYXVsdCB0byBwcmVzZXJ2ZSBleGlzdGluZyBzZW1hbnRp Y3MsIGJ1dCBldmVudHVhbGx5IGl0CndpbGwgZGVmYXVsdCB0byB0cnVlIGZvciBncmVhdGVyIHNh ZmV0eS4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAg fCAyNiArKysrKysrCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2Z1bmN0aW9uLnNnbWwgICAgICAg ICAgfCAxNSArKysrCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mdW5jdGlvbi5zZ21sICAgICAg ICAgfCAzNCArKysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgICAg ICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5jICAgICAgICAgICAg ICAgICB8IDEyICsrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICAgICAg ICAgICB8IDQ0ICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAg ICAgICAgICAgICAgIHwgIDQgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMu YyAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAg ICAgICAgICB8IDE1ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jICAgICAgICAg ICAgICAgICB8IDI0ICsrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j ICAgICAgICAgICB8IDEwICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlIHwgIDIgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCAgICAgICAg ICAgICAgIHwgIDYgKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oICAgICAgICAgICAg ICAgICB8IDE1ICsrKysKIHNyYy9pbmNsdWRlL3V0aWxzL2d1Yy5oICAgICAgICAgICAgICAgICAg ICAgICB8ICAxICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9mdW5jdGlvbl9zcWwub3V0 ICB8IDY5ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9m dW5jdGlvbl9zcWwuc3FsICB8IDM1ICsrKysrKysrKysKIDE3IGZpbGVzIGNoYW5nZWQsIDMwNSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCAxMTI1MWZhMDVlLi5m MzY2Y2MyNzRjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0xMDI3MSw2ICsxMDI3MSwzMiBAQCBkeW5hbWljX2xp YnJhcnlfcGF0aCA9ICdDOlx0b29sc1xwb3N0Z3Jlc3FsO0g6XG15X3Byb2plY3RcbGliOyRsaWJk aXInCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFy bGlzdGVudHJ5IGlkPSJndWMtc2FmZS1mdW5jdGlvbi1zZWFyY2gtcGF0aCIgeHJlZmxhYmVsPSJz YWZlX2Z1bmN0aW9uX3NlYXJjaF9wYXRoIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPnNhZmVfZnVu Y3Rpb25fc2VhcmNoX3BhdGg8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAg IDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c2FmZV9mdW5jdGlvbl9zZWFy Y2hfcGF0aDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAg ICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCBmdW5jdGlv bnMgZGVjbGFyZWQgd2l0aAorICAgICAgICA8bGl0ZXJhbD5TRUFSQ0ggREVGQVVMVDwvbGl0ZXJh bD4gKG9yIG5vIDxsaXRlcmFsPlNFQVJDSDwvbGl0ZXJhbD4KKyAgICAgICAgY2xhdXNlKSBiZWhh dmUgYXMgaWYgPGxpdGVyYWw+U0VBUkNIIFNZU1RFTTwvbGl0ZXJhbD4gd2FzCisgICAgICAgIHNw ZWNpZmllZC4gVGhpcyBpcyB0aGUgc2FmZXN0IG9wdGlvbiBiZWNhdXNlIGZ1bmN0aW9ucyB3aWxs IGhhdmUKKyAgICAgICAgY29uc2lzdGVudCBiZWhhdmlvciByZWdhcmRsZXNzIG9mIHRoZSBzZXNz aW9uJ3MgY3VycmVudCBzZXR0aW5nIG9mCisgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zZWFy Y2gtcGF0aCIvPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIElmIHNl dCB0byA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0KSwgZnVuY3Rpb25zIGRl Y2xhcmVkCisgICAgICAgIHdpdGggPGxpdGVyYWw+U0VBUkNIIERFRkFVTFQ8L2xpdGVyYWw+IChv ciBubworICAgICAgICA8bGl0ZXJhbD5TRUFSQ0g8L2xpdGVyYWw+IGNsYXVzZSkgYmVoYXZlIGFz IGlmIDxsaXRlcmFsPlNFQVJDSAorICAgICAgICBTRVNTSU9OPC9saXRlcmFsPiB3YXMgc3BlY2lm aWVkLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU2VlIDx4cmVmIGxp bmtlbmQ9InNxbC1jcmVhdGVmdW5jdGlvbiIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAg ICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWJhY2tzbGFzaC1xdW90ZSIgeHJlZmxhYmVsPSJiYWNrc2xh c2hfcXVvdGUiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+YmFja3NsYXNoX3F1b3RlPC92YXJuYW1l PiAoPHR5cGU+ZW51bTwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PnN0cmluZ3M8 L3ByaW1hcnk+PHNlY29uZGFyeT5iYWNrc2xhc2ggcXVvdGVzPC9zZWNvbmRhcnk+PC9pbmRleHRl cm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2Z1bmN0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2Z1bmN0aW9uLnNnbWwKaW5kZXggODE5M2IxN2YyNS4uNjFk NjAxYjY4ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9mdW5jdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZnVuY3Rpb24uc2dtbApAQCAtMzcsNiArMzcs NyBAQCBBTFRFUiBGVU5DVElPTiA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IFsgKCBb IFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbQogICAgIENBTExFRCBPTiBOVUxMIElOUFVUIHwg UkVUVVJOUyBOVUxMIE9OIE5VTEwgSU5QVVQgfCBTVFJJQ1QKICAgICBJTU1VVEFCTEUgfCBTVEFC TEUgfCBWT0xBVElMRQogICAgIFsgTk9UIF0gTEVBS1BST09GCisgICAgU0VBUkNIIHsgREVGQVVM VCB8IFNZU1RFTSB8IFNFU1NJT04gfQogICAgIFsgRVhURVJOQUwgXSBTRUNVUklUWSBJTlZPS0VS IHwgWyBFWFRFUk5BTCBdIFNFQ1VSSVRZIERFRklORVIKICAgICBQQVJBTExFTCB7IFVOU0FGRSB8 IFJFU1RSSUNURUQgfCBTQUZFIH0KICAgICBDT1NUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5leGVjdXRpb25fY29zdDwvcmVwbGFjZWFibGU+CkBAIC0xOTgsNiArMTk5LDIwIEBAIEFM VEVSIEZVTkNUSU9OIDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIFsgWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlNFQVJDSCBERUZBVUxU PC9saXRlcmFsPjwvdGVybT4KKyAgICA8dGVybT48bGl0ZXJhbD5TRUFSQ0ggU1lTVEVNPC9saXRl cmFsPjwvdGVybT4KKyAgICA8dGVybT48bGl0ZXJhbD5TRUFSQ0ggU0VTU0lPTjwvbGl0ZXJhbD48 L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBDaGFuZ2UgdGhl IDxsaXRlcmFsPlNFQVJDSDwvbGl0ZXJhbD4gYmVoYXZpb3Igb2YgdGhlIGZ1bmN0aW9uIHRvIHRo ZQorICAgICAgIHNwZWNpZmllZCBzZXR0aW5nLiAgU2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVh dGVmdW5jdGlvbiIvPiBmb3IKKyAgICAgICBkZXRhaWxzLgorICAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8 dGVybT48bGl0ZXJhbD48b3B0aW9uYWw+IEVYVEVSTkFMIDwvb3B0aW9uYWw+IFNFQ1VSSVRZIElO Vk9LRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDx0ZXJtPjxsaXRlcmFsPjxvcHRpb25hbD4gRVhU RVJOQUwgPC9vcHRpb25hbD4gU0VDVVJJVFkgREVGSU5FUjwvbGl0ZXJhbD48L3Rlcm0+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mdW5jdGlvbi5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfZnVuY3Rpb24uc2dtbAppbmRleCA4NjNkOTlkMWZjLi44MmNhMjk1NWY0 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mdW5jdGlvbi5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2Z1bmN0aW9uLnNnbWwKQEAgLTMxLDYgKzMxLDcgQEAg Q1JFQVRFIFsgT1IgUkVQTEFDRSBdIEZVTkNUSU9OCiAgICAgfCB7IElNTVVUQUJMRSB8IFNUQUJM RSB8IFZPTEFUSUxFIH0KICAgICB8IFsgTk9UIF0gTEVBS1BST09GCiAgICAgfCB7IENBTExFRCBP TiBOVUxMIElOUFVUIHwgUkVUVVJOUyBOVUxMIE9OIE5VTEwgSU5QVVQgfCBTVFJJQ1QgfQorICAg IHwgU0VBUkNIIHsgREVGQVVMVCB8IFNZU1RFTSB8IFNFU1NJT04gfQogICAgIHwgeyBbIEVYVEVS TkFMIF0gU0VDVVJJVFkgSU5WT0tFUiB8IFsgRVhURVJOQUwgXSBTRUNVUklUWSBERUZJTkVSIH0K ICAgICB8IFBBUkFMTEVMIHsgVU5TQUZFIHwgUkVTVFJJQ1RFRCB8IFNBRkUgfQogICAgIHwgQ09T VCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhlY3V0aW9uX2Nvc3Q8L3JlcGxhY2Vh YmxlPgpAQCAtNDAyLDYgKzQwMywzOSBAQCBDUkVBVEUgWyBPUiBSRVBMQUNFIF0gRlVOQ1RJT04K ICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPlNFQVJDSCBERUZBVUxUPC9saXRlcmFsPjwvdGVybT4K KyAgICAgPHRlcm0+PGxpdGVyYWw+U0VBUkNIIFNZU1RFTTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg IDx0ZXJtPjxsaXRlcmFsPlNFQVJDSCBTRVNTSU9OPC9saXRlcmFsPjwvdGVybT4KKworICAgICA8 bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGVzZSBzZXR0aW5ncyBjb250cm9sIHRo ZSBmdW5jdGlvbidzIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zZWFyY2gtcGF0aCIvPgorICAgICAgIHdo aWxlIGV4ZWN1dGluZyBpZiBub3Qgc2V0IGV4cGxpY2l0bHkgd2l0aCBhIDxsaXRlcmFsPlNFVDwv bGl0ZXJhbD4KKyAgICAgICBjbGF1c2UgaW4gdGhlIDxjb21tYW5kPkNSRUFURSBGVU5DVElPTjwv Y29tbWFuZD4gY29tbWFuZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxs aXRlcmFsPlNFQVJDSCBTWVNURU08L2xpdGVyYWw+IGluZGljYXRlcyB0aGF0IHRoZSBmdW5jdGlv biB3aWxsIHVzZQorICAgICAgIDxsaXRlcmFsPnBnX2NhdGFsb2csIHBnX3RlbXA8L2xpdGVyYWw+ LiBUaGlzIGlzIHRoZSBzYWZlc3Qgb3B0aW9uCisgICAgICAgYmVjYXVzZSB0aGUgZnVuY3Rpb24g d2lsbCBoYXZlIGNvbnNpc3RlbnQgYmVoYXZpb3IgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICBz ZXNzaW9uJ3Mgc2V0dGluZy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxs aXRlcmFsPlNFQVJDSCBTRVNTSU9OPC9saXRlcmFsPiBpbmRpY2F0ZXMgdGhhdCB0aGUgZnVuY3Rp b24gd2lsbAorICAgICAgIGluaGVyaXQgc2Vzc2lvbidzIGN1cnJlbnQgPGxpdGVyYWw+c2VhcmNo X3BhdGg8L2xpdGVyYWw+CisgICAgICAgc2V0dGluZy4gQmVoYXZpb3Igb2YgdGhlIGZ1bmN0aW9u IG1heSBjaGFuZ2Ugd2hlbiB0aGUgc2Vzc2lvbidzCisgICAgICAgPGxpdGVyYWw+c2VhcmNoX3Bh dGg8L2xpdGVyYWw+IGNoYW5nZXMuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICA8bGl0ZXJhbD5TRUFSQ0ggREVGQVVMVDwvbGl0ZXJhbD4gaXMgdGhlIHNhbWUgYXMgbm90IHNw ZWNpZnlpbmcgYW55CisgICAgICAgPGxpdGVyYWw+U0VBUkNIPC9saXRlcmFsPiBjbGF1c2UgYXQg YWxsLiBJZiA8eHJlZgorICAgICAgIGxpbmtlbmQ9Imd1Yy1zYWZlLWZ1bmN0aW9uLXNlYXJjaC1w YXRoIi8+IGlzIHNldCB0bworICAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCB0aGVuIHRo ZSBmdW5jdGlvbiB3aWxsIHVzZQorICAgICAgIDxsaXRlcmFsPnBnX2NhdGFsb2csIHBnX3RlbXA8 L2xpdGVyYWw+OyBvdGhlcndpc2UgaXQgd2lsbCBpbmhlcml0IHRoZQorICAgICAgIHNlc3Npb24n cyBjdXJyZW50IDxsaXRlcmFsPnNlYXJjaF9wYXRoPC9saXRlcmFsPiBzZXR0aW5nLgorICAgICAg PC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgogICAgPHZhcmxp c3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD48b3B0aW9uYWw+RVhURVJOQUw8L29wdGlvbmFs PiBTRUNVUklUWSBJTlZPS0VSPC9saXRlcmFsPjwvdGVybT4KICAgICA8dGVybT48bGl0ZXJhbD48 b3B0aW9uYWw+RVhURVJOQUw8L29wdGlvbmFsPiBTRUNVUklUWSBERUZJTkVSPC9saXRlcmFsPjwv dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jCmluZGV4IGViYzQ0NTQ3NDMuLmU0ZWM2 OGVjNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYwpAQCAtNjI0LDYgKzYyNCw3IEBA IEFnZ3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICphZ2dOYW1lLAogCQkJCQkJCSBOVUxMLAkvKiBw cm9iaW4gKi8KIAkJCQkJCQkgTlVMTCwJLyogcHJvc3FsYm9keSAqLwogCQkJCQkJCSBQUk9LSU5E X0FHR1JFR0FURSwKKwkJCQkJCQkgUFJPU0VBUkNIX0RFRkFVTFQsIC8qIG5vIFNFQVJDSCBjbGF1 c2UgZm9yIGFnZ3JlZ2F0ZXMgKi8KIAkJCQkJCQkgZmFsc2UsIC8qIHNlY3VyaXR5IGludm9rZXIg KGN1cnJlbnRseSBub3QKIAkJCQkJCQkJCSAqIGRlZmluYWJsZSBmb3IgYWdnKSAqLwogCQkJCQkJ CSBmYWxzZSwgLyogaXNMZWFrUHJvb2YgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHJvYy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMKaW5kZXggYjVmZDM2 NDAwMy4uMDU5MTdmZDNkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9j LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMKQEAgLTgxLDYgKzgxLDcgQEAg UHJvY2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5hbWUsCiAJCQkJY29uc3QgY2hh ciAqcHJvYmluLAogCQkJCU5vZGUgKnByb3NxbGJvZHksCiAJCQkJY2hhciBwcm9raW5kLAorCQkJ CWNoYXIgcHJvc2VhcmNoLAogCQkJCWJvb2wgc2VjdXJpdHlfZGVmaW5lciwKIAkJCQlib29sIGlz TGVha1Byb29mLAogCQkJCWJvb2wgaXNTdHJpY3QsCkBAIC0zMDgsNiArMzA5LDcgQEAgUHJvY2Vk dXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5hbWUsCiAJdmFsdWVzW0FudW1fcGdfcHJv Y19wcm92YXJpYWRpYyAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJpYWRpY1R5cGUpOwogCXZh bHVlc1tBbnVtX3BnX3Byb2NfcHJvc3VwcG9ydCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShwcm9z dXBwb3J0KTsKIAl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb2tpbmQgLSAxXSA9IENoYXJHZXREYXR1 bShwcm9raW5kKTsKKwl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3NlYXJjaCAtIDFdID0gQ2hhckdl dERhdHVtKHByb3NlYXJjaCk7CiAJdmFsdWVzW0FudW1fcGdfcHJvY19wcm9zZWNkZWYgLSAxXSA9 IEJvb2xHZXREYXR1bShzZWN1cml0eV9kZWZpbmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19wcm9jX3By b2xlYWtwcm9vZiAtIDFdID0gQm9vbEdldERhdHVtKGlzTGVha1Byb29mKTsKIAl2YWx1ZXNbQW51 bV9wZ19wcm9jX3Byb2lzc3RyaWN0IC0gMV0gPSBCb29sR2V0RGF0dW0oaXNTdHJpY3QpOwpAQCAt OTg4LDYgKzk5MCwxNiBAQCBzcWxfZnVuY3Rpb25fcGFyc2VfZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKQogCX0KIH0KIAorLyoKKyAqIENoZWNrIHdoZXRoZXIgdGhlIHNlYXJjaF9wYXRoIG11c3Qg YmUgc2V0IHdoaWxlIGV4ZWN1dGluZyB0aGlzIGZ1bmN0aW9uLgorICovCitib29sCitwcm9zZWFy Y2hfaXNfc3lzdGVtKGNoYXIgcHJvc2VhcmNoKQoreworCXJldHVybiAocHJvc2VhcmNoID09IFBS T1NFQVJDSF9TWVNURU0gfHwKKwkJCShwcm9zZWFyY2ggPT0gUFJPU0VBUkNIX0RFRkFVTFQgJiYg c2FmZV9mdW5jdGlvbl9zZWFyY2hfcGF0aCkpOworfQorCiAvKgogICogQWRqdXN0IGEgc3ludGF4 IGVycm9yIG9jY3VycmluZyBpbnNpZGUgdGhlIGZ1bmN0aW9uIGJvZHkgb2YgYSBDUkVBVEUKICAq IEZVTkNUSU9OIG9yIERPIGNvbW1hbmQuICBUaGlzIGNhbiBiZSB1c2VkIGJ5IGFueSBmdW5jdGlv biB2YWxpZGF0b3Igb3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKaW5kZXggN2JhNmE4 NmViZS4uN2MyZGZkYTAxZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rp b25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTUw Nyw2ICs1MDcsNyBAQCBjb21wdXRlX2NvbW1vbl9hdHRyaWJ1dGUoUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQkJCQkJIERlZkVsZW0gKmRlZmVsLAogCQkJCQkJIERlZkVsZW0gKip2b2xhdGlsaXR5X2l0 ZW0sCiAJCQkJCQkgRGVmRWxlbSAqKnN0cmljdF9pdGVtLAorCQkJCQkJIERlZkVsZW0gKipzZWFy Y2hfaXRlbSwKIAkJCQkJCSBEZWZFbGVtICoqc2VjdXJpdHlfaXRlbSwKIAkJCQkJCSBEZWZFbGVt ICoqbGVha3Byb29mX2l0ZW0sCiAJCQkJCQkgTGlzdCAqKnNldF9pdGVtcywKQEAgLTUzMyw2ICs1 MzQsMTMgQEAgY29tcHV0ZV9jb21tb25fYXR0cmlidXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAog CQkqc3RyaWN0X2l0ZW0gPSBkZWZlbDsKIAl9CisJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZu YW1lLCAic2VhcmNoIikgPT0gMCkKKwl7CisJCWlmICgqc2VhcmNoX2l0ZW0pCisJCQllcnJvckNv bmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKworCQkqc2VhcmNoX2l0ZW0gPSBkZWZl bDsKKwl9CiAJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic2VjdXJpdHkiKSA9PSAw KQogCXsKIAkJaWYgKCpzZWN1cml0eV9pdGVtKQpAQCAtNjAzLDYgKzYxMSwyNCBAQCBwcm9jZWR1 cmVfZXJyb3I6CiAJcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgY2hhcgoraW50ZXJwcmV0X2Z1 bmNfc2VhcmNoKERlZkVsZW0gKmRlZmVsKQoreworCWNoYXIJICAgKnN0ciA9IHN0clZhbChkZWZl bC0+YXJnKTsKKworCWlmIChzdHJjbXAoc3RyLCAiZGVmYXVsdCIpID09IDApCisJCXJldHVybiBQ Uk9TRUFSQ0hfREVGQVVMVDsKKwllbHNlIGlmIChzdHJjbXAoc3RyLCAic3lzdGVtIikgPT0gMCkK KwkJcmV0dXJuIFBST1NFQVJDSF9TWVNURU07CisJZWxzZSBpZiAoc3RyY21wKHN0ciwgInNlc3Np b24iKSA9PSAwKQorCQlyZXR1cm4gUFJPU0VBUkNIX1NFU1NJT047CisJZWxzZQorCXsKKwkJZWxv ZyhFUlJPUiwgImludmFsaWQgdm9sYXRpbGl0eSBcIiVzXCIiLCBzdHIpOworCQlyZXR1cm4gMDsJ CQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCX0KK30KKwogc3RhdGljIGNoYXIKIGludGVy cHJldF9mdW5jX3ZvbGF0aWxpdHkoRGVmRWxlbSAqZGVmZWwpCiB7CkBAIC03MjUsNiArNzUxLDcg QEAgY29tcHV0ZV9mdW5jdGlvbl9hdHRyaWJ1dGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ CQlib29sICp3aW5kb3dmdW5jX3AsCiAJCQkJCQkJY2hhciAqdm9sYXRpbGl0eV9wLAogCQkJCQkJ CWJvb2wgKnN0cmljdF9wLAorCQkJCQkJCWNoYXIgKnNlYXJjaF9wLAogCQkJCQkJCWJvb2wgKnNl Y3VyaXR5X2RlZmluZXIsCiAJCQkJCQkJYm9vbCAqbGVha3Byb29mX3AsCiAJCQkJCQkJQXJyYXlU eXBlICoqcHJvY29uZmlnLApAQCAtNzQwLDYgKzc2Nyw3IEBAIGNvbXB1dGVfZnVuY3Rpb25fYXR0 cmlidXRlcyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJRGVmRWxlbSAgICAqd2luZG93ZnVuY19pdGVt ID0gTlVMTDsKIAlEZWZFbGVtICAgICp2b2xhdGlsaXR5X2l0ZW0gPSBOVUxMOwogCURlZkVsZW0g ICAgKnN0cmljdF9pdGVtID0gTlVMTDsKKwlEZWZFbGVtICAgICpzZWFyY2hfaXRlbSA9IE5VTEw7 CiAJRGVmRWxlbSAgICAqc2VjdXJpdHlfaXRlbSA9IE5VTEw7CiAJRGVmRWxlbSAgICAqbGVha3By b29mX2l0ZW0gPSBOVUxMOwogCUxpc3QJICAgKnNldF9pdGVtcyA9IE5JTDsKQEAgLTc4Niw2ICs4 MTQsNyBAQCBjb21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLAog CQkJCQkJCQkJCSAgZGVmZWwsCiAJCQkJCQkJCQkJICAmdm9sYXRpbGl0eV9pdGVtLAogCQkJCQkJ CQkJCSAgJnN0cmljdF9pdGVtLAorCQkJCQkJCQkJCSAgJnNlYXJjaF9pdGVtLAogCQkJCQkJCQkJ CSAgJnNlY3VyaXR5X2l0ZW0sCiAJCQkJCQkJCQkJICAmbGVha3Byb29mX2l0ZW0sCiAJCQkJCQkJ CQkJICAmc2V0X2l0ZW1zLApAQCAtODE0LDYgKzg0Myw4IEBAIGNvbXB1dGVfZnVuY3Rpb25fYXR0 cmlidXRlcyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSp2b2xhdGlsaXR5X3AgPSBpbnRlcnByZXRf ZnVuY192b2xhdGlsaXR5KHZvbGF0aWxpdHlfaXRlbSk7CiAJaWYgKHN0cmljdF9pdGVtKQogCQkq c3RyaWN0X3AgPSBib29sVmFsKHN0cmljdF9pdGVtLT5hcmcpOworCWlmIChzZWFyY2hfaXRlbSkK KwkJKnNlYXJjaF9wID0gaW50ZXJwcmV0X2Z1bmNfc2VhcmNoKHNlYXJjaF9pdGVtKTsKIAlpZiAo c2VjdXJpdHlfaXRlbSkKIAkJKnNlY3VyaXR5X2RlZmluZXIgPSBib29sVmFsKHNlY3VyaXR5X2l0 ZW0tPmFyZyk7CiAJaWYgKGxlYWtwcm9vZl9pdGVtKQpAQCAtMTA0Miw3ICsxMDczLDggQEAgQ3Jl YXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVGdW5jdGlvblN0bXQgKnN0bXQp CiAJCQkJaXNTdHJpY3QsCiAJCQkJc2VjdXJpdHksCiAJCQkJaXNMZWFrUHJvb2Y7Ci0JY2hhcgkJ dm9sYXRpbGl0eTsKKwljaGFyCQlwcm9zZWFyY2gsCisJCQkJdm9sYXRpbGl0eTsKIAlBcnJheVR5 cGUgICpwcm9jb25maWc7CiAJZmxvYXQ0CQlwcm9jb3N0OwogCWZsb2F0NAkJcHJvcm93czsKQEAg LTEwNjcsNiArMTA5OSw3IEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlRnVuY3Rpb25TdG10ICpzdG10KQogCWxhbmd1YWdlID0gTlVMTDsKIAlpc1dpbmRvd0Z1bmMg PSBmYWxzZTsKIAlpc1N0cmljdCA9IGZhbHNlOworCXByb3NlYXJjaCA9IFBST1NFQVJDSF9ERUZB VUxUOwogCXNlY3VyaXR5ID0gZmFsc2U7CiAJaXNMZWFrUHJvb2YgPSBmYWxzZTsKIAl2b2xhdGls aXR5ID0gUFJPVk9MQVRJTEVfVk9MQVRJTEU7CkBAIC0xMDgyLDggKzExMTUsOCBAQCBDcmVhdGVG dW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJ CQkJCQkJc3RtdC0+b3B0aW9ucywKIAkJCQkJCQkJJmFzX2NsYXVzZSwgJmxhbmd1YWdlLCAmdHJh bnNmb3JtRGVmRWxlbSwKIAkJCQkJCQkJJmlzV2luZG93RnVuYywgJnZvbGF0aWxpdHksCi0JCQkJ CQkJCSZpc1N0cmljdCwgJnNlY3VyaXR5LCAmaXNMZWFrUHJvb2YsCi0JCQkJCQkJCSZwcm9jb25m aWcsICZwcm9jb3N0LCAmcHJvcm93cywKKwkJCQkJCQkJJmlzU3RyaWN0LCAmcHJvc2VhcmNoLCAm c2VjdXJpdHksCisJCQkJCQkJCSZpc0xlYWtQcm9vZiwgJnByb2NvbmZpZywgJnByb2Nvc3QsICZw cm9yb3dzLAogCQkJCQkJCQkmcHJvc3VwcG9ydCwgJnBhcmFsbGVsKTsKIAogCWlmICghbGFuZ3Vh Z2UpCkBAIC0xMjcxLDYgKzEzMDQsNyBAQCBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCSAgIHByb2Jpbl9zdHIsCS8qIGNv bnZlcnRlZCB0byB0ZXh0IGxhdGVyICovCiAJCQkJCQkgICBwcm9zcWxib2R5LAogCQkJCQkJICAg c3RtdC0+aXNfcHJvY2VkdXJlID8gUFJPS0lORF9QUk9DRURVUkUgOiAoaXNXaW5kb3dGdW5jID8g UFJPS0lORF9XSU5ET1cgOiBQUk9LSU5EX0ZVTkNUSU9OKSwKKwkJCQkJCSAgIHByb3NlYXJjaCwK IAkJCQkJCSAgIHNlY3VyaXR5LAogCQkJCQkJICAgaXNMZWFrUHJvb2YsCiAJCQkJCQkgICBpc1N0 cmljdCwKQEAgLTEzNTUsNiArMTM4OSw3IEBAIEFsdGVyRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlckZ1bmN0aW9uU3RtdCAqc3RtdCkKIAlMaXN0Q2VsbCAgICpsOwogCURlZkVsZW0g ICAgKnZvbGF0aWxpdHlfaXRlbSA9IE5VTEw7CiAJRGVmRWxlbSAgICAqc3RyaWN0X2l0ZW0gPSBO VUxMOworCURlZkVsZW0gICAgKnNlYXJjaF9pdGVtID0gTlVMTDsKIAlEZWZFbGVtICAgICpzZWN1 cml0eV9kZWZfaXRlbSA9IE5VTEw7CiAJRGVmRWxlbSAgICAqbGVha3Byb29mX2l0ZW0gPSBOVUxM OwogCUxpc3QJICAgKnNldF9pdGVtcyA9IE5JTDsKQEAgLTEzOTksNiArMTQzNCw3IEBAIEFsdGVy RnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJ CQkJCQkJCSBkZWZlbCwKIAkJCQkJCQkJCSAmdm9sYXRpbGl0eV9pdGVtLAogCQkJCQkJCQkJICZz dHJpY3RfaXRlbSwKKwkJCQkJCQkJCSAmc2VhcmNoX2l0ZW0sCiAJCQkJCQkJCQkgJnNlY3VyaXR5 X2RlZl9pdGVtLAogCQkJCQkJCQkJICZsZWFrcHJvb2ZfaXRlbSwKIAkJCQkJCQkJCSAmc2V0X2l0 ZW1zLApAQCAtMTQxMyw2ICsxNDQ5LDggQEAgQWx0ZXJGdW5jdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFsdGVyRnVuY3Rpb25TdG10ICpzdG10KQogCQlwcm9jRm9ybS0+cHJvdm9sYXRpbGUgPSBp bnRlcnByZXRfZnVuY192b2xhdGlsaXR5KHZvbGF0aWxpdHlfaXRlbSk7CiAJaWYgKHN0cmljdF9p dGVtKQogCQlwcm9jRm9ybS0+cHJvaXNzdHJpY3QgPSBib29sVmFsKHN0cmljdF9pdGVtLT5hcmcp OworCWlmIChzZWFyY2hfaXRlbSkKKwkJcHJvY0Zvcm0tPnByb3NlYXJjaCA9IGludGVycHJldF9m dW5jX3NlYXJjaChzZWFyY2hfaXRlbSk7CiAJaWYgKHNlY3VyaXR5X2RlZl9pdGVtKQogCQlwcm9j Rm9ybS0+cHJvc2VjZGVmID0gYm9vbFZhbChzZWN1cml0eV9kZWZfaXRlbS0+YXJnKTsKIAlpZiAo bGVha3Byb29mX2l0ZW0pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCA1ZTk3NjA2NzkzLi5i YWE4ZGQ3MDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTE3NjMsNiArMTc2Myw3IEBA IG1ha2VSYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpuYW1lLCBPaWQgbmFtZXNwYWNlLAog CQkJCQkJCQkgTlVMTCwJLyogcHJvYmluICovCiAJCQkJCQkJCSBOVUxMLAkvKiBwcm9zcWxib2R5 ICovCiAJCQkJCQkJCSBQUk9LSU5EX0ZVTkNUSU9OLAorCQkJCQkJCQkgUFJPU0VBUkNIX0RFRkFV TFQsCiAJCQkJCQkJCSBmYWxzZSwgLyogc2VjdXJpdHlfZGVmaW5lciAqLwogCQkJCQkJCQkgZmFs c2UsIC8qIGxlYWtwcm9vZiAqLwogCQkJCQkJCQkgZmFsc2UsIC8qIGlzU3RyaWN0ICovCkBAIC0x ODI4LDYgKzE4MjksNyBAQCBtYWtlTXVsdGlyYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpu YW1lLCBPaWQgbmFtZXNwYWNlLAogCQkJCQkJCSBOVUxMLAkvKiBwcm9iaW4gKi8KIAkJCQkJCQkg TlVMTCwJLyogcHJvc3FsYm9keSAqLwogCQkJCQkJCSBQUk9LSU5EX0ZVTkNUSU9OLAorCQkJCQkJ CSBQUk9TRUFSQ0hfREVGQVVMVCwKIAkJCQkJCQkgZmFsc2UsIC8qIHNlY3VyaXR5X2RlZmluZXIg Ki8KIAkJCQkJCQkgZmFsc2UsIC8qIGxlYWtwcm9vZiAqLwogCQkJCQkJCSB0cnVlLAkvKiBpc1N0 cmljdCAqLwpAQCAtMTg3Miw2ICsxODc0LDcgQEAgbWFrZU11bHRpcmFuZ2VDb25zdHJ1Y3RvcnMo Y29uc3QgY2hhciAqbmFtZSwgT2lkIG5hbWVzcGFjZSwKIAkJCQkJCQkgTlVMTCwJLyogcHJvYmlu ICovCiAJCQkJCQkJIE5VTEwsCS8qIHByb3NxbGJvZHkgKi8KIAkJCQkJCQkgUFJPS0lORF9GVU5D VElPTiwKKwkJCQkJCQkgUFJPU0VBUkNIX0RFRkFVTFQsCiAJCQkJCQkJIGZhbHNlLCAvKiBzZWN1 cml0eV9kZWZpbmVyICovCiAJCQkJCQkJIGZhbHNlLCAvKiBsZWFrcHJvb2YgKi8KIAkJCQkJCQkg dHJ1ZSwJLyogaXNTdHJpY3QgKi8KQEAgLTE5MTAsNiArMTkxMyw3IEBAIG1ha2VNdWx0aXJhbmdl Q29uc3RydWN0b3JzKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuYW1lc3BhY2UsCiAJCQkJCQkJIE5V TEwsCS8qIHByb2JpbiAqLwogCQkJCQkJCSBOVUxMLAkvKiBwcm9zcWxib2R5ICovCiAJCQkJCQkJ IFBST0tJTkRfRlVOQ1RJT04sCisJCQkJCQkJIFBST1NFQVJDSF9ERUZBVUxULAogCQkJCQkJCSBm YWxzZSwgLyogc2VjdXJpdHlfZGVmaW5lciAqLwogCQkJCQkJCSBmYWxzZSwgLyogbGVha3Byb29m ICovCiAJCQkJCQkJIHRydWUsCS8qIGlzU3RyaWN0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9j bGF1c2VzLmMKaW5kZXggZGEyNTg5NjhiOC4uYWQ5M2UwYTI4ZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2NsYXVzZXMuYwpAQCAtNDQ3NCw2ICs0NDc0LDcgQEAgaW5saW5lX2Z1bmN0aW9uKE9p ZCBmdW5jaWQsIE9pZCByZXN1bHRfdHlwZSwgT2lkIHJlc3VsdF9jb2xsaWQsCiAJICovCiAJaWYg KGZ1bmNmb3JtLT5wcm9sYW5nICE9IFNRTGxhbmd1YWdlSWQgfHwKIAkJZnVuY2Zvcm0tPnByb2tp bmQgIT0gUFJPS0lORF9GVU5DVElPTiB8fAorCQlwcm9zZWFyY2hfaXNfc3lzdGVtKGZ1bmNmb3Jt LT5wcm9zZWFyY2gpIHx8CiAJCWZ1bmNmb3JtLT5wcm9zZWNkZWYgfHwKIAkJZnVuY2Zvcm0tPnBy b3JldHNldCB8fAogCQlmdW5jZm9ybS0+cHJvcmV0dHlwZSA9PSBSRUNPUkRPSUQgfHwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDE1ZWNlODcxYTAuLmUyNjRmYTUzNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtODUyOCw2 ICs4NTI4LDIxIEBAIGNvbW1vbl9mdW5jX29wdF9pdGVtOgogCQkJCXsKIAkJCQkJJCQgPSBtYWtl RGVmRWxlbSgic3VwcG9ydCIsIChOb2RlICopICQyLCBAMSk7CiAJCQkJfQorCQkJfCBTRUFSQ0gg REVGQVVMVAorCQkJCXsKKwkJCQkJLyogd2UgYWJ1c2UgdGhlIG5vcm1hbCBjb250ZW50IG9mIGEg RGVmRWxlbSBoZXJlICovCisJCQkJCSQkID0gbWFrZURlZkVsZW0oInNlYXJjaCIsIChOb2RlICop IG1ha2VTdHJpbmcoImRlZmF1bHQiKSwgQDEpOworCQkJCX0KKwkJCXwgU0VBUkNIIFNZU1RFTV9Q CisJCQkJeworCQkJCQkvKiB3ZSBhYnVzZSB0aGUgbm9ybWFsIGNvbnRlbnQgb2YgYSBEZWZFbGVt IGhlcmUgKi8KKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgic2VhcmNoIiwgKE5vZGUgKikgbWFrZVN0 cmluZygic3lzdGVtIiksIEAxKTsKKwkJCQl9CisJCQl8IFNFQVJDSCBTRVNTSU9OCisJCQkJewor CQkJCQkvKiB3ZSBhYnVzZSB0aGUgbm9ybWFsIGNvbnRlbnQgb2YgYSBEZWZFbGVtIGhlcmUgKi8K KwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgic2VhcmNoIiwgKE5vZGUgKikgbWFrZVN0cmluZygic2Vz c2lvbiIpLCBAMSk7CisJCQkJfQogCQkJfCBGdW5jdGlvblNldFJlc2V0Q2xhdXNlCiAJCQkJewog CQkJCQkvKiB3ZSBhYnVzZSB0aGUgbm9ybWFsIGNvbnRlbnQgb2YgYSBEZWZFbGVtIGhlcmUgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvZm1nci9mbWdyLmMKaW5kZXggOWRmZGY4OTBjNS4uMmRjNzIyNDk0MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Zm1nci9mbWdyLmMKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAj aW5jbHVkZSAiYWNjZXNzL2RldG9hc3QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKQEAgLTExMCw2ICsxMTEsNyBA QCBmbWdyX2xvb2t1cEJ5TmFtZShjb25zdCBjaGFyICpuYW1lKQogCXJldHVybiBOVUxMOwogfQog CisKIC8qCiAgKiBUaGlzIHJvdXRpbmUgZmlsbHMgYSBGbWdySW5mbyBzdHJ1Y3QsIGdpdmVuIHRo ZSBPSUQKICAqIG9mIHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQuCkBAIC0yMDMsNiArMjA1LDcg QEAgZm1ncl9pbmZvX2N4dF9zZWN1cml0eShPaWQgZnVuY3Rpb25JZCwgRm1nckluZm8gKmZpbmZv LCBNZW1vcnlDb250ZXh0IG1jeHQsCiAJICovCiAJaWYgKCFpZ25vcmVfc2VjdXJpdHkgJiYKIAkJ KHByb2NlZHVyZVN0cnVjdC0+cHJvc2VjZGVmIHx8CisJCSBwcm9zZWFyY2hfaXNfc3lzdGVtKHBy b2NlZHVyZVN0cnVjdC0+cHJvc2VhcmNoKSB8fAogCQkgIWhlYXBfYXR0aXNudWxsKHByb2NlZHVy ZVR1cGxlLCBBbnVtX3BnX3Byb2NfcHJvY29uZmlnLCBOVUxMKSB8fAogCQkgRm1nckhvb2tJc05l ZWRlZChmdW5jdGlvbklkKSkpCiAJewpAQCAtNjEyLDYgKzYxNSw3IEBAIHN0cnVjdCBmbWdyX3Nl Y3VyaXR5X2RlZmluZXJfY2FjaGUKIHsKIAlGbWdySW5mbwlmbGluZm87CQkJLyogbG9va3VwIGlu Zm8gZm9yIHRhcmdldCBmdW5jdGlvbiAqLwogCU9pZAkJCXVzZXJpZDsJCQkvKiB1c2VyaWQgdG8g c2V0LCBvciBJbnZhbGlkT2lkICovCisJY2hhcgkgICAqc2VhcmNoUGF0aDsJCS8qIGZyb20gU0VB UkNIIGNsYXVzZSwgaWYgc3BlY2lmaWVkICovCiAJTGlzdAkgICAqY29uZmlnTmFtZXM7CS8qIEdV QyBuYW1lcyB0byBzZXQsIG9yIE5JTCAqLwogCUxpc3QJICAgKmNvbmZpZ1ZhbHVlczsJLyogR1VD IHZhbHVlcyB0byBzZXQsIG9yIE5JTCAqLwogCURhdHVtCQlhcmc7CQkJLyogcGFzc3Rocm91Z2gg YXJndW1lbnQgZm9yIHBsdWdpbiBtb2R1bGVzICovCkBAIC02MzAsNiArNjM0LDkgQEAgc3RydWN0 IGZtZ3Jfc2VjdXJpdHlfZGVmaW5lcl9jYWNoZQogZXh0ZXJuIERhdHVtCiBmbWdyX3NlY3VyaXR5 X2RlZmluZXIoUEdfRlVOQ1RJT05fQVJHUykKIHsKKwlHdWNDb250ZXh0CWNvbnRleHQgPSBzdXBl cnVzZXIoKSA/IFBHQ19TVVNFVCA6IFBHQ19VU0VSU0VUOworCUd1Y1NvdXJjZQlzb3VyY2UgPSBQ R0NfU19TRVNTSU9OOworCUd1Y0FjdGlvbglhY3Rpb24gPSBHVUNfQUNUSU9OX1NBVkU7CiAJRGF0 dW0JCXJlc3VsdDsKIAlzdHJ1Y3QgZm1ncl9zZWN1cml0eV9kZWZpbmVyX2NhY2hlICp2b2xhdGls ZSBmY2FjaGU7CiAJRm1nckluZm8gICAqc2F2ZV9mbGluZm87CkBAIC02NjIsNiArNjY5LDkgQEAg Zm1ncl9zZWN1cml0eV9kZWZpbmVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJIGZjaW5mby0+Zmxp bmZvLT5mbl9vaWQpOwogCQlwcm9jZWR1cmVTdHJ1Y3QgPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJV Q1QodHVwbGUpOwogCisJCWlmIChwcm9zZWFyY2hfaXNfc3lzdGVtKHByb2NlZHVyZVN0cnVjdC0+ cHJvc2VhcmNoKSkKKwkJCWZjYWNoZS0+c2VhcmNoUGF0aCA9IE5BTUVTUEFDRV9TQUZFX1NFQVJD SF9QQVRIOworCiAJCWlmIChwcm9jZWR1cmVTdHJ1Y3QtPnByb3NlY2RlZikKIAkJCWZjYWNoZS0+ dXNlcmlkID0gcHJvY2VkdXJlU3RydWN0LT5wcm9vd25lcjsKIApAQCAtNjg3LDIwICs2OTcsMjIg QEAgZm1ncl9zZWN1cml0eV9kZWZpbmVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBHZXRVc2Vy SWRBbmRTZWNDb250ZXh0IGlzIGNoZWFwIGVub3VnaCB0aGF0IG5vIGhhcm0gaW4gYSB3YXN0ZWQg Y2FsbCAqLwogCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNf Y29udGV4dCk7Ci0JaWYgKGZjYWNoZS0+Y29uZmlnTmFtZXMgIT0gTklMKSAvKiBOZWVkIGEgbmV3 IEdVQyBuZXN0aW5nIGxldmVsICovCisJaWYgKGZjYWNoZS0+c2VhcmNoUGF0aCAhPSBOVUxMIHx8 IGZjYWNoZS0+Y29uZmlnTmFtZXMgIT0gTklMKSAvKiBOZWVkIGEgbmV3IEdVQyBuZXN0aW5nIGxl dmVsICovCiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CiAJZWxzZQotCQlz YXZlX25lc3RsZXZlbCA9IDA7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCXNhdmVfbmVz dGxldmVsID0gMDsKIAogCWlmIChPaWRJc1ZhbGlkKGZjYWNoZS0+dXNlcmlkKSkKIAkJU2V0VXNl cklkQW5kU2VjQ29udGV4dChmY2FjaGUtPnVzZXJpZCwKIAkJCQkJCQkgICBzYXZlX3NlY19jb250 ZXh0IHwgU0VDVVJJVFlfTE9DQUxfVVNFUklEX0NIQU5HRSk7CiAKKwlpZiAoZmNhY2hlLT5zZWFy Y2hQYXRoICE9IE5VTEwpCisJCSh2b2lkKSBzZXRfY29uZmlnX29wdGlvbigic2VhcmNoX3BhdGgi LCBmY2FjaGUtPnNlYXJjaFBhdGgsCisJCQkJCQkJCSBjb250ZXh0LCBzb3VyY2UsCisJCQkJCQkJ CSBhY3Rpb24sIHRydWUsIDAsIGZhbHNlKTsKKwogCWZvcmJvdGgobGMxLCBmY2FjaGUtPmNvbmZp Z05hbWVzLCBsYzIsIGZjYWNoZS0+Y29uZmlnVmFsdWVzKQogCXsKLQkJR3VjQ29udGV4dAljb250 ZXh0ID0gc3VwZXJ1c2VyKCkgPyBQR0NfU1VTRVQgOiBQR0NfVVNFUlNFVDsKLQkJR3VjU291cmNl CXNvdXJjZSA9IFBHQ19TX1NFU1NJT047Ci0JCUd1Y0FjdGlvbglhY3Rpb24gPSBHVUNfQUNUSU9O X1NBVkU7CiAJCWNoYXIJICAgKm5hbWUgPSBsZmlyc3QobGMxKTsKIAkJY2hhcgkgICAqdmFsdWUg PSBsZmlyc3QobGMyKTsKIApAQCAtNzQ5LDcgKzc2MSw3IEBAIGZtZ3Jfc2VjdXJpdHlfZGVmaW5l cihQR19GVU5DVElPTl9BUkdTKQogCiAJZmNpbmZvLT5mbGluZm8gPSBzYXZlX2ZsaW5mbzsKIAot CWlmIChmY2FjaGUtPmNvbmZpZ05hbWVzICE9IE5JTCkKKwlpZiAoc2F2ZV9uZXN0bGV2ZWwgPiAw KQogCQlBdEVPWGFjdF9HVUModHJ1ZSwgc2F2ZV9uZXN0bGV2ZWwpOwogCWlmIChPaWRJc1ZhbGlk KGZjYWNoZS0+dXNlcmlkKSkKIAkJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwg c2F2ZV9zZWNfY29udGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGY5 ZGJhNDNiOGMuLjdiMzIyMzVkNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBA IC01MDQsNiArNTA0LDcgQEAgYm9vbAkJbG9nX2J0cmVlX2J1aWxkX3N0YXRzID0gZmFsc2U7CiBj aGFyCSAgICpldmVudF9zb3VyY2U7CiAKIGJvb2wJCXJvd19zZWN1cml0eTsKK2Jvb2wJCXNhZmVf ZnVuY3Rpb25fc2VhcmNoX3BhdGggPSBmYWxzZTsKIGJvb2wJCWNoZWNrX2Z1bmN0aW9uX2JvZGll cyA9IHRydWU7CiAKIC8qCkBAIC0xNTkzLDYgKzE1OTQsMTUgQEAgc3RydWN0IGNvbmZpZ19ib29s IENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0s CisJeworCQl7InNhZmVfZnVuY3Rpb25fc2VhcmNoX3BhdGgiLCBQR0NfU1VTRVQsIENMSUVOVF9D T05OX1NUQVRFTUVOVCwKKwkJCWdldHRleHRfbm9vcCgiVXNlIHNhZmUgc2VhcmNoIHBhdGggZm9y IGFsbCBmdW5jdGlvbnMsIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLiIpLAorCQkJTlVMTAor CQl9LAorCQkmc2FmZV9mdW5jdGlvbl9zZWFyY2hfcGF0aCwKKwkJZmFsc2UsCisJCU5VTEwsIE5V TEwsIE5VTEwKKwl9LAogCXsKIAkJeyJjaGVja19mdW5jdGlvbl9ib2RpZXMiLCBQR0NfVVNFUlNF VCwgQ0xJRU5UX0NPTk5fU1RBVEVNRU5ULAogCQkJZ2V0dGV4dF9ub29wKCJDaGVjayByb3V0aW5l IGJvZGllcyBkdXJpbmcgQ1JFQVRFIEZVTkNUSU9OIGFuZCBDUkVBVEUgUFJPQ0VEVVJFLiIpLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGM3 NjhhZjlhNzMuLmFjY2JmYjU2MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUKQEAgLTY4OCw2ICs2ODgsOCBAQAogI2RlZmF1bHRfdG9hc3RfY29t cHJlc3Npb24gPSAncGdseicJIyAncGdseicgb3IgJ2x6NCcKICN0ZW1wX3RhYmxlc3BhY2VzID0g JycJCQkjIGEgbGlzdCBvZiB0YWJsZXNwYWNlIG5hbWVzLCAnJyB1c2VzCiAJCQkJCSMgb25seSBk ZWZhdWx0IHRhYmxlc3BhY2UKKyNzYWZlX2Z1bmN0aW9uX3NlYXJjaF9wYXRoID0gb2ZmCSMgY2hh bmdlIHRvIHNhZmUgc2VhcmNoX3BhdGggd2hpbGUKKwkJCQkJIyBleGVjdXRpbmcgZnVuY3Rpb25z CiAjY2hlY2tfZnVuY3Rpb25fYm9kaWVzID0gb24KICNkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xh dGlvbiA9ICdyZWFkIGNvbW1pdHRlZCcKICNkZWZhdWx0X3RyYW5zYWN0aW9uX3JlYWRfb25seSA9 IG9mZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKaW5kZXggNDllZjYxOWU0Yi4uNTU2N2MxMjY4ZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCkBAIC03Niw2ICs3NiwxMiBAQCB0eXBlZGVmIGVudW0g UlZST3B0aW9uCiB0eXBlZGVmIHZvaWQgKCpSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2spIChjb25z dCBSYW5nZVZhciAqcmVsYXRpb24sIE9pZCByZWxJZCwKIAkJCQkJCQkJCQkgIE9pZCBvbGRSZWxJ ZCwgdm9pZCAqY2FsbGJhY2tfYXJnKTsKIAorLyoKKyAqIFNhZmUgc2VhcmNoIHBhdGggZm9yIGNh c2VzIHdoZXJlIHRoZSBzZXNzaW9uIHNlYXJjaCBwYXRoIGNhbid0IGJlIHRydXN0ZWQKKyAqIChl LmcuIGZvciBTRUNVUklUWSBERUZJTkVSIGZ1bmN0aW9ucykuCisgKi8KKyNkZWZpbmUgTkFNRVNQ QUNFX1NBRkVfU0VBUkNIX1BBVEgJCSJwZ19jYXRhbG9nLCBwZ190ZW1wIgorCiAjZGVmaW5lIFJh bmdlVmFyR2V0UmVsaWQocmVsYXRpb24sIGxvY2ttb2RlLCBtaXNzaW5nX29rKSBcCiAJUmFuZ2VW YXJHZXRSZWxpZEV4dGVuZGVkKHJlbGF0aW9uLCBsb2NrbW9kZSwgXAogCQkJCQkJCSAobWlzc2lu Z19vaykgPyBSVlJfTUlTU0lOR19PSyA6IDAsIE5VTEwsIE5VTEwpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5o CmluZGV4IGU3YWJlMGI0OTcuLmI5NjI3YWQ0OTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCkBAIC01 OCw2ICs1OCw5IEBAIENBVEFMT0cocGdfcHJvYywxMjU1LFByb2NlZHVyZVJlbGF0aW9uSWQpIEJL SV9CT09UU1RSQVAgQktJX1JPV1RZUEVfT0lEKDgxLFByb2NlCiAJLyogc2VlIFBST0tJTkRfIGNh dGVnb3JpZXMgYmVsb3cgKi8KIAljaGFyCQlwcm9raW5kIEJLSV9ERUZBVUxUKGYpOwogCisJLyog c2VjdXJpdHkgZGVmaW5lciAqLworCWNoYXIJCXByb3NlYXJjaCBCS0lfREVGQVVMVChkKTsKKwog CS8qIHNlY3VyaXR5IGRlZmluZXIgKi8KIAlib29sCQlwcm9zZWNkZWYgQktJX0RFRkFVTFQoZik7 CiAKQEAgLTE1MCw2ICsxNTMsMTUgQEAgREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcHJvY19wcm9u YW1lX2FyZ3NfbnNwX2luZGV4LCAyNjkxLCBQcm9jZWR1cmVOYW1lQXJnc05zcEkKICNkZWZpbmUg UFJPS0lORF9XSU5ET1cgJ3cnCiAjZGVmaW5lIFBST0tJTkRfUFJPQ0VEVVJFICdwJwogCisvKgor ICogU3ltYm9saWMgdmFsdWVzIGZvciBwcm9zZWFyY2ggY29sdW1uOiB0aGVzZSBkZXRlcm1pbmUg dGhlIHNlYXJjaF9wYXRoIHVuZGVyCisgKiB3aGljaCBhIGZ1bmN0aW9uIGV4ZWN1dGVzIGlmIG5v dCBzcGVjaWZpZWQgaW4gYSBTRVQgY2xhdXNlCisgKiAocHJvY29uZmlnKS4gUFJPU0VBUkNIX0RF RkFVTFQgbWVhbnMgdGhhdCBubyBTRUFSQ0ggY2xhdXNlIHdhcyBzcGVjaWZpZWQuCisgKi8KKyNk ZWZpbmUgUFJPU0VBUkNIX0RFRkFVTFQJCSdkJworI2RlZmluZSBQUk9TRUFSQ0hfU1lTVEVNCQkn eScKKyNkZWZpbmUgUFJPU0VBUkNIX1NFU1NJT04JCSdlJworCiAvKgogICogU3ltYm9saWMgdmFs dWVzIGZvciBwcm92b2xhdGlsZSBjb2x1bW46IHRoZXNlIGluZGljYXRlIHdoZXRoZXIgdGhlIHJl c3VsdAogICogb2YgYSBmdW5jdGlvbiBpcyBkZXBlbmRlbnQgKm9ubHkqIG9uIHRoZSB2YWx1ZXMg b2YgaXRzIGV4cGxpY2l0IGFyZ3VtZW50cywKQEAgLTE5Nyw2ICsyMDksNyBAQCBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBQcm9jZWR1cmVDcmVhdGUoY29uc3QgY2hhciAqcHJvY2VkdXJlTmFtZSwKIAkJ CQkJCQkJCSBjb25zdCBjaGFyICpwcm9iaW4sCiAJCQkJCQkJCQkgTm9kZSAqcHJvc3FsYm9keSwK IAkJCQkJCQkJCSBjaGFyIHByb2tpbmQsCisJCQkJCQkJCQkgY2hhciBwcm9zZWFyY2gsCiAJCQkJ CQkJCQkgYm9vbCBzZWN1cml0eV9kZWZpbmVyLAogCQkJCQkJCQkJIGJvb2wgaXNMZWFrUHJvb2Ys CiAJCQkJCQkJCQkgYm9vbCBpc1N0cmljdCwKQEAgLTIxMyw2ICsyMjYsOCBAQCBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBQcm9jZWR1cmVDcmVhdGUoY29uc3QgY2hhciAqcHJvY2VkdXJlTmFtZSwKIAkJ CQkJCQkJCSBmbG9hdDQgcHJvY29zdCwKIAkJCQkJCQkJCSBmbG9hdDQgcHJvcm93cyk7CiAKK2V4 dGVybiBib29sIHByb3NlYXJjaF9pc19zeXN0ZW0oY2hhciBwcm9zZWFyY2gpOworCiBleHRlcm4g Ym9vbCBmdW5jdGlvbl9wYXJzZV9lcnJvcl90cmFuc3Bvc2UoY29uc3QgY2hhciAqcHJvc3JjKTsK IAogZXh0ZXJuIExpc3QgKm9pZF9hcnJheV90b19saXN0KERhdHVtIGRhdHVtKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Yy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmgKaW5k ZXggZTg5MDgzZWUwZS4uMTI0MWQwOTViYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv Z3VjLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmgKQEAgLTI0OSw2ICsyNDksNyBAQCBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBsb2dfZXhlY3V0b3Jfc3RhdHM7CiBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBsb2dfc3RhdGVtZW50X3N0YXRzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wg bG9nX2J0cmVlX2J1aWxkX3N0YXRzOwogCitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBzYWZlX2Z1 bmN0aW9uX3NlYXJjaF9wYXRoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgY2hlY2tfZnVuY3Rp b25fYm9kaWVzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgY3VycmVudF9yb2xlX2lzX3N1cGVy dXNlcjsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfZnVu Y3Rpb25fc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Z1bmN0aW9u X3NxbC5vdXQKaW5kZXggNTBhY2E1OTQwZi4uNzJiYmMwMmVlOSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfZnVuY3Rpb25fc3FsLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9mdW5jdGlvbl9zcWwub3V0CkBAIC04OCw2ICs4OCw3 NSBAQCBTRUxFQ1QgcHJvbmFtZSwgcHJvdm9sYXRpbGUgRlJPTSBwZ19wcm9jCiAgZnVuY3Rlc3Rf Yl80IHwgdgogKDQgcm93cykKIAorLS0KKy0tIFNFQVJDSCBERUZBVUxUIHwgU1lTVEVNIHwgU0VT U0lPTgorLS0KK0NSRUFURSBGVU5DVElPTiBzaG93X3NlYXJjaF9wYXRoKCkgUkVUVVJOUyBURVhU CisgIExBTkdVQUdFIHBscGdzcWwgQVMKKyQkCisgIEJFR0lOCisgICAgUkVUVVJOIGN1cnJlbnRf c2V0dGluZygnc2VhcmNoX3BhdGgnKTsKKyAgRU5EOworJCQ7CitTRVQgc2FmZV9mdW5jdGlvbl9z ZWFyY2hfcGF0aCA9IHRydWU7CitBTFRFUiBGVU5DVElPTiBzaG93X3NlYXJjaF9wYXRoKCkgU0VB UkNIIERFRkFVTFQ7CitTRUxFQ1Qgc2hvd19zZWFyY2hfcGF0aCgpOworICBzaG93X3NlYXJjaF9w YXRoICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwZ19jYXRhbG9nLCBwZ190ZW1wCisoMSBy b3cpCisKK0FMVEVSIEZVTkNUSU9OIHNob3dfc2VhcmNoX3BhdGgoKSBTRUFSQ0ggU1lTVEVNOwor U0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsKKyAgc2hvd19zZWFyY2hfcGF0aCAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGdfY2F0YWxvZywgcGdfdGVtcAorKDEgcm93KQorCitBTFRFUiBG VU5DVElPTiBzaG93X3NlYXJjaF9wYXRoKCkgU0VBUkNIIFNFU1NJT047CitTRUxFQ1Qgc2hvd19z ZWFyY2hfcGF0aCgpOworICAgIHNob3dfc2VhcmNoX3BhdGggICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0ZW1wX2Z1bmNfdGVzdCwgcHVibGljCisoMSByb3cpCisKK1JFU0VUIHNhZmVf ZnVuY3Rpb25fc2VhcmNoX3BhdGg7CitBTFRFUiBGVU5DVElPTiBzaG93X3NlYXJjaF9wYXRoKCkg U0VBUkNIIERFRkFVTFQ7CitTRUxFQ1Qgc2hvd19zZWFyY2hfcGF0aCgpOworICAgIHNob3dfc2Vh cmNoX3BhdGggICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ZW1wX2Z1bmNfdGVzdCwg cHVibGljCisoMSByb3cpCisKK0FMVEVSIEZVTkNUSU9OIHNob3dfc2VhcmNoX3BhdGgoKSBTRUFS Q0ggU1lTVEVNOworU0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsKKyAgc2hvd19zZWFyY2hfcGF0 aCAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGdfY2F0YWxvZywgcGdfdGVtcAorKDEgcm93 KQorCitBTFRFUiBGVU5DVElPTiBzaG93X3NlYXJjaF9wYXRoKCkgU0VBUkNIIFNFU1NJT047CitT RUxFQ1Qgc2hvd19zZWFyY2hfcGF0aCgpOworICAgIHNob3dfc2VhcmNoX3BhdGggICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ZW1wX2Z1bmNfdGVzdCwgcHVibGljCisoMSByb3cpCisK K0FMVEVSIEZVTkNUSU9OIHNob3dfc2VhcmNoX3BhdGgoKSBTRUFSQ0ggU1lTVEVNIFNFVCBzZWFy Y2hfcGF0aCA9IHRlc3QxOworU0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsKKyBzaG93X3NlYXJj aF9wYXRoIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdDEKKygxIHJvdykKKworQUxURVIgRlVO Q1RJT04gc2hvd19zZWFyY2hfcGF0aCgpIFNFQVJDSCBTRVNTSU9OIFNFVCBzZWFyY2hfcGF0aCA9 IHRlc3QxOworU0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsKKyBzaG93X3NlYXJjaF9wYXRoIAor LS0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdDEKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBzaG93 X3NlYXJjaF9wYXRoKCk7CiAtLQogLS0gU0VDVVJJVFkgREVGSU5FUiB8IElOVk9LRVIKIC0tCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfZnVuY3Rpb25fc3FsLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9mdW5jdGlvbl9zcWwuc3FsCmluZGV4IDg5ZTlh ZjNhNDkuLmIwNzU2ZTE2NjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV9mdW5jdGlvbl9zcWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9mdW5j dGlvbl9zcWwuc3FsCkBAIC02MCw2ICs2MCw0MSBAQCBTRUxFQ1QgcHJvbmFtZSwgcHJvdm9sYXRp bGUgRlJPTSBwZ19wcm9jCiAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rlc3RfQl8zJzo6cmVn cHJvYywKIAkJICAgICAnZnVuY3Rlc3RfQl80Jzo6cmVncHJvYykgT1JERVIgQlkgcHJvbmFtZTsK IAorLS0KKy0tIFNFQVJDSCBERUZBVUxUIHwgU1lTVEVNIHwgU0VTU0lPTgorLS0KKworQ1JFQVRF IEZVTkNUSU9OIHNob3dfc2VhcmNoX3BhdGgoKSBSRVRVUk5TIFRFWFQKKyAgTEFOR1VBR0UgcGxw Z3NxbCBBUworJCQKKyAgQkVHSU4KKyAgICBSRVRVUk4gY3VycmVudF9zZXR0aW5nKCdzZWFyY2hf cGF0aCcpOworICBFTkQ7CiskJDsKKworU0VUIHNhZmVfZnVuY3Rpb25fc2VhcmNoX3BhdGggPSB0 cnVlOworQUxURVIgRlVOQ1RJT04gc2hvd19zZWFyY2hfcGF0aCgpIFNFQVJDSCBERUZBVUxUOwor U0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsKK0FMVEVSIEZVTkNUSU9OIHNob3dfc2VhcmNoX3Bh dGgoKSBTRUFSQ0ggU1lTVEVNOworU0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsKK0FMVEVSIEZV TkNUSU9OIHNob3dfc2VhcmNoX3BhdGgoKSBTRUFSQ0ggU0VTU0lPTjsKK1NFTEVDVCBzaG93X3Nl YXJjaF9wYXRoKCk7CisKK1JFU0VUIHNhZmVfZnVuY3Rpb25fc2VhcmNoX3BhdGg7CitBTFRFUiBG VU5DVElPTiBzaG93X3NlYXJjaF9wYXRoKCkgU0VBUkNIIERFRkFVTFQ7CitTRUxFQ1Qgc2hvd19z ZWFyY2hfcGF0aCgpOworQUxURVIgRlVOQ1RJT04gc2hvd19zZWFyY2hfcGF0aCgpIFNFQVJDSCBT WVNURU07CitTRUxFQ1Qgc2hvd19zZWFyY2hfcGF0aCgpOworQUxURVIgRlVOQ1RJT04gc2hvd19z ZWFyY2hfcGF0aCgpIFNFQVJDSCBTRVNTSU9OOworU0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsK KworQUxURVIgRlVOQ1RJT04gc2hvd19zZWFyY2hfcGF0aCgpIFNFQVJDSCBTWVNURU0gU0VUIHNl YXJjaF9wYXRoID0gdGVzdDE7CitTRUxFQ1Qgc2hvd19zZWFyY2hfcGF0aCgpOworQUxURVIgRlVO Q1RJT04gc2hvd19zZWFyY2hfcGF0aCgpIFNFQVJDSCBTRVNTSU9OIFNFVCBzZWFyY2hfcGF0aCA9 IHRlc3QxOworU0VMRUNUIHNob3dfc2VhcmNoX3BhdGgoKTsKKworRFJPUCBGVU5DVElPTiBzaG93 X3NlYXJjaF9wYXRoKCk7CisKIC0tCiAtLSBTRUNVUklUWSBERUZJTkVSIHwgSU5WT0tFUgogLS0K LS0gCjIuMzQuMQoK --=-14Jpd0ubLGwByO86wRTd--