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 1ucO6b-00CMOU-Bc for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Jul 2025 12:52:57 +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 1ucO6Y-002DQr-9O for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Jul 2025 12:52:54 +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 1ucO6X-002DQj-LU for pgsql-hackers@lists.postgresql.org; Thu, 17 Jul 2025 12:52:54 +0000 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ucO6W-007lAK-0r for pgsql-hackers@lists.postgresql.org; Thu, 17 Jul 2025 12:52:53 +0000 Received: by mail-qt1-x82f.google.com with SMTP id d75a77b69052e-4ab53fce526so14766811cf.2 for ; Thu, 17 Jul 2025 05:52:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752756770; x=1753361570; 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=veUf3J5YVSRD+xiSbkgbbb2e4pI/2jljFc2YF811gqo=; b=cbhFnN9FOyIU+/jsnOGpwbvNXPrWPMrJaYWInt8XzhT5JzcOFtBgtZ7Orz3+j+oj0o i0nd5XCOgtjGSD+uRWoO2WpGVS92OoflRg4wOmSRer5MCCLFDGf/zklaJlcATZQRgL5J DmZMVjzV+sTma7JuktyUgLFxawCaHoMchnBp3kU+OQ0wIoAZzR9YOR+2Y3fdLfwl+q2u W927SRsZuaYlIOkBTEkrMfjMOi0kcK7LhmFCMMOen6UzbkVFzYf5e/DsYJNxDqPVKHJ1 +cxeeGyOUGddGo8o6X0GjSdP4F8DOz5kk5vuztsThEpY7bdHj4vQCtGGvBmAfHW1qgyG JVLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752756770; x=1753361570; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=veUf3J5YVSRD+xiSbkgbbb2e4pI/2jljFc2YF811gqo=; b=Vvwb58m/v0/JLoWAPOfUxUgZgc8vxVrGVXQJ5/PGoXbYKnGjJFyWt9MHCVBAKBUvKo 7i4YyevSNvZnrzUzwn3clleqRaan3SFBA23LhL10rY/pOr+boAMPZ8tRdfMMb44dMYP5 5xjQoz1ll2WL53qlHB9B5DiJku2QvIsC0hMarjT1K1IY2QROJSq34gfogcF0ZZSaKuNn UGiYRi0KVpgRgiGe04mjju9ptPzSmORJhZiUQXiztpRbpl44+tjEkfjP4M17CsHLfXRW BtjSd5rtHuUTuVuCwALJSoMPVjk73zJyL1sJ9h9aXnpasZgA59jbe262a7HA0i5sskmF qIoA== X-Forwarded-Encrypted: i=1; AJvYcCUFrrg78FPuMPVhe4VjU2y5VzDHN6LKcJx+lKQZ9ZSP/8rt/pOf0lh14/DWuv1ekoR/zMXy2K43kvl0DXYD@lists.postgresql.org X-Gm-Message-State: AOJu0YxDdm27Ln5DB2zQinyBkq8lJAtJY5GdLUvuWic9L0KqKi5EABG2 o4rXzILLRjE7MYp8N2OFShkujSsB4CRS4bUsxTXpH5TURPDzBgd+dCH+7tbSUKdSyGyUvm6bZ+B fHZzLoYV8LgJX6Vb4RIsaY5AzQ2Ww9gk= X-Gm-Gg: ASbGncsBQfCUJXQqYFc4muBgWk0XZppFsMP1pg5F3h9OQr1cLTQzgVfO664GtmPhUDP 9dG4+TzHSHkXfYjf1mS9caGzJV8+Ky/IxIXsaqvWby2coLWxfxcgEBWEBTSm88FIOPv27Yt7dLy zCbjtoClVmF0b1Xw3YL1TcZzm9XJBZuwLapq2KXvNWl6TXgUHAkXhv1Y13G4CPhCUGxqdI/LZlD 8YLj/S45L2adjKEPzmFdq+ubHL9E1oSYkhW7cXv/g== X-Google-Smtp-Source: AGHT+IER7cDMnUHjZSfhhv8WVJGfR+xwi+eO/Zpczn7G9OIcEjUEIwUZUtPYk7y5yjfuzR0301qNeLnBGQWrhWrXFj0= X-Received: by 2002:a05:622a:14cd:b0:4ab:6281:11d0 with SMTP id d75a77b69052e-4ab93df5205mr104102091cf.50.1752756770499; Thu, 17 Jul 2025 05:52:50 -0700 (PDT) MIME-Version: 1.0 References: <202507171111.uo3vvgt6jp6j@alvherre.pgsql> In-Reply-To: <202507171111.uo3vvgt6jp6j@alvherre.pgsql> From: Mahendra Singh Thalor Date: Thu, 17 Jul 2025 18:22:38 +0530 X-Gm-Features: Ac12FXz2_jGtuMwkuOQjBh8U44y-haBOLMM-PP65EZdGrg_ltGFTXZZTo-Up6ek Message-ID: Subject: Re: Non-text mode for pg_dumpall To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Noah Misch , Andrew Dunstan , jian he , Srinath Reddy , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000af06e3063a1f7cbc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000af06e3063a1f7cbc Content-Type: multipart/alternative; boundary="000000000000af06e1063a1f7cba" --000000000000af06e1063a1f7cba Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks =C3=81lvaro for the feedback. On Thu, 17 Jul 2025 at 16:41, =C3=81lvaro Herrera wrote: > > On 2025-Jul-17, Mahendra Singh Thalor wrote: > > > To pg_restore, we are giving a dump of pg_dumpall which has a > > global.dat file and we have drop commands in the global.dat file so > > when we are using 'globals-only', we are dropping databases as we have > > DROP commands. > > As of now, we don't have any filter for global.dat file in restore. If > > a user wants to restore only globals(without droping db), then they > > should use 'globals-only' in pg_dumpall. > > Or if we don't want to DROP databases by global.dat file, then we > > should add a filter in pg_restore (hard to implement as we have SQL > > commands in global.dat file). > > I think dropping database is dangerous and makes no practical sense; > doing it renders pg_dumpall --clean completely unusable. You're arguing > from the point of view of ease of implementation, but that doesn't help > users. I have 2 more solutions for this case. *Solution1*: dump DROP database/role/tablespace commands in global_drop.dat (or dump only DROP DATABASE commands in global_drop.dat file) and skip restoring this file with globals-only. *Solution2*: add one more filter in restore to skip the "DROP DATABASE" command as we already have one filter for "CREATE USER". Based on *solution1*, I made a WIP patch. Here, I am attaching a patch for feedback. Note: please use this v02 patch for review. > > > I think, for this case, we can do some > > more doc changes. > > Example: pg_restore --globals-only : this will restore the global.dat > > file(including all drop commands). It might drop databases if any drop > > commands. > > I don't think doc changes are useful. > > -- > =C3=81lvaro Herrera 48=C2=B001'N 7=C2=B057'E =E2=80=94 https://www.EnterpriseDB.com/ > "I love the Postgres community. It's all about doing things _properly_. :-)" > (David Garamond) --=20 Thanks and Regards Mahendra Singh Thalor EnterpriseDB: http://www.enterprisedb.com --000000000000af06e1063a1f7cba Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks =C3=81lvaro for the feedback.

