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 1vi053-00CCvr-1f for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jan 2026 00:58:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vi052-00FEDp-1l for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jan 2026 00:58:48 +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 1vi051-00FEDg-2L for pgsql-hackers@lists.postgresql.org; Tue, 20 Jan 2026 00:58:48 +0000 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vi04y-001Ka1-30 for pgsql-hackers@lists.postgresql.org; Tue, 20 Jan 2026 00:58:46 +0000 Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-59b7882e605so6426829e87.0 for ; Mon, 19 Jan 2026 16:58:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1768870724; cv=none; d=google.com; s=arc-20240605; b=MAOdKCQYsL2AGpsFXfx/3fP2qyym1iny0jo5dijUA7ak+9/B7BVn59HxV4wOT4f9dP ilVNFO143lnfQaZPxOKFdGUt72CdwEwhJYmbxTPg1+Kbzvis1Ux41qz/RgNAMBtKGELP qxDqSAsKcA6mqpSTpbKpkob9/tZMRoDkGm5elhtUR7++6gEhnIAu+2nLPPmkMy4nihib l6GIOyGgnJ42DzU2POw9WAq/MXZizX4lEdi1t/5otVNYnoyCe8rBpQp7/6TBeEV8KOrH Djpn24M9ziYpacTgUTJhwhCaot9/wsonrtLEnS8mpv6GtuRehcqZetv5yyej46G7D/Mi NWLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=CZ8968FOXXpkdTW57Rgygc/ezxUBCuRD+VCWGIQN3VQ=; fh=is6vGX6z5OS4eAykXaDiyfEkhQXiHU7tSF8DwIcLTVY=; b=biRqC03BCkBYNzNAncCulXOuVoDfTTrp4bPyMA/JOBmUsiaXi1UpRqJM8I93VK5QlH Yv7Kjkk2tAXl6A2mCXwrDUoXa9eykcFeierxFulKL0DnJlkx4aEEXKcj389eUn6qlUFz UvvG77/c8wvjVPW2yHmlLCnzf2l0rpvj/TqHbvsPBT2hluSSYw1YAol/3dr37aP4nJLX KOCHiiMsLTPPNdRvC6wldx4UnYo6BgiR+k1GBhHaeUXaAOKaSK9uwnYE6rvCJUl4SUcB 2hxX2rO+6RCFK6kFV/vc10jEzB4NJmSbWNLA4HZr4OmIItloKxC28okoceSAddnMLXie LdPg==; 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=gmail.com; s=20230601; t=1768870724; x=1769475524; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CZ8968FOXXpkdTW57Rgygc/ezxUBCuRD+VCWGIQN3VQ=; b=SoQxjgyaY2aPIHeEfhJ0Gv0C+SBmv+cTjHrN1YbVpjn1YhUlJ1G3DXL2fIfPxF2YH3 rNHIKBNaGv3SRmppojNFp8pEso+DX6Jxi7CB+HpopNUdH9xEWFRJimK+NjFXntnrZA8X NkMjvrd2ODb3IPhJjymiwsKWKADdDQu8JuCxV3QJfS2pZTFQEoiL7aas577h0JRr8u55 sdt/xeInLNt2zyA8VSdSKrXYUKvKEUX8JZsWUTikORM9mdVEwnXyQ+rgbHMabh6VEa77 QHK6ahLpKlGnmIUawcGJxChvBxbGyzA3aer3PI5YFe3HhMcQWbN6qfUDngbVCH7je14+ hWYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768870724; x=1769475524; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CZ8968FOXXpkdTW57Rgygc/ezxUBCuRD+VCWGIQN3VQ=; b=lZxmpeZ9pIfeW02CdGoukj98qkAx5wKrbf/wiWkKjQxBa1c6wGDBHFvjmRByjzsQQl PH0n5FVfbYiWHtMmHbVAB8zH6CM/7ryf0LvlIAN7m8ltEjJD5DVz7HuVtjJBdwEZRsNx 0gx98tyV0zAuhWbHBg2M2WykRftZYcXgd4zhvkHAOAM78BwgFVzQb/Ezv0jnv1Gk0Fk6 ScyMqz2Kp0f/55+TWEKMOth0m3+6nrandN0bOiqxt9MEwGs6KJNw16vW/DX7hHZyLmjJ O6R1ODOixArvQ7oPT/E7qS1H4VS07gzC1sDWg/CMycGwq4i6aFXyHgukL0y0C5ulCUMk Nnow== X-Forwarded-Encrypted: i=1; AJvYcCWIzdkCu2kTQ1dHV8VCfLxUmDoVXLGm2WyjGEUV7sOZ7MwMmYxCBmxF/e2KrTNtSF7/3jD8MLDFdZ5I8Jxv@lists.postgresql.org X-Gm-Message-State: AOJu0YxGeP9zJwOQWIA0tyXGoP96d/SIBrIrQz473jZkQs68XXC+yl1k yvIewBmcDdNL/MnY22NUSDlhAiMnN53mwWTMgBmFVOhOHXZ8ANCDu6v1ipFZfHYU9ZzULggnMi0 Wu+6aHXqC6OU4cCjJgQX54UXx6V6itrY= X-Gm-Gg: AZuq6aLEcf5/2Dw5pgDuw+7WXPmePWt1Mx+rmfI7FxGwq+i4/obIsllg3aPy/JMVv1D 7//mGoxzhZGdWALsREjGzgefox5LaAv3dFQ93N40XHlkHjVHFAUSuLd9JcCHz15VNNFrqs4hwhu 6SqujYwnF9Y7yaJ620WHXAHAMFwV27gOIsg+Sr37NCBZqQbXG15hEwk4fn1mRpLxQUfc3QaGYqa 3tp3sAgfaeEpY10jNv2y4R9f78uTe9F9+dcIOhqFYNSdEO23f7WEDbRcVEcfiEOMiXV9R+jaBI+ epY= X-Received: by 2002:a05:6512:3a94:b0:595:91dc:72a5 with SMTP id 2adb3069b0e04-59baffcb9d7mr3595128e87.40.1768870723635; Mon, 19 Jan 2026 16:58:43 -0800 (PST) MIME-Version: 1.0 References: <48261e54-c4f1-4bde-a4a9-4f3698a6b380@app.fastmail.com> In-Reply-To: From: Gyan Sreejith Date: Mon, 19 Jan 2026 19:58:31 -0500 X-Gm-Features: AZwV_Qj2VAqQoGm-zLo808FKYnbcZYgZ1wrannNouIwdMEYgDXefCtG2jblETX4 Message-ID: Subject: Re: [Proposal] Adding Log File Capability to pg_createsubscriber To: vignesh C Cc: Amit Kapila , Euler Taveira , "kuroda.hayato@fujitsu.com" , "pgsql-hackers@lists.postgresql.org" , Peter Smith Content-Type: multipart/mixed; boundary="00000000000022ef3c0648c74f14" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000022ef3c0648c74f14 Content-Type: multipart/alternative; boundary="00000000000022ef3a0648c74f12" --00000000000022ef3a0648c74f12 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thank you for all your input. I have attached the latest version of the patch that includes the changes proposed by Vignesh and Amit. Please let me know if you have any questions or suggestions. Thank you, Gyan Sreejith On Mon, Jan 12, 2026 at 11:11=E2=80=AFPM vignesh C wr= ote: > On Mon, 29 Dec 2025 at 16:40, vignesh C wrote: > > > > On Wed, 24 Dec 2025 at 04:52, Gyan Sreejith > wrote: > > > > > > Thank you for the feedback everybody. As I read through this email > chain, I found differing opinions on how logging should be implemented. > This ambiguity leaves me unsure as to which solution(s) to pursue. As of > right now, I have attached the git-format patch like Hayato Kuroda > recommended (but it does not have any new changes). I am willing to > implement whatever solution when we reach a consensus. > > > > Few comments: > > 1) The file permissions are 664 for pg_createsubscriber_internal.log, > > pg_createsubscriber_resetwal.log but 600 for > > pg_createsubscriber_server.log. The permissions should be the same for > > all the files. > > ... > > if (opt->log_dir !=3D NULL) > > out_file =3D psprintf("%s/pg_createsubscriber_resetwal.log", opt->log_d= ir); > > else > > out_file =3D DEVNULL; > > > > cmd_str =3D psprintf("\"%s\" -D \"%s\" > \"%s\"", pg_resetwal_path, > > subscriber_dir, out_file); > > > > pg_log_debug("pg_resetwal command is: %s", cmd_str); > > ... > > > > ... > > if (opt->log_dir !=3D NULL) > > { > > appendPQExpBuffer(pg_ctl_cmd, " -l %s/pg_createsubscriber_server.log", > > opt->log_dir); > > } > > > > pg_log_debug("pg_ctl command is: %s", pg_ctl_cmd->data); > > rc =3D system(pg_ctl_cmd->data); > > ... > > For this, you can align the file handling and umask behavior with the > logic used in syslogger.c (logfile_open). Doing so will ensure that > the resulting log files are created with consistent permissions across > all cases. Additionally you can include "The umask is set to 077, so > access to the log file is disallowed to other users by default" in the > documentation of the pg_createsubscriber log option similar to how it > is mentioned in [1]. > [1] - https://www.postgresql.org/docs/current/app-pg-ctl.html > > Regards, > Vignesh > --00000000000022ef3a0648c74f12 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thank you for all your input. I have attached the latest v= ersion of the patch that includes the changes proposed by Vignesh and Amit.= Please let me know=C2=A0if you have any questions or suggestions.

=
Thank you,
Gyan Sreejith

On Mon, Jan 12, 2026 at = 11:11=E2=80=AFPM vignesh C <vignesh21@gmail.com> wrote:
On Mon, 29 Dec 2025 at 16:40, vignesh C &l= t;vignesh21@gmail.= com> wrote:
>
> On Wed, 24 Dec 2025 at 04:52, Gyan Sreejith <gyan.sreejith@gmail.com> wrot= e:
> >
> > Thank you for the feedback everybody. As I read through this emai= l chain, I found differing opinions on how logging should be implemented. T= his ambiguity leaves me unsure as to which solution(s) to pursue. As of rig= ht now, I have attached the git-format patch like Hayato Kuroda recommended= (but it does not have any new changes). I am willing to implement whatever= solution when we reach a consensus.
>
> Few comments:
> 1) The file permissions are 664 for pg_createsubscriber_internal.log,<= br> > pg_createsubscriber_resetwal.log but 600 for
> pg_createsubscriber_server.log. The permissions should be the same for=
> all the files.
> ...
> if (opt->log_dir !=3D NULL)
> out_file =3D psprintf("%s/pg_createsubscriber_resetwal.log",= opt->log_dir);
> else
> out_file =3D DEVNULL;
>
> cmd_str =3D psprintf("\"%s\" -D \"%s\" > \= "%s\"", pg_resetwal_path,
>=C2=A0 =C2=A0 subscriber_dir, out_file);
>
> pg_log_debug("pg_resetwal command is: %s", cmd_str);
> ...
>
> ...
> if (opt->log_dir !=3D NULL)
> {
> appendPQExpBuffer(pg_ctl_cmd, " -l %s/pg_createsubscriber_server.= log",
> opt->log_dir);
> }
>
> pg_log_debug("pg_ctl command is: %s", pg_ctl_cmd->data);<= br> > rc =3D system(pg_ctl_cmd->data);
> ...

For this, you can align the file handling and umask behavior with the
logic used in syslogger.c (logfile_open). Doing so will ensure that
the resulting log files are created with consistent permissions across
all cases. Additionally you can include "The umask is set to 077, so access to the log file is disallowed to other users by default" in the=
documentation of the pg_createsubscriber log option similar to how it
is mentioned in [1].
[1] - https://www.postgresql.org/docs/current= /app-pg-ctl.html

