From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#13125: Fix permissions bugs with setgid directories etc. Date: Sun, 09 Dec 2012 17:08:00 -0800 Organization: UCLA Computer Science Department Message-ID: <50C535F0.6040307@cs.ucla.edu> References: <50C3E5CE.2000307@cs.ucla.edu> <87lid7zxpy.fsf@gnu.org> <50C43D23.8070507@cs.ucla.edu> <83d2yjcg53.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000103080108030706040505" X-Trace: ger.gmane.org 1355101719 1226 80.91.229.3 (10 Dec 2012 01:08:39 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 10 Dec 2012 01:08:39 +0000 (UTC) Cc: 13125@debbugs.gnu.org, cyd@gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Dec 10 02:08:52 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ThrrX-0007yg-Pg for geb-bug-gnu-emacs@m.gmane.org; Mon, 10 Dec 2012 02:08:52 +0100 Original-Received: from localhost ([::1]:44063 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThrrL-0005rJ-53 for geb-bug-gnu-emacs@m.gmane.org; Sun, 09 Dec 2012 20:08:39 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:57078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThrrF-0005qN-2M for bug-gnu-emacs@gnu.org; Sun, 09 Dec 2012 20:08:37 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ThrrC-0004om-C4 for bug-gnu-emacs@gnu.org; Sun, 09 Dec 2012 20:08:33 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:52496) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThrrC-0004oi-7K for bug-gnu-emacs@gnu.org; Sun, 09 Dec 2012 20:08:30 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1Thrrh-0002Mx-Ok for bug-gnu-emacs@gnu.org; Sun, 09 Dec 2012 20:09:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 10 Dec 2012 01:09:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13125 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch security Original-Received: via spool by 13125-submit@debbugs.gnu.org id=B13125.13551017109071 (code B ref 13125); Mon, 10 Dec 2012 01:09:01 +0000 Original-Received: (at 13125) by debbugs.gnu.org; 10 Dec 2012 01:08:30 +0000 Original-Received: from localhost ([127.0.0.1]:34514 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThrrA-0002MF-Ms for submit@debbugs.gnu.org; Sun, 09 Dec 2012 20:08:30 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:43793) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Thrr6-0002M4-Id for 13125@debbugs.gnu.org; Sun, 09 Dec 2012 20:08:27 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 9F39F39E810A; Sun, 9 Dec 2012 17:07:51 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cNhTFJpYcnEQ; Sun, 9 Dec 2012 17:07:47 -0800 (PST) Original-Received: from [192.168.1.3] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id C171039E8100; Sun, 9 Dec 2012 17:07:46 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/17.0 Thunderbird/17.0 In-Reply-To: <83d2yjcg53.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:68252 Archived-At: This is a multi-part message in MIME format. --------------000103080108030706040505 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 12/09/2012 09:03 AM, Eli Zaretskii wrote: > Did you find _any_ of them that even reference this attribute? Yes, just one: backup-buffer. It's fixed in the proposed patch, in the first hunk of the lisp/files.el patch. > Given the "wide" use, it is hard to reason what should be the value of > this attribute after these changes are installed. You set them to > zero, which is neither nil nor t; thus, code that was testing for > either of these two values explicitly will now fail, while code that > was testing for non-nil will succeed where perhaps it shouldn't have. The only example I found, in backup-buffer, was testing for non-nil. Zero counts as non-nil, so if backup-buffer were not changed, it'd be treating the value as t. This would be safe, as it's the nil case that is dangerous. (With the further change below, this paragraph is moot.) > I would suggest to leave the value at one of these > two, whichever is more frequent in real life. If we were to leave the value as one of these two, we should leave it as t, the safer value. Here's a further patch to do that, and I'll attach the updated combined patch (integrating all the further patches suggested so far), relative to trunk bzr 111167. === modified file 'doc/lispintro/ChangeLog' --- doc/lispintro/ChangeLog 2012-12-09 02:30:06 +0000 +++ doc/lispintro/ChangeLog 2012-12-10 00:56:35 +0000 @@ -1,9 +1,9 @@ -2012-12-09 Paul Eggert +2012-12-10 Paul Eggert Fix permissions bugs with setgid directories etc. (Bug#13125) * emacs-lisp-intro.texi (Files List): - directory-files-and-attributes now outputs 0 instead of t for - attribute that's now a placeholder. + directory-files-and-attributes now outputs t for attribute that's + now a placeholder. 2012-12-06 Paul Eggert === modified file 'doc/lispintro/emacs-lisp-intro.texi' --- doc/lispintro/emacs-lisp-intro.texi 2012-12-09 00:50:02 +0000 +++ doc/lispintro/emacs-lisp-intro.texi 2012-12-10 00:56:35 +0000 @@ -15687,7 +15687,7 @@ "-rw-r--r--" @end group @group -0 +t 2971624 773) @end group === modified file 'doc/lispref/files.texi' --- doc/lispref/files.texi 2012-12-09 00:50:02 +0000 +++ doc/lispref/files.texi 2012-12-10 00:56:35 +0000 @@ -1281,7 +1281,7 @@ (20000 23 0 0) (20614 64555 902289 872000) 122295 "-rw-rw-rw-" - 0 (5888 2 . 43978) + t (5888 2 . 43978) (15479 . 46724)) @end group @end example @@ -1320,7 +1320,7 @@ @item "-rw-rw-rw-" has a mode of read and write access for the owner, group, and world. -@item 0 +@item t is merely a placeholder; it carries no information. @item (5888 2 . 43978) === modified file 'src/dired.c' --- src/dired.c 2012-12-09 00:50:02 +0000 +++ src/dired.c 2012-12-10 00:56:35 +0000 @@ -955,7 +955,7 @@ filemodestring (&s, modes); values[8] = make_string (modes, 10); - values[9] = make_number (0); + values[9] = Qt; values[10] = INTEGER_TO_CONS (s.st_ino); values[11] = INTEGER_TO_CONS (s.st_dev); --------------000103080108030706040505 Content-Type: text/plain; charset=UTF-8; name="setgiddir.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setgiddir.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTEyLTA5 IDA4OjM3OjAxICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMi0xMCAwMDo1OTo1MSArMDAw MApAQCAtMSwzICsxLDggQEAKKzIwMTItMTItMTAgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgorCisJRml4IHBlcm1pc3Npb25zIGJ1Z3Mgd2l0aCBzZXRnaWQgZGlyZWN0 b3JpZXMgZXRjLiAoQnVnIzEzMTI1KQorCSogY29uZmlndXJlLmFjIChCU0Q0XzIpOiBSZW1v dmU7IG5vIGxvbmdlciBuZWVkZWQuCisKIDIwMTItMTItMDkgIEFuZHJlYXMgU2Nod2FiICA8 c2Nod2FiQGxpbnV4LW02OGsub3JnPgogCiAJKiBjb25maWd1cmUuYWM6IEZpeCBzb3VyY2Ug Y29tbWFuZCBpbiAuZ2RiaW5pdC4KCj09PSBtb2RpZmllZCBmaWxlICdhZG1pbi9DUFAtREVG SU5FUycKLS0tIGFkbWluL0NQUC1ERUZJTkVTCTIwMTItMTItMDggMDY6NTY6MjYgKzAwMDAK KysrIGFkbWluL0NQUC1ERUZJTkVTCTIwMTItMTItMDkgMDA6NTA6MDIgKzAwMDAKQEAgLTks NyArOSw2IEBACiAKIEFJWAogX0FJWAotQlNENF8yCiBCU0RfU1lTVEVNCiBDWUdXSU4JCUNv bXBpbGluZyB0aGUgQ3lnd2luIHBvcnQuCiBfX0NZR1dJTl9fCURpdHRvCgo9PT0gbW9kaWZp ZWQgZmlsZSAnYWRtaW4vQ2hhbmdlTG9nJwotLS0gYWRtaW4vQ2hhbmdlTG9nCTIwMTItMTIt MDggMTc6MTk6NTEgKzAwMDAKKysrIGFkbWluL0NoYW5nZUxvZwkyMDEyLTEyLTEwIDAwOjU5 OjUxICswMDAwCkBAIC0xLDMgKzEsOCBAQAorMjAxMi0xMi0xMCAgUGF1bCBFZ2dlcnQgIDxl Z2dlcnRAY3MudWNsYS5lZHU+CisKKwlGaXggcGVybWlzc2lvbnMgYnVncyB3aXRoIHNldGdp ZCBkaXJlY3RvcmllcyBldGMuIChCdWcjMTMxMjUpCisJKiBDUFAtREVGSU5FUyAoQlNENF8y KTogUmVtb3ZlLgorCiAyMDEyLTEyLTA4ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xh LmVkdT4KIAogCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlpbmcgZW52 aXJvbiBkaXJlY3RseSAoQnVnIzEzMDcwKS4KCj09PSBtb2RpZmllZCBmaWxlICdjb25maWd1 cmUuYWMnCi0tLSBjb25maWd1cmUuYWMJMjAxMi0xMi0wOSAwODozNzowMSArMDAwMAorKysg Y29uZmlndXJlLmFjCTIwMTItMTItMDkgMjM6MDU6MjQgKzAwMDAKQEAgLTM4MTksNyArMzgx OSw2IEBACiAKIGRubCBEZWZpbmUgc3ltYm9scyB0byBpZGVudGlmeSB0aGUgdmVyc2lvbiBv ZiBVbml4IHRoaXMgaXMuCiBkbmwgRGVmaW5lIGFsbCB0aGUgc3ltYm9scyB0aGF0IGFwcGx5 IGNvcnJlY3RseS4KLUFIX1RFTVBMQVRFKEJTRDRfMiwgW0RlZmluZSBpZiB0aGUgc3lzdGVt IGlzIGNvbXBhdGlibGUgd2l0aCBCU0QgNC4yLl0pCiBBSF9URU1QTEFURShCU0RfU1lTVEVN LCBbRGVmaW5lIGlmIHRoZSBzeXN0ZW0gaXMgY29tcGF0aWJsZSB3aXRoIEJTRCA0LjIuXSkK IEFIX1RFTVBMQVRFKERPU19OVCwgW0RlZmluZSBpZiB0aGUgc3lzdGVtIGlzIE1TIERPUyBv ciBNUyBXaW5kb3dzLl0pCiBBSF9URU1QTEFURShNU0RPUywgW0RlZmluZSBpZiB0aGUgc3lz dGVtIGlzIE1TIERPUy5dKQpAQCAtMzg0NSw3ICszODQ0LDYgQEAKIAogICBkYXJ3aW4pCiAg ICAgZG5sIEJTRDRfMyBhbmQgQlNENF80IGFyZSBhbHJlYWR5IGRlZmluZWQgaW4gc3lzL3Bh cmFtLmguCi0gICAgQUNfREVGSU5FKEJTRDRfMiwgW10pCiAgICAgQUNfREVGSU5FKEJTRF9T WVNURU0sIFtdKQogICAgIGRubCBNb3JlIHNwZWNpZmljIHRoYW4gdGhlIGFib3ZlIHR3by4g IFdlIGNhbm5vdCB1c2UgX19BUFBMRV9fIGFzIHRoaXMKICAgICBkbmwgbWF5IG5vdCBiZSBk ZWZpbmVkIG9uIG5vbi1PU1ggRGFyd2luLCBhbmQgd2UgY2Fubm90IGRlZmluZSBEQVJXSU4K QEAgLTM4NTUsNyArMzg1Myw2IEBACiAgICAgOzsKIAogICBmcmVlYnNkKQotICAgIEFDX0RF RklORShCU0Q0XzIsIFtdKQogICAgIGRubCBIYWNrIHRvIGF2b2lkIGNhbGxpbmcgQUNfUFJF UFJPQ19JRkVMU0UgbXVsdGlwbGUgdGltZXMuCiAgICAgZG5sIFdvdWxkIG5vdCBiZSBuZWVk ZWQgd2l0aCBhdXRvY29uZiA+PSAyLjY3LCB3aGVyZSB0aGUKICAgICBkbmwgcHJlcHJvY2Vz c2VkIG91dHB1dCBpcyBhY2Nlc3NpYmxlIGluICJjb25mdGVzdC5pIi4KQEAgLTM4NjMsNyAr Mzg2MCw2IEBACiAgICAgOzsKIAogICBnbnUgfCBuZXRic2QgfCBvcGVuYnNkICkKLSAgICBB Q19ERUZJTkUoQlNENF8yLCBbXSkKICAgICBBQ19QUkVQUk9DX0lGRUxTRShbQUNfTEFOR19Q Uk9HUkFNKFtbCiAjaWZuZGVmIEJTRF9TWVNURU0KICMgZXJyb3IgIkJTRF9TWVNURU0gbm90 IGRlZmluZWQiCgo9PT0gbW9kaWZpZWQgZmlsZSAnZG9jL2xpc3BpbnRyby9DaGFuZ2VMb2cn Ci0tLSBkb2MvbGlzcGludHJvL0NoYW5nZUxvZwkyMDEyLTEyLTA2IDA4OjMzOjMyICswMDAw CisrKyBkb2MvbGlzcGludHJvL0NoYW5nZUxvZwkyMDEyLTEyLTEwIDAwOjU2OjM1ICswMDAw CkBAIC0xLDMgKzEsMTAgQEAKKzIwMTItMTItMTAgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgorCisJRml4IHBlcm1pc3Npb25zIGJ1Z3Mgd2l0aCBzZXRnaWQgZGlyZWN0 b3JpZXMgZXRjLiAoQnVnIzEzMTI1KQorCSogZW1hY3MtbGlzcC1pbnRyby50ZXhpIChGaWxl cyBMaXN0KToKKwlkaXJlY3RvcnktZmlsZXMtYW5kLWF0dHJpYnV0ZXMgbm93IG91dHB1dHMg dCBmb3IgYXR0cmlidXRlIHRoYXQncworCW5vdyBhIHBsYWNlaG9sZGVyLgorCiAyMDEyLTEy LTA2ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KIAogCSogZG9jbGljZW5z ZS50ZXhpOiBVcGRhdGUgdG8gbGF0ZXN0IHZlcnNpb24gZnJvbSBGU0YuCgo9PT0gbW9kaWZp ZWQgZmlsZSAnZG9jL2xpc3BpbnRyby9lbWFjcy1saXNwLWludHJvLnRleGknCi0tLSBkb2Mv bGlzcGludHJvL2VtYWNzLWxpc3AtaW50cm8udGV4aQkyMDEyLTEyLTA1IDIyOjI3OjU2ICsw MDAwCisrKyBkb2MvbGlzcGludHJvL2VtYWNzLWxpc3AtaW50cm8udGV4aQkyMDEyLTEyLTEw IDAwOjU2OjM1ICswMDAwCkBAIC0xNTY4Nyw3ICsxNTY4Nyw3IEBACiAiLXJ3LXItLXItLSIK IEBlbmQgZ3JvdXAKIEBncm91cAotbmlsCit0CiAyOTcxNjI0CiA3NzMpCiBAZW5kIGdyb3Vw Cgo9PT0gbW9kaWZpZWQgZmlsZSAnZG9jL2xpc3ByZWYvQ2hhbmdlTG9nJwotLS0gZG9jL2xp c3ByZWYvQ2hhbmdlTG9nCTIwMTItMTItMDkgMDE6MDQ6NDMgKzAwMDAKKysrIGRvYy9saXNw cmVmL0NoYW5nZUxvZwkyMDEyLTEyLTEwIDAwOjU5OjUxICswMDAwCkBAIC0xLDMgKzEsMTMg QEAKKzIwMTItMTItMTAgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJ Rml4IHBlcm1pc3Npb25zIGJ1Z3Mgd2l0aCBzZXRnaWQgZGlyZWN0b3JpZXMgZXRjLiAoQnVn IzEzMTI1KQorCSogZmlsZXMudGV4aSAoVGVzdGluZyBBY2Nlc3NpYmlsaXR5KTogRG9jdW1l bnQgR1JPVVAgYXJnCisJb2YgZmlsZS1vd25lcnNoaXAtcHJlc2VydmVkLXAuCisJKEZpbGUg QXR0cmlidXRlcyk6IERvY3VtZW50IHRoYXQgOXRoIGVsZW1lbnQgaXMgbm93CisJanVzdCBh IHBsYWNlaG9sZGVyLgorCSogb3MudGV4aSAoVXNlciBJZGVudGlmaWNhdGlvbik6IERvY3Vt ZW50IG5ldyBmdW5jdGlvbnMgZ3JvdXAtZ2lkLAorCWdyb3VwLXJlYWwtZ2lkLgorCiAyMDEy LTEyLTA5ICBHbGVubiBNb3JyaXMgIDxyZ21AZ251Lm9yZz4KIAogCSogY3VzdG9taXplLnRl eGkgKFZhcmlhYmxlIERlZmluaXRpb25zKTogTWVudGlvbiBldmFsLWRlZnVuCgo9PT0gbW9k aWZpZWQgZmlsZSAnZG9jL2xpc3ByZWYvZmlsZXMudGV4aScKLS0tIGRvYy9saXNwcmVmL2Zp bGVzLnRleGkJMjAxMi0xMi0wNSAyMjoyNzo1NiArMDAwMAorKysgZG9jL2xpc3ByZWYvZmls ZXMudGV4aQkyMDEyLTEyLTEwIDAwOjU2OjM1ICswMDAwCkBAIC04OTUsMTEgKzg5NSwxNCBA QAogdXNpbmcgQHZhcntzdHJpbmd9IGFzIHRoZSBlcnJvciBtZXNzYWdlIHRleHQuCiBAZW5k IGRlZnVuCiAKLUBkZWZ1biBmaWxlLW93bmVyc2hpcC1wcmVzZXJ2ZWQtcCBmaWxlbmFtZQor QGRlZnVuIGZpbGUtb3duZXJzaGlwLXByZXNlcnZlZC1wIGZpbGVuYW1lICZvcHRpb25hbCBn cm91cAogVGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle3R9IGlmIGRlbGV0aW5nIHRoZSBm aWxlIEB2YXJ7ZmlsZW5hbWV9IGFuZAogdGhlbiBjcmVhdGluZyBpdCBhbmV3IHdvdWxkIGtl ZXAgdGhlIGZpbGUncyBvd25lciB1bmNoYW5nZWQuICBJdCBhbHNvCiByZXR1cm5zIEBjb2Rl e3R9IGZvciBub25leGlzdGVudCBmaWxlcy4KIAorSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50 IEB2YXJ7Z3JvdXB9IGlzIG5vbi1AY29kZXtuaWx9LCB0aGlzIGZ1bmN0aW9uCithbHNvIGNo ZWNrcyB0aGF0IHRoZSBmaWxlJ3MgZ3JvdXAgd291bGQgYmUgdW5jaGFuZ2VkLgorCiBJZiBA dmFye2ZpbGVuYW1lfSBpcyBhIHN5bWJvbGljIGxpbmssIHRoZW4sIHVubGlrZSB0aGUgb3Ro ZXIgZnVuY3Rpb25zCiBkaXNjdXNzZWQgaGVyZSwgQGNvZGV7ZmlsZS1vd25lcnNoaXAtcHJl c2VydmVkLXB9IGRvZXMgQGVtcGh7bm90fQogcmVwbGFjZSBAdmFye2ZpbGVuYW1lfSB3aXRo IGl0cyB0YXJnZXQuICBIb3dldmVyLCBpdCBkb2VzIHJlY3Vyc2l2ZWx5CkBAIC0xMjQ2LDgg KzEyNDksNyBAQAogYXMgaW4gQHNhbXB7bHMgLWx9LgogCiBAaXRlbQotQGNvZGV7dH0gaWYg dGhlIGZpbGUncyBAYWNyb255bXtHSUR9IHdvdWxkIGNoYW5nZSBpZiBmaWxlIHdlcmUKLWRl bGV0ZWQgYW5kIHJlY3JlYXRlZDsgQGNvZGV7bmlsfSBvdGhlcndpc2UuCitBbiB1bnNwZWNp ZmllZCB2YWx1ZSwgcHJlc2VudCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIAogQGl0 ZW0KIFRoZSBmaWxlJ3MgaW5vZGUgbnVtYmVyLiAgSWYgcG9zc2libGUsIHRoaXMgaXMgYW4g aW50ZWdlci4gIElmIHRoZQpAQCAtMTI3OSw3ICsxMjgxLDcgQEAKICAgICAgICAgICAoMjAw MDAgMjMgMCAwKQogICAgICAgICAgICgyMDYxNCA2NDU1NSA5MDIyODkgODcyMDAwKQogICAg ICAgICAgIDEyMjI5NSAiLXJ3LXJ3LXJ3LSIKLSAgICAgICAgICBuaWwgICg1ODg4IDIgLiA0 Mzk3OCkKKyAgICAgICAgICB0ICg1ODg4IDIgLiA0Mzk3OCkKICAgICAgICAgICAoMTU0Nzkg LiA0NjcyNCkpCiBAZW5kIGdyb3VwCiBAZW5kIGV4YW1wbGUKQEAgLTEzMTgsOCArMTMyMCw4 IEBACiBAaXRlbSAiLXJ3LXJ3LXJ3LSIKIGhhcyBhIG1vZGUgb2YgcmVhZCBhbmQgd3JpdGUg YWNjZXNzIGZvciB0aGUgb3duZXIsIGdyb3VwLCBhbmQgd29ybGQuCiAKLUBpdGVtIG5pbAot d291bGQgcmV0YWluIHRoZSBzYW1lIEBhY3Jvbnlte0dJRH0gaWYgaXQgd2VyZSByZWNyZWF0 ZWQuCitAaXRlbSB0CitpcyBtZXJlbHkgYSBwbGFjZWhvbGRlcjsgaXQgY2FycmllcyBubyBp bmZvcm1hdGlvbi4KIAogQGl0ZW0gKDU4ODggMiAuIDQzOTc4KQogaGFzIGFuIGlub2RlIG51 bWJlciBvZiA2NDczOTI0NDY0NTIwMTM4LgoKPT09IG1vZGlmaWVkIGZpbGUgJ2RvYy9saXNw cmVmL29zLnRleGknCi0tLSBkb2MvbGlzcHJlZi9vcy50ZXhpCTIwMTItMTItMDYgMDY6MTc6 MTAgKzAwMDAKKysrIGRvYy9saXNwcmVmL29zLnRleGkJMjAxMi0xMi0wOSAwMDo1MDowMiAr MDAwMApAQCAtMTE1Nyw2ICsxMTU3LDE2IEBACiBUaGUgdmFsdWUgbWF5IGJlIGEgZmxvYXRp bmcgcG9pbnQgbnVtYmVyLgogQGVuZCBkZWZ1bgogCitAZGVmdW4gZ3JvdXAtZ2lkCitUaGlz IGZ1bmN0aW9uIHJldHVybnMgdGhlIGVmZmVjdGl2ZSBAYWNyb255bXtHSUR9IG9mIHRoZSBF bWFjcyBwcm9jZXNzLgorVGhlIHZhbHVlIG1heSBiZSBhIGZsb2F0aW5nIHBvaW50IG51bWJl ci4KK0BlbmQgZGVmdW4KKworQGRlZnVuIGdyb3VwLXJlYWwtZ2lkCitUaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIHJlYWwgQGFjcm9ueW17R0lEfSBvZiB0aGUgRW1hY3MgcHJvY2Vzcy4K K1RoZSB2YWx1ZSBtYXkgYmUgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCitAZW5kIGRlZnVu CisKIEBkZWZ1biBzeXN0ZW0tdXNlcnMKIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qg b2Ygc3RyaW5ncywgbGlzdGluZyB0aGUgdXNlciBuYW1lcyBvbiB0aGUKIHN5c3RlbS4gIElm IEVtYWNzIGNhbm5vdCByZXRyaWV2ZSB0aGlzIGluZm9ybWF0aW9uLCB0aGUgcmV0dXJuIHZh bHVlCgo9PT0gbW9kaWZpZWQgZmlsZSAnZXRjL0NoYW5nZUxvZycKLS0tIGV0Yy9DaGFuZ2VM b2cJMjAxMi0xMi0wNiAyMjo0NDowNSArMDAwMAorKysgZXRjL0NoYW5nZUxvZwkyMDEyLTEy LTEwIDAwOjU5OjUxICswMDAwCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTItMTItMTAgIFBhdWwg RWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJRml4IHBlcm1pc3Npb25zIGJ1Z3Mg d2l0aCBzZXRnaWQgZGlyZWN0b3JpZXMgZXRjLiAoQnVnIzEzMTI1KQorCSogTkVXUzogRG9j dW1lbnQgY2hhbmdlcyB0byBmaWxlLWF0dHJpYnV0ZXMsCisJZmlsZS1vd25lcnNoaXAtcHJl c2VydmVkLXAuCisJTWVudGlvbiBuZXcgZnVuY3Rpb25zIGdyb3VwLWdpZCwgZ3JvdXAtcmVh bC1naWQuCisKIDIwMTItMTItMDYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGxpbnV4LW02 OGsub3JnPgogCiAJKiB0aGVtZXMvbGV1dmVuLXRoZW1lLmVsOiBDb252ZXJ0IHRvIFVuaXgg Zm9ybWF0LgoKPT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9ORVdTJwotLS0gZXRjL05FV1MJMjAx Mi0xMi0wOSAwMzo0MDowOSArMDAwMAorKysgZXRjL05FV1MJMjAxMi0xMi0wOSAyMzowNToy NCArMDAwMApAQCAtMTUxLDYgKzE1MSwxNyBAQAogKiogVGhlIGBkZWZhbGlhcy1mc2V0LWZ1 bmN0aW9uJyBwcm9wZXJ0eSBsZXRzIHlvdSBjYXRjaCBjYWxscyB0byBkZWZhbGlhcwogYW5k IHJlZGlyZWN0IHRoZW0gdG8geW91ciBvd24gZnVuY3Rpb24gaW5zdGVhZCBvZiBgZnNldCcu CiAKKyoqIFRoZSA5dGggZWxlbWVudCByZXR1cm5lZCBieSBgZmlsZS1hdHRyaWJ1dGVzJyBp cyBub3cgdW5zcGVjaWZpZWQuCitGb3JtZXJseSwgaXQgd2FzIHQgaWYgdGhlIGZpbGUncyBn aWQgd291bGQgY2hhbmdlIGlmIGZpbGUgd2VyZSBkZWxldGVkCithbmQgcmVjcmVhdGVkLiAg VGhpcyB2YWx1ZSBoYXMgYmVlbiBpbmFjY3VyYXRlIGZvciB5ZWFycyBvbiBtYW55CitwbGF0 Zm9ybXMsIGFuZCBub2JvZHkgc2VlbXMgdG8gaGF2ZSBub3RpY2VkIG9yIGNhcmVkLgorCisq KiBUaGUgZnVuY3Rpb24gYGZpbGUtb3duZXJzaGlwLXByZXNlcnZlZC1wJyBub3cgaGFzIGFu IG9wdGlvbmFsCithcmd1bWVudCBHUk9VUCB3aGljaCBjYXVzZXMgaXQgY2hlY2sgZm9yIGZp bGUgZ3JvdXAgdG9vLiAgVGhpcyBjYW4gYmUKK3VzZWQgaW4gcGxhY2Ugb2YgdGhlIDl0aCBl bGVtZW50IG9mIGBmaWxlLWF0dHJpYnV0ZXMnLgorCisqKiBOZXcgZnVuY3Rpb25zIGBncm91 cC1naWQnIGFuZCBgZ3JvdXAtcmVhbC1naWQnLgorCiAqIENoYW5nZXMgaW4gRW1hY3MgMjQu NCBvbiBub24tZnJlZSBvcGVyYXRpbmcgc3lzdGVtcwogCiArKysKCj09PSBtb2RpZmllZCBm aWxlICdsaXNwL0NoYW5nZUxvZycKLS0tIGxpc3AvQ2hhbmdlTG9nCTIwMTItMTItMDkgMjE6 MzI6MTIgKzAwMDAKKysrIGxpc3AvQ2hhbmdlTG9nCTIwMTItMTItMTAgMDA6NTk6NTEgKzAw MDAKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMi0xMCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRA Y3MudWNsYS5lZHU+CisKKwlGaXggcGVybWlzc2lvbnMgYnVncyB3aXRoIHNldGdpZCBkaXJl Y3RvcmllcyBldGMuIChCdWcjMTMxMjUpCisJKiBmaWxlcy5lbCAoYmFja3VwLWJ1ZmZlcik6 IERvbid0IHJlbHkgb24gOXRoIG91dHB1dCBvZgorCWZpbGUtYXR0cmlidXRlcywgYXMgaXQn cyBub3cgYSBwbGFjZWhvbGRlci4gIEluc3RlYWQsIHVzZSB0aGUgbmV3CisJb3B0aW9uYWwg YXJnIG9mIGZpbGUtb3duZXJzaGlwLXByZXNlcnZlZC1wLgorCShmaWxlLW93bmVyc2hpcC1w cmVzZXJ2ZWQtcCk6IE5ldyBvcHRpb25hbCBhcmcgR1JPVVAuCisJRml4IG1pc2hhbmRsaW5n IG9mIHNldHVpZCBkaXJlY3RvcmllcyB0aGF0IHdvdWxkIGNhdXNlIHRoaXMKKwlmdW5jdGlv biB0byByZXR1cm4gdCB3aGVuIGl0IHNob3VsZCBoYXZlIHJldHVybmVkIG5pbC4KKwlEb2N1 bWVudCB3aGF0IGhhcHBlbnMgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGFuZCB3aGVu CisJaXQncyBub3Qga25vd24gd2hldGhlciB0aGUgb3duZXJzaGlwIHdpbGwgYmUgcHJlc2Vy dmVkLgorCSogbmV0L3RyYW1wLXNoLmVsICh0cmFtcC1zaC1oYW5kbGUtZmlsZS1vd25lcnNo aXAtcHJlc2VydmVkLXApOgorCUxpa2V3aXNlLgorCSh0cmFtcC1nZXQtbG9jYWwtZ2lkKTog VXNlIGdyb3VwLWdpZCBmb3IgaW50ZWdlciwgYXMgdGhhdCdzCisJZmFzdGVyIGFuZCBtb3Jl IHJlbGlhYmxlLgorCiAyMDEyLTEyLTA5ICBFbGkgWmFyZXRza2lpICA8ZWxpekBnbnUub3Jn PgogCiAJUGFyYWxsZWxpemUgYnl0ZSBjb21waWxhdGlvbiBvbiBNUy1XaW5kb3dzLgoKPT09 IG1vZGlmaWVkIGZpbGUgJ2xpc3AvZmlsZXMuZWwnCi0tLSBsaXNwL2ZpbGVzLmVsCTIwMTIt MTItMDMgMDE6MDg6MzEgKzAwMDAKKysrIGxpc3AvZmlsZXMuZWwJMjAxMi0xMi0xMCAwMDoz ODo0NSArMDAwMApAQCAtMzk0MSw4ICszOTQxLDggQEAKIAkJCQkJICAgICAgKGFuZCAoaW50 ZWdlcnAgKG50aCAyIGF0dHIpKQogCQkJCQkJICAgKGludGVnZXJwIGJhY2t1cC1ieS1jb3B5 aW5nLXdoZW4tcHJpdmlsZWdlZC1taXNtYXRjaCkKIAkJCQkJCSAgICg8PSAobnRoIDIgYXR0 cikgYmFja3VwLWJ5LWNvcHlpbmctd2hlbi1wcml2aWxlZ2VkLW1pc21hdGNoKSkpCi0JCQkJ CSAgKG9yIChudGggOSBhdHRyKQotCQkJCQkgICAgICAobm90IChmaWxlLW93bmVyc2hpcC1w cmVzZXJ2ZWQtcCByZWFsLWZpbGUtbmFtZSkpKSkpKSkKKwkJCQkJICAobm90IChmaWxlLW93 bmVyc2hpcC1wcmVzZXJ2ZWQtcAorCQkJCQkJcmVhbC1maWxlLW5hbWUgdCkpKSkpKQogCQkJ ICAoYmFja3VwLWJ1ZmZlci1jb3B5IHJlYWwtZmlsZS1uYW1lIGJhY2t1cG5hbWUgbW9kZXMg Y29udGV4dCkKIAkJCTs7IHJlbmFtZS1maWxlIHNob3VsZCBkZWxldGUgb2xkIGJhY2t1cC4K IAkJCShyZW5hbWUtZmlsZSByZWFsLWZpbGUtbmFtZSBiYWNrdXBuYW1lIHQpCkBAIC00MDE5 LDIyICs0MDE5LDQ0IEBACiAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAoY29u Y2F0IGZpbGUtbmFtZS12ZXJzaW9uLXJlZ2V4cCAiXFwnIikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWUpKSkpKSkKIAotKGRlZnVuIGZpbGUtb3duZXJzaGlwLXBy ZXNlcnZlZC1wIChmaWxlKQotICAiUmV0dXJuIHQgaWYgZGVsZXRpbmcgRklMRSBhbmQgcmV3 cml0aW5nIGl0IHdvdWxkIHByZXNlcnZlIHRoZSBvd25lci4iCisoZGVmdW4gZmlsZS1vd25l cnNoaXAtcHJlc2VydmVkLXAgKGZpbGUgJm9wdGlvbmFsIGdyb3VwKQorICAiUmV0dXJuIHQg aWYgZGVsZXRpbmcgRklMRSBhbmQgcmV3cml0aW5nIGl0IHdvdWxkIHByZXNlcnZlIHRoZSBv d25lci4KK1JldHVybiBuaWwgaWYgRklMRSBkb2VzIG5vdCBleGlzdCwgb3IgaWYgZGVsZXRp bmcgYW5kIHJlY3JlYXRpbmcgaXQKK21pZ2h0IG5vdCBwcmVzZXJ2ZSB0aGUgb3duZXIuICBJ ZiBHUk9VUCBpcyBub24tbmlsLCBjaGVjayB3aGV0aGVyCit0aGUgZ3JvdXAgd291bGQgYmUg cHJlc2VydmVkIHRvby4iCiAgIChsZXQgKChoYW5kbGVyIChmaW5kLWZpbGUtbmFtZS1oYW5k bGVyIGZpbGUgJ2ZpbGUtb3duZXJzaGlwLXByZXNlcnZlZC1wKSkpCiAgICAgKGlmIGhhbmRs ZXIKLQkoZnVuY2FsbCBoYW5kbGVyICdmaWxlLW93bmVyc2hpcC1wcmVzZXJ2ZWQtcCBmaWxl KQorCShmdW5jYWxsIGhhbmRsZXIgJ2ZpbGUtb3duZXJzaGlwLXByZXNlcnZlZC1wIGZpbGUg Z3JvdXApCiAgICAgICAobGV0ICgoYXR0cmlidXRlcyAoZmlsZS1hdHRyaWJ1dGVzIGZpbGUg J2ludGVnZXIpKSkKIAk7OyBSZXR1cm4gdCBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0LCBz aW5jZSBpdCdzIHRydWUgdGhhdCBubwogCTs7IGluZm9ybWF0aW9uIHdvdWxkIGJlIGxvc3Qg YnkgYW4gKGF0dGVtcHRlZCkgZGVsZXRlIGFuZCBjcmVhdGUuCiAJKG9yIChudWxsIGF0dHJp YnV0ZXMpCi0JICAgICg9IChudGggMiBhdHRyaWJ1dGVzKSAodXNlci11aWQpKQotCSAgICA7 OyBGaWxlcyBjcmVhdGVkIG9uIFdpbmRvd3MgYnkgQWRtaW5pc3RyYXRvciAoUklEPTUwMCkK LQkgICAgOzsgaGF2ZSB0aGUgQWRtaW5pc3RyYXRvcnMgZ3JvdXAgKFJJRD01NDQpIHJlY29y ZGVkIGFzCi0JICAgIDs7IHRoZWlyIG93bmVyLiAgUmV3cml0aW5nIHRoZW0gd2lsbCBzdGls bCBwcmVzZXJ2ZSB0aGUKLQkgICAgOzsgb3duZXIuCi0JICAgIChhbmQgKGVxIHN5c3RlbS10 eXBlICd3aW5kb3dzLW50KQotCQkgKD0gKHVzZXItdWlkKSA1MDApICg9IChudGggMiBhdHRy aWJ1dGVzKSA1NDQpKSkpKSkpCisJICAgIChhbmQgKG9yICg9IChudGggMiBhdHRyaWJ1dGVz KSAodXNlci11aWQpKQorCQkgICAgIDs7IEZpbGVzIGNyZWF0ZWQgb24gV2luZG93cyBieSBB ZG1pbmlzdHJhdG9yIChSSUQ9NTAwKQorCQkgICAgIDs7IGhhdmUgdGhlIEFkbWluaXN0cmF0 b3JzIGdyb3VwIChSSUQ9NTQ0KSByZWNvcmRlZCBhcworCQkgICAgIDs7IHRoZWlyIG93bmVy LiAgUmV3cml0aW5nIHRoZW0gd2lsbCBzdGlsbCBwcmVzZXJ2ZSB0aGUKKwkJICAgICA7OyBv d25lci4KKwkJICAgICAoYW5kIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkKKwkJCSAg KD0gKHVzZXItdWlkKSA1MDApICg9IChudGggMiBhdHRyaWJ1dGVzKSA1NDQpKSkKKwkJIChv ciAobm90IGdyb3VwKQorCQkgICAgIDs7IE9uIEJTRC1kZXJpdmVkIHN5c3RlbXMgZmlsZXMg YWx3YXlzIGluaGVyaXQgdGhlIHBhcmVudAorCQkgICAgIDs7IGRpcmVjdG9yeSdzIGdyb3Vw LCBzbyBza2lwIHRoZSBncm91cC1naWQgdGVzdC4KKwkJICAgICAobWVtcSBzeXN0ZW0tdHlw ZSAnKGJlcmtlbGV5LXVuaXggZGFyd2luIGdudS9rZnJlZWJzZCkpCisJCSAgICAgKD0gKG50 aCAzIGF0dHJpYnV0ZXMpIChncm91cC1naWQpKSkKKwkJIChsZXQqICgocGFyZW50IChvciAo ZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxlKSAiLiIpKQorCQkJKHBhcmVudC1hdHRyaWJ1dGVz IChmaWxlLWF0dHJpYnV0ZXMgcGFyZW50ICdpbnRlZ2VyKSkpCisJCSAgIChhbmQgcGFyZW50 LWF0dHJpYnV0ZXMKKwkJCTs7IE9uIHNvbWUgc3lzdGVtcywgYSBmaWxlIGNyZWF0ZWQgaW4g YSBzZXR1aWQgZGlyZWN0b3J5CisJCQk7OyBpbmhlcml0cyB0aGF0IGRpcmVjdG9yeSdzIG93 bmVyLgorCQkJKG9yCisJCQkgKD0gKG50aCAyIHBhcmVudC1hdHRyaWJ1dGVzKSAodXNlci11 aWQpKQorCQkJIChzdHJpbmctbWF0Y2ggIl4uLi5bXnNTXSIgKG50aCA4IHBhcmVudC1hdHRy aWJ1dGVzKSkpCisJCQk7OyBPbiBtYW55IHN5c3RlbXMsIGEgZmlsZSBjcmVhdGVkIGluIGEg c2V0Z2lkIGRpcmVjdG9yeQorCQkJOzsgaW5oZXJpdHMgdGhhdCBkaXJlY3RvcnkncyBncm91 cC4gIE9uIHNvbWUgc3lzdGVtcworCQkJOzsgdGhpcyBoYXBwZW5zIGV2ZW4gaWYgdGhlIHNl dGdpZCBiaXQgaXMgbm90IHNldC4KKwkJCShvciAobm90IGdyb3VwKQorCQkJICAgICg9IChu dGggMyBwYXJlbnQtYXR0cmlidXRlcykKKwkJCSAgICAgICAobnRoIDMgYXR0cmlidXRlcykp KSkpKSkpKSkpCiAKIChkZWZ1biBmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gKGZpbGVuYW1l KQogICAiUmV0dXJuIEZJTEVOQU1FIHNhbnMgZmluYWwgXCJleHRlbnNpb25cIi4KCj09PSBt b2RpZmllZCBmaWxlICdsaXNwL25ldC90cmFtcC1zaC5lbCcKLS0tIGxpc3AvbmV0L3RyYW1w LXNoLmVsCTIwMTItMTItMDYgMDk6MTU6MjcgKzAwMDAKKysrIGxpc3AvbmV0L3RyYW1wLXNo LmVsCTIwMTItMTItMDkgMDg6NTM6NTUgKzAwMDAKQEAgLTE2MTYsNyArMTYxNiw3IEBACiAJ KGFuZCAodHJhbXAtcnVuLXRlc3QgIi1kIiAoZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxlbmFt ZSkpCiAJICAgICAodHJhbXAtcnVuLXRlc3QgIi13IiAoZmlsZS1uYW1lLWRpcmVjdG9yeSBm aWxlbmFtZSkpKSkpKSkKIAotKGRlZnVuIHRyYW1wLXNoLWhhbmRsZS1maWxlLW93bmVyc2hp cC1wcmVzZXJ2ZWQtcCAoZmlsZW5hbWUpCisoZGVmdW4gdHJhbXAtc2gtaGFuZGxlLWZpbGUt b3duZXJzaGlwLXByZXNlcnZlZC1wIChmaWxlbmFtZSAmb3B0aW9uYWwgZ3JvdXApCiAgICJM aWtlIGBmaWxlLW93bmVyc2hpcC1wcmVzZXJ2ZWQtcCcgZm9yIFRyYW1wIGZpbGVzLiIKICAg KHdpdGgtcGFyc2VkLXRyYW1wLWZpbGUtbmFtZSBmaWxlbmFtZSBuaWwKICAgICAod2l0aC10 cmFtcC1maWxlLXByb3BlcnR5IHYgbG9jYWxuYW1lICJmaWxlLW93bmVyc2hpcC1wcmVzZXJ2 ZWQtcCIKQEAgLTE2MjQsNyArMTYyNCwxMCBAQAogCTs7IFJldHVybiB0IGlmIHRoZSBmaWxl IGRvZXNuJ3QgZXhpc3QsIHNpbmNlIGl0J3MgdHJ1ZSB0aGF0IG5vCiAJOzsgaW5mb3JtYXRp b24gd291bGQgYmUgbG9zdCBieSBhbiAoYXR0ZW1wdGVkKSBkZWxldGUgYW5kIGNyZWF0ZS4K IAkob3IgKG51bGwgYXR0cmlidXRlcykKLQkgICAgKD0gKG50aCAyIGF0dHJpYnV0ZXMpICh0 cmFtcC1nZXQtcmVtb3RlLXVpZCB2ICdpbnRlZ2VyKSkpKSkpKQorCSAgICAoYW5kCisJICAg ICAoPSAobnRoIDIgYXR0cmlidXRlcykgKHRyYW1wLWdldC1yZW1vdGUtdWlkIHYgJ2ludGVn ZXIpKQorCSAgICAgKG9yIChub3QgZ3JvdXApCisJCSAoPSAobnRoIDMgYXR0cmlidXRlcykg KHRyYW1wLWdldC1yZW1vdGUtZ2lkIHYgJ2ludGVnZXIpKSkpKSkpKSkKIAogOzsgRGlyZWN0 b3J5IGxpc3RpbmdzLgogCkBAIC01MDIxLDcgKzUwMjQsOSBAQAogICAoaWYgKGVxdWFsIGlk LWZvcm1hdCAnaW50ZWdlcikgKHVzZXItdWlkKSAodXNlci1sb2dpbi1uYW1lKSkpCiAKIChk ZWZ1biB0cmFtcC1nZXQtbG9jYWwtZ2lkIChpZC1mb3JtYXQpCi0gIChudGggMyAodHJhbXAt Y29tcGF0LWZpbGUtYXR0cmlidXRlcyAifi8iIGlkLWZvcm1hdCkpKQorICAoaWYgKGFuZCAo ZmJvdW5kcCAnZ3JvdXAtZ2lkKSAoZXF1YWwgaWQtZm9ybWF0ICdpbnRlZ2VyKSkKKyAgICAg ICh0cmFtcC1jb21wYXQtZnVuY2FsbCAnZ3JvdXAtZ2lkKQorICAgIChudGggMyAodHJhbXAt Y29tcGF0LWZpbGUtYXR0cmlidXRlcyAifi8iIGlkLWZvcm1hdCkpKSkKIAogOzsgU29tZSBw cmVkZWZpbmVkIGNvbm5lY3Rpb24gcHJvcGVydGllcy4KIChkZWZ1biB0cmFtcC1nZXQtaW5s aW5lLWNvbXByZXNzICh2ZWMgcHJvcCBzaXplKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9D aGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIwMTItMTItMDggMTg6Mjc6MzcgKzAwMDAK KysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0xMi0xMCAwMDo1OTo1MSArMDAwMApAQCAtMSwzICsx LDEyIEBACisyMDEyLTEyLTEwICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4K KworCUZpeCBwZXJtaXNzaW9ucyBidWdzIHdpdGggc2V0Z2lkIGRpcmVjdG9yaWVzIGV0Yy4g KEJ1ZyMxMzEyNSkKKwkqIGRpcmVkLmMgKEZmaWxlX2F0dHJpYnV0ZXMpOiBSZXR1cm4gdCBh cyB0aGUgOXRoIGF0dHJpYnV0ZSwKKwl0byBtYXJrIGl0IGFzIGEgcGxhY2Vob2xkZXIuICBU aGUgb2xkIHZhbHVlIHdhcyBvZnRlbiB3cm9uZy4KKwlUaGUgb25seSB1c2VyIG9mIHRoaXMg YXR0cmlidXRlIGhhcyBiZWVuIGNoYW5nZWQgdG8gdXNlCisJZmlsZS1vd25lcnNoaXAtcHJl c2VydmVkLXAgaW5zdGVhZCwgd2l0aCBpdHMgbmV3IGdyb3VwIGFyZy4KKwkqIGVkaXRmbnMu YyAoRmdyb3VwX2dpZCwgRmdyb3VwX3JlYWxfZ2lkKTogTmV3IGZ1bmN0aW9ucy4KKwogMjAx Mi0xMi0wOCAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KIAogCSogdzMyLmMgKHVu c2V0ZW52KTogUmV0dXJuIDAgaWYgdGhlIGlucHV0IHN0cmluZyBpcyB0b28gbG9uZy4KCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvZGlyZWQuYycKLS0tIHNyYy9kaXJlZC5jCTIwMTItMTEt MjcgMDU6Mzg6NDIgKzAwMDAKKysrIHNyYy9kaXJlZC5jCTIwMTItMTItMTAgMDA6NTY6MzUg KzAwMDAKQEAgLTg2OSw3ICs4NjksNyBAQAogIDcuIFNpemUgaW4gYnl0ZXMuCiAgIFRoaXMg aXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgaWYgdGhlIHNpemUgaXMgdG9vIGxhcmdlIGZv ciBhbiBpbnRlZ2VyLgogIDguIEZpbGUgbW9kZXMsIGFzIGEgc3RyaW5nIG9mIHRlbiBsZXR0 ZXJzIG9yIGRhc2hlcyBhcyBpbiBscyAtbC4KLSA5LiB0IGlmIGZpbGUncyBnaWQgd291bGQg Y2hhbmdlIGlmIGZpbGUgd2VyZSBkZWxldGVkIGFuZCByZWNyZWF0ZWQuCisgOS4gQW4gdW5z cGVjaWZpZWQgdmFsdWUsIHByZXNlbnQgb25seSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0 eS4KIDEwLiBpbm9kZSBudW1iZXIuICBJZiBpdCBpcyBsYXJnZXIgdGhhbiB3aGF0IGFuIEVt YWNzIGludGVnZXIgY2FuIGhvbGQsCiAgIHRoaXMgaXMgb2YgdGhlIGZvcm0gKEhJR0ggLiBM T1cpOiBmaXJzdCB0aGUgaGlnaCBiaXRzLCB0aGVuIHRoZSBsb3cgMTYgYml0cy4KICAgSWYg ZXZlbiBISUdIIGlzIHRvbyBsYXJnZSBmb3IgYW4gRW1hY3MgaW50ZWdlciwgdGhpcyBpcyBp bnN0ZWFkIG9mIHRoZSBmb3JtCkBAIC04OTEsMTAgKzg5MSw2IEBACiAgIExpc3BfT2JqZWN0 IHZhbHVlc1sxMl07CiAgIExpc3BfT2JqZWN0IGVuY29kZWQ7CiAgIHN0cnVjdCBzdGF0IHM7 Ci0jaWZkZWYgQlNENF8yCi0gIExpc3BfT2JqZWN0IGRpcm5hbWU7Ci0gIHN0cnVjdCBzdGF0 IHNkaXI7Ci0jZW5kaWYgLyogQlNENF8yICovCiAKICAgLyogQW4gYXJyYXkgdG8gaG9sZCB0 aGUgbW9kZSBzdHJpbmcgZ2VuZXJhdGVkIGJ5IGZpbGVtb2Rlc3RyaW5nLAogICAgICBpbmNs dWRpbmcgaXRzIHRlcm1pbmF0aW5nIHNwYWNlIGFuZCBudWxsIGJ5dGUuICAqLwpAQCAtOTU5 LDE3ICs5NTUsNyBAQAogCiAgIGZpbGVtb2Rlc3RyaW5nICgmcywgbW9kZXMpOwogICB2YWx1 ZXNbOF0gPSBtYWtlX3N0cmluZyAobW9kZXMsIDEwKTsKLSNpZmRlZiBCU0Q0XzIgLyogZmls ZSBnaWQgd2lsbCBiZSBkaXIgZ2lkICovCi0gIGRpcm5hbWUgPSBGZmlsZV9uYW1lX2RpcmVj dG9yeSAoZmlsZW5hbWUpOwotICBpZiAoISBOSUxQIChkaXJuYW1lKSkKLSAgICBlbmNvZGVk ID0gRU5DT0RFX0ZJTEUgKGRpcm5hbWUpOwotICBpZiAoISBOSUxQIChkaXJuYW1lKSAmJiBz dGF0IChTREFUQSAoZW5jb2RlZCksICZzZGlyKSA9PSAwKQotICAgIHZhbHVlc1s5XSA9IChz ZGlyLnN0X2dpZCAhPSBzLnN0X2dpZCkgPyBRdCA6IFFuaWw7Ci0gIGVsc2UJCQkJCS8qIGlm IHdlIGNhbid0IHRlbGwsIGFzc3VtZSB3b3JzdCAqLwotICAgIHZhbHVlc1s5XSA9IFF0Owot I2Vsc2UJCQkJCS8qIGZpbGUgZ2lkIHdpbGwgYmUgZWdpZCAqLwotICB2YWx1ZXNbOV0gPSAo cy5zdF9naWQgIT0gZ2V0ZWdpZCAoKSkgPyBRdCA6IFFuaWw7Ci0jZW5kaWYJLyogbm90IEJT RDRfMiAqLworICB2YWx1ZXNbOV0gPSBRdDsKICAgdmFsdWVzWzEwXSA9IElOVEVHRVJfVE9f Q09OUyAocy5zdF9pbm8pOwogICB2YWx1ZXNbMTFdID0gSU5URUdFUl9UT19DT05TIChzLnN0 X2Rldik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZWRpdGZucy5jJwotLS0gc3JjL2Vk aXRmbnMuYwkyMDEyLTEyLTA4IDE3OjE5OjUxICswMDAwCisrKyBzcmMvZWRpdGZucy5jCTIw MTItMTItMDkgMDA6NTA6MDIgKzAwMDAKQEAgLTEyNzIsNiArMTI3MiwyNCBAQAogICByZXR1 cm4gbWFrZV9maXhudW1fb3JfZmxvYXQgKHVpZCk7CiB9CiAKK0RFRlVOICgiZ3JvdXAtZ2lk IiwgRmdyb3VwX2dpZCwgU2dyb3VwX2dpZCwgMCwgMCwgMCwKKyAgICAgICBkb2M6IC8qIFJl dHVybiB0aGUgZWZmZWN0aXZlIGdpZCBvZiBFbWFjcy4KK1ZhbHVlIGlzIGFuIGludGVnZXIg b3IgYSBmbG9hdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZS4gICovKQorICAodm9pZCkKK3sK KyAgZ2lkX3QgZWdpZCA9IGdldGVnaWQgKCk7CisgIHJldHVybiBtYWtlX2ZpeG51bV9vcl9m bG9hdCAoZWdpZCk7Cit9CisKK0RFRlVOICgiZ3JvdXAtcmVhbC1naWQiLCBGZ3JvdXBfcmVh bF9naWQsIFNncm91cF9yZWFsX2dpZCwgMCwgMCwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVy biB0aGUgcmVhbCBnaWQgb2YgRW1hY3MuCitWYWx1ZSBpcyBhbiBpbnRlZ2VyIG9yIGEgZmxv YXQsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUuICAqLykKKyAgKHZvaWQpCit7CisgIGdpZF90 IGdpZCA9IGdldGdpZCAoKTsKKyAgcmV0dXJuIG1ha2VfZml4bnVtX29yX2Zsb2F0IChnaWQp OworfQorCiBERUZVTiAoInVzZXItZnVsbC1uYW1lIiwgRnVzZXJfZnVsbF9uYW1lLCBTdXNl cl9mdWxsX25hbWUsIDAsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGZ1bGwg bmFtZSBvZiB0aGUgdXNlciBsb2dnZWQgaW4sIGFzIGEgc3RyaW5nLgogSWYgdGhlIGZ1bGwg bmFtZSBjb3JyZXNwb25kaW5nIHRvIEVtYWNzJ3MgdXNlcmlkIGlzIG5vdCBrbm93biwKQEAg LTQ4OTksNiArNDkxNyw4IEBACiAgIGRlZnN1YnIgKCZTdXNlcl9yZWFsX2xvZ2luX25hbWUp OwogICBkZWZzdWJyICgmU3VzZXJfdWlkKTsKICAgZGVmc3ViciAoJlN1c2VyX3JlYWxfdWlk KTsKKyAgZGVmc3ViciAoJlNncm91cF9naWQpOworICBkZWZzdWJyICgmU2dyb3VwX3JlYWxf Z2lkKTsKICAgZGVmc3ViciAoJlN1c2VyX2Z1bGxfbmFtZSk7CiAgIGRlZnN1YnIgKCZTZW1h Y3NfcGlkKTsKICAgZGVmc3ViciAoJlNjdXJyZW50X3RpbWUpOwoK --------------000103080108030706040505--