On Thu, 17 Ju= l 2025 at 16:41, =C3=81lvaro Herrera <alvherre@alvh.no-ip.org> wrote:
>
> On 2025-Jul= -17, Mahendra Singh Thalor wrote:
>
> > To pg_restore, we ar= e giving a dump of pg_dumpall which has a
> > global.dat file and = we have drop commands in the global.dat file so
> > when we are us= ing 'globals-only', we are dropping databases as we have
> &g= t; DROP commands.
> > As of now, we don't have any filter for = global.dat file in restore. If
> > a user wants to restore only gl= obals(without droping db), then they
> > should use 'globals-o= nly' in pg_dumpall.
> > Or if we don't want to DROP databa= ses by global.dat file, then we
> > should add a filter in pg_rest= ore (hard to implement as we have SQL
> > commands in global.dat f= ile).
>
> I think dropping database is dangerous and makes no p= ractical sense;
> doing it renders pg_dumpall --clean completely unus= able.=C2=A0 You're arguing
> from the point of view of ease of im= plementation, but that doesn't help
> users.

=
I have 2 more solutions for this case.
Solution1: dum= p DROP database/role/tablespace commands in global_drop.dat (or dump only D= ROP DATABASE commands in global_drop.dat file) and skip restoring=C2=A0this= file with globals-only.
Solution2: add one more filter in= restore to skip the "DROP DATABASE" command as we already have o= ne filter for "CREATE USER".

Based on solution1, I made a WIP patch. Here, I am attaching a patch for feedba= ck.

Note: please use this v02 patch for review.

>
> > I think, for this case, we can do some
>= ; > more doc changes.
> > Example: pg_restore --globals-only : = this will restore the global.dat
> > file(including all drop comma= nds). It might drop databases if any drop
> > commands.
>> I don't think doc changes are useful.
>
> --
> = =C3=81lvaro Herrera =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 48=C2= =B001'N 7=C2=B057'E =C2=A0=E2=80=94 =C2=A0https://www.EnterpriseDB.com/
> "I love the= Postgres community. It's all about doing things _properly_. :-)"<= br>> (David Garamond)