Regards,
Vignesh
--00000000000022ef3a0648c74f12-- --00000000000022ef3c0648c74f14 Content-Type: application/x-patch; name="v2-0001-Add-a-new-argument-l-logdir_prefix-to-pg_createsu.patch" Content-Disposition: attachment; filename="v2-0001-Add-a-new-argument-l-logdir_prefix-to-pg_createsu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mklvsbnm0 RnJvbSAwZGMzYmE3N2Q5MTYzMzk1ODIwNmUxZTc0NGQ1MmMwMWY2YTc4NTFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHeWFuIFNyZWVqaXRoIDxneWFuLnNyZWVqaXRoQGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAxOSBKYW4gMjAyNiAxOTo0OToyMCAtMDUwMApTdWJqZWN0OiBbUEFUQ0gg djJdIEFkZCBhIG5ldyBhcmd1bWVudCAtbCA8bG9nZGlyX3ByZWZpeD4gdG8KIHBnX2NyZWF0ZXN1 YnNjcmliZXIuCgpFbmFibGluZyB0aGUgb3B0aW9uIHRvIHdyaXRlIG1lc3NhZ2VzIHRvIGxvZyBm aWxlcy4KQSBuZXcgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYnkgYXBwZW5kaW5nIHRoZSB0aW1lc3Rh bXAgdG8gdGhlIGFyZ3VtZW50LCBhbmQgdHdvIG5ldyBsb2dmaWxlcyBhcmUgYWRkZWQgdG8gdGhl IGRpcmVjdG9yeQoxLiBwZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2cgIC0gY2FwdHVyZXMg bWVzc2FnZXMgcmVsYXRlZCB0byBzdGFydGluZyBhbmQgc3RvcHBpbmcgdGhlIHN0YW5kYnkgc2Vy dmVyLgoyLiBwZ19jcmVhdGVzdWJzY3JpYmVyX2ludGVybmFsLmxvZyAtIGNhcHR1cmVzIGludGVy bmFsIGRpYWdub3N0aWMgb3V0cHV0IGZyb20gcGdfY3JlYXRlc3Vic2NyaWJlci4KCkZvciBleGFt cGxlLCBpZiB3ZSBzcGVjaWZ5IC1sIGFiYyBhcyBhbiBhcmd1bWVudCwgYW5kIGlmIHRoZSB0aW1l c3RhbXAgb24gcnVubmluZyBpdCBpcyAyMDI2LTAxLTE5LTIwLTQzLTE3LjIwNDI0MCwKYSBkaXJl Y3RvcnkgYWJjXzIwMjYtMDEtMTktMjAtNDMtMTcuMjA0MjAgaXMgY3JlYXRlZCBpZiBpdCBkb2Vz bid0IGV4aXN0IGFscmVhZHksIGFuZCB0aGUgZGlyZWN0b3J5IHdpbGwgY29udGFpbiB0aGUgdHdv IGxvZyBmaWxlcy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dt bCAgICAgfCAgMjIgKysKIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVy LmMgICB8IDM3MyArKysrKysrKysrKystLS0tLS0KIC4uLi90LzA0MF9wZ19jcmVhdGVzdWJzY3Jp YmVyLnBsICAgICAgICAgICAgICB8ICAzNiArLQogMyBmaWxlcyBjaGFuZ2VkLCAzMTkgaW5zZXJ0 aW9ucygrKSwgMTEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv cGdfY3JlYXRlc3Vic2NyaWJlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJz Y3JpYmVyLnNnbWwKaW5kZXggZTQ1MGM2YTViMzcuLjRkODVkYTg2ZjA5IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbApAQCAtMTM2LDYgKzEzNiwyOCBAQCBQb3N0 Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxvcHRpb24+LWwgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRpcmVjdG9yeV9wcmVmaXg8L3JlcGxhY2VhYmxlPjwvb3B0 aW9uPjwvdGVybT4KKyAgICAgPHRlcm0+PG9wdGlvbj4tLWxvZ2Rpci1wcmVmaXg9PHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRpcmVjdG9yeV9wcmVmaXg8L3JlcGxhY2VhYmxlPjwvb3B0 aW9uPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU3BlY2lm eSB0aGUgcHJlZml4IHRvIHRoZSBsb2cgZGlyZWN0b3J5LiBBIHRpbWVzdGFtcCBpcyBhZGRlZCB0 byB0aGlzIHByZWZpeCBhbmQgYSBuZXcgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgd2l0aCB0aGlzIG5h bWUgaWYgaXQgZG9lcyBub3QgZXhpc3QuIFRoZSBmb2xsb3dpbmcgdHdvIGxvZyBmaWxlcyB3aWxs IGJlIGNyZWF0ZWQgd2l0aCBhIHVtYXNrIG9mIDA3NyBzbyB0aGF0IGFjY2VzcyBpcyBkaXNhbGxv d2VkIHRvIG90aGVyIHVzZXJzIGJ5IGRlZmF1bHQ6CisgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAg ICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgcGdfY3JlYXRlc3Vi c2NyaWJlcl9zZXJ2ZXIubG9nIHdoaWNoIGNhcHR1cmVzIGxvZ3MgcmVsYXRlZCB0byBzdG9wcGlu ZyBhbmQgc3RhcnRpbmcgdGhlIHN0YW5kYnkgc2VydmVyLAorICAgICAgICAgPC9wYXJhPgorICAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBwZ19jcmVhdGVzdWJzY3JpYmVyX2ludGVybmFsLmxvZyB3aGljaCBjYXB0dXJlcyBp bnRlcm5hbCBkaWFnbm9zdGljIG91dHB1dCAodmFsaWRhdGlvbnMsIGNoZWNrcywgZXRjLikKKyAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L2l0ZW1pemVkbGlz dD4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgIDx0ZXJtPjxvcHRpb24+LW48L29wdGlvbj48L3Rl cm0+CiAgICAgIDx0ZXJtPjxvcHRpb24+LS1kcnktcnVuPC9vcHRpb24+PC90ZXJtPgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyBiL3NyYy9i aW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKaW5kZXggOWE4MjViZmQxNjYu LjliMzNjYmU1MzdkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRl c3Vic2NyaWJlci5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3Jp YmVyLmMKQEAgLTMzLDEwICszMywzNSBAQAogI2RlZmluZQlERUZBVUxUX1NVQl9QT1JUCSI1MDQz MiIKICNkZWZpbmUJT0JKRUNUVFlQRV9QVUJMSUNBVElPTlMgIDB4MDAwMQogCisjZGVmaW5lIFNF UlZFUl9MT0dfRklMRV9OQU1FICJwZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2ciCisjZGVm aW5lIElOVEVSTkFMX0xPR19GSUxFX05BTUUgInBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJuYWwu bG9nIgorCisjZGVmaW5lIElORk8oLi4uKSBkb3tcCisJaWYgKGludGVybmFsX2xvZ19maWxlX2Zw ICE9IE5VTEwpIFwKKwkJaW50ZXJuYWxfbG9nX2ZpbGVfd3JpdGUoX19WQV9BUkdTX18pOyBcCisJ ZWxzZSBcCisJCXBnX2xvZ19pbmZvKF9fVkFfQVJHU19fKTtcCit9IHdoaWxlKDApCisKKyNkZWZp bmUgSU5GT19ISU5UKC4uLikgZG97XAorCWlmIChpbnRlcm5hbF9sb2dfZmlsZV9mcCAhPSBOVUxM KSBcCisJCWludGVybmFsX2xvZ19maWxlX3dyaXRlKF9fVkFfQVJHU19fKTsgXAorCWVsc2UgXAor CQlwZ19sb2dfaW5mb19oaW50KF9fVkFfQVJHU19fKTtcCit9IHdoaWxlKDApCisKKyNkZWZpbmUg REVCVUcoLi4uKSBkb3tcCisJaWYgKGludGVybmFsX2xvZ19maWxlX2ZwICE9IE5VTEwpIFwKKwkJ aW50ZXJuYWxfbG9nX2ZpbGVfd3JpdGUoX19WQV9BUkdTX18pOyBcCisJZWxzZSBcCisJCXBnX2xv Z19kZWJ1ZyhfX1ZBX0FSR1NfXyk7XAorfSB3aGlsZSgwKQorCiAvKiBDb21tYW5kLWxpbmUgb3B0 aW9ucyAqLwogc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zCiB7CiAJY2hhcgkgICAqY29u ZmlnX2ZpbGU7CS8qIGNvbmZpZ3VyYXRpb24gZmlsZSAqLworCWNoYXIJICAgKmxvZ19kaXI7CQkv KiBsb2cgZGlyZWN0b3J5IG5hbWUgKi8KIAljaGFyCSAgICpwdWJfY29ubmluZm9fc3RyOwkvKiBw dWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgKi8KIAljaGFyCSAgICpzb2NrZXRfZGlyOwkJLyog ZGlyZWN0b3J5IGZvciBVbml4LWRvbWFpbiBzb2NrZXQsIGlmIGFueSAqLwogCWNoYXIJICAgKnN1 Yl9wb3J0OwkJLyogc3Vic2NyaWJlciBwb3J0IG51bWJlciAqLwpAQCAtMTMwLDYgKzE1NSw5IEBA IHN0YXRpYyB2b2lkIGRyb3BfZXhpc3Rpbmdfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqc3VibmFtZSwKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmRibmFtZSk7CiBzdGF0 aWMgdm9pZCBnZXRfcHVibGlzaGVyX2RhdGFiYXNlcyhzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9w dGlvbnMgKm9wdCwKIAkJCQkJCQkJCWJvb2wgZGJuYW1lc3BlY2lmaWVkKTsKK3N0YXRpYyB2b2lk CisJCQlpbnRlcm5hbF9sb2dfZmlsZV93cml0ZShjb25zdCBjaGFyICpmb3JtYXQsLi4uKSBfX2F0 dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOworCiAKICNkZWZpbmUJV0FJVF9JTlRF UlZBTAkxCQkvKiAxIHNlY29uZCAqLwogCkBAIC0xNTEsMTIgKzE3OSw4NiBAQCBzdGF0aWMgcGdf cHJuZ19zdGF0ZSBwcm5nX3N0YXRlOwogc3RhdGljIGNoYXIgKnBnX2N0bF9wYXRoID0gTlVMTDsK IHN0YXRpYyBjaGFyICpwZ19yZXNldHdhbF9wYXRoID0gTlVMTDsKIAorc3RhdGljIEZJTEUgKmlu dGVybmFsX2xvZ19maWxlX2ZwID0gTlVMTDsJLyogRmlsZSBwdHIgdG8gbG9nIGFsbCBtZXNzYWdl cyB0byAqLworCiAvKiBzdGFuZGJ5IC8gc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeSAqLwogc3Rh dGljIGNoYXIgKnN1YnNjcmliZXJfZGlyID0gTlVMTDsKIAogc3RhdGljIGJvb2wgcmVjb3Zlcnlf ZW5kZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHN0YW5kYnlfcnVubmluZyA9IGZhbHNlOwogCisv KgorICogUHJpbnQgdGhlIGN1cnJlbnQgdGltZSwgd2l0aCBtaWNyb3NlY29uZHMsIGludG8gYSBj YWxsZXItc3VwcGxpZWQKKyAqIGJ1ZmZlci4KKyAqIFNhbWUgYXMgcHFfVHJhY2VGb3JtYXRUaW1l c3RhbXAoKSBpbiBzcmMvaW50ZXJmYWNlcy9saWJmcS9mZS10cmFjZS5jCisgKi8KK3N0YXRpYyB2 b2lkCitwb3B1bGF0ZV90aW1lc3RhbXAoY2hhciAqdGltZXN0ciwgc2l6ZV90IHRzX2xlbikKK3sK KwlzdHJ1Y3QgdGltZXZhbCB0dmFsOworCXRpbWVfdAkJbm93OworCXN0cnVjdCB0bQl0bWJ1ZjsK KworCWdldHRpbWVvZmRheSgmdHZhbCwgTlVMTCk7CisKKwkvKgorCSAqIE1TVkMncyBpbXBsZW1l bnRhdGlvbiBvZiB0aW1ldmFsIHVzZXMgYSBsb25nIGZvciB0dl9zZWMsIGhvd2V2ZXIsCisJICog bG9jYWx0aW1lKCkgZXhwZWN0cyBhIHRpbWVfdCBwb2ludGVyLiAgSGVyZSB3ZSdsbCBhc3NpZ24g dHZfc2VjIHRvIGEKKwkgKiBsb2NhbCB0aW1lX3QgdmFyaWFibGUgc28gdGhhdCB3ZSBwYXNzIGxv Y2FsdGltZSgpIHRoZSBjb3JyZWN0IHBvaW50ZXIKKwkgKiB0eXBlLgorCSAqLworCW5vdyA9IHR2 YWwudHZfc2VjOworCXN0cmZ0aW1lKHRpbWVzdHIsIHRzX2xlbiwKKwkJCSAiJVktJW0tJWQtJUgt JU0tJVMiLAorCQkJIGxvY2FsdGltZV9yKCZub3csICZ0bWJ1ZikpOworCS8qIGFwcGVuZCBtaWNy b3NlY29uZHMgKi8KKwlzbnByaW50Zih0aW1lc3RyICsgc3RybGVuKHRpbWVzdHIpLCB0c19sZW4g LSBzdHJsZW4odGltZXN0ciksCisJCQkgIi4lMDZ1IiwgKHVuc2lnbmVkIGludCkgKHR2YWwudHZf dXNlYykpOworfQorCitzdGF0aWMgdm9pZAoraW50ZXJuYWxfbG9nX2ZpbGVfd3JpdGUoY29uc3Qg Y2hhciAqZm9ybWF0LC4uLikKK3sKKwlpZiAoaW50ZXJuYWxfbG9nX2ZpbGVfZnAgIT0gTlVMTCkK Kwl7CisJCXZhX2xpc3QJCWFyZ3M7CisKKwkJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKKwkJdmZw cmludGYoaW50ZXJuYWxfbG9nX2ZpbGVfZnAsIGZvcm1hdCwgYXJncyk7CisJCWZwcmludGYoaW50 ZXJuYWxfbG9nX2ZpbGVfZnAsICJcbiIpOworCQl2YV9lbmQoYXJncyk7CisJfQorfQorCisvKgor ICogT3BlbiBhIG5ldyBsb2dmaWxlIHdpdGggcHJvcGVyIHBlcm1pc3Npb25zLgorICogRnJvbSBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCisgKi8KK3N0YXRpYyBGSUxFICoKK2xv Z2ZpbGVfb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSkKK3sKKwlG SUxFCSAgICpmaDsKKwltb2RlX3QJCW91bWFzazsKKworCW91bWFzayA9IHVtYXNrKChtb2RlX3Qp ICgofihTX0lSVVNSIHwgU19JV1VTUikpICYgKFNfSVJXWFUgfCBTX0lSV1hHIHwgU19JUldYTykp KTsKKwlmaCA9IGZvcGVuKGZpbGVuYW1lLCBtb2RlKTsKKwl1bWFzayhvdW1hc2spOworCisJaWYg KGZoKQorCXsKKwkJc2V0dmJ1ZihmaCwgTlVMTCwgUEdfSU9MQkYsIDApOworCisjaWZkZWYgV0lO MzIKKwkJLyogdXNlIENSTEYgbGluZSBlbmRpbmdzIG9uIFdpbmRvd3MgKi8KKwkJX3NldG1vZGUo X2ZpbGVubyhmaCksIF9PX1RFWFQpOworI2VuZGlmCisJfQorCWVsc2UKKwkJcGdfZmF0YWwoImNv dWxkIG5vdCBvcGVuIGxvZyBmaWxlIFwiJXNcIjogJW0iLAorCQkJCSBmaWxlbmFtZSk7CisKKwly ZXR1cm4gZmg7Cit9CiAKIC8qCiAgKiBDbGVhbnVwIG9iamVjdHMgdGhhdCB3ZXJlIGNyZWF0ZWQg YnkgcGdfY3JlYXRlc3Vic2NyaWJlciBpZiB0aGVyZSBpcyBhbgpAQCAtMTc1LDYgKzI3Nyw5IEBA IGNsZWFudXBfb2JqZWN0c19hdGV4aXQodm9pZCkKIAlpZiAoc3VjY2VzcykKIAkJcmV0dXJuOwog CisJaWYgKGludGVybmFsX2xvZ19maWxlX2ZwICE9IE5VTEwpCisJCWZjbG9zZShpbnRlcm5hbF9s b2dfZmlsZV9mcCk7CisKIAkvKgogCSAqIElmIHRoZSBzZXJ2ZXIgaXMgcHJvbW90ZWQsIHRoZXJl IGlzIG5vIHdheSB0byB1c2UgdGhlIGN1cnJlbnQgc2V0dXAKIAkgKiBhZ2Fpbi4gV2FybiB0aGUg dXNlciB0aGF0IGEgbmV3IHJlcGxpY2F0aW9uIHNldHVwIHNob3VsZCBiZSBkb25lIGJlZm9yZQpA QCAtMjQ2LDYgKzM1MSw4IEBAIHVzYWdlKHZvaWQpCiAJCQkgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhYmFzZXMgYW5kIGRhdGFiYXNlcyB0aGF0IGRvbid0IGFsbG93IGNv bm5lY3Rpb25zXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWQsIC0tZGF0YWJhc2U9REJOQU1FICAgICAg ICAgICBkYXRhYmFzZSBpbiB3aGljaCB0byBjcmVhdGUgYSBzdWJzY3JpcHRpb25cbiIpKTsKIAlw cmludGYoXygiICAtRCwgLS1wZ2RhdGE9REFUQURJUiAgICAgICAgICAgIGxvY2F0aW9uIGZvciB0 aGUgc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeVxuIikpOworCXByaW50ZihfKCIgIC1sLCAtLWxv Z2Rpci1wcmVmaXg9TE9HRElSUFJFRklYIHByZWZpeCBmb3IgdGhlIG5ldyBsb2cgZGlyZWN0b3J5 LiBUaGUgdGltZXN0YW1wIHdpbGwgYmUgXG4iCisJCQkgImFwcGVuZGVkIHRvIHRoaXMgcHJlZml4 IHRvIGdldCB0aGUgbmFtZSBvZiB0aGUgbG9nIGRpcmVjdG9yeVxuIikpOwogCXByaW50ZihfKCIg IC1uLCAtLWRyeS1ydW4gICAgICAgICAgICAgICAgICAgZHJ5IHJ1biwganVzdCBzaG93IHdoYXQg d291bGQgYmUgZG9uZVxuIikpOwogCXByaW50ZihfKCIgIC1wLCAtLXN1YnNjcmliZXItcG9ydD1Q T1JUICAgICAgc3Vic2NyaWJlciBwb3J0IG51bWJlciAoZGVmYXVsdCAlcylcbiIpLCBERUZBVUxU X1NVQl9QT1JUKTsKIAlwcmludGYoXygiICAtUCwgLS1wdWJsaXNoZXItc2VydmVyPUNPTk5TVFIg IHB1Ymxpc2hlciBjb25uZWN0aW9uIHN0cmluZ1xuIikpOwpAQCAtMzg5LDcgKzQ5Niw3IEBAIGdl dF9leGVjX3BhdGgoY29uc3QgY2hhciAqYXJndjAsIGNvbnN0IGNoYXIgKnByb2duYW1lKQogCQkJ CQkgcHJvZ25hbWUsIGZ1bGxfcGF0aCwgInBnX2NyZWF0ZXN1YnNjcmliZXIiKTsKIAl9CiAKLQlw Z19sb2dfZGVidWcoIiVzIHBhdGggaXM6ICAlcyIsIHByb2duYW1lLCBleGVjX3BhdGgpOworCURF QlVHKCIlcyBwYXRoIGlzOiAgJXMiLCBwcm9nbmFtZSwgZXhlY19wYXRoKTsKIAogCXJldHVybiBl eGVjX3BhdGg7CiB9CkBAIC00MDYsOCArNTEzLDggQEAgY2hlY2tfZGF0YV9kaXJlY3RvcnkoY29u c3QgY2hhciAqZGF0YWRpcikKIAl1aW50MzIJCW1ham9yX3ZlcnNpb247CiAJY2hhcgkgICAqdmVy c2lvbl9zdHI7CiAKLQlwZ19sb2dfaW5mbygiY2hlY2tpbmcgaWYgZGlyZWN0b3J5IFwiJXNcIiBp cyBhIGNsdXN0ZXIgZGF0YSBkaXJlY3RvcnkiLAotCQkJCWRhdGFkaXIpOworCUlORk8oImNoZWNr aW5nIGlmIGRpcmVjdG9yeSBcIiVzXCIgaXMgYSBjbHVzdGVyIGRhdGEgZGlyZWN0b3J5IiwKKwkJ IGRhdGFkaXIpOwogCiAJaWYgKHN0YXQoZGF0YWRpciwgJnN0YXRidWYpICE9IDApCiAJewpAQCAt NTEwLDE0ICs2MTcsMTQgQEAgc3RvcmVfcHViX3N1Yl9pbmZvKGNvbnN0IHN0cnVjdCBDcmVhdGVT dWJzY3JpYmVyT3B0aW9ucyAqb3B0LAogCQkJZGJpbmZvW2ldLnN1Ym5hbWUgPSBOVUxMOwogCQkv KiBPdGhlciBmaWVsZHMgd2lsbCBiZSBmaWxsZWQgbGF0ZXIgKi8KIAotCQlwZ19sb2dfZGVidWco InB1Ymxpc2hlciglZCk6IHB1YmxpY2F0aW9uOiAlcyA7IHJlcGxpY2F0aW9uIHNsb3Q6ICVzIDsg Y29ubmVjdGlvbiBzdHJpbmc6ICVzIiwgaSwKLQkJCQkJIGRiaW5mb1tpXS5wdWJuYW1lID8gZGJp bmZvW2ldLnB1Ym5hbWUgOiAiKGF1dG8pIiwKLQkJCQkJIGRiaW5mb1tpXS5yZXBsc2xvdG5hbWUg PyBkYmluZm9baV0ucmVwbHNsb3RuYW1lIDogIihhdXRvKSIsCi0JCQkJCSBkYmluZm9baV0ucHVi Y29ubmluZm8pOwotCQlwZ19sb2dfZGVidWcoInN1YnNjcmliZXIoJWQpOiBzdWJzY3JpcHRpb246 ICVzIDsgY29ubmVjdGlvbiBzdHJpbmc6ICVzLCB0d29fcGhhc2U6ICVzIiwgaSwKLQkJCQkJIGRi aW5mb1tpXS5zdWJuYW1lID8gZGJpbmZvW2ldLnN1Ym5hbWUgOiAiKGF1dG8pIiwKLQkJCQkJIGRi aW5mb1tpXS5zdWJjb25uaW5mbywKLQkJCQkJIGRiaW5mb3MudHdvX3BoYXNlID8gInRydWUiIDog ImZhbHNlIik7CisJCURFQlVHKCJwdWJsaXNoZXIoJWQpOiBwdWJsaWNhdGlvbjogJXMgOyByZXBs aWNhdGlvbiBzbG90OiAlcyA7IGNvbm5lY3Rpb24gc3RyaW5nOiAlcyIsIGksCisJCQkgIGRiaW5m b1tpXS5wdWJuYW1lID8gZGJpbmZvW2ldLnB1Ym5hbWUgOiAiKGF1dG8pIiwKKwkJCSAgZGJpbmZv W2ldLnJlcGxzbG90bmFtZSA/IGRiaW5mb1tpXS5yZXBsc2xvdG5hbWUgOiAiKGF1dG8pIiwKKwkJ CSAgZGJpbmZvW2ldLnB1YmNvbm5pbmZvKTsKKwkJREVCVUcoInN1YnNjcmliZXIoJWQpOiBzdWJz Y3JpcHRpb246ICVzIDsgY29ubmVjdGlvbiBzdHJpbmc6ICVzLCB0d29fcGhhc2U6ICVzIiwgaSwK KwkJCSAgZGJpbmZvW2ldLnN1Ym5hbWUgPyBkYmluZm9baV0uc3VibmFtZSA6ICIoYXV0bykiLAor CQkJICBkYmluZm9baV0uc3ViY29ubmluZm8sCisJCQkgIGRiaW5mb3MudHdvX3BoYXNlID8gInRy dWUiIDogImZhbHNlIik7CiAKIAkJaWYgKG51bV9wdWJzID4gMCkKIAkJCXB1YmNlbGwgPSBwdWJj ZWxsLT5uZXh0OwpAQCAtNTk4LDcgKzcwNSw3IEBAIGdldF9wcmltYXJ5X3N5c2lkKGNvbnN0IGNo YXIgKmNvbm5pbmZvKQogCVBHcmVzdWx0ICAgKnJlczsKIAl1aW50NjQJCXN5c2lkOwogCi0JcGdf bG9nX2luZm8oImdldHRpbmcgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBwdWJsaXNoZXIiKTsKKwlJ TkZPKCJnZXR0aW5nIHN5c3RlbSBpZGVudGlmaWVyIGZyb20gcHVibGlzaGVyIik7CiAKIAljb25u ID0gY29ubmVjdF9kYXRhYmFzZShjb25uaW5mbywgdHJ1ZSk7CiAKQEAgLTYxOCw3ICs3MjUsNyBA QCBnZXRfcHJpbWFyeV9zeXNpZChjb25zdCBjaGFyICpjb25uaW5mbykKIAogCXN5c2lkID0gc3Ry dG91NjQoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBOVUxMLCAxMCk7CiAKLQlwZ19sb2dfaW5mbygi c3lzdGVtIGlkZW50aWZpZXIgaXMgJSIgUFJJdTY0ICIgb24gcHVibGlzaGVyIiwgc3lzaWQpOwor CUlORk8oInN5c3RlbSBpZGVudGlmaWVyIGlzICUiIFBSSXU2NCAiIG9uIHB1Ymxpc2hlciIsIHN5 c2lkKTsKIAogCVBRY2xlYXIocmVzKTsKIAlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNl KTsKQEAgLTYzOCw3ICs3NDUsNyBAQCBnZXRfc3RhbmRieV9zeXNpZChjb25zdCBjaGFyICpkYXRh ZGlyKQogCWJvb2wJCWNyY19vazsKIAl1aW50NjQJCXN5c2lkOwogCi0JcGdfbG9nX2luZm8oImdl dHRpbmcgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBzdWJzY3JpYmVyIik7CisJSU5GTygiZ2V0dGlu ZyBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHN1YnNjcmliZXIiKTsKIAogCWNmID0gZ2V0X2NvbnRy b2xmaWxlKGRhdGFkaXIsICZjcmNfb2spOwogCWlmICghY3JjX29rKQpAQCAtNjQ2LDcgKzc1Myw3 IEBAIGdldF9zdGFuZGJ5X3N5c2lkKGNvbnN0IGNoYXIgKmRhdGFkaXIpCiAKIAlzeXNpZCA9IGNm LT5zeXN0ZW1faWRlbnRpZmllcjsKIAotCXBnX2xvZ19pbmZvKCJzeXN0ZW0gaWRlbnRpZmllciBp cyAlIiBQUkl1NjQgIiBvbiBzdWJzY3JpYmVyIiwgc3lzaWQpOworCUlORk8oInN5c3RlbSBpZGVu dGlmaWVyIGlzICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIiLCBzeXNpZCk7CiAKIAlwZ19mcmVl KGNmKTsKIApAQCAtNjY1LDkgKzc3MiwxMCBAQCBtb2RpZnlfc3Vic2NyaWJlcl9zeXNpZChjb25z dCBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCkKIAlib29sCQljcmNfb2s7CiAJ c3RydWN0IHRpbWV2YWwgdHY7CiAKKwljaGFyCSAgICpvdXRfZmlsZTsKIAljaGFyCSAgICpjbWRf c3RyOwogCi0JcGdfbG9nX2luZm8oIm1vZGlmeWluZyBzeXN0ZW0gaWRlbnRpZmllciBvZiBzdWJz Y3JpYmVyIik7CisJSU5GTygibW9kaWZ5aW5nIHN5c3RlbSBpZGVudGlmaWVyIG9mIHN1YnNjcmli ZXIiKTsKIAogCWNmID0gZ2V0X2NvbnRyb2xmaWxlKHN1YnNjcmliZXJfZGlyLCAmY3JjX29rKTsK IAlpZiAoIWNyY19vaykKQEAgLTY3Niw3ICs3ODQsNyBAQCBtb2RpZnlfc3Vic2NyaWJlcl9zeXNp ZChjb25zdCBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCkKIAkvKgogCSAqIFNl bGVjdCBhIG5ldyBzeXN0ZW0gaWRlbnRpZmllci4KIAkgKgotCSAqIFhYWCB0aGlzIGNvZGUgd2Fz IGV4dHJhY3RlZCBmcm9tIEJvb3RTdHJhcFhMT0coKS4KKwkgKiBYWFggdGhpcyBjb2RlIHdhcyBl eHRyYWN0ZWQgZnJvbSBCb290U3RyYXBYSU5GTygpLgogCSAqLwogCWdldHRpbWVvZmRheSgmdHYs IE5VTEwpOwogCWNmLT5zeXN0ZW1faWRlbnRpZmllciA9ICgodWludDY0KSB0di50dl9zZWMpIDw8 IDMyOwpAQCAtNjg0LDMxICs3OTIsMzcgQEAgbW9kaWZ5X3N1YnNjcmliZXJfc3lzaWQoY29uc3Qg c3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpCiAJY2YtPnN5c3RlbV9pZGVudGlm aWVyIHw9IGdldHBpZCgpICYgMHhGRkY7CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8o ImRyeS1ydW46IHdvdWxkIHNldCBzeXN0ZW0gaWRlbnRpZmllciB0byAlIiBQUkl1NjQgIiBvbiBz dWJzY3JpYmVyIiwKLQkJCQkJY2YtPnN5c3RlbV9pZGVudGlmaWVyKTsKKwkJSU5GTygiZHJ5LXJ1 bjogd291bGQgc2V0IHN5c3RlbSBpZGVudGlmaWVyIHRvICUiIFBSSXU2NCAiIG9uIHN1YnNjcmli ZXIiLAorCQkJIGNmLT5zeXN0ZW1faWRlbnRpZmllcik7CiAJZWxzZQogCXsKIAkJdXBkYXRlX2Nv bnRyb2xmaWxlKHN1YnNjcmliZXJfZGlyLCBjZiwgdHJ1ZSk7Ci0JCXBnX2xvZ19pbmZvKCJzeXN0 ZW0gaWRlbnRpZmllciBpcyAlIiBQUkl1NjQgIiBvbiBzdWJzY3JpYmVyIiwKLQkJCQkJY2YtPnN5 c3RlbV9pZGVudGlmaWVyKTsKKwkJSU5GTygic3lzdGVtIGlkZW50aWZpZXIgaXMgJSIgUFJJdTY0 ICIgb24gc3Vic2NyaWJlciIsCisJCQkgY2YtPnN5c3RlbV9pZGVudGlmaWVyKTsKIAl9CiAKIAlp ZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIHJ1biBwZ19yZXNldHdh bCBvbiB0aGUgc3Vic2NyaWJlciIpOworCQlJTkZPKCJkcnktcnVuOiB3b3VsZCBydW4gcGdfcmVz ZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZvKCJydW5uaW5n IHBnX3Jlc2V0d2FsIG9uIHRoZSBzdWJzY3JpYmVyIik7CisJCUlORk8oInJ1bm5pbmcgcGdfcmVz ZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKKwogCi0JY21kX3N0ciA9IHBzcHJpbnRmKCJcIiVz XCIgLUQgXCIlc1wiID4gXCIlc1wiIiwgcGdfcmVzZXR3YWxfcGF0aCwKLQkJCQkJICAgc3Vic2Ny aWJlcl9kaXIsIERFVk5VTEwpOworCWlmIChvcHQtPmxvZ19kaXIgIT0gTlVMTCkKKwkJb3V0X2Zp bGUgPSBwc3ByaW50ZigiJXMvJXMiLCBvcHQtPmxvZ19kaXIsIFNFUlZFUl9MT0dfRklMRV9OQU1F KTsKKwllbHNlCisJCW91dF9maWxlID0gREVWTlVMTDsKIAotCXBnX2xvZ19kZWJ1ZygicGdfcmVz ZXR3YWwgY29tbWFuZCBpczogJXMiLCBjbWRfc3RyKTsKKwljbWRfc3RyID0gcHNwcmludGYoIlwi JXNcIiAtRCBcIiVzXCIgPj4gXCIlc1wiIiwgcGdfcmVzZXR3YWxfcGF0aCwKKwkJCQkJICAgc3Vi c2NyaWJlcl9kaXIsIG91dF9maWxlKTsKKworCURFQlVHKCJwZ19yZXNldHdhbCBjb21tYW5kIGlz OiAlcyIsIGNtZF9zdHIpOwogCiAJaWYgKCFkcnlfcnVuKQogCXsKIAkJaW50CQkJcmMgPSBzeXN0 ZW0oY21kX3N0cik7CiAKIAkJaWYgKHJjID09IDApCi0JCQlwZ19sb2dfaW5mbygic3VjY2Vzc2Z1 bGx5IHJlc2V0IFdBTCBvbiB0aGUgc3Vic2NyaWJlciIpOworCQkJSU5GTygic3VjY2Vzc2Z1bGx5 IHJlc2V0IFdBTCBvbiB0aGUgc3Vic2NyaWJlciIpOwogCQllbHNlCiAJCQlwZ19mYXRhbCgiY291 bGQgbm90IHJlc2V0IFdBTCBvbiBzdWJzY3JpYmVyOiAlcyIsIHdhaXRfcmVzdWx0X3RvX3N0cihy YykpOwogCX0KQEAgLTgzNiw4ICs5NTAsOCBAQCBzZXR1cF9wdWJsaXNoZXIoc3RydWN0IExvZ2lj YWxSZXBJbmZvICpkYmluZm8pCiAJCWlmIChmaW5kX3B1YmxpY2F0aW9uKGNvbm4sIGRiaW5mb1tp XS5wdWJuYW1lLCBkYmluZm9baV0uZGJuYW1lKSkKIAkJewogCQkJLyogUmV1c2UgZXhpc3Rpbmcg cHVibGljYXRpb24gb24gcHVibGlzaGVyLiAqLwotCQkJcGdfbG9nX2luZm8oInVzZSBleGlzdGlu ZyBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJCWRiaW5mb1tp XS5wdWJuYW1lLCBkYmluZm9baV0uZGJuYW1lKTsKKwkJCUlORk8oInVzZSBleGlzdGluZyBwdWJs aWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkgZGJpbmZvW2ldLnB1Ym5h bWUsIGRiaW5mb1tpXS5kYm5hbWUpOwogCQkJLyogRG9uJ3QgcmVtb3ZlIHByZS1leGlzdGluZyBw dWJsaWNhdGlvbiBpZiBhbiBlcnJvciBvY2N1cnMuICovCiAJCQlkYmluZm9baV0ubWFkZV9wdWJs aWNhdGlvbiA9IGZhbHNlOwogCQl9CkBAIC05MzQsNyArMTA0OCw3IEBAIGNoZWNrX3B1Ymxpc2hl cihjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAlpbnQJCQltYXhfcHJlcGFy ZWRfdHJhbnNhY3Rpb25zOwogCWNoYXIJICAgKm1heF9zbG90X3dhbF9rZWVwX3NpemU7CiAKLQlw Z19sb2dfaW5mbygiY2hlY2tpbmcgc2V0dGluZ3Mgb24gcHVibGlzaGVyIik7CisJSU5GTygiY2hl Y2tpbmcgc2V0dGluZ3Mgb24gcHVibGlzaGVyIik7CiAKIAljb25uID0gY29ubmVjdF9kYXRhYmFz ZShkYmluZm9bMF0ucHViY29ubmluZm8sIHRydWUpOwogCkBAIC05ODUsMTUgKzEwOTksMTUgQEAg Y2hlY2tfcHVibGlzaGVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCiAJ UFFjbGVhcihyZXMpOwogCi0JcGdfbG9nX2RlYnVnKCJwdWJsaXNoZXI6IHdhbF9sZXZlbDogJXMi LCB3YWxfbGV2ZWwpOwotCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyOiBtYXhfcmVwbGljYXRpb25f c2xvdHM6ICVkIiwgbWF4X3JlcHNsb3RzKTsKLQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjogY3Vy cmVudCByZXBsaWNhdGlvbiBzbG90czogJWQiLCBjdXJfcmVwc2xvdHMpOwotCXBnX2xvZ19kZWJ1 ZygicHVibGlzaGVyOiBtYXhfd2FsX3NlbmRlcnM6ICVkIiwgbWF4X3dhbHNlbmRlcnMpOwotCXBn X2xvZ19kZWJ1ZygicHVibGlzaGVyOiBjdXJyZW50IHdhbCBzZW5kZXJzOiAlZCIsIGN1cl93YWxz ZW5kZXJzKTsKLQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjogbWF4X3ByZXBhcmVkX3RyYW5zYWN0 aW9uczogJWQiLAotCQkJCSBtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zKTsKLQlwZ19sb2dfZGVi dWcoInB1Ymxpc2hlcjogbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZTogJXMiLAotCQkJCSBtYXhfc2xv dF93YWxfa2VlcF9zaXplKTsKKwlERUJVRygicHVibGlzaGVyOiB3YWxfbGV2ZWw6ICVzIiwgd2Fs X2xldmVsKTsKKwlERUJVRygicHVibGlzaGVyOiBtYXhfcmVwbGljYXRpb25fc2xvdHM6ICVkIiwg bWF4X3JlcHNsb3RzKTsKKwlERUJVRygicHVibGlzaGVyOiBjdXJyZW50IHJlcGxpY2F0aW9uIHNs b3RzOiAlZCIsIGN1cl9yZXBzbG90cyk7CisJREVCVUcoInB1Ymxpc2hlcjogbWF4X3dhbF9zZW5k ZXJzOiAlZCIsIG1heF93YWxzZW5kZXJzKTsKKwlERUJVRygicHVibGlzaGVyOiBjdXJyZW50IHdh bCBzZW5kZXJzOiAlZCIsIGN1cl93YWxzZW5kZXJzKTsKKwlERUJVRygicHVibGlzaGVyOiBtYXhf cHJlcGFyZWRfdHJhbnNhY3Rpb25zOiAlZCIsCisJCSAgbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9u cyk7CisJREVCVUcoInB1Ymxpc2hlcjogbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZTogJXMiLAorCQkg IG1heF9zbG90X3dhbF9rZWVwX3NpemUpOwogCiAJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCBm YWxzZSk7CiAKQEAgLTEwNjksNyArMTE4Myw3IEBAIGNoZWNrX3N1YnNjcmliZXIoY29uc3Qgc3Ry dWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJaW50CQkJbWF4X3JlcG9yaWdpbnM7CiAJaW50 CQkJbWF4X3dwcm9jczsKIAotCXBnX2xvZ19pbmZvKCJjaGVja2luZyBzZXR0aW5ncyBvbiBzdWJz Y3JpYmVyIik7CisJSU5GTygiY2hlY2tpbmcgc2V0dGluZ3Mgb24gc3Vic2NyaWJlclxuIik7CiAK IAljb25uID0gY29ubmVjdF9kYXRhYmFzZShkYmluZm9bMF0uc3ViY29ubmluZm8sIHRydWUpOwog CkBAIC0xMTExLDEyICsxMjI1LDEyIEBAIGNoZWNrX3N1YnNjcmliZXIoY29uc3Qgc3RydWN0IExv Z2ljYWxSZXBJbmZvICpkYmluZm8pCiAJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlcywgMywgMCks ICIiKSAhPSAwKQogCQlwcmltYXJ5X3Nsb3RfbmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJl cywgMywgMCkpOwogCi0JcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBtYXhfbG9naWNhbF9yZXBs aWNhdGlvbl93b3JrZXJzOiAlZCIsCi0JCQkJIG1heF9scndvcmtlcnMpOwotCXBnX2xvZ19kZWJ1 Zygic3Vic2NyaWJlcjogbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zOiAlZCIsIG1heF9y ZXBvcmlnaW5zKTsKLQlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1heF93b3JrZXJfcHJvY2Vz c2VzOiAlZCIsIG1heF93cHJvY3MpOworCURFQlVHKCJzdWJzY3JpYmVyOiBtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzOiAlZCIsCisJCSAgbWF4X2xyd29ya2Vycyk7CisJREVCVUcoInN1 YnNjcmliZXI6IG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2luczogJWQiLCBtYXhfcmVwb3Jp Z2lucyk7CisJREVCVUcoInN1YnNjcmliZXI6IG1heF93b3JrZXJfcHJvY2Vzc2VzOiAlZCIsIG1h eF93cHJvY3MpOwogCWlmIChwcmltYXJ5X3Nsb3RfbmFtZSkKLQkJcGdfbG9nX2RlYnVnKCJzdWJz Y3JpYmVyOiBwcmltYXJ5X3Nsb3RfbmFtZTogJXMiLCBwcmltYXJ5X3Nsb3RfbmFtZSk7CisJCURF QlVHKCJzdWJzY3JpYmVyOiBwcmltYXJ5X3Nsb3RfbmFtZTogJXMiLCBwcmltYXJ5X3Nsb3RfbmFt ZSk7CiAKIAlQUWNsZWFyKHJlcyk7CiAKQEAgLTExNzgsMTIgKzEyOTIsMTIgQEAgZHJvcF9leGlz dGluZ19zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzdWJuYW1lLCBjb25z dCBjaGFyICpkYm5hbWUKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBEUk9QIFNVQlNDUklQ VElPTiAlczsiLCBzdWJuYW1lKTsKIAogCWlmIChkcnlfcnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5 LXJ1bjogd291bGQgZHJvcCBzdWJzY3JpcHRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIs Ci0JCQkJCXN1Ym5hbWUsIGRibmFtZSk7CisJCUlORk8oImRyeS1ydW46IHdvdWxkIGRyb3Agc3Vi c2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJIHN1Ym5hbWUsIGRibmFt ZSk7CiAJZWxzZQogCXsKLQkJcGdfbG9nX2luZm8oImRyb3BwaW5nIHN1YnNjcmlwdGlvbiBcIiVz XCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJc3VibmFtZSwgZGJuYW1lKTsKKwkJSU5GTygi ZHJvcHBpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJIHN1 Ym5hbWUsIGRibmFtZSk7CiAKIAkJcmVzID0gUFFleGVjKGNvbm4sIHF1ZXJ5LT5kYXRhKTsKIApA QCAtMTMzOCw3ICsxNDUyLDcgQEAgc2V0dXBfcmVjb3ZlcnkoY29uc3Qgc3RydWN0IExvZ2ljYWxS ZXBJbmZvICpkYmluZm8sIGNvbnN0IGNoYXIgKmRhdGFkaXIsIGNvbnN0IGMKIAl9CiAJZGlzY29u bmVjdF9kYXRhYmFzZShjb25uLCBmYWxzZSk7CiAKLQlwZ19sb2dfZGVidWcoInJlY292ZXJ5IHBh cmFtZXRlcnM6XG4lcyIsIHJlY292ZXJ5Y29uZmNvbnRlbnRzLT5kYXRhKTsKKwlERUJVRygicmVj b3ZlcnkgcGFyYW1ldGVyczpcbiVzIiwgcmVjb3Zlcnljb25mY29udGVudHMtPmRhdGEpOwogfQog CiAvKgpAQCAtMTQzMiwxMSArMTU0NiwxMSBAQCBjcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9z bG90KFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJQXNzZXJ0 KGNvbm4gIT0gTlVMTCk7CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oImRyeS1ydW46 IHdvdWxkIGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIl c1wiIG9uIHB1Ymxpc2hlciIsCi0JCQkJCXNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQlJ TkZPKCJkcnktcnVuOiB3b3VsZCBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGlu IGRhdGFiYXNlIFwiJXNcIiBvbiBwdWJsaXNoZXIiLAorCQkJIHNsb3RfbmFtZSwgZGJpbmZvLT5k Ym5hbWUpOwogCWVsc2UKLQkJcGdfbG9nX2luZm8oImNyZWF0aW5nIHRoZSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHVibGlzaGVyIiwKLQkJCQkJc2xvdF9u YW1lLCBkYmluZm8tPmRibmFtZSk7CisJCUlORk8oImNyZWF0aW5nIHRoZSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHVibGlzaGVyIiwKKwkJCSBzbG90X25h bWUsIGRiaW5mby0+ZGJuYW1lKTsKIAogCXNsb3RfbmFtZV9lc2MgPSBQUWVzY2FwZUxpdGVyYWwo Y29ubiwgc2xvdF9uYW1lLCBzdHJsZW4oc2xvdF9uYW1lKSk7CiAKQEAgLTE0NDcsNyArMTU2MSw3 IEBAIGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoUEdjb25uICpjb25uLCBzdHJ1Y3Qg TG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAogCVBRZnJlZW1lbShzbG90X25hbWVfZXNjKTsKIAot CXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCURFQlVHKCJjb21t YW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewpAQCAtMTQ4NSwx MSArMTU5OSwxMSBAQCBkcm9wX3JlcGxpY2F0aW9uX3Nsb3QoUEdjb25uICpjb25uLCBzdHJ1Y3Qg TG9naWNhbFJlcEluZm8gKmRiaW5mbywKIAlBc3NlcnQoY29ubiAhPSBOVUxMKTsKIAogCWlmIChk cnlfcnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgZHJvcCB0aGUgcmVwbGljYXRp b24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJc2xvdF9uYW1lLCBkYmlu Zm8tPmRibmFtZSk7CisJCUlORk8oImRyeS1ydW46IHdvdWxkIGRyb3AgdGhlIHJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgc2xvdF9uYW1lLCBkYmluZm8t PmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiZHJvcHBpbmcgdGhlIHJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCXNsb3RfbmFtZSwgZGJpbmZv LT5kYm5hbWUpOworCQlJTkZPKCJkcm9wcGluZyB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCSBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAog CXNsb3RfbmFtZV9lc2MgPSBQUWVzY2FwZUxpdGVyYWwoY29ubiwgc2xvdF9uYW1lLCBzdHJsZW4o c2xvdF9uYW1lKSk7CiAKQEAgLTE0OTcsNyArMTYxMSw3IEBAIGRyb3BfcmVwbGljYXRpb25fc2xv dChQR2Nvbm4gKmNvbm4sIHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLAogCiAJUFFmcmVl bWVtKHNsb3RfbmFtZV9lc2MpOwogCi0JcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0 ci0+ZGF0YSk7CisJREVCVUcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICgh ZHJ5X3J1bikKIAl7CkBAIC0xNTg4LDEyICsxNzAyLDE3IEBAIHN0YXJ0X3N0YW5kYnlfc2VydmVy KGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0LCBib29sIHJlc3RyaWN0 ZWRfCiAJaWYgKHJlc3RyaWN0X2xvZ2ljYWxfd29ya2VyKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihwZ19jdGxfY21kLCAiIC1vIFwiLWMgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycz0w XCIiKTsKIAotCXBnX2xvZ19kZWJ1ZygicGdfY3RsIGNvbW1hbmQgaXM6ICVzIiwgcGdfY3RsX2Nt ZC0+ZGF0YSk7CisJaWYgKG9wdC0+bG9nX2RpciAhPSBOVUxMKQorCXsKKwkJYXBwZW5kUFFFeHBC dWZmZXIocGdfY3RsX2NtZCwgIiAtbCAlcy8lcyIsIG9wdC0+bG9nX2RpciwgU0VSVkVSX0xPR19G SUxFX05BTUUpOworCX0KKworCURFQlVHKCJwZ19jdGwgY29tbWFuZCBpczogJXMiLCBwZ19jdGxf Y21kLT5kYXRhKTsKIAlyYyA9IHN5c3RlbShwZ19jdGxfY21kLT5kYXRhKTsKIAlwZ19jdGxfc3Rh dHVzKHBnX2N0bF9jbWQtPmRhdGEsIHJjKTsKIAlzdGFuZGJ5X3J1bm5pbmcgPSB0cnVlOwogCWRl c3Ryb3lQUUV4cEJ1ZmZlcihwZ19jdGxfY21kKTsKLQlwZ19sb2dfaW5mbygic2VydmVyIHdhcyBz dGFydGVkIik7CisJSU5GTygic2VydmVyIHdhcyBzdGFydGVkIik7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC0xNjA0LDExICsxNzIzLDExIEBAIHN0b3Bfc3RhbmRieV9zZXJ2ZXIoY29uc3QgY2hhciAq ZGF0YWRpcikKIAogCXBnX2N0bF9jbWQgPSBwc3ByaW50ZigiXCIlc1wiIHN0b3AgLUQgXCIlc1wi IC1zIiwgcGdfY3RsX3BhdGgsCiAJCQkJCQkgIGRhdGFkaXIpOwotCXBnX2xvZ19kZWJ1ZygicGdf Y3RsIGNvbW1hbmQgaXM6ICVzIiwgcGdfY3RsX2NtZCk7CisJREVCVUcoInBnX2N0bCBjb21tYW5k IGlzOiAlcyIsIHBnX2N0bF9jbWQpOwogCXJjID0gc3lzdGVtKHBnX2N0bF9jbWQpOwogCXBnX2N0 bF9zdGF0dXMocGdfY3RsX2NtZCwgcmMpOwogCXN0YW5kYnlfcnVubmluZyA9IGZhbHNlOwotCXBn X2xvZ19pbmZvKCJzZXJ2ZXIgd2FzIHN0b3BwZWQiKTsKKwlJTkZPKCJzZXJ2ZXIgd2FzIHN0b3Bw ZWQiKTsKIH0KIAogLyoKQEAgLTE2MjcsNyArMTc0Niw3IEBAIHdhaXRfZm9yX2VuZF9yZWNvdmVy eShjb25zdCBjaGFyICpjb25uaW5mbywgY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRp b25zCiAJYm9vbAkJcmVhZHkgPSBmYWxzZTsKIAlpbnQJCQl0aW1lciA9IDA7CiAKLQlwZ19sb2df aW5mbygid2FpdGluZyBmb3IgdGhlIHRhcmdldCBzZXJ2ZXIgdG8gcmVhY2ggdGhlIGNvbnNpc3Rl bnQgc3RhdGUiKTsKKwlJTkZPKCJ3YWl0aW5nIGZvciB0aGUgdGFyZ2V0IHNlcnZlciB0byByZWFj aCB0aGUgY29uc2lzdGVudCBzdGF0ZSIpOwogCiAJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoY29u bmluZm8sIHRydWUpOwogCkBAIC0xNjU5LDggKzE3NzgsOCBAQCB3YWl0X2Zvcl9lbmRfcmVjb3Zl cnkoY29uc3QgY2hhciAqY29ubmluZm8sIGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0 aW9ucwogCWlmICghcmVhZHkpCiAJCXBnX2ZhdGFsKCJzZXJ2ZXIgZGlkIG5vdCBlbmQgcmVjb3Zl cnkiKTsKIAotCXBnX2xvZ19pbmZvKCJ0YXJnZXQgc2VydmVyIHJlYWNoZWQgdGhlIGNvbnNpc3Rl bnQgc3RhdGUiKTsKLQlwZ19sb2dfaW5mb19oaW50KCJJZiBwZ19jcmVhdGVzdWJzY3JpYmVyIGZh aWxzIGFmdGVyIHRoaXMgcG9pbnQsIHlvdSBtdXN0IHJlY3JlYXRlIHRoZSBwaHlzaWNhbCByZXBs aWNhIGJlZm9yZSBjb250aW51aW5nLiIpOworCUlORk8oInRhcmdldCBzZXJ2ZXIgcmVhY2hlZCB0 aGUgY29uc2lzdGVudCBzdGF0ZSIpOworCUlORk9fSElOVCgiSWYgcGdfY3JlYXRlc3Vic2NyaWJl ciBmYWlscyBhZnRlciB0aGlzIHBvaW50LCB5b3UgbXVzdCByZWNyZWF0ZSB0aGUgcGh5c2ljYWwg cmVwbGljYSBiZWZvcmUgY29udGludWluZy4iKTsKIH0KIAogLyoKQEAgLTE3MTAsMTYgKzE4Mjks MTYgQEAgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJ bmZvICpkYmluZm8pCiAJcmVzZXRQUUV4cEJ1ZmZlcihzdHIpOwogCiAJaWYgKGRyeV9ydW4pCi0J CXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3VsZCBjcmVhdGUgcHVibGljYXRpb24gXCIlc1wiIGlu IGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCWRiaW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUp OworCQlJTkZPKCJkcnktcnVuOiB3b3VsZCBjcmVhdGUgcHVibGljYXRpb24gXCIlc1wiIGluIGRh dGFiYXNlIFwiJXNcIiIsCisJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJ ZWxzZQotCQlwZ19sb2dfaW5mbygiY3JlYXRpbmcgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFi YXNlIFwiJXNcIiIsCi0JCQkJCWRiaW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQlJ TkZPKCJjcmVhdGluZyBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJ CSBkYmluZm8tPnB1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVy KHN0ciwgIkNSRUFURSBQVUJMSUNBVElPTiAlcyBGT1IgQUxMIFRBQkxFUyIsCiAJCQkJCSAgaXB1 Ym5hbWVfZXNjKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEp OworCURFQlVHKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4p CiAJewpAQCAtMTc1NywxNyArMTg3NiwxNyBAQCBkcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29u biwgY29uc3QgY2hhciAqcHVibmFtZSwgY29uc3QgY2hhciAqZGJuYW1lLAogCXB1Ym5hbWVfZXNj ID0gUFFlc2NhcGVJZGVudGlmaWVyKGNvbm4sIHB1Ym5hbWUsIHN0cmxlbihwdWJuYW1lKSk7CiAK IAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIGRyb3AgcHVibGlj YXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCXB1Ym5hbWUsIGRibmFtZSk7 CisJCUlORk8oImRyeS1ydW46IHdvdWxkIGRyb3AgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFi YXNlIFwiJXNcIiIsCisJCQkgcHVibmFtZSwgZGJuYW1lKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZv KCJkcm9wcGluZyBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJ cHVibmFtZSwgZGJuYW1lKTsKKwkJSU5GTygiZHJvcHBpbmcgcHVibGljYXRpb24gXCIlc1wiIGlu IGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgcHVibmFtZSwgZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhw QnVmZmVyKHN0ciwgIkRST1AgUFVCTElDQVRJT04gJXMiLCBwdWJuYW1lX2VzYyk7CiAKIAlQUWZy ZWVtZW0ocHVibmFtZV9lc2MpOwogCi0JcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0 ci0+ZGF0YSk7CisJREVCVUcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICgh ZHJ5X3J1bikKIAl7CkBAIC0xODEwLDggKzE5MjksOCBAQCBjaGVja19hbmRfZHJvcF9wdWJsaWNh dGlvbnMoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAogCWlm IChkcm9wX2FsbF9wdWJzKQogCXsKLQkJcGdfbG9nX2luZm8oImRyb3BwaW5nIGFsbCBleGlzdGlu ZyBwdWJsaWNhdGlvbnMgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5kYm5hbWUp OworCQlJTkZPKCJkcm9wcGluZyBhbGwgZXhpc3RpbmcgcHVibGljYXRpb25zIGluIGRhdGFiYXNl IFwiJXNcIiIsCisJCQkgZGJpbmZvLT5kYm5hbWUpOwogCiAJCS8qIEZldGNoIGFsbCBwdWJsaWNh dGlvbiBuYW1lcyAqLwogCQlyZXMgPSBQUWV4ZWMoY29ubiwgIlNFTEVDVCBwdWJuYW1lIEZST00g cGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbjsiKTsKQEAgLTE4NDEsMTEgKzE5NjAsMTEgQEAgY2hl Y2tfYW5kX2Ryb3BfcHVibGljYXRpb25zKFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJ bmZvICpkYmluZm8pCiAJCWVsc2UKIAkJewogCQkJaWYgKGRyeV9ydW4pCi0JCQkJcGdfbG9nX2lu Zm8oImRyeS1ydW46IHdvdWxkIHByZXNlcnZlIGV4aXN0aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBp biBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQkJCWRiaW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5h bWUpOworCQkJCUlORk8oImRyeS1ydW46IHdvdWxkIHByZXNlcnZlIGV4aXN0aW5nIHB1YmxpY2F0 aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBk YmluZm8tPmRibmFtZSk7CiAJCQllbHNlCi0JCQkJcGdfbG9nX2luZm8oInByZXNlcnZlIGV4aXN0 aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQkJCWRiaW5m by0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQkJCUlORk8oInByZXNlcnZlIGV4aXN0aW5n IHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkgZGJpbmZvLT5w dWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJCX0KIAl9CiB9CkBAIC0xODc5LDExICsxOTk4LDEx IEBAIGNyZWF0ZV9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBjb25zdCBzdHJ1Y3QgTG9naWNh bFJlcEluZm8gKmRiaW5mbykKIAlyZXBsc2xvdG5hbWVfZXNjID0gUFFlc2NhcGVMaXRlcmFsKGNv bm4sIGRiaW5mby0+cmVwbHNsb3RuYW1lLCBzdHJsZW4oZGJpbmZvLT5yZXBsc2xvdG5hbWUpKTsK IAogCWlmIChkcnlfcnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgY3JlYXRlIHN1 YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5zdWJu YW1lLCBkYmluZm8tPmRibmFtZSk7CisJCUlORk8oImRyeS1ydW46IHdvdWxkIGNyZWF0ZSBzdWJz Y3JpcHRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgZGJpbmZvLT5zdWJuYW1l LCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiY3JlYXRpbmcgc3Vic2Ny aXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlkYmluZm8tPnN1Ym5hbWUs IGRiaW5mby0+ZGJuYW1lKTsKKwkJSU5GTygiY3JlYXRpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBp biBkYXRhYmFzZSBcIiVzXCIiLAorCQkJIGRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUp OwogCiAJYXBwZW5kUFFFeHBCdWZmZXIoc3RyLAogCQkJCQkgICJDUkVBVEUgU1VCU0NSSVBUSU9O ICVzIENPTk5FQ1RJT04gJXMgUFVCTElDQVRJT04gJXMgIgpAQCAtMTg5Nyw3ICsyMDE2LDcgQEAg Y3JlYXRlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVw SW5mbyAqZGJpbmZvKQogCVBRZnJlZW1lbShwdWJjb25uaW5mb19lc2MpOwogCVBRZnJlZW1lbShy ZXBsc2xvdG5hbWVfZXNjKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHIt PmRhdGEpOworCURFQlVHKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRy eV9ydW4pCiAJewpAQCAtMTk4MSwxOCArMjEwMCwxOCBAQCBzZXRfcmVwbGljYXRpb25fcHJvZ3Jl c3MoUEdjb25uICpjb25uLCBjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbywgY29u cwogCW9yaWdpbm5hbWUgPSBwc3ByaW50ZigicGdfJXUiLCBzdWJvaWQpOwogCiAJaWYgKGRyeV9y dW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3VsZCBzZXQgdGhlIHJlcGxpY2F0aW9uIHBy b2dyZXNzIChub2RlIG5hbWUgXCIlc1wiLCBMU04gJXMpIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0J CQkJCW9yaWdpbm5hbWUsIGxzbnN0ciwgZGJpbmZvLT5kYm5hbWUpOworCQlJTkZPKCJkcnktcnVu OiB3b3VsZCBzZXQgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIChub2RlIG5hbWUgXCIlc1wiLCBM U04gJXMpIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgb3JpZ2lubmFtZSwgbHNuc3RyLCBkYmlu Zm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygic2V0dGluZyB0aGUgcmVwbGljYXRp b24gcHJvZ3Jlc3MgKG5vZGUgbmFtZSBcIiVzXCIsIExTTiAlcykgaW4gZGF0YWJhc2UgXCIlc1wi IiwKLQkJCQkJb3JpZ2lubmFtZSwgbHNuc3RyLCBkYmluZm8tPmRibmFtZSk7CisJCUlORk8oInNl dHRpbmcgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIChub2RlIG5hbWUgXCIlc1wiLCBMU04gJXMp IGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgb3JpZ2lubmFtZSwgbHNuc3RyLCBkYmluZm8tPmRi bmFtZSk7CiAKIAlyZXNldFBRRXhwQnVmZmVyKHN0cik7CiAJYXBwZW5kUFFFeHBCdWZmZXIoc3Ry LAogCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmlnaW5fYWR2YW5j ZSgnJXMnLCAnJXMnKSIsCiAJCQkJCSAgb3JpZ2lubmFtZSwgbHNuc3RyKTsKIAotCXBnX2xvZ19k ZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCURFQlVHKCJjb21tYW5kIGlzOiAl cyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewpAQCAtMjAzMSwxNSArMjE1MCwx NSBAQCBlbmFibGVfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29ubiwgY29uc3Qgc3RydWN0IExvZ2lj YWxSZXBJbmZvICpkYmluZm8pCiAJc3VibmFtZSA9IFBRZXNjYXBlSWRlbnRpZmllcihjb25uLCBk YmluZm8tPnN1Ym5hbWUsIHN0cmxlbihkYmluZm8tPnN1Ym5hbWUpKTsKIAogCWlmIChkcnlfcnVu KQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgZW5hYmxlIHN1YnNjcmlwdGlvbiBcIiVz XCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRi bmFtZSk7CisJCUlORk8oImRyeS1ydW46IHdvdWxkIGVuYWJsZSBzdWJzY3JpcHRpb24gXCIlc1wi IGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFt ZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiZW5hYmxpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBp biBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1l KTsKKwkJSU5GTygiZW5hYmxpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVz XCIiLAorCQkJIGRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUpOwogCiAJYXBwZW5kUFFF eHBCdWZmZXIoc3RyLCAiQUxURVIgU1VCU0NSSVBUSU9OICVzIEVOQUJMRSIsIHN1Ym5hbWUpOwog Ci0JcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisJREVCVUcoImNv bW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CkBAIC0yMTE5 LDYgKzIyMzgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJeyJhbGwiLCBub19h cmd1bWVudCwgTlVMTCwgJ2EnfSwKIAkJeyJkYXRhYmFzZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBO VUxMLCAnZCd9LAogCQl7InBnZGF0YSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnRCd9LAor CQl7ImxvZ2Rpci1wcmVmaXgiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2wnfSwKIAkJeyJk cnktcnVuIiwgbm9fYXJndW1lbnQsIE5VTEwsICduJ30sCiAJCXsic3Vic2NyaWJlci1wb3J0Iiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCiAJCXsicHVibGlzaGVyLXNlcnZlciIsIHJl cXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LApAQCAtMjE1Myw2ICsyMjczLDcgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJY2hhcgkgICAqY29uc2lzdGVudF9sc247CiAKIAljaGFy CQlwaWRmaWxlW01BWFBHUEFUSF07CisJY2hhcgkgICAqaW50ZXJuYWxfbG9nX2ZpbGU7CiAKIAlw Z19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJcGdfbG9nZ2luZ19zZXRfbGV2ZWwoUEdfTE9HX1dB Uk5JTkcpOwpAQCAtMjE3Nyw2ICsyMjk4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJLyogRGVmYXVsdCBzZXR0aW5ncyAqLwogCXN1YnNjcmliZXJfZGlyID0gTlVMTDsKIAlvcHQu Y29uZmlnX2ZpbGUgPSBOVUxMOworCW9wdC5sb2dfZGlyID0gTlVMTDsKIAlvcHQucHViX2Nvbm5p bmZvX3N0ciA9IE5VTEw7CiAJb3B0LnNvY2tldF9kaXIgPSBOVUxMOwogCW9wdC5zdWJfcG9ydCA9 IERFRkFVTFRfU1VCX1BPUlQ7CkBAIC0yMjA1LDkgKzIzMjcsMTIgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAKIAlnZXRfcmVzdHJpY3RlZF90b2tlbigpOwogCi0Jd2hpbGUgKChjID0g Z2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImFkOkQ6bnA6UDpzOnQ6VFU6diIsCisJd2hpbGUgKChj ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImFkOkQ6bDpucDpQOnM6dDpUVTp2IiwKIAkJCQkJ CQlsb25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpKSAhPSAtMSkKIAl7CisJCWNoYXIJCXRpbWVz dGFtcFsxMjhdOworCQljaGFyCSAgICpsb2dfZGlyOworCiAJCXN3aXRjaCAoYykKIAkJewogCQkJ Y2FzZSAnYSc6CkBAIC0yMjI1LDYgKzIzNTAsMjkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJCQljYXNlICdEJzoKIAkJCQlzdWJzY3JpYmVyX2RpciA9IHBnX3N0cmR1cChvcHRhcmcp OwogCQkJCWNhbm9uaWNhbGl6ZV9wYXRoKHN1YnNjcmliZXJfZGlyKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgJ2wnOgorCQkJCXBvcHVsYXRlX3RpbWVzdGFtcCh0aW1lc3RhbXAsIHNpemVvZih0aW1l c3RhbXApKTsKKwkJCQlsb2dfZGlyID0gcHNwcmludGYoIiVzXyVzIiwgb3B0YXJnLCB0aW1lc3Rh bXApOworCQkJCW9wdC5sb2dfZGlyID0gcGdfc3RyZHVwKGxvZ19kaXIpOworCQkJCWNhbm9uaWNh bGl6ZV9wYXRoKG9wdC5sb2dfZGlyKTsKKworCQkJCWlmIChzdGF0KG9wdC5sb2dfZGlyLCAmc3Rh dGJ1ZikgIT0gMCkKKwkJCQl7CisJCQkJCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCQkJCXsKKwkJ CQkJCW1rZGlyKG9wdC5sb2dfZGlyLCBTX0lSV1hVKTsKKwkJCQkJCUlORk8oImxvZyBkaXJlY3Rv cnkgY3JlYXRlZCIpOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKGVycm5vID09IEVBQ0NFUykKKwkJ CQkJCXBnX2ZhdGFsKCJwZXJtaXNzaW9uIGRlbmllZCB0cnlpbmcgdG8gYWNjZXNzIGRpcmVjdG9y eSBcIiVzXCI6ICVtIiwgb3B0LmxvZ19kaXIpOworCQkJCQllbHNlCisJCQkJCQlwZ19mYXRhbCgi Y291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIG9wdC5sb2dfZGlyKTsKKwkJ CQl9CisJCQkJaW50ZXJuYWxfbG9nX2ZpbGUgPSBwc3ByaW50ZigiJXMvJXMiLCBvcHQubG9nX2Rp ciwgSU5URVJOQUxfTE9HX0ZJTEVfTkFNRSk7CisJCQkJaWYgKChpbnRlcm5hbF9sb2dfZmlsZV9m cCA9IGxvZ2ZpbGVfb3BlbihpbnRlcm5hbF9sb2dfZmlsZSwgImEiKSkgPT0gTlVMTCkKKwkJCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGxvZyBmaWxlIFwiJXNcIjogJW0iLCBpbnRlcm5hbF9s b2dfZmlsZSk7CisKIAkJCQlicmVhazsKIAkJCWNhc2UgJ24nOgogCQkJCWRyeV9ydW4gPSB0cnVl OwpAQCAtMjM2MywxNiArMjUxMSwxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl9 CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oIkV4ZWN1dGluZyBpbiBkcnktcnVuIG1v ZGUuXG4iCi0JCQkJCSJUaGUgdGFyZ2V0IGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBtb2RpZmllZC4i KTsKKwkJSU5GTygiRXhlY3V0aW5nIGluIGRyeS1ydW4gbW9kZS5cbiIKKwkJCSAiVGhlIHRhcmdl dCBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgbW9kaWZpZWQuIik7CiAKLQlwZ19sb2dfaW5mbygidmFs aWRhdGluZyBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmciKTsKKwlJTkZPKCJ2YWxpZGF0aW5n IHB1Ymxpc2hlciBjb25uZWN0aW9uIHN0cmluZyIpOwogCXB1Yl9iYXNlX2Nvbm5pbmZvID0gZ2V0 X2Jhc2VfY29ubmluZm8ob3B0LnB1Yl9jb25uaW5mb19zdHIsCiAJCQkJCQkJCQkJICAmZGJuYW1l X2Nvbm5pbmZvKTsKIAlpZiAocHViX2Jhc2VfY29ubmluZm8gPT0gTlVMTCkKIAkJZXhpdCgxKTsK IAotCXBnX2xvZ19pbmZvKCJ2YWxpZGF0aW5nIHN1YnNjcmliZXIgY29ubmVjdGlvbiBzdHJpbmci KTsKKwlJTkZPKCJ2YWxpZGF0aW5nIHN1YnNjcmliZXIgY29ubmVjdGlvbiBzdHJpbmciKTsKIAlz dWJfYmFzZV9jb25uaW5mbyA9IGdldF9zdWJfY29ubmluZm8oJm9wdCk7CiAKIAkvKgpAQCAtMjM4 OSw3ICsyNTM3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob3B0LmRh dGFiYXNlX25hbWVzLmhlYWQgPT0gTlVMTCkKIAl7Ci0JCXBnX2xvZ19pbmZvKCJubyBkYXRhYmFz ZSB3YXMgc3BlY2lmaWVkIik7CisJCUlORk8oIm5vIGRhdGFiYXNlIHdhcyBzcGVjaWZpZWQiKTsK IAogCQkvKgogCQkgKiBUcnkgdG8gb2J0YWluIHRoZSBkYm5hbWUgZnJvbSB0aGUgcHVibGlzaGVy IGNvbm5pbmZvLiBJZiBkYm5hbWUKQEAgLTI0MDAsOCArMjU0OCw4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCQkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgmb3B0LmRhdGFiYXNl X25hbWVzLCBkYm5hbWVfY29ubmluZm8pOwogCQkJbnVtX2RicysrOwogCi0JCQlwZ19sb2dfaW5m bygiZGF0YWJhc2UgbmFtZSBcIiVzXCIgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBwdWJsaXNoZXIg Y29ubmVjdGlvbiBzdHJpbmciLAotCQkJCQkJZGJuYW1lX2Nvbm5pbmZvKTsKKwkJCUlORk8oImRh dGFiYXNlIG5hbWUgXCIlc1wiIHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgcHVibGlzaGVyIGNvbm5l Y3Rpb24gc3RyaW5nIiwKKwkJCQkgZGJuYW1lX2Nvbm5pbmZvKTsKIAkJfQogCQllbHNlCiAJCXsK QEAgLTI0OTgsNyArMjY0Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqIGJ5 IGNvbW1hbmQtbGluZSBvcHRpb25zKS4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgY29ubmVjdGlvbnMg ZHVyaW5nIHRoZQogCSAqIHRyYW5zZm9ybWF0aW9uIHN0ZXBzLgogCSAqLwotCXBnX2xvZ19pbmZv KCJzdGFydGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIgd2l0aCBjb21tYW5kLWxpbmUgb3B0aW9ucyIp OworCUlORk8oInN0YXJ0aW5nIHRoZSBzdGFuZGJ5IHNlcnZlciB3aXRoIGNvbW1hbmQtbGluZSBv cHRpb25zIik7CiAJc3RhcnRfc3RhbmRieV9zZXJ2ZXIoJm9wdCwgdHJ1ZSwgZmFsc2UpOwogCiAJ LyogQ2hlY2sgaWYgdGhlIHN0YW5kYnkgc2VydmVyIGlzIHJlYWR5IGZvciBsb2dpY2FsIHJlcGxp Y2F0aW9uICovCkBAIC0yNTE0LDcgKzI2NjIsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkgKiBndWFyYW50ZWVzIGl0KSAqYmVmb3JlKiBjcmVhdGluZyB0aGUgcmVwbGljYXRpb24g c2xvdHMgaW4KIAkgKiBzZXR1cF9wdWJsaXNoZXIoKS4KIAkgKi8KLQlwZ19sb2dfaW5mbygic3Rv cHBpbmcgdGhlIHN1YnNjcmliZXIiKTsKKwlJTkZPKCJzdG9wcGluZyB0aGUgc3Vic2NyaWJlciIp OwogCXN0b3Bfc3RhbmRieV9zZXJ2ZXIoc3Vic2NyaWJlcl9kaXIpOwogCiAJLyogQ3JlYXRlIHRo ZSByZXF1aXJlZCBvYmplY3RzIGZvciBlYWNoIGRhdGFiYXNlIG9uIHB1Ymxpc2hlciAqLwpAQCAt MjUyOCw3ICsyNjc2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogdW50aWwg YWNjZXB0aW5nIGNvbm5lY3Rpb25zLiBXZSBkb24ndCB3YW50IHRvIHN0YXJ0IGxvZ2ljYWwgcmVw bGljYXRpb24KIAkgKiBkdXJpbmcgc2V0dXAuCiAJICovCi0JcGdfbG9nX2luZm8oInN0YXJ0aW5n IHRoZSBzdWJzY3JpYmVyIik7CisJSU5GTygic3RhcnRpbmcgdGhlIHN1YnNjcmliZXIiKTsKIAlz dGFydF9zdGFuZGJ5X3NlcnZlcigmb3B0LCB0cnVlLCB0cnVlKTsKIAogCS8qIFdhaXRpbmcgdGhl IHN1YnNjcmliZXIgdG8gYmUgcHJvbW90ZWQgKi8KQEAgLTI1NDksNyArMjY5Nyw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWRyb3BfZmFpbG92ZXJfcmVwbGljYXRpb25fc2xvdHMo ZGJpbmZvcy5kYmluZm8pOwogCiAJLyogU3RvcCB0aGUgc3Vic2NyaWJlciAqLwotCXBnX2xvZ19p bmZvKCJzdG9wcGluZyB0aGUgc3Vic2NyaWJlciIpOworCUlORk8oInN0b3BwaW5nIHRoZSBzdWJz Y3JpYmVyIik7CiAJc3RvcF9zdGFuZGJ5X3NlcnZlcihzdWJzY3JpYmVyX2Rpcik7CiAKIAkvKiBD aGFuZ2Ugc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBzdWJzY3JpYmVyICovCkBAIC0yNTU3LDcgKzI3 MDUsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlzdWNjZXNzID0gdHJ1ZTsK IAotCXBnX2xvZ19pbmZvKCJEb25lISIpOworCUlORk8oIkRvbmUhIik7CisKKwlpZiAoaW50ZXJu YWxfbG9nX2ZpbGVfZnAgIT0gTlVMTCkKKwkJZmNsb3NlKGludGVybmFsX2xvZ19maWxlX2ZwKTsK IAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQw X3BnX2NyZWF0ZXN1YnNjcmliZXIucGwgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wNDBfcGdf Y3JlYXRlc3Vic2NyaWJlci5wbAppbmRleCBhOTA1MTgzYjczOC4uZWQ0ZjM4MmYxYWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVzdWJzY3JpYmVyLnBs CisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVzdWJzY3JpYmVyLnBs CkBAIC0xMyw3ICsxMyw4IEBAIHByb2dyYW1faGVscF9vaygncGdfY3JlYXRlc3Vic2NyaWJlcicp OwogcHJvZ3JhbV92ZXJzaW9uX29rKCdwZ19jcmVhdGVzdWJzY3JpYmVyJyk7CiBwcm9ncmFtX29w dGlvbnNfaGFuZGxpbmdfb2soJ3BnX2NyZWF0ZXN1YnNjcmliZXInKTsKIAotbXkgJGRhdGFkaXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKK215ICRkYXRhZGlyID0gUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRlbXBkaXIgKyAiL2RhdGFkaXIiOworbXkgJGxvZ2RpciA9IFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyICsgIi9sb2dkaXIiOwogCiAjIEdlbmVyYXRl IGEgZGF0YWJhc2Ugd2l0aCBhIG5hbWUgbWFkZSBvZiBhIHJhbmdlIG9mIEFTQ0lJIGNoYXJhY3Rl cnMuCiAjIEV4dHJhY3RlZCBmcm9tIDAwMl9wZ191cGdyYWRlLnBsLgpAQCAtNTc5LDEwICs1ODAs NDMgQEAgaXMoJHJlc3VsdCwgcXEoJGRiMXx7dGVzdF9wdWIzfQogJGRiMnx7cHViMn0pLAogCSJz dWJzY3JpcHRpb25zIHVzZSB0aGUgY29ycmVjdCBwdWJsaWNhdGlvbnMiKTsKIAorJG5vZGVfcC0+ YmFja3VwKCdiYWNrdXBfMycpOworCisjIFNldCB1cCBub2RlIFIgYXMgYSBsb2dpY2FsIHJlcGxp Y2Egbm9kZQorbXkgJG5vZGVfciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9k ZV9yJyk7Ciskbm9kZV9yLT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3AsICdiYWNrdXBfMycsIGhh c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9yLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5j b25mJywgcXFbCitwcmltYXJ5X2Nvbm5pbmZvID0gJyRwY29ubnN0ciBkYm5hbWU9cG9zdGdyZXMn Citob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitdKTsKKyRub2RlX3ItPnNldF9zdGFuZGJ5X21v ZGUoKTsKKworIyBUZXN0IHRoYXQgLS1sb2dkaXIgd29ya3MgZm9yIHBnX2NyZWF0ZXN1YnNjcmli ZXIKK2NvbW1hbmRfb2soCisJWworCQkncGdfY3JlYXRlc3Vic2NyaWJlcicsCisJCSctLXZlcmJv c2UnLAorCQknLS1wZ2RhdGEnID0+ICRub2RlX3ItPmRhdGFfZGlyLAorCQknLS1wdWJsaXNoZXIt c2VydmVyJyA9PiAkcGNvbm5zdHIsCisJCSctLWRhdGFiYXNlJyA9PiAncG9zdGdyZXMnLAorCQkn LS1sb2dkaXInID0+ICRsb2dkaXIsCisJXSwKKwknY2hlY2sgZm9yIGxvZyBmaWxlIGNyZWF0aW9u IGZvciBwZ19jcmVhdGVTdWJzY3JpYmVyJyk7CisKKyMgQ2hlY2sgdGhhdCB0aGUgbG9nIGZpbGVz IHdlcmUgY3JlYXRlZAorbXkgQHNlcnZlcl9sb2dfZmlsZXMgPSBnbG9iICIkbG9nZGlyKi9wZ19j cmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2ciOworaXMoIHNjYWxhcihAc2VydmVyX2xvZ19maWxl cyksIDEsICIKKyAgICBwZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2cgZmlsZSB3YXMgY3Jl YXRlZCIpOworbXkgQGludGVybmFsX2xvZ19maWxlcyA9IGdsb2IgIiRsb2dkaXIqL3BnX2NyZWF0 ZXN1YnNjcmliZXJfaW50ZXJuYWwubG9nIjsKK2lzKCBzY2FsYXIoQGludGVybmFsX2xvZ19maWxl cyksIDEsICIKKyAgICBwZ19jcmVhdGVzdWJzY3JpYmVyX2ludGVybmFsLmxvZyBmaWxlIHdhcyBj cmVhdGVkIik7CisKICMgY2xlYW4gdXAKICRub2RlX3AtPnRlYXJkb3duX25vZGU7CiAkbm9kZV9z LT50ZWFyZG93bl9ub2RlOwogJG5vZGVfdC0+dGVhcmRvd25fbm9kZTsKICRub2RlX2YtPnRlYXJk b3duX25vZGU7Ciskbm9kZV9yLT50ZWFyZG93bl9ub2RlOwogCiBkb25lX3Rlc3RpbmcoKTsKLS0g CjIuNDMuMAoK --00000000000022ef3c0648c74f14--