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.96) (envelope-from ) id 1wi8gP-0002BA-0Y for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 10:42:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wi8gN-00HMo2-2J for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 10:42:12 +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.96) (envelope-from ) id 1wi8gN-00HMnu-0R for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 10:42:12 +0000 Received: from mail-yx1-xb12b.google.com ([2607:f8b0:4864:20::b12b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wi8gM-0000000019P-08Xs for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 10:42:11 +0000 Received: by mail-yx1-xb12b.google.com with SMTP id 956f58d0204a3-667923d86a7so1297728d50.0 for ; Fri, 10 Jul 2026 03:42:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783680129; cv=none; d=google.com; s=arc-20260327; b=MI2pSGNSg9Vqlaj6S/v8gShktWlwgYQlXwcyN8XehqhL8Z78a4ASaRo+dWrZML9z0e 3TarGYIYOAawzBzt+Et7oRIHDENEteEvUdCvGGp6hVgIkEvKka/uvB4iMn/1Vg4l5R6N ASFNxDa5vxT8LqlY8RIQVYQoqKK+qPhlgjgLhRrA8Mi0Sx6ZJ1rS9Kdejb0pNERSdSzy LWhZ18HOwyhMp8ks8FDKWA6ws4OgQxkLvUH0NhM5k3UYuhAssbEpa2dJgzFG4xpzpTD/ X7Q/2z3HmzBU+1xDd+Ek8wSqj8aNkjKxYuD7Km9PYno66hZXnCaO/ww5HBUbV988DEYb IgMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=JAfEC2EZNt/n8WaIHoktgK7AJnpYCkd64E30HjZIYYw=; fh=nwNxTtLLPTU0ewfLM7SSbrjMajMl+wwnFkCY/fi90vE=; b=PYXC8XZsfmP2Glyuqr8rLI4jK71sQXcIgu876ZMehlFc4NcXBV5XHgB6hb9Ns84YSn cAelv03nDKrkUXCYa1Ni26ZPIZR3cLVXPvnF10JSpIR/zfUTBiWSIbgFZ9tVXXT9CxZX 9z7EYf/h4Fxt0t5CrsgSKX3a6KYcS4tBEftck7pQFPt4K0FdqdqmzytM7j1JFfQRkAUG tQ/rh1n7Z35PVMzqx48viCc31rO7h3laFw1C+pA08LpxiUaNEjXpFgWz8QARq0Bm9QW5 f3qUCh0OPu94IKfkXjN5CVqYGkyRGX/n6VJjfc3ZobWMLZyCPEs07R7wN8ssN82fMNzA 400w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=databricks.com; s=google; t=1783680129; x=1784284929; darn=lists.postgresql.org; h=content-type:to:subject:message-id:date:from:mime-version:from:to :cc:subject:date:message-id:reply-to:content-type; bh=JAfEC2EZNt/n8WaIHoktgK7AJnpYCkd64E30HjZIYYw=; b=eeLz0hHkYRFV9j4bzTMfh/2KMxxtHgIvksYUU8kwXLCv0BrS7J++apicuXbsfdqv53 HKhsSpyNchirrjJEusZrxyqEPH9WrWuSxQE+lyg7IuUOKvi+5e5jAB/L9CCWAKiWTppK FoT+Ce9kuVXzuI2h5DGItB8HSomYlZW5P/Jbic5PT6R13AQKvpm9xObdbexpFXTin9sY dlMGW41PXIdOTVe73LKMH9F1mNgQmNLcC+bv8LC4wEPSVg8Cxc+78JSB2RcKccTdqHX6 ZuuPCqrd3Y5ehLtb4yYycBuQ0uRYwbmrAYUXP7wjy+RIrEqRpWnDEs/ae5uRB559gBZ4 /7bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783680129; x=1784284929; h=content-type:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JAfEC2EZNt/n8WaIHoktgK7AJnpYCkd64E30HjZIYYw=; b=n8J0G31PUy8B9HcBv596r7MeDCbnaXiqyTwF8hrRTf+pZdbFFuG1QZLFLFkUKcKtJR hF//xxyV0+XC5uw16AvfbjvIbXp7LB2SrMCxOqmxK+Vsq0ZRIRwXcUWRam5sJO3kcY7h FTXaPFhNeFNiyaSi/wWIEO1PtQiYvqNjMfcZEAInP3G6ekYuq+rftZCm2r0MuB6LDirX cl4JHIeVcT221eSKTYw877TtvJcjDfzxRlGb89wOr4zIaaGO4hz454ilYWDO3wzzGUsN GMGLihE6SNswqtLoitij1IkmOLn/1P9abd4+fPjQDvx5bkRUWwFJIvZqn7bV5Y3mdOQl cY5A== X-Gm-Message-State: AOJu0YzhiALYYs21ahO0z0riajzeCzSKjDBEQKRLYVmKv/9tTovQimzE IHGlfCaU1eelhFzXELfHN+VrrtkRNVhg5vBjUPQ7wBMtVVBxFBl4g86dpvO1/hT5vDuzFPhqQRm JQ24qs1EQ1bwRpMQuSYEiU6ifh5wLYpTGesOfGda9QtAJ6qQr/EGTcSsg9yLael8= X-Gm-Gg: AfdE7clktYTgZtx0L0VdpH5tMnMJz/1wASMGwxsVeccRWFMIv0BHyO0D08PGknMOJqY SJYqFrVswmDChqzNHw443Yk1RQfRB8uh064hAtjC4W6LCagAGoMzMFhtTfTrVxSa7w0nruEIG8y GtKGGTKidLjZsR3CufJXqjw0vA4qjgUw/ihjDsXojVoHUq9oowviZ5UlPiBpojjxUvrSdy5FMGl +Qet0bBtgs36T6SHXCPqJvHcg8VbK2N9Bz4qU01aMdrGd+DBeul6WtL8EIMebjBPD73qziLIJU7 bMSbOCQ= X-Received: by 2002:a05:690e:12cf:b0:667:6d5f:b74 with SMTP id 956f58d0204a3-667c5c7d3d6mr1955902d50.36.1783680128486; Fri, 10 Jul 2026 03:42:08 -0700 (PDT) MIME-Version: 1.0 From: Bohyun Lee Date: Fri, 10 Jul 2026 12:41:56 +0200 X-Gm-Features: AUfX_mwFKhVpwkbjcYQgOfT40Ns5Bk11V99TSATzWX9BFLz23DI1A6XABi-06rg Message-ID: Subject: [PATCH] pg_upgrade: add --initdb option to create the new cluster automatically To: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000075fecb06563f6437" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000075fecb06563f6437 Content-Type: multipart/alternative; boundary="00000000000075feca06563f6435" --00000000000075feca06563f6435 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, This patch adds an --initdb option to pg_upgrade that automates the initdb step currently required before running pg_upgrade. Problem =E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94 Before running pg_upgrade, users must manually run initdb with options that exactly match the old cluster: WAL segment size, data checksum setting, encoding, and locale. Getting these right is error-prone. A mismatch results in a confusing check_control_data() failure after the user has already invested time in setting up the new cluster. A related question was raised before [1], where Jeff Davis discussed whether pg_upgrade should perform initdb itself rather than requiring a pre-initialized cluster. Solution =E2=80=94=E2=80=94=E2=80=94=E2=80=94 With --initdb, pg_upgrade handles this automatically. It derives the WAL segment size and checksum setting from pg_control and invokes initdb with the correct flags. The option refuses to proceed if the new cluster already exists. Testing =E2=80=94=E2=80=94=E2=80=94=E2=80=94 All existing pg_upgrade TAP tests pass. A new test, t/007_initdb_option.pl, verifies the happy path end-to-end and checks that --initdb refuses to overwrite an existing cluster. Branch: https://github.com/LeeBohyun/postgres/tree/pg_upgrade_initdb Patch attached. [1] https://www.postgresql.org/message-id/2a7feb71dbdcea31478b3974b8075982ac232= 6d2.camel%40j-davis.com Regards, Bohyun Lee --00000000000075feca06563f6435 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

This patch adds an --= initdb option to pg_upgrade that automates the initdb step currently requir= ed before running pg_upgrade.

Problem
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94
Before running pg_upgrade, users must manually = run initdb with options that exactly match the old cluster: WAL segment siz= e, data checksum setting, encoding, and locale. Getting these right is erro= r-prone. A mismatch results in a confusing check_control_data() failure aft= er the user has already invested time in setting up the new cluster. A rela= ted question was raised before [1], where Jeff Davis discussed whether pg_u= pgrade should perform initdb itself rather than requiring a pre-initialized= cluster.

Solution
=E2=80=94=E2=80=94=E2=80=94=E2=80=94
= With --initdb, pg_upgrade handles this automatically. It derives the WAL se= gment size and checksum setting from pg_control and invokes initdb with the= correct flags. The option refuses to proceed if the new cluster already ex= ists.

Testing
=E2=80=94=E2=80=94=E2=80=94=E2=80=94
All e= xisting pg_upgrade TAP tests pass. A new test, t/007_initdb_option.pl, verifies the happy path end-to-end = and checks that --initdb refuses to overwrite an existing cluster.

B= ranch: https://github.com/LeeBohyun/postgres/tree/pg_upgrade_initdb
<= div>
Patch attached.

--00000000000075feca06563f6435-- --00000000000075fecb06563f6437 Content-Type: application/octet-stream; name="v1-pg_upgrade-initdb.patch" Content-Disposition: attachment; filename="v1-pg_upgrade-initdb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mresz03m0 RnJvbSA1NzEwZDUyMzkwMGM0MDkxYWI3NjBlMTQyZDk5OTQxMTQzNWNiMTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb2h5dW4gTGVlIDxib2h5dW4ubGVlQGRhdGFicmlja3MuY29t PgpEYXRlOiBGcmksIDEwIEp1bCAyMDI2IDA5OjEyOjQxICswMDAwClN1YmplY3Q6IFtQQVRDSF0g cGdfdXBncmFkZTogYWRkIC0taW5pdGRiIG9wdGlvbiB0byBjcmVhdGUgdGhlIG5ldyBjbHVzdGVy CiBhdXRvbWF0aWNhbGx5CgpIaXN0b3JpY2FsbHksIHBnX3VwZ3JhZGUgcmVxdWlyZXMgdGhlIHVz ZXIgdG8gbWFudWFsbHkgcnVuIGluaXRkYiBiZWZvcmUKaW52b2tpbmcgcGdfdXBncmFkZSwgcGFz c2luZyBvcHRpb25zIHRoYXQgZXhhY3RseSBtYXRjaCB0aGUgb2xkIGNsdXN0ZXIncwpXQUwgc2Vn bWVudCBzaXplLCBkYXRhIGNoZWNrc3VtIHNldHRpbmcsIGVuY29kaW5nLCBhbmQgbG9jYWxlLiAg R2V0dGluZwp0aGVzZSByaWdodCBpcyBlcnJvci1wcm9uZTogYSBtaXNtYXRjaCBjYXVzZXMgcGdf dXBncmFkZSB0byBmYWlsIHdpdGggYW4Kb3BhcXVlIGNoZWNrX2NvbnRyb2xfZGF0YSgpIGVycm9y IGFmdGVyIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGdvbmUgdGhyb3VnaAp0aGUgdHJvdWJsZSBvZiBy dW5uaW5nIGluaXRkYi4KClRoaXMgcGF0Y2ggYWRkcyBhIC0taW5pdGRiIG9wdGlvbiB0aGF0IGF1 dG9tYXRlcyB0aGUgaW5pdGRiIHN0ZXAuICBXaGVuCmdpdmVuLCBwZ191cGdyYWRlIHN0YXJ0cyB0 aGUgb2xkIHNlcnZlciBicmllZmx5LCByZWFkcyB0ZW1wbGF0ZTAncyBsb2NhbGUKYW5kIGVuY29k aW5nLCBkZXJpdmVzIHRoZSBXQUwgc2VnbWVudCBzaXplIGFuZCBjaGVja3N1bSBzZXR0aW5nIGZy b20gdGhlCm9sZCBjbHVzdGVyJ3MgcGdfY29udHJvbCwgYW5kIHJ1bnMgaW5pdGRiIHdpdGggbWF0 Y2hpbmcgb3B0aW9ucy4gIFRoZQpuZXcgY2x1c3RlciBkYXRhIGRpcmVjdG9yeSBtdXN0IG5vdCBh bHJlYWR5IGV4aXN0OyBwZ191cGdyYWRlIGV4aXRzIHdpdGgKYW4gZXJyb3IgaWYgaXQgZG9lcywg dG8gYXZvaWQgY2xvYmJlcmluZyBhbiBleGlzdGluZyBpbnN0YWxsYXRpb24uCgpUaGUgbG9jYWxl IGluc3BlY3Rpb24gcmVxdWlyZXMgYSBicmllZiBzdGFydCBvZiB0aGUgb2xkIHBvc3RtYXN0ZXIs IHdoaWNoCmlzIGFscmVhZHkgZG9uZSBsYXRlciBpbiB0aGUgbm9ybWFsIHBnX3VwZ3JhZGUgZmxv dzsgaGVyZSBpdCBpcyBkb25lCmVhcmxpZXIsIGJlZm9yZSB0aGUgbmV3IGNsdXN0ZXIgZXhpc3Rz LCB1c2luZyBhIHRlbXBvcmFyeSBsb2cgZGlyZWN0b3J5LgoKRXh0cmEgaW5pdGRiIG9wdGlvbnMg Y2FuIGJlIHBhc3NlZCB2aWEgdGhlIGV4aXN0aW5nIC1PIGZsYWcgYW5kIHdpbGwgYmUKZm9yd2Fy ZGVkIHRvIHRoZSBpbml0ZGIgaW52b2NhdGlvbi4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BndXBn cmFkZS5zZ21sICAgICAgICAgICB8ICAyNSArKysKIHNyYy9iaW4vcGdfdXBncmFkZS9pbmZvLmMg ICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9uLmMgICAg ICAgICAgICAgICB8ICAxMSArLQogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyAgICAg ICAgICAgfCAxNzggKysrKysrKysrKysrKysrKysrKystLQogc3JjL2Jpbi9wZ191cGdyYWRlL3Bn X3VwZ3JhZGUuaCAgICAgICAgICAgfCAgIDQgKwogc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA3X2lu aXRkYl9vcHRpb24ucGwgfCAxMDUgKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAzMTIg aW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jp bi9wZ191cGdyYWRlL3QvMDA3X2luaXRkYl9vcHRpb24ucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL3BndXBncmFkZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ3VwZ3JhZGUuc2dt bAppbmRleCBlNGU4YzAyZTZkNi4uOTAyYjAyMzM4MDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvcGd1cGdyYWRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ3VwZ3JhZGUuc2dt bApAQCAtMjYyLDYgKzI2MiwyNSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICA8dGVybT48b3B0aW9uPi0taW5pdGRiPC9vcHRpb24+PC90ZXJtPgorICAgICAgPGxpc3Rp dGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBDcmVhdGUgdGhlIG5ldyBjbHVzdGVyIGF1dG9t YXRpY2FsbHkgYnkgcnVubmluZworICAgICAgICA8Y29tbWFuZD5pbml0ZGI8L2NvbW1hbmQ+IGJl Zm9yZSB1cGdyYWRpbmcsIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZQorICAgICAgICB1c2VyIHRv IGhhdmUgY3JlYXRlZCBpdCBtYW51YWxseS4gIFRoZSBXQUwgc2VnbWVudCBzaXplLCBkYXRhIGNo ZWNrc3VtCisgICAgICAgIHNldHRpbmcsIGVuY29kaW5nLCBhbmQgbG9jYWxlIGFyZSBkZXJpdmVk IGZyb20gdGhlIG9sZCBjbHVzdGVyIHNvIHRoYXQKKyAgICAgICAgPGFwcGxpY2F0aW9uPnBnX3Vw Z3JhZGU8L2FwcGxpY2F0aW9uPiBjYW4gdmVyaWZ5IGNvbXBhdGliaWxpdHkuCisgICAgICAgPC9w YXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbmV3IGNsdXN0ZXIgZGF0YSBkaXJlY3Rv cnkgc3BlY2lmaWVkIHdpdGgKKyAgICAgICAgPG9wdGlvbj4tRDwvb3B0aW9uPi88b3B0aW9uPi0t bmV3LWRhdGFkaXI8L29wdGlvbj4gbXVzdCBub3QgYWxyZWFkeQorICAgICAgICBleGlzdCB3aGVu IHRoaXMgb3B0aW9uIGlzIGdpdmVuOyBpZiBpdCBkb2VzLAorICAgICAgICA8YXBwbGljYXRpb24+ cGdfdXBncmFkZTwvYXBwbGljYXRpb24+IHdpbGwgZXhpdCB3aXRoIGFuIGVycm9yLgorICAgICAg IDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAg IDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi0tbm8tc3RhdGlzdGljczwvb3B0 aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KQEAgLTQ2Miw2ICs0ODEsMTIgQEAgbWFrZSBw cmVmaXg9L3Vzci9sb2NhbC9wZ3NxbC5uZXcgaW5zdGFsbAogICAgICBwcmVidWlsdCBpbnN0YWxs ZXJzIGRvIHRoaXMgc3RlcCBhdXRvbWF0aWNhbGx5LiBUaGVyZSBpcyBubyBuZWVkIHRvCiAgICAg IHN0YXJ0IHRoZSBuZXcgY2x1c3Rlci4KICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIEFs dGVybmF0aXZlbHksIHBhc3MgPG9wdGlvbj4tLWluaXRkYjwvb3B0aW9uPiB0bworICAgICA8YXBw bGljYXRpb24+cGdfdXBncmFkZTwvYXBwbGljYXRpb24+IHRvIGhhdmUgaXQgcnVuCisgICAgIDxj b21tYW5kPmluaXRkYjwvY29tbWFuZD4gYXV0b21hdGljYWxseSwgZGVyaXZpbmcgdGhlIHJlcXVp cmVkIHNldHRpbmdzCisgICAgIGZyb20gdGhlIG9sZCBjbHVzdGVyLiAgSW4gdGhhdCBjYXNlIHRo aXMgbWFudWFsIHN0ZXAgY2FuIGJlIHNraXBwZWQuCisgICAgPC9wYXJhPgogICAgPC9zdGVwPgog CiAgICA8c3RlcD4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9pbmZvLmMgYi9zcmMv YmluL3BnX3VwZ3JhZGUvaW5mby5jCmluZGV4IDM3ZmZmOTM4OTJmLi42NWFlOTdjZGMxZiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYworKysgYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvaW5mby5jCkBAIC0yMSw3ICsyMSw2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9yZWxfZmlsZW5h bWVfbWFwKGNvbnN0IGNoYXIgKm9sZF9kYXRhLCBjb25zdCBjaGFyICpuZXdfZGF0YSwKIHN0YXRp YyB2b2lkIHJlcG9ydF91bm1hdGNoZWRfcmVsYXRpb24oY29uc3QgUmVsSW5mbyAqcmVsLCBjb25z dCBEYkluZm8gKmRiLAogCQkJCQkJCQkJICBib29sIGlzX25ld19kYik7CiBzdGF0aWMgdm9pZCBm cmVlX2RiX2FuZF9yZWxfaW5mb3MoRGJJbmZvQXJyICpkYl9hcnIpOwotc3RhdGljIHZvaWQgZ2V0 X3RlbXBsYXRlMF9pbmZvKENsdXN0ZXJJbmZvICpjbHVzdGVyKTsKIHN0YXRpYyB2b2lkIGdldF9k Yl9pbmZvcyhDbHVzdGVySW5mbyAqY2x1c3Rlcik7CiBzdGF0aWMgY2hhciAqZ2V0X3JlbF9pbmZv c19xdWVyeSh2b2lkKTsKIHN0YXRpYyB2b2lkIHByb2Nlc3NfcmVsX2luZm9zKERiSW5mbyAqZGJp bmZvLCBQR3Jlc3VsdCAqcmVzLCB2b2lkICphcmcpOwpAQCAtMzI4LDcgKzMyNyw3IEBAIGdldF9k Yl9yZWxfYW5kX3Nsb3RfaW5mb3MoQ2x1c3RlckluZm8gKmNsdXN0ZXIpCiAgKiBHZXQgaW5mb3Jt YXRpb24gYWJvdXQgdGVtcGxhdGUwLCB3aGljaCB3aWxsIGJlIGNvcGllZCBmcm9tIHRoZSBvbGQg Y2x1c3RlcgogICogdG8gdGhlIG5ldyBjbHVzdGVyLgogICovCi1zdGF0aWMgdm9pZAordm9pZAog Z2V0X3RlbXBsYXRlMF9pbmZvKENsdXN0ZXJJbmZvICpjbHVzdGVyKQogewogCVBHY29ubgkgICAq Y29ubiA9IGNvbm5lY3RUb1NlcnZlcihjbHVzdGVyLCAidGVtcGxhdGUxIik7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9uLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9u LmMKaW5kZXggZjAxZDJmOTJkOTUuLmRhYWY0OGQ0N2JjIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3VwZ3JhZGUvb3B0aW9uLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL29wdGlvbi5jCkBAIC02 Myw2ICs2Myw3IEBAIHBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ eyJuby1zdGF0aXN0aWNzIiwgbm9fYXJndW1lbnQsIE5VTEwsIDV9LAogCQl7InNldC1jaGFyLXNp Z25lZG5lc3MiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNn0sCiAJCXsic3dhcCIsIG5vX2Fy Z3VtZW50LCBOVUxMLCA3fSwKKwkJeyJpbml0ZGIiLCBub19hcmd1bWVudCwgTlVMTCwgOH0sCiAK IAkJe05VTEwsIDAsIE5VTEwsIDB9CiAJfTsKQEAgLTIzNCw2ICsyMzUsMTAgQEAgcGFyc2VDb21t YW5kTGluZShpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXVzZXJfb3B0cy50cmFuc2Zlcl9t b2RlID0gVFJBTlNGRVJfTU9ERV9TV0FQOwogCQkJCWJyZWFrOwogCisJCQljYXNlIDg6CisJCQkJ dXNlcl9vcHRzLmluaXRkYl9uZXdfY2x1c3RlciA9IHRydWU7CisJCQkJYnJlYWs7CisKIAkJCWRl ZmF1bHQ6CiAJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCQlvc19pbmZvLnByb2duYW1lKTsKQEAgLTMyOCw2ICsz MzMsOCBAQCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCIgIC0tY2xvbmUgICAgICAgICAgICAgICAg ICAgICAgIGNsb25lIGluc3RlYWQgb2YgY29weWluZyBmaWxlcyB0byBuZXcgY2x1c3RlclxuIikp OwogCXByaW50ZihfKCIgIC0tY29weSAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgZmlsZXMg dG8gbmV3IGNsdXN0ZXIgKGRlZmF1bHQpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1jb3B5LWZpbGUt cmFuZ2UgICAgICAgICAgICAgY29weSBmaWxlcyB0byBuZXcgY2x1c3RlciB3aXRoIGNvcHlfZmls ZV9yYW5nZVxuIikpOworCXByaW50ZihfKCIgIC0taW5pdGRiICAgICAgICAgICAgICAgICAgICAg IGNyZWF0ZSB0aGUgbmV3IGNsdXN0ZXIgd2l0aCBpbml0ZGIgYmVmb3JlXG4iCisJCQkgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBncmFkaW5nIChzZXR0aW5ncyBkZXJpdmVkIGZy b20gb2xkIGNsdXN0ZXIpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1uby1zdGF0aXN0aWNzICAgICAg ICAgICAgICAgZG8gbm90IGltcG9ydCBzdGF0aXN0aWNzIGZyb20gb2xkIGNsdXN0ZXJcbiIpKTsK IAlwcmludGYoXygiICAtLXNldC1jaGFyLXNpZ25lZG5lc3M9T1BUSU9OICBzZXQgbmV3IGNsdXN0 ZXIgY2hhciBzaWduZWRuZXNzIHRvIFwic2lnbmVkXCIgb3JcbiIKIAkJCSAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcInVuc2lnbmVkXCJcbiIpKTsKQEAgLTMzNiw3ICszNDMsOSBA QCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAgICAgICAgICAgICAgICAg IHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiXG4iCiAJCQkgIkJl Zm9yZSBydW5uaW5nIHBnX3VwZ3JhZGUgeW91IG11c3Q6XG4iCi0JCQkgIiAgY3JlYXRlIGEgbmV3 IGRhdGFiYXNlIGNsdXN0ZXIgKHVzaW5nIHRoZSBuZXcgdmVyc2lvbiBvZiBpbml0ZGIpXG4iCisJ CQkgIiAgY3JlYXRlIGEgbmV3IGRhdGFiYXNlIGNsdXN0ZXIgKHVzaW5nIHRoZSBuZXcgdmVyc2lv biBvZiBpbml0ZGIpLFxuIgorCQkJICIgICAgdW5sZXNzIHRoZSAtLWluaXRkYiBvcHRpb24gaXMg Z2l2ZW4sIGluIHdoaWNoIGNhc2UgcGdfdXBncmFkZVxuIgorCQkJICIgICAgY3JlYXRlcyB0aGUg bmV3IGNsdXN0ZXIgZm9yIHlvdVxuIgogCQkJICIgIHNodXRkb3duIHRoZSBwb3N0bWFzdGVyIHNl cnZpY2luZyB0aGUgb2xkIGNsdXN0ZXJcbiIKIAkJCSAiICBzaHV0ZG93biB0aGUgcG9zdG1hc3Rl ciBzZXJ2aWNpbmcgdGhlIG5ldyBjbHVzdGVyXG4iKSk7CiAJcHJpbnRmKF8oIlxuIgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9wZ191cGdyYWRlLmMKaW5kZXggNzM2NmZkNDYyN2MuLmIxMDhkM2JlYjBkIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCisrKyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9wZ191cGdyYWRlLmMKQEAgLTQ1LDEwICs0NSwxMyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL211 bHRpeGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3NfZC5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfY29sbGF0aW9uX2QuaCIKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAj aW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJjb21tb24vcmVzdHJpY3RlZF90 b2tlbi5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgImZl X3V0aWxzL3ZlcnNpb24uaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgInBn X3VwZ3JhZGUuaCIKIAogLyoKQEAgLTY3LDYgKzcwLDggQEAgc3RhdGljIHZvaWQgY29weV94YWN0 X3hsb2dfeGlkKHZvaWQpOwogc3RhdGljIHZvaWQgc2V0X2Zyb3plbnhpZHModm9pZCk7CiBzdGF0 aWMgdm9pZCBtYWtlX291dHB1dGRpcnMoY2hhciAqcGdkYXRhKTsKIHN0YXRpYyB2b2lkIHNldHVw KGNoYXIgKmFyZ3YwKTsKK3N0YXRpYyB2b2lkIHJlc29sdmVfbmV3X2JpbmRpcihjb25zdCBjaGFy ICphcmd2MCk7CitzdGF0aWMgdm9pZCBjcmVhdGVfbmV3X2NsdXN0ZXJfdmlhX2luaXRkYih2b2lk KTsKIHN0YXRpYyB2b2lkIGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3RzKHZvaWQpOwog c3RhdGljIHZvaWQgY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9zbG90KHZvaWQpOwogCkBAIC0x MDcsNiArMTEyLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWdldF9yZXN0cmlj dGVkX3Rva2VuKCk7CiAKIAlhZGp1c3RfZGF0YV9kaXIoJm9sZF9jbHVzdGVyKTsKKworCWlmICh1 c2VyX29wdHMuaW5pdGRiX25ld19jbHVzdGVyKQorCQljcmVhdGVfbmV3X2NsdXN0ZXJfdmlhX2lu aXRkYigpOworCiAJYWRqdXN0X2RhdGFfZGlyKCZuZXdfY2x1c3Rlcik7CiAKIAkvKgpAQCAtMzU4 LDYgKzM2NywxNjMgQEAgbWFrZV9vdXRwdXRkaXJzKGNoYXIgKnBnZGF0YSkKIH0KIAogCisvKgor ICogcmVzb2x2ZV9uZXdfYmluZGlyKCkKKyAqCisgKiBJZGVtcG90ZW50IGhlbHBlcjogaWYgbmV3 X2NsdXN0ZXIuYmluZGlyIGhhcyBub3QgYmVlbiBzZXQgYnkgdGhlIHVzZXIgdmlhCisgKiAtQiwg ZGVyaXZlIGl0IGZyb20gdGhlIHBhdGggb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgcGdfdXBn cmFkZSBiaW5hcnkuCisgKiBDYWxsZWQgZWFybHkgYnkgY3JlYXRlX25ld19jbHVzdGVyX3ZpYV9p bml0ZGIoKSBzbyB0aGF0IHRoZSBpbml0ZGIgcGF0aAorICogaXMgYXZhaWxhYmxlIGJlZm9yZSB2 ZXJpZnlfZGlyZWN0b3JpZXMoKSBydW5zLgorICovCitzdGF0aWMgdm9pZAorcmVzb2x2ZV9uZXdf YmluZGlyKGNvbnN0IGNoYXIgKmFyZ3YwKQoreworCWlmICghbmV3X2NsdXN0ZXIuYmluZGlyKQor CXsKKwkJY2hhcgkJZXhlY19wYXRoW01BWFBHUEFUSF07CisKKwkJaWYgKGZpbmRfbXlfZXhlYyhh cmd2MCwgZXhlY19wYXRoKSA8IDApCisJCQlwZ19mYXRhbCgiJXM6IGNvdWxkIG5vdCBmaW5kIG93 biBwcm9ncmFtIGV4ZWN1dGFibGUiLCBhcmd2MCk7CisJCS8qIFRyaW0gb2ZmIHByb2dyYW0gbmFt ZSBhbmQga2VlcCBqdXN0IHRoZSBkaXJlY3RvcnkgKi8KKwkJKmxhc3RfZGlyX3NlcGFyYXRvcihl eGVjX3BhdGgpID0gJ1wwJzsKKwkJY2Fub25pY2FsaXplX3BhdGgoZXhlY19wYXRoKTsKKwkJbmV3 X2NsdXN0ZXIuYmluZGlyID0gcGdfc3RyZHVwKGV4ZWNfcGF0aCk7CisJfQorfQorCisKKy8qCisg KiBjcmVhdGVfbmV3X2NsdXN0ZXJfdmlhX2luaXRkYigpCisgKgorICogSW1wbGVtZW50cyAtLWlu aXRkYjogcnVuIGluaXRkYiB0byBjcmVhdGUgdGhlIG5ldyBjbHVzdGVyIGJlZm9yZSB1cGdyYWRp bmcsCisgKiBkZXJpdmluZyBXQUwgc2VnbWVudCBzaXplLCBkYXRhIGNoZWNrc3VtcywgZW5jb2Rp bmcsIGFuZCBsb2NhbGUgc2V0dGluZ3MKKyAqIGZyb20gdGhlIG9sZCBjbHVzdGVyIHNvIHRoYXQg Y2hlY2tfY29udHJvbF9kYXRhKCkgcGFzc2VzLgorICoKKyAqIFRoaXMgcnVucyBiZWZvcmUgdGhl IG5vcm1hbCB2ZXJpZnlfZGlyZWN0b3JpZXMoKSAvIHNldHVwKCkgcGF0aCwgc28gd2UKKyAqIHVz ZSBhIHRlbXBvcmFyeSBsb2cgZGlyZWN0b3J5IHVuZGVyIHRoZSBuZXcgYmluZGlyIGZvciB0aGUg ZWFybHkgc2VydmVyCisgKiBzdGFydDsgbWFrZV9vdXRwdXRkaXJzKCkgd2lsbCByZXBsYWNlIGxv Z19vcHRzLmxvZ2RpciBsYXRlci4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9uZXdfY2x1c3Rl cl92aWFfaW5pdGRiKHZvaWQpCit7CisJRGJMb2NhbGVJbmZvICpsb2NhbGU7CisJUFFFeHBCdWZm ZXJEYXRhIGNtZDsKKwljaGFyCQl0bXBfbG9nZGlyW01BWFBHUEFUSF07CisJY2hhcgkgICAqc2F2 ZWRfbG9nZGlyID0gbG9nX29wdHMubG9nZGlyOworCWNvbnN0IGNoYXIgKmVuY29kaW5nX25hbWU7 CisKKwlyZXNvbHZlX25ld19iaW5kaXIob3NfaW5mby5wcm9nbmFtZSk7CisKKwkvKgorCSAqIFZl cmlmeSB0aGF0IGluaXRkYiBpcyBwcmVzZW50IGFuZCBleGVjdXRhYmxlIGJlZm9yZSBkb2luZyBh bnkgd29yay4KKwkgKiBUaGUgbm9ybWFsIHBhdGggY2hlY2tzIHRoaXMgbGF0ZXIgaW5zaWRlIHZl cmlmeV9kaXJlY3RvcmllcygpLCBidXQgd2UKKwkgKiBydW4gYmVmb3JlIHRoYXQsIHNvIGZhaWwg ZWFybHkgd2l0aCBhIHVzZWZ1bCBtZXNzYWdlLgorCSAqLworCXsKKwkJY2hhcgkJaW5pdGRiX3Bh dGhbTUFYUEdQQVRIXTsKKworCQlzbnByaW50Zihpbml0ZGJfcGF0aCwgc2l6ZW9mKGluaXRkYl9w YXRoKSwgIiVzL2luaXRkYiIsCisJCQkJIG5ld19jbHVzdGVyLmJpbmRpcik7CisJCWlmICh2YWxp ZGF0ZV9leGVjKGluaXRkYl9wYXRoKSAhPSAwKQorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5k IFwiaW5pdGRiXCIgaW4gXCIlc1wiOiAlbVxuIgorCQkJCQkgIlRoZSAtLWluaXRkYiBvcHRpb24g cmVxdWlyZXMgaW5pdGRiIHRvIGJlIHByZXNlbnQgaW4gdGhlIG5ldyBjbHVzdGVyJ3MgYmluIGRp cmVjdG9yeS4iLAorCQkJCQkgbmV3X2NsdXN0ZXIuYmluZGlyKTsKKwl9CisKKwlvbGRfY2x1c3Rl ci5tYWpvcl92ZXJzaW9uID0gZ2V0X3BnX3ZlcnNpb24ob2xkX2NsdXN0ZXIucGdkYXRhLAorCQkJ CQkJCQkJCQkgICAmb2xkX2NsdXN0ZXIubWFqb3JfdmVyc2lvbl9zdHIpOworCisJLyoKKwkgKiBn ZXRfY29udHJvbF9kYXRhKCkgc2VsZWN0cyBwZ19yZXNldHdhbCB2cy4gcGdfcmVzZXR4bG9nIHZp YQorCSAqIGJpbl92ZXJzaW9uLCB3aGljaCBjaGVja19iaW5kaXIoKSBub3JtYWxseSBmaWxscyBp biBsYXRlci4gIFNlZWQgaXQKKwkgKiBub3cgc28gdGhlIHJpZ2h0IGJpbmFyeSBuYW1lIGlzIHVz ZWQgaW4gdGhpcyBlYXJseSBjYWxsLgorCSAqLworCWlmIChvbGRfY2x1c3Rlci5iaW5fdmVyc2lv biA9PSAwKQorCQlvbGRfY2x1c3Rlci5iaW5fdmVyc2lvbiA9IG9sZF9jbHVzdGVyLm1ham9yX3Zl cnNpb247CisKKwkvKiBSZWZ1c2UgdG8gb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGNsdXN0ZXIuICov CisJeworCQljaGFyCQl2ZXJmaWxlW01BWFBHUEFUSF07CisJCXN0cnVjdCBzdGF0IHN0OworCisJ CXNucHJpbnRmKHZlcmZpbGUsIHNpemVvZih2ZXJmaWxlKSwgIiVzL1BHX1ZFUlNJT04iLAorCQkJ CSBuZXdfY2x1c3Rlci5wZ2RhdGEpOworCQlpZiAoc3RhdCh2ZXJmaWxlLCAmc3QpID09IDApCisJ CQlwZ19mYXRhbCgibmV3IGNsdXN0ZXIgZGF0YSBkaXJlY3RvcnkgXCIlc1wiIGFscmVhZHkgY29u dGFpbnMgYSBkYXRhYmFzZSBzeXN0ZW07ICIKKwkJCQkJICItLWluaXRkYiByZXF1aXJlcyBhbiBl bXB0eSBvciBub25leGlzdGVudCBkaXJlY3RvcnkiLAorCQkJCQkgbmV3X2NsdXN0ZXIucGdkYXRh KTsKKwl9CisKKwlnZXRfY29udHJvbF9kYXRhKCZvbGRfY2x1c3Rlcik7CisKKwkvKiBTZXQgdXAg YSB0ZW1wb3JhcnkgbG9nIGRpcmVjdG9yeSBmb3IgdGhlIGVhcmx5IHNlcnZlciBzdGFydC4gKi8K KwlzbnByaW50Zih0bXBfbG9nZGlyLCBzaXplb2YodG1wX2xvZ2RpciksICIlcy9wZ191cGdyYWRl X2luaXRkYi5sb2cuZCIsCisJCQkgbmV3X2NsdXN0ZXIuYmluZGlyKTsKKwlpZiAobWtkaXIodG1w X2xvZ2RpciwgcGdfZGlyX2NyZWF0ZV9tb2RlKSA8IDAgJiYgZXJybm8gIT0gRUVYSVNUKQorCQlw Z19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgbG9nIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwKKwkJCQkgdG1wX2xvZ2Rpcik7CisJbG9nX29wdHMubG9nZGlyID0gdG1wX2xvZ2RpcjsK KworCWlmICghb2xkX2NsdXN0ZXIuc29ja2RpcikKKwkJb2xkX2NsdXN0ZXIuc29ja2RpciA9IHVz ZXJfb3B0cy5zb2NrZXRkaXIgPyB1c2VyX29wdHMuc29ja2V0ZGlyIDogIi4iOworCisJcHJlcF9z dGF0dXMoIkluc3BlY3Rpbmcgb2xkIGNsdXN0ZXIgbG9jYWxlIGZvciBuZXcgY2x1c3RlciBjcmVh dGlvbiIpOworCXN0YXJ0X3Bvc3RtYXN0ZXIoJm9sZF9jbHVzdGVyLCB0cnVlKTsKKwlnZXRfdGVt cGxhdGUwX2luZm8oJm9sZF9jbHVzdGVyKTsKKwlzdG9wX3Bvc3RtYXN0ZXIoZmFsc2UpOworCWNo ZWNrX29rKCk7CisKKwlsb2NhbGUgPSBvbGRfY2x1c3Rlci50ZW1wbGF0ZTA7CisJZW5jb2Rpbmdf bmFtZSA9IHBnX2VuY29kaW5nX3RvX2NoYXIobG9jYWxlLT5kYl9lbmNvZGluZyk7CisKKwlwcmVw X3N0YXR1cygiQ3JlYXRpbmcgbmV3IGNsdXN0ZXIgd2l0aCBpbml0ZGIiKTsKKworCWluaXRQUUV4 cEJ1ZmZlcigmY21kKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiXCIlcy9pbml0ZGJcIiAt RCBcIiVzXCIgLU4iLAorCQkJCQkgIG5ld19jbHVzdGVyLmJpbmRpciwgbmV3X2NsdXN0ZXIucGdk YXRhKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1VIFwiJXNcIiIsIG9zX2luZm8udXNl cik7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtLXdhbC1zZWdzaXplPSV1IiwKKwkJCQkJ ICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS53YWxzZWcgLyAoMTAyNCAqIDEwMjQpKTsKKworCS8q CisJICogUGFzcyAtLWRhdGEtY2hlY2tzdW1zIG9yIC0tbm8tZGF0YS1jaGVja3N1bXMgZXhwbGlj aXRseS4gIFN0YXJ0aW5nCisJICogZnJvbSBQRzE4LCBpbml0ZGIgZW5hYmxlcyBjaGVja3N1bXMg YnkgZGVmYXVsdCwgc28gd2UgbXVzdCBtaXJyb3IgdGhlCisJICogb2xkIGNsdXN0ZXIncyBzZXR0 aW5nIHRvIGF2b2lkIGEgbWlzbWF0Y2ggdGhhdCBjaGVja19jb250cm9sX2RhdGEoKQorCSAqIHdv dWxkIHJlamVjdC4KKwkgKi8KKwlpZiAob2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuZGF0YV9jaGVj a3N1bV92ZXJzaW9uICE9IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjbWQsICIgLS1kYXRh LWNoZWNrc3VtcyIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAtLW5v LWRhdGEtY2hlY2tzdW1zIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC0tZW5jb2Rp bmc9JXMiLCBlbmNvZGluZ19uYW1lKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC0tbG9j YWxlLXByb3ZpZGVyPSVzIiwKKwkJCQkJICBjb2xscHJvdmlkZXJfbmFtZShsb2NhbGUtPmRiX2Nv bGxwcm92aWRlcikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLS1sYy1jb2xsYXRlPVwi JXNcIiAtLWxjLWN0eXBlPVwiJXNcIiIsCisJCQkJCSAgbG9jYWxlLT5kYl9jb2xsYXRlLCBsb2Nh bGUtPmRiX2N0eXBlKTsKKworCWlmIChsb2NhbGUtPmRiX2xvY2FsZSkKKwl7CisJCWlmIChsb2Nh bGUtPmRiX2NvbGxwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmNtZCwgIiAtLWljdS1sb2NhbGU9XCIlc1wiIiwKKwkJCQkJCQkgIGxvY2FsZS0+ZGJf bG9jYWxlKTsKKwkJZWxzZSBpZiAobG9jYWxlLT5kYl9jb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJ REVSX0JVSUxUSU4pCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC0tYnVpbHRpbi1sb2Nh bGU9XCIlc1wiIiwKKwkJCQkJCQkgIGxvY2FsZS0+ZGJfbG9jYWxlKTsKKwl9CisKKwlpZiAobmV3 X2NsdXN0ZXIucGdvcHRzKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiICVzIiwgbmV3X2Ns dXN0ZXIucGdvcHRzKTsKKworCWV4ZWNfcHJvZyhVVElMSVRZX0xPR19GSUxFLCBOVUxMLCB0cnVl LCB0cnVlLCAiJXMiLCBjbWQuZGF0YSk7CisKKwl0ZXJtUFFFeHBCdWZmZXIoJmNtZCk7CisJbG9n X29wdHMubG9nZGlyID0gc2F2ZWRfbG9nZGlyOworCisJY2hlY2tfb2soKTsKK30KKworCiBzdGF0 aWMgdm9pZAogc2V0dXAoY2hhciAqYXJndjApCiB7CkBAIC0zNzIsMTcgKzUzOCw3IEBAIHNldHVw KGNoYXIgKmFyZ3YwKQogCSAqIHdpdGggLUIsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhdGggb2Yg dGhlIGN1cnJlbnRseSBleGVjdXRlZCBwZ191cGdyYWRlCiAJICogYmluYXJ5LgogCSAqLwotCWlm ICghbmV3X2NsdXN0ZXIuYmluZGlyKQotCXsKLQkJY2hhcgkJZXhlY19wYXRoW01BWFBHUEFUSF07 Ci0KLQkJaWYgKGZpbmRfbXlfZXhlYyhhcmd2MCwgZXhlY19wYXRoKSA8IDApCi0JCQlwZ19mYXRh bCgiJXM6IGNvdWxkIG5vdCBmaW5kIG93biBwcm9ncmFtIGV4ZWN1dGFibGUiLCBhcmd2MCk7Ci0J CS8qIFRyaW0gb2ZmIHByb2dyYW0gbmFtZSBhbmQga2VlcCBqdXN0IHBhdGggKi8KLQkJKmxhc3Rf ZGlyX3NlcGFyYXRvcihleGVjX3BhdGgpID0gJ1wwJzsKLQkJY2Fub25pY2FsaXplX3BhdGgoZXhl Y19wYXRoKTsKLQkJbmV3X2NsdXN0ZXIuYmluZGlyID0gcGdfc3RyZHVwKGV4ZWNfcGF0aCk7Ci0J fQorCXJlc29sdmVfbmV3X2JpbmRpcihhcmd2MCk7CiAKIAl2ZXJpZnlfZGlyZWN0b3JpZXMoKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmgKaW5kZXggZDZlNWJjYTU3OTIuLjE5OTk5OGUwYWIxIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmgKQEAgLTMyNSw2ICszMjUsOSBAQCB0eXBlZGVmIHN0cnVj dAogCWludAkJCWNoYXJfc2lnbmVkbmVzczsJLyogZGVmYXVsdCBjaGFyIHNpZ25lZG5lc3M6IC0x IGZvciBpbml0aWFsCiAJCQkJCQkJCQkgKiB2YWx1ZSwgMSBmb3IgInNpZ25lZCIgYW5kIDAgZm9y CiAJCQkJCQkJCQkgKiAidW5zaWduZWQiICovCisJYm9vbAkJaW5pdGRiX25ld19jbHVzdGVyOyAv KiBydW4gaW5pdGRiIHRvIGNyZWF0ZSB0aGUgbmV3IGNsdXN0ZXIKKwkJCQkJCQkJCSAqIGJlZm9y ZSB1cGdyYWRpbmcsIGluc3RlYWQgb2YgcmVxdWlyaW5nCisJCQkJCQkJCQkgKiB0aGUgdXNlciB0 byBoYXZlIGNyZWF0ZWQgaXQgbWFudWFsbHkgKi8KIH0gVXNlck9wdHM7CiAKIHR5cGVkZWYgc3Ry dWN0CkBAIC00MjMsNiArNDI2LDcgQEAgRmlsZU5hbWVNYXAgKmdlbl9kYl9maWxlX21hcHMoRGJJ bmZvICpvbGRfZGIsCiAJCQkJCQkJICBEYkluZm8gKm5ld19kYiwgaW50ICpubWFwcywgY29uc3Qg Y2hhciAqb2xkX3BnZGF0YSwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKm5ld19wZ2RhdGEpOwogdm9p ZAkJZ2V0X2RiX3JlbF9hbmRfc2xvdF9pbmZvcyhDbHVzdGVySW5mbyAqY2x1c3Rlcik7Cit2b2lk CQlnZXRfdGVtcGxhdGUwX2luZm8oQ2x1c3RlckluZm8gKmNsdXN0ZXIpOwogaW50CQkJY291bnRf b2xkX2NsdXN0ZXJfbG9naWNhbF9zbG90cyh2b2lkKTsKIHZvaWQJCWdldF9zdWJzY3JpcHRpb25f aW5mbyhDbHVzdGVySW5mbyAqY2x1c3Rlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBn cmFkZS90LzAwN19pbml0ZGJfb3B0aW9uLnBsIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA3X2lu aXRkYl9vcHRpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3 N2NlNzM0MGE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA3X2lu aXRkYl9vcHRpb24ucGwKQEAgLTAsMCArMSwxMDUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLTIw MjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0aGUgLS1p bml0ZGIgb3B0aW9uIG9mIHBnX3VwZ3JhZGU6IHBnX3VwZ3JhZGUgY3JlYXRlcyB0aGUgbmV3IGNs dXN0ZXIKKyMgaXRzZWxmIHZpYSBpbml0ZGIsIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZSB1c2Vy IHRvIGhhdmUgcnVuIGluaXRkYiBmaXJzdC4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKKwordXNlIEZpbGU6OlBhdGggcXcocm10cmVlKTsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRl c3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBhbmQgcG9wdWxhdGUgdGhlIG9sZCBjbHVzdGVyLgor bXkgJG9sZG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ29sZF9ub2RlJyk7 Ciskb2xkbm9kZS0+aW5pdDsKKyRvbGRub2RlLT5zdGFydDsKKyRvbGRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkgICAgIkNSRUFURSBUQUJMRSB0IChpZCBpbnQgcHJpbWFyeSBrZXksIG5v dGUgdGV4dCk7ICIKKwkgIC4gIklOU0VSVCBJTlRPIHQgU0VMRUNUIGcsICdyb3cgJyB8fCBnIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgZzsgIgorCSAgLiAiQ1JFQVRFIERBVEFCQVNFIGV4 dHJhX2RiOyIpOworbXkgJHJvd3NfYmVmb3JlID0KKyAgJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnU0VMRUNUIGNvdW50KCopIEZST00gdCcpOworaXMoJHJvd3NfYmVmb3JlLCAnMTAw JywgJ29sZCBjbHVzdGVyIGhhcyBleHBlY3RlZCByb3dzIGJlZm9yZSB1cGdyYWRlJyk7Ciskb2xk bm9kZS0+c3RvcDsKKworIyBDcmVhdGUgdGhlIG5ldyBub2RlIG9iamVjdCBidXQgZG8gTk9UIGlu aXQoKSBpdDogcGdfdXBncmFkZSAtLWluaXRkYiBpcworIyByZXNwb25zaWJsZSBmb3IgY3JlYXRp bmcgdGhlIGRhdGEgZGlyZWN0b3J5LiAgT25seSBuZXcoKSBydW5zLCB3aGljaAorIyBhbGxvY2F0 ZXMgdGhlIHBvcnQvaG9zdC9iYXNlZGlyIHRoZSBmcmFtZXdvcmsgbmVlZHMuCitteSAkbmV3bm9k ZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbmV3X25vZGUnKTsKKworbXkgJG9s ZGJpbmRpciA9ICRvbGRub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKTsKK215ICRuZXdiaW5k aXIgPSAkbmV3bm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyk7CisKKyMgU2FuaXR5OiB0aGUg bmV3IGRhdGEgZGlyZWN0b3J5IG11c3Qgbm90IGV4aXN0IHlldC4KK29rKCEtZCAkbmV3bm9kZS0+ ZGF0YV9kaXIsCisJJ25ldyBjbHVzdGVyIGRhdGEgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0IGJl Zm9yZSAtLWluaXRkYicpOworCisjIFJ1biBwZ191cGdyYWRlIHdpdGggLS1pbml0ZGIuICBXZSBt dXN0IHJ1biBpbiBhIHdyaXRhYmxlIGRpcmVjdG9yeSBiZWNhdXNlCisjIHBnX3VwZ3JhZGUgd3Jp dGVzIG91dHB1dCBmaWxlcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCitjaGRp ciAke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9OworCitjb21tYW5kX29rKAor CVsKKwkJJ3BnX3VwZ3JhZGUnLCAnLS1uby1zeW5jJywKKwkJJy0tb2xkLWRhdGFkaXInID0+ICRv bGRub2RlLT5kYXRhX2RpciwKKwkJJy0tbmV3LWRhdGFkaXInID0+ICRuZXdub2RlLT5kYXRhX2Rp ciwKKwkJJy0tb2xkLWJpbmRpcicgPT4gJG9sZGJpbmRpciwKKwkJJy0tbmV3LWJpbmRpcicgPT4g JG5ld2JpbmRpciwKKwkJJy0tc29ja2V0ZGlyJyA9PiAkbmV3bm9kZS0+aG9zdCwKKwkJJy0tb2xk LXBvcnQnID0+ICRvbGRub2RlLT5wb3J0LAorCQknLS1uZXctcG9ydCcgPT4gJG5ld25vZGUtPnBv cnQsCisJCSctLWluaXRkYicsCisJXSwKKwkncnVuIG9mIHBnX3VwZ3JhZGUgLS1pbml0ZGIgY3Jl YXRlcyBhbmQgdXBncmFkZXMgdGhlIG5ldyBjbHVzdGVyJyk7CisKKyMgVGhlIG5ldyBkYXRhIGRp cmVjdG9yeSBzaG91bGQgbm93IGV4aXN0IGFuZCBiZSBhIHYxOCsgY2x1c3Rlci4KK29rKC1mICRu ZXdub2RlLT5kYXRhX2RpciAuICcvUEdfVkVSU0lPTicsCisJJ25ldyBjbHVzdGVyIGRhdGEgZGly ZWN0b3J5IGNyZWF0ZWQgYnkgLS1pbml0ZGInKTsKKworIyBUaGUgZnJhbWV3b3JrJ3MgaW5pdCgp IHdvdWxkIG5vcm1hbGx5IHdyaXRlIHBvcnQvc29ja2V0IHNldHRpbmdzIGludG8KKyMgcG9zdGdy ZXNxbC5jb25mOyBzaW5jZSB3ZSBza2lwcGVkIGl0LCBhcHBlbmQgdGhlbSBub3cgc28gd2UgY2Fu IHN0YXJ0IHRoZQorIyB1cGdyYWRlZCBjbHVzdGVyIHRocm91Z2ggdGhlIHRlc3QgaGFybmVzcy4K K215ICRjb25mID0gJG5ld25vZGUtPmRhdGFfZGlyIC4gJy9wb3N0Z3Jlc3FsLmNvbmYnOworb3Bl bihteSAkZmgsICc+PicsICRjb25mKSBvciBkaWUgImNvdWxkIG5vdCBvcGVuICRjb25mOiAkISI7 CitwcmludCAkZmggIlxuIyBhZGRlZCBieSB0ZXN0IHRvIHN0YXJ0IHRoZSAtLWluaXRkYi1jcmVh dGVkIGNsdXN0ZXJcbiI7CitwcmludCAkZmggInBvcnQgPSAiIC4gJG5ld25vZGUtPnBvcnQgLiAi XG4iOworcHJpbnQgJGZoICJsaXN0ZW5fYWRkcmVzc2VzID0gJydcbiI7CitwcmludCAkZmggInVu aXhfc29ja2V0X2RpcmVjdG9yaWVzID0gJyIgLiAkbmV3bm9kZS0+aG9zdCAuICInXG4iOworY2xv c2UoJGZoKTsKKworJG5ld25vZGUtPnN0YXJ0OworCisjIFZlcmlmeSB0aGUgdXNlciBkYXRhIHN1 cnZpdmVkIHRoZSB1cGdyYWRlLgorbXkgJHJvd3NfYWZ0ZXIgPSAkbmV3bm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdTRUxFQ1QgY291bnQoKikgRlJPTSB0Jyk7Citpcygkcm93c19hZnRlciwg JzEwMCcsICd1c2VyIGRhdGEgc3Vydml2ZWQgLS1pbml0ZGIgdXBncmFkZScpOworCisjIFZlcmlm eSB0aGUgZXh0cmEgZGF0YWJhc2UgY2FycmllZCBvdmVyIHRvby4KK215ICRoYXNfZXh0cmEgPSAk bmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSAnZXh0cmFfZGInIik7CitpcygkaGFzX2V4dHJhLCAn MScsICd1c2VyIGRhdGFiYXNlIGNhcnJpZWQgb3ZlciBieSAtLWluaXRkYiB1cGdyYWRlJyk7CisK KyMgVmVyaWZ5IHRoZSBuZXcgY2x1c3RlciBpcyBhIG5ld2VyIG1ham9yIHZlcnNpb24gdGhhbiB0 aGUgb2xkIG9uZS4KK215ICRuZXd2ZXIgPSAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBjdXJyZW50X3NldHRpbmcoJ3NlcnZlcl92ZXJzaW9uX251bScpOjppbnQgLyAx MDAwMCIpOworb2soJG5ld3ZlciA+PSAxOCwgIm5ldyBjbHVzdGVyIHJlcG9ydHMgdGFyZ2V0IG1h am9yIHZlcnNpb24gKCRuZXd2ZXIpIik7CisKKyRuZXdub2RlLT5zdG9wOworCisjIC0taW5pdGRi IG11c3QgcmVmdXNlIHRvIGNsb2JiZXIgYW4gYWxyZWFkeS1wb3B1bGF0ZWQgZGF0YSBkaXJlY3Rv cnkuCitjb21tYW5kX2ZhaWxzKAorCVsKKwkJJ3BnX3VwZ3JhZGUnLCAnLS1uby1zeW5jJywKKwkJ Jy0tb2xkLWRhdGFkaXInID0+ICRvbGRub2RlLT5kYXRhX2RpciwKKwkJJy0tbmV3LWRhdGFkaXIn ID0+ICRuZXdub2RlLT5kYXRhX2RpciwKKwkJJy0tb2xkLWJpbmRpcicgPT4gJG9sZGJpbmRpciwK KwkJJy0tbmV3LWJpbmRpcicgPT4gJG5ld2JpbmRpciwKKwkJJy0tc29ja2V0ZGlyJyA9PiAkbmV3 bm9kZS0+aG9zdCwKKwkJJy0tb2xkLXBvcnQnID0+ICRvbGRub2RlLT5wb3J0LAorCQknLS1uZXct cG9ydCcgPT4gJG5ld25vZGUtPnBvcnQsCisJCSctLWluaXRkYicsCisJXSwKKwknLS1pbml0ZGIg cmVmdXNlcyB0byBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgY2x1c3RlcicpOworCitkb25lX3Rlc3Rp bmcoKTsKLS0gCjIuNTQuMAoK --00000000000075fecb06563f6437--