--
Thanks and Regards
Mahend= ra Singh Thalor
EnterpriseDB: ht= tp://www.enterprisedb.com
--000000000000af06e1063a1f7cba-- --000000000000af06e3063a1f7cbc Content-Type: application/octet-stream; name="v02-17-july-use-appendShellString-to-append-file-names.noci" Content-Disposition: attachment; filename="v02-17-july-use-appendShellString-to-append-file-names.noci" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_md7e2urk0 RnJvbSBjMTE1MzUyMjBkYmNiYmIxZTdjM2I1OWM2M2U2NjAwMmU1Y2ZhNjI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlbmRyYSBTaW5naCBUaGFsb3IgPG1haGk2cnVuQGdtYWls LmNvbT4KRGF0ZTogVGh1LCAxNyBKdWwgMjAyNSAxODoxNjo0NyArMDUzMApTdWJqZWN0OiBbUEFU Q0hdIHVzZSBhcHBlbmRTaGVsbFN0cmluZyB0byBhcHBlbmQgZmlsZSBuYW1lcwoKY3JlYXRlIGds b2JhbF9kcm9wLmRhdCBmaWxlIGZvciBkYXRhYmFzZS9yb2xlL3RhYmxlc3BhY2UKCm5vdGU6IHdl IHNob3VsZCBrZWVwIG9ubHkgRFJPUCBEQVRBQkFTRSBidXQgZm9yIHRlc3RpbmcsIGkga2VwdCBh bGwgMy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbCB8ICAgNiArLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYyAgICAgfCAgOTQgKysrKysrKysrKysrKysrKy0tLS0t LS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jICAgICB8IDEyMiArKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCA2 OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sCmluZGV4IGI2NDliZDNhNWFl Li5mNGViMzFmMjMyNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwKQEAgLTE1MCw3ICsxNTAs OSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgICAgQWNjZXNzIHByaXZpbGVnZXMg Zm9yIHRoZSBkYXRhYmFzZSBpdHNlbGYgYXJlIGFsc28gcmVzdG9yZWQsCiAgICAgICAgIHVubGVz cyA8b3B0aW9uPi0tbm8tYWNsPC9vcHRpb24+IGlzIHNwZWNpZmllZC4KICAgICAgICAgPG9wdGlv bj4tLWNyZWF0ZTwvb3B0aW9uPiBpcyByZXF1aXJlZCB3aGVuIHJlc3RvcmluZyBtdWx0aXBsZSBk YXRhYmFzZXMKLSAgICAgICAgZnJvbSBhbiBhcmNoaXZlIGNyZWF0ZWQgYnkgPGFwcGxpY2F0aW9u PnBnX2R1bXBhbGw8L2FwcGxpY2F0aW9uPi4KKyAgICAgICAgZnJvbSBhbiBhcmNoaXZlIGNyZWF0 ZWQgYnkgPGFwcGxpY2F0aW9uPnBnX2R1bXBhbGw8L2FwcGxpY2F0aW9uPiBhbmQgaWYKKyAgICAg ICAgZGF0YWJhc2UgaXMgYWxyZWFkeSBjcmVhdGVkLCB0aGVuIHRoaXMgd2lsbCByZXN0b3JlIGRh dGFiYXNlIHdpdGhvdXQgYW55CisgICAgICAgIGVycm9yLgogICAgICAgIDwvcGFyYT4KIAogICAg ICAgIDxwYXJhPgpAQCAtNjIxLDYgKzYyMyw4IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgog ICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgVGhpcyBvcHRpb24gaXMgb25s eSByZWxldmFudCB3aGVuIHJlc3RvcmluZyBmcm9tIGFuIGFyY2hpdmUgbWFkZSB1c2luZyA8YXBw bGljYXRpb24+cGdfZHVtcGFsbDwvYXBwbGljYXRpb24+LgorICAgICAgICBJZiB0aGVyZSBpcyBu byBkYXRhYmFzZSBjb25uZWN0aW9uIGV4aXN0LCB0aGVuIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT4gd2lsbCBiZSBjb25zaWRlcmVkCisgICAgICAg IGFzIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gb25s eS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcGFsbC5jCmluZGV4IDEwMDMxN2IxYWE5Li5lOTQ3MjU1YzUyYyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcGFsbC5jCkBAIC02NDIsNiArNjQyLDI1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkJICovCiAJCWlmIChvdXRwdXRfY2xlYW4pCiAJCXsKKwkJCUZJTEUgKmRyb3BfT1BG ID0gTlVMTDsKKwkJCUZJTEUgKm9sZF9PUEYgPSBPUEY7CisKKwkJCWlmIChhcmNoRHVtcEZvcm1h dCAhPSBhcmNoTnVsbCkKKwkJCXsKKwkJCQljaGFyCQlnbG9iYWxfZHJvcF9wYXRoW01BWFBHUEFU SF07CisKKwkJCQlzbnByaW50ZihnbG9iYWxfZHJvcF9wYXRoLCBNQVhQR1BBVEgsICIlcy9nbG9i YWxfZHJvcC5kYXQiLCBmaWxlbmFtZSk7CisKKwkJCQlkcm9wX09QRiA9IGZvcGVuKGdsb2JhbF9k cm9wX3BhdGgsIFBHX0JJTkFSWV9XKTsKKworCQkJCWlmICghZHJvcF9PUEYpCisJCQkJCXBnX2Zh dGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBnbG9iYWxfZHJvcF9wYXRoKTsK KworCQkJfQorCisJCQlpZiAoZHJvcF9PUEYpCisJCQkJT1BGID0gZHJvcF9PUEY7CisKIAkJCWlm ICghZ2xvYmFsc19vbmx5ICYmICFyb2xlc19vbmx5ICYmICF0YWJsZXNwYWNlc19vbmx5KQogCQkJ CWRyb3BEQnMoY29ubik7CiAKQEAgLTY1MCw2ICs2NjksMTIgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCiAJCQlpZiAoIXRhYmxlc3BhY2VzX29ubHkpCiAJCQkJZHJvcFJvbGVzKGNv bm4pOworCisJCQlpZiAoZHJvcF9PUEYpCisJCQl7CisJCQkJZmNsb3NlKGRyb3BfT1BGKTsKKwkJ CQlPUEYgPSBvbGRfT1BGOworCQkJfQogCQl9CiAKIAkJLyoKQEAgLTE2MjIsOCArMTY0Nyw4IEBA IGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBBcmNoaXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0 KQogewogCVBHcmVzdWx0ICAgKnJlczsKIAlpbnQJCQlpOwotCWNoYXIJCWRiX3N1YmRpcltNQVhQ R1BBVEhdOwotCWNoYXIJCWRiZmlsZXBhdGhbTUFYUEdQQVRIXTsKKwlQUUV4cEJ1ZmZlckRhdGEJ ZGJfc3ViZGlyOworCVBRRXhwQnVmZmVyRGF0YQlkYmZpbGVwYXRoOwogCUZJTEUJICAgKm1hcF9m aWxlID0gTlVMTDsKIAogCS8qCkBAIC0xNjUzLDIwICsxNjc4LDI4IEBAIGR1bXBEYXRhYmFzZXMo UEdjb25uICpjb25uLCBBcmNoaXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0KQogCSAqLwogCWlmIChh cmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkKIAl7Ci0JCWNoYXIJCW1hcF9maWxlX3BhdGhbTUFY UEdQQVRIXTsKKwkJUFFFeHBCdWZmZXJEYXRhIG1hcF9maWxlX3BhdGg7CiAKLQkJc25wcmludGYo ZGJfc3ViZGlyLCBNQVhQR1BBVEgsICIlcy9kYXRhYmFzZXMiLCBmaWxlbmFtZSk7CisJCWluaXRQ UUV4cEJ1ZmZlcigmZGJfc3ViZGlyKTsKKwkJaW5pdFBRRXhwQnVmZmVyKCZkYmZpbGVwYXRoKTsK KwkJaW5pdFBRRXhwQnVmZmVyKCZtYXBfZmlsZV9wYXRoKTsKKworCQlhcHBlbmRTaGVsbFN0cmlu ZygmZGJfc3ViZGlyLCBmaWxlbmFtZSk7CisJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcigmZGJfc3Vi ZGlyLCAnLycpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmZGJfc3ViZGlyLCAiZGF0YWJhc2Vz Iik7CiAKIAkJLyogQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IHdpdGggJ2RhdGFiYXNlcycgbmFtZSB1 bmRlciBtYWluIGRpcmVjdG9yeS4gKi8KLQkJaWYgKG1rZGlyKGRiX3N1YmRpciwgcGdfZGlyX2Ny ZWF0ZV9tb2RlKSAhPSAwKQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5 IFwiJXNcIjogJW0iLCBkYl9zdWJkaXIpOworCQlpZiAobWtkaXIoZGJfc3ViZGlyLmRhdGEsIHBn X2Rpcl9jcmVhdGVfbW9kZSkgIT0gMCkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIGRp cmVjdG9yeSBcIiVzXCI6ICVtIiwgZGJfc3ViZGlyLmRhdGEpOwogCi0JCXNucHJpbnRmKG1hcF9m aWxlX3BhdGgsIE1BWFBHUEFUSCwgIiVzL21hcC5kYXQiLCBmaWxlbmFtZSk7CisJCWFwcGVuZFNo ZWxsU3RyaW5nKCZtYXBfZmlsZV9wYXRoLCBmaWxlbmFtZSk7CisJCWFwcGVuZFBRRXhwQnVmZmVy Q2hhcigmbWFwX2ZpbGVfcGF0aCwgJy8nKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJm1hcF9m aWxlX3BhdGgsICJtYXAuZGF0Iik7CiAKIAkJLyogQ3JlYXRlIGEgbWFwIGZpbGUgKHRvIHN0b3Jl IGRib2lkIGFuZCBkYm5hbWUpICovCi0JCW1hcF9maWxlID0gZm9wZW4obWFwX2ZpbGVfcGF0aCwg UEdfQklOQVJZX1cpOworCQltYXBfZmlsZSA9IGZvcGVuKG1hcF9maWxlX3BhdGguZGF0YSwgUEdf QklOQVJZX1cpOwogCQlpZiAoIW1hcF9maWxlKQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVu IGZpbGUgXCIlc1wiOiAlbSIsIG1hcF9maWxlX3BhdGgpOworCQkJcGdfZmF0YWwoImNvdWxkIG5v dCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIG1hcF9maWxlX3BhdGguZGF0YSk7CiAJfQogCiAJZm9y IChpID0gMDsgaSA8IFBRbnR1cGxlcyhyZXMpOyBpKyspCkBAIC0xNjkzLDEyICsxNzI2LDE2IEBA IGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBBcmNoaXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0 KQogCQkgKi8KIAkJaWYgKGFyY2hEdW1wRm9ybWF0ICE9IGFyY2hOdWxsKQogCQl7CisJCQlyZXNl dFBRRXhwQnVmZmVyKCZkYmZpbGVwYXRoKTsKKworCQkJYXBwZW5kU2hlbGxTdHJpbmcoJmRiZmls ZXBhdGgsIGRiX3N1YmRpci5kYXRhKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcigmZGJmaWxl cGF0aCwgJy8nKTsKKwkJCWFwcGVuZFNoZWxsU3RyaW5nKCZkYmZpbGVwYXRoLCBvaWQpOworCiAJ CQlpZiAoYXJjaER1bXBGb3JtYXQgPT0gYXJjaEN1c3RvbSkKLQkJCQlzbnByaW50ZihkYmZpbGVw YXRoLCBNQVhQR1BBVEgsICJcIiVzXCIvXCIlc1wiLmRtcCIsIGRiX3N1YmRpciwgb2lkKTsKKwkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmZGJmaWxlcGF0aCwgIi5kbXAiKTsKIAkJCWVsc2UgaWYg KGFyY2hEdW1wRm9ybWF0ID09IGFyY2hUYXIpCi0JCQkJc25wcmludGYoZGJmaWxlcGF0aCwgTUFY UEdQQVRILCAiXCIlc1wiL1wiJXNcIi50YXIiLCBkYl9zdWJkaXIsIG9pZCk7Ci0JCQllbHNlCi0J CQkJc25wcmludGYoZGJmaWxlcGF0aCwgTUFYUEdQQVRILCAiXCIlc1wiL1wiJXNcIiIsIGRiX3N1 YmRpciwgb2lkKTsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmZGJmaWxlcGF0aCwgIi50YXIi KTsKIAogCQkJLyogUHV0IG9uZSBsaW5lIGVudHJ5IGZvciBkYm9pZCBhbmQgZGJuYW1lIGluIG1h cCBmaWxlLiAqLwogCQkJZnByaW50ZihtYXBfZmlsZSwgIiVzICVzXG4iLCBvaWQsIGRibmFtZSk7 CkBAIC0xNzI4LDI2ICsxNzY1LDIzIEBAIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBBcmNo aXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0KQogCQllbHNlCiAJCQljcmVhdGVfb3B0cyA9ICItLWNy ZWF0ZSI7CiAKLQkJaWYgKGZpbGVuYW1lKQorCQlpZiAoZmlsZW5hbWUgJiYgYXJjaER1bXBGb3Jt YXQgPT0gYXJjaE51bGwpCiAJCQlmY2xvc2UoT1BGKTsKIAotCQlyZXQgPSBydW5QZ0R1bXAoZGJu YW1lLCBjcmVhdGVfb3B0cywgZGJmaWxlcGF0aCwgYXJjaER1bXBGb3JtYXQpOworCQlyZXQgPSBy dW5QZ0R1bXAoZGJuYW1lLCBjcmVhdGVfb3B0cywgZGJmaWxlcGF0aC5kYXRhLCBhcmNoRHVtcEZv cm1hdCk7CiAJCWlmIChyZXQgIT0gMCkKIAkJCXBnX2ZhdGFsKCJwZ19kdW1wIGZhaWxlZCBvbiBk YXRhYmFzZSBcIiVzXCIsIGV4aXRpbmciLCBkYm5hbWUpOwogCi0JCWlmIChmaWxlbmFtZSkKKwkJ LyoKKwkJICogRm9yIG5vbi1wbGFpbiBtb2RlLCBubyBuZWVkIHRvIHJlLW9wZW4gZmlsZSBhcyBv bmx5IG9uY2Ugd2Ugd3JpdGUKKwkJICogZGF0YSBpbnRvIGZpbGUuCisJCSAqLworCQlpZiAoZmls ZW5hbWUgJiYgYXJjaER1bXBGb3JtYXQgPT0gYXJjaE51bGwpCiAJCXsKLQkJCWNoYXIJCWdsb2Jh bF9wYXRoW01BWFBHUEFUSF07Ci0KLQkJCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkK LQkJCQlzbnByaW50ZihnbG9iYWxfcGF0aCwgTUFYUEdQQVRILCAiJXMvZ2xvYmFsLmRhdCIsIGZp bGVuYW1lKTsKLQkJCWVsc2UKLQkJCQlzbnByaW50ZihnbG9iYWxfcGF0aCwgTUFYUEdQQVRILCAi JXMiLCBmaWxlbmFtZSk7Ci0KLQkJCU9QRiA9IGZvcGVuKGdsb2JhbF9wYXRoLCBQR19CSU5BUllf QSk7CisJCQlPUEYgPSBmb3BlbihmaWxlbmFtZSwgUEdfQklOQVJZX0EpOwogCQkJaWYgKCFPUEYp CiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZS1vcGVuIHRoZSBvdXRwdXQgZmlsZSBcIiVzXCI6 ICVtIiwKLQkJCQkJCSBnbG9iYWxfcGF0aCk7CisJCQkJCQkgZmlsZW5hbWUpOwogCQl9CiAJfQog CkBAIC0xNzc0LDE0ICsxODA4LDE3IEBAIHJ1blBnRHVtcChjb25zdCBjaGFyICpkYm5hbWUsIGNv bnN0IGNoYXIgKmNyZWF0ZV9vcHRzLCBjaGFyICpkYmZpbGUsCiAJaW5pdFBRRXhwQnVmZmVyKCZj b25uc3RyYnVmKTsKIAlpbml0UFFFeHBCdWZmZXIoJmNtZCk7CiAKKwlwcmludGZQUUV4cEJ1ZmZl cigmY21kLCAiXCIlc1wiICVzICVzICIsIHBnX2R1bXBfYmluLAorCQkJcGdkdW1wb3B0cy0+ZGF0 YSwgY3JlYXRlX29wdHMpOworCiAJLyoKIAkgKiBJZiB0aGlzIGlzIG5vdCBhIHBsYWluIGZvcm1h dCBkdW1wLCB0aGVuIGFwcGVuZCBmaWxlIG5hbWUgYW5kIGR1bXAKIAkgKiBmb3JtYXQgdG8gdGhl IHBnX2R1bXAgY29tbWFuZCB0byBnZXQgYXJjaGl2ZSBkdW1wLgogCSAqLwogCWlmIChhcmNoRHVt cEZvcm1hdCAhPSBhcmNoTnVsbCkKIAl7Ci0JCXByaW50ZlBRRXhwQnVmZmVyKCZjbWQsICJcIiVz XCIgLWYgJXMgJXMiLCBwZ19kdW1wX2JpbiwKLQkJCQkJCSAgZGJmaWxlLCBjcmVhdGVfb3B0cyk7 CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjbWQsICIgLWYgIik7CisJCWFwcGVuZFNoZWxsU3Ry aW5nKCZjbWQsIGRiZmlsZSk7CiAKIAkJaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFyY2hEaXJlY3Rv cnkpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiICAtLWZvcm1hdD1kaXJlY3Rvcnkg Iik7CkBAIC0xNzkyLDkgKzE4MjksNiBAQCBydW5QZ0R1bXAoY29uc3QgY2hhciAqZGJuYW1lLCBj b25zdCBjaGFyICpjcmVhdGVfb3B0cywgY2hhciAqZGJmaWxlLAogCX0KIAllbHNlCiAJewotCQlw cmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVzICVzIiwgcGdfZHVtcF9iaW4sCi0JCQkJ CQkgIHBnZHVtcG9wdHMtPmRhdGEsIGNyZWF0ZV9vcHRzKTsKLQogCQkvKgogCQkgKiBJZiB3ZSBo YXZlIGEgZmlsZW5hbWUsIHVzZSB0aGUgdW5kb2N1bWVudGVkIHBsYWluLWFwcGVuZCBwZ19kdW1w CiAJCSAqIGZvcm1hdC4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCmluZGV4IDZlZjc4OWNiMDZkLi41MDQ2YzAw NDc3ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYworKysgYi9zcmMv YmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCkBAIC02NCw4ICs2NCw4IEBAIHN0YXRpYyBpbnQJcmVh ZF9vbmVfc3RhdGVtZW50KFN0cmluZ0luZm8gaW5CdWYsIEZJTEUgKnBmaWxlKTsKIHN0YXRpYyBp bnQJcmVzdG9yZV9hbGxfZGF0YWJhc2VzKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZHVtcGRp cnBhdGgsCiAJCQkJCQkJCSAgU2ltcGxlU3RyaW5nTGlzdCBkYl9leGNsdWRlX3BhdHRlcm5zLCBS ZXN0b3JlT3B0aW9ucyAqb3B0cywgaW50IG51bVdvcmtlcnMpOwogc3RhdGljIGludAlwcm9jZXNz X2dsb2JhbF9zcWxfY29tbWFuZHMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0 aCwKLQkJCQkJCQkJCQljb25zdCBjaGFyICpvdXRmaWxlKTsKLXN0YXRpYyB2b2lkIGNvcHlfb3Jf cHJpbnRfZ2xvYmFsX2ZpbGUoY29uc3QgY2hhciAqb3V0ZmlsZSwgRklMRSAqcGZpbGUpOworCQkJ CQkJCQkJCWNvbnN0IGNoYXIgKm91dGZpbGUsIGJvb2wgZHJvcF9jb21tYW5kcyk7CitzdGF0aWMg dm9pZCBjb3B5X29yX3ByaW50X2dsb2JhbF9maWxlKGNvbnN0IGNoYXIgKm91dGZpbGUsIEZJTEUg KnBmaWxlLCBGSUxFICpkZmlsZSk7CiBzdGF0aWMgaW50CWdldF9kYm5hbWVzX2xpc3RfdG9fcmVz dG9yZShQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJCQkJU2ltcGxlUHRyTGlzdCAqZGJuYW1lX29pZF9s aXN0LAogCQkJCQkJCQkJCVNpbXBsZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9wYXR0ZXJucyk7CkBA IC01NTIsNyArNTUyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkgKiBjb21t YW5kcy4KIAkJCSAqLwogCQkJbl9lcnJvcnMgPSBwcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFuZHMo Y29ubiwgaW5wdXRGaWxlU3BlYywKLQkJCQkJCQkJCQkJCSAgIG9wdHMtPmZpbGVuYW1lKTsKKwkJ CQkJCQkJCQkJCSAgIG9wdHMtPmZpbGVuYW1lLCBmYWxzZSk7CiAKIAkJCWlmIChjb25uKQogCQkJ CVBRZmluaXNoKGNvbm4pOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgZ2V0X2RibmFtZV9vaWRfbGlz dF9mcm9tX21maWxlKGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoLCBTaW1wbGVQdHJMaXN0ICpkYm5h bWVfb2kKIHsKIAlTdHJpbmdJbmZvRGF0YSBsaW5lYnVmOwogCUZJTEUJICAgKnBmaWxlOwotCWNo YXIJCW1hcF9maWxlX3BhdGhbTUFYUEdQQVRIXTsKKwlQUUV4cEJ1ZmZlckRhdGEJCW1hcF9maWxl X3BhdGg7CiAJaW50CQkJY291bnQgPSAwOwogCiAKQEAgLTEwNTIsMTMgKzEwNTIsMTYgQEAgZ2V0 X2RibmFtZV9vaWRfbGlzdF9mcm9tX21maWxlKGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoLCBTaW1w bGVQdHJMaXN0ICpkYm5hbWVfb2kKIAkJcmV0dXJuIDA7CiAJfQogCi0Jc25wcmludGYobWFwX2Zp bGVfcGF0aCwgTUFYUEdQQVRILCAiJXMvbWFwLmRhdCIsIGR1bXBkaXJwYXRoKTsKKwlpbml0UFFF eHBCdWZmZXIoJm1hcF9maWxlX3BhdGgpOworCWFwcGVuZFNoZWxsU3RyaW5nKCZtYXBfZmlsZV9w YXRoLCBkdW1wZGlycGF0aCk7CisJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKCZtYXBfZmlsZV9wYXRo LCAnLycpOworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZtYXBfZmlsZV9wYXRoLCAibWFwLmRhdCIp OwogCiAJLyogT3BlbiBtYXAuZGF0IGZpbGUuICovCi0JcGZpbGUgPSBmb3BlbihtYXBfZmlsZV9w YXRoLCBQR19CSU5BUllfUik7CisJcGZpbGUgPSBmb3BlbihtYXBfZmlsZV9wYXRoLmRhdGEsIFBH X0JJTkFSWV9SKTsKIAogCWlmIChwZmlsZSA9PSBOVUxMKQotCQlwZ19mYXRhbCgiY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgbWFwX2ZpbGVfcGF0aCk7CisJCXBnX2ZhdGFsKCJjb3Vs ZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBtYXBfZmlsZV9wYXRoLmRhdGEpOwogCiAJaW5p dFN0cmluZ0luZm8oJmxpbmVidWYpOwogCkBAIC0xMDg2LDExICsxMDg5LDExIEBAIGdldF9kYm5h bWVfb2lkX2xpc3RfZnJvbV9tZmlsZShjb25zdCBjaGFyICpkdW1wZGlycGF0aCwgU2ltcGxlUHRy TGlzdCAqZGJuYW1lX29pCiAKIAkJLyogUmVwb3J0IGVycm9yIGFuZCBleGl0IGlmIHRoZSBmaWxl IGhhcyBhbnkgY29ycnVwdGVkIGRhdGEuICovCiAJCWlmICghT2lkSXNWYWxpZChkYl9vaWQpIHx8 IG5hbWVsZW4gPD0gMSkKLQkJCXBnX2ZhdGFsKCJpbnZhbGlkIGVudHJ5IGluIGZpbGUgXCIlc1wi IG9uIGxpbmUgJWQiLCBtYXBfZmlsZV9wYXRoLAorCQkJcGdfZmF0YWwoImludmFsaWQgZW50cnkg aW4gZmlsZSBcIiVzXCIgb24gbGluZSAlZCIsIG1hcF9maWxlX3BhdGguZGF0YSwKIAkJCQkJIGNv dW50ICsgMSk7CiAKIAkJcGdfbG9nX2luZm8oImZvdW5kIGRhdGFiYXNlIFwiJXNcIiAoT0lEOiAl dSkgaW4gZmlsZSBcIiVzXCIiLAotCQkJCQlkYm5hbWUsIGRiX29pZCwgbWFwX2ZpbGVfcGF0aCk7 CisJCQkJCWRibmFtZSwgZGJfb2lkLCBtYXBfZmlsZV9wYXRoLmRhdGEpOwogCiAJCWRiaWRuYW1l ID0gcGdfbWFsbG9jKG9mZnNldG9mKERiT2lkTmFtZSwgc3RyKSArIG5hbWVsZW4gKyAxKTsKIAkJ ZGJpZG5hbWUtPm9pZCA9IGRiX29pZDsKQEAgLTExNDAsNyArMTE0Myw3IEBAIHJlc3RvcmVfYWxs X2RhdGFiYXNlcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoLAogCiAJLyog SWYgbWFwLmRhdCBoYXMgbm8gZW50cmllcywgcmV0dXJuIGFmdGVyIHByb2Nlc3NpbmcgZ2xvYmFs LmRhdCAqLwogCWlmIChkYm5hbWVfb2lkX2xpc3QuaGVhZCA9PSBOVUxMKQotCQlyZXR1cm4gcHJv Y2Vzc19nbG9iYWxfc3FsX2NvbW1hbmRzKGNvbm4sIGR1bXBkaXJwYXRoLCBvcHRzLT5maWxlbmFt ZSk7CisJCXJldHVybiBwcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFuZHMoY29ubiwgZHVtcGRpcnBh dGgsIG9wdHMtPmZpbGVuYW1lLCB0cnVlKTsKIAogCXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJmb3Vu ZCAlZCBkYXRhYmFzZSBuYW1lIGluIFwiJXNcIiIsCiAJCQkJCQkgImZvdW5kICVkIGRhdGFiYXNl IG5hbWVzIGluIFwiJXNcIiIsCkBAIC0xMTczLDcgKzExNzYsNyBAQCByZXN0b3JlX2FsbF9kYXRh YmFzZXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwKIAkJCQkJCQkJCQkJ CSBkYl9leGNsdWRlX3BhdHRlcm5zKTsKIAogCS8qIE9wZW4gZ2xvYmFsLmRhdCBmaWxlIGFuZCBl eGVjdXRlL2FwcGVuZCBhbGwgdGhlIGdsb2JhbCBzcWwgY29tbWFuZHMuICovCi0Jbl9lcnJvcnNf dG90YWwgPSBwcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFuZHMoY29ubiwgZHVtcGRpcnBhdGgsIG9w dHMtPmZpbGVuYW1lKTsKKwluX2Vycm9yc190b3RhbCA9IHByb2Nlc3NfZ2xvYmFsX3NxbF9jb21t YW5kcyhjb25uLCBkdW1wZGlycGF0aCwgb3B0cy0+ZmlsZW5hbWUsIHRydWUpOwogCiAJLyogQ2xv c2UgdGhlIGRiIGNvbm5lY3Rpb24gYXMgd2UgYXJlIGRvbmUgd2l0aCBnbG9iYWxzIGFuZCBwYXR0 ZXJucy4gKi8KIAlpZiAoY29ubikKQEAgLTEzMDQsMjIgKzEzMDcsMjUgQEAgcmVzdG9yZV9hbGxf ZGF0YWJhc2VzKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCiAgKiBSZXR1 cm5zIHRoZSBudW1iZXIgb2YgZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgZ2xvYmFsLmRhdAogICov CiBzdGF0aWMgaW50Ci1wcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFuZHMoUEdjb25uICpjb25uLCBj b25zdCBjaGFyICpkdW1wZGlycGF0aCwgY29uc3QgY2hhciAqb3V0ZmlsZSkKK3Byb2Nlc3NfZ2xv YmFsX3NxbF9jb21tYW5kcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoLCBj b25zdCBjaGFyICpvdXRmaWxlLCBib29sIGRyb3BfY29tbWFuZHMpCiB7Ci0JY2hhcgkJZ2xvYmFs X2ZpbGVfcGF0aFtNQVhQR1BBVEhdOworCVBRRXhwQnVmZmVyRGF0YQkJZ2xvYmFsX2ZpbGVfcGF0 aDsKIAlQR3Jlc3VsdCAgICpyZXN1bHQ7CiAJU3RyaW5nSW5mb0RhdGEgc3Fsc3RhdGVtZW50LAog CQkJCXVzZXJfY3JlYXRlOwogCUZJTEUJICAgKnBmaWxlOwogCWludAkJCW5fZXJyb3JzID0gMDsK IAotCXNucHJpbnRmKGdsb2JhbF9maWxlX3BhdGgsIE1BWFBHUEFUSCwgIiVzL2dsb2JhbC5kYXQi LCBkdW1wZGlycGF0aCk7CisJaW5pdFBRRXhwQnVmZmVyKCZnbG9iYWxfZmlsZV9wYXRoKTsKKwlh cHBlbmRTaGVsbFN0cmluZygmZ2xvYmFsX2ZpbGVfcGF0aCwgZHVtcGRpcnBhdGgpOworCWFwcGVu ZFBRRXhwQnVmZmVyQ2hhcigmZ2xvYmFsX2ZpbGVfcGF0aCwgJy8nKTsKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmZ2xvYmFsX2ZpbGVfcGF0aCwgImdsb2JhbC5kYXQiKTsKIAogCS8qIE9wZW4gZ2xv YmFsLmRhdCBmaWxlLiAqLwotCXBmaWxlID0gZm9wZW4oZ2xvYmFsX2ZpbGVfcGF0aCwgUEdfQklO QVJZX1IpOworCXBmaWxlID0gZm9wZW4oZ2xvYmFsX2ZpbGVfcGF0aC5kYXRhLCBQR19CSU5BUllf Uik7CiAKIAlpZiAocGZpbGUgPT0gTlVMTCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZp bGUgXCIlc1wiOiAlbSIsIGdsb2JhbF9maWxlX3BhdGgpOworCQlwZ19mYXRhbCgiY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgZ2xvYmFsX2ZpbGVfcGF0aC5kYXRhKTsKIAogCS8qCiAJ ICogSWYgb3V0ZmlsZSBpcyBnaXZlbiwgdGhlbiBqdXN0IGNvcHkgYWxsIGdsb2JhbC5kYXQgZmls ZSBkYXRhIGludG8KQEAgLTEzMjcsNyArMTMzMywyMCBAQCBwcm9jZXNzX2dsb2JhbF9zcWxfY29t bWFuZHMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwgY29uc3QgY2hhciAq bwogCSAqLwogCWlmIChvdXRmaWxlKQogCXsKLQkJY29weV9vcl9wcmludF9nbG9iYWxfZmlsZShv dXRmaWxlLCBwZmlsZSk7CisJCUZJTEUgKmRmaWxlID0gTlVMTDsKKworCQlpZiAoZHJvcF9jb21t YW5kcykKKwkJeworCQkJcmVzZXRQUUV4cEJ1ZmZlcigmZ2xvYmFsX2ZpbGVfcGF0aCk7CisJCQlh cHBlbmRTaGVsbFN0cmluZygmZ2xvYmFsX2ZpbGVfcGF0aCwgZHVtcGRpcnBhdGgpOworCQkJYXBw ZW5kUFFFeHBCdWZmZXJDaGFyKCZnbG9iYWxfZmlsZV9wYXRoLCAnLycpOworCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmdsb2JhbF9maWxlX3BhdGgsICJnbG9iYWxfZHJvcC5kYXQiKTsKKworCQkJ LyogT3BlbiBnbG9iYWxfZHJvcC5kYXQgZmlsZS4gKi8KKwkJCWRmaWxlID0gZm9wZW4oZ2xvYmFs X2ZpbGVfcGF0aC5kYXRhLCBQR19CSU5BUllfUik7CisJCX0KKworCQljb3B5X29yX3ByaW50X2ds b2JhbF9maWxlKG91dGZpbGUsIHBmaWxlLCBkZmlsZSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAt MTM0MSwzNiArMTM2MCw1NiBAQCBwcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFuZHMoUEdjb25uICpj b25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwgY29uc3QgY2hhciAqbwogCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJnVzZXJfY3JlYXRlLCBQUXVzZXIoY29ubikpOwogCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKCZ1c2VyX2NyZWF0ZSwgJzsnKTsKIAotCS8qIFByb2Nlc3MgZmlsZSB0aWxsIEVPRiBh bmQgZXhlY3V0ZSBzcWwgc3RhdGVtZW50cy4gKi8KLQl3aGlsZSAocmVhZF9vbmVfc3RhdGVtZW50 KCZzcWxzdGF0ZW1lbnQsIHBmaWxlKSAhPSBFT0YpCisJd2hpbGUodHJ1ZSkKIAl7Ci0JCS8qIGRv bid0IHRyeSB0byBjcmVhdGUgdGhlIHJvbGUgd2UgYXJlIGNvbm5lY3RlZCBhcyAqLwotCQlpZiAo c3Ryc3RyKHNxbHN0YXRlbWVudC5kYXRhLCB1c2VyX2NyZWF0ZS5kYXRhKSkKLQkJCWNvbnRpbnVl OworCQkvKiBQcm9jZXNzIGZpbGUgdGlsbCBFT0YgYW5kIGV4ZWN1dGUgc3FsIHN0YXRlbWVudHMu ICovCisJCXdoaWxlIChyZWFkX29uZV9zdGF0ZW1lbnQoJnNxbHN0YXRlbWVudCwgcGZpbGUpICE9 IEVPRikKKwkJeworCQkJLyogZG9uJ3QgdHJ5IHRvIGNyZWF0ZSB0aGUgcm9sZSB3ZSBhcmUgY29u bmVjdGVkIGFzICovCisJCQlpZiAoc3Ryc3RyKHNxbHN0YXRlbWVudC5kYXRhLCB1c2VyX2NyZWF0 ZS5kYXRhKSkKKwkJCQljb250aW51ZTsKKworCQkJcGdfbG9nX2luZm8oImV4ZWN1dGluZyBxdWVy eTogJXMiLCBzcWxzdGF0ZW1lbnQuZGF0YSk7CisJCQlyZXN1bHQgPSBQUWV4ZWMoY29ubiwgc3Fs c3RhdGVtZW50LmRhdGEpOworCisJCQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkpCisJ CQl7CisJCQkJY2FzZSBQR1JFU19DT01NQU5EX09LOgorCQkJCWNhc2UgUEdSRVNfVFVQTEVTX09L OgorCQkJCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6 CisJCQkJCW5fZXJyb3JzKys7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGV4ZWN1dGUg cXVlcnk6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJCQlwZ19sb2dfZXJyb3JfZGV0 YWlsKCJDb21tYW5kIHdhczogJXMiLCBzcWxzdGF0ZW1lbnQuZGF0YSk7CisJCQl9CisJCQlQUWNs ZWFyKHJlc3VsdCk7CisJCX0KIAotCQlwZ19sb2dfaW5mbygiZXhlY3V0aW5nIHF1ZXJ5OiAlcyIs IHNxbHN0YXRlbWVudC5kYXRhKTsKLQkJcmVzdWx0ID0gUFFleGVjKGNvbm4sIHNxbHN0YXRlbWVu dC5kYXRhKTsKKwkJZmNsb3NlKHBmaWxlKTsKIAotCQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJl c3VsdCkpCisJCWlmIChkcm9wX2NvbW1hbmRzKQogCQl7Ci0JCQljYXNlIFBHUkVTX0NPTU1BTkRf T0s6Ci0JCQljYXNlIFBHUkVTX1RVUExFU19PSzoKLQkJCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6 Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCW5fZXJyb3JzKys7Ci0JCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgZXhlY3V0ZSBxdWVyeTogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7 Ci0JCQkJcGdfbG9nX2Vycm9yX2RldGFpbCgiQ29tbWFuZCB3YXM6ICVzIiwgc3Fsc3RhdGVtZW50 LmRhdGEpOworCQkJZHJvcF9jb21tYW5kcyA9IGZhbHNlOworCQkJcmVzZXRQUUV4cEJ1ZmZlcigm Z2xvYmFsX2ZpbGVfcGF0aCk7CisJCQlhcHBlbmRTaGVsbFN0cmluZygmZ2xvYmFsX2ZpbGVfcGF0 aCwgZHVtcGRpcnBhdGgpOworCQkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKCZnbG9iYWxfZmlsZV9w YXRoLCAnLycpOworCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmdsb2JhbF9maWxlX3BhdGgsICJn bG9iYWxfZHJvcC5kYXQiKTsKKworCQkJLyogT3BlbiBnbG9iYWxfZHJvcC5kYXQgZmlsZS4gKi8K KwkJCXBmaWxlID0gZm9wZW4oZ2xvYmFsX2ZpbGVfcGF0aC5kYXRhLCBQR19CSU5BUllfUik7CisK KwkJCWlmIChwZmlsZSkKKwkJCQljb250aW51ZTsKIAkJfQotCQlQUWNsZWFyKHJlc3VsdCk7CisJ CWJyZWFrOwogCX0KIAogCS8qIFByaW50IGEgc3VtbWFyeSBvZiBpZ25vcmVkIGVycm9ycyBkdXJp bmcgZ2xvYmFsLmRhdC4gKi8KIAlpZiAobl9lcnJvcnMpCiAJCXBnX2xvZ193YXJuaW5nKG5nZXR0 ZXh0KCJpZ25vcmVkICVkIGVycm9yIGluIGZpbGUgXCIlc1wiIiwKIAkJCQkJCQkJImlnbm9yZWQg JWQgZXJyb3JzIGluIGZpbGUgXCIlc1wiIiwgbl9lcnJvcnMpLAotCQkJCQkgICBuX2Vycm9ycywg Z2xvYmFsX2ZpbGVfcGF0aCk7Ci0JZmNsb3NlKHBmaWxlKTsKKwkJCQkJICAgbl9lcnJvcnMsIGds b2JhbF9maWxlX3BhdGguZGF0YSk7CiAKIAlyZXR1cm4gbl9lcnJvcnM7CiB9CkBAIC0xMzgyLDcg KzE0MjEsNyBAQCBwcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFuZHMoUEdjb25uICpjb25uLCBjb25z dCBjaGFyICpkdW1wZGlycGF0aCwgY29uc3QgY2hhciAqbwogICogdGhlbiBwcmludCBjb21tYW5k cyB0byBzdGRvdXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1jb3B5X29yX3ByaW50X2dsb2JhbF9maWxl KGNvbnN0IGNoYXIgKm91dGZpbGUsIEZJTEUgKnBmaWxlKQorY29weV9vcl9wcmludF9nbG9iYWxf ZmlsZShjb25zdCBjaGFyICpvdXRmaWxlLCBGSUxFICpwZmlsZSwgRklMRSAqZGZpbGUpCiB7CiAJ Y2hhcgkJb3V0X2ZpbGVfcGF0aFtNQVhQR1BBVEhdOwogCUZJTEUJICAgKk9QRjsKQEAgLTE0MDcs NiArMTQ0NiwxNSBAQCBjb3B5X29yX3ByaW50X2dsb2JhbF9maWxlKGNvbnN0IGNoYXIgKm91dGZp bGUsIEZJTEUgKnBmaWxlKQogCXdoaWxlICgoYyA9IGZnZXRjKHBmaWxlKSkgIT0gRU9GKQogCQlm cHV0YyhjLCBPUEYpOwogCisJLyogQXBwZW5kIGRyb3AgZGF0YWJhc2UgY29tbWFuZHMuICovCisJ aWYgKGRmaWxlKQorCXsKKwkJd2hpbGUgKChjID0gZmdldGMoZGZpbGUpKSAhPSBFT0YpCisJCQlm cHV0YyhjLCBPUEYpOworCisJCWZjbG9zZShkZmlsZSk7CisJfQorCiAJZmNsb3NlKHBmaWxlKTsK IAogCS8qIENsb3NlIG91dHB1dCBmaWxlLiAqLwotLSAKMi4zOS4zCgo= --000000000000af06e3063a1f7cbc--