Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Apr 2009 14:38:33 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
To:        "Mikhail T." <mi+thun@aldan.algebra.com>
Cc:        "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org>
Subject:   Re: RFC: obexapp - virtual root folder for each device
Message-ID:  <bb4a86c70904141438y2f8742efxa9c640f21581b2ed@mail.gmail.com>
In-Reply-To: <49E4EA14.80300@aldan.algebra.com>
References:  <bb4a86c70904131640n7cf471c0o7a56a43d722a90e1@mail.gmail.com> <49E3DB35.4030601@aldan.algebra.com> <bb4a86c70904131909k44aba88dk126d25a4f1fc3744@mail.gmail.com> <49E41DBB.5090805@aldan.algebra.com> <bb4a86c70904140934h5b967efby4e3238bd97c5ca01@mail.gmail.com> <49E4CAE1.6090506@aldan.algebra.com> <bb4a86c70904141155h205b78caq95d5f2d30a583376@mail.gmail.com> <49E4EA14.80300@aldan.algebra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--0016361e7db21a795504678aa701
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

2009/4/14 Mikhail T. <mi+thun@aldan.algebra.com>:

[...]

> Slow, painful, but still progress... :-)

please find attached revised patch that implements mi's (aka Mikhail)
initial suggestion, i.e. use lstat(2) instead of stat(2). i've also
changed it a bit to allow both cases, i.e.

(1) when virtual root folder is requested and -u <user> option is set,
obexapp will always run as <user>;

(2) when virtual root folder is requested and _no_ -u option was
specified, obexapp will run as the owner of the found virtual root
folder entry (where entry is either symlink or actual subdirectory
under default root folder);

i've also included a patch, submitted by Ronald Klop to disable
spinner in client mode for non-interactive client sessions.

[...]

> To summarize, you seem willing to consider the owner of the matching
> entry when determining, which UID to switch to when dropping
> root-privileges after chroot. The only remaining disagreement is whether
> to use lstat vs. stat for the purpose. It being, literally, a
> one-character change in the code, you can go ahead and begin coding the
> change to match your style preferences.
>
> In the mean time, consider the example I just gave, showing stat being a
> security hole...

yes, now i get it :) sorry for being such a bonehead :) hopefully the
latest patch will work for everyone.

thanks,
max

--0016361e7db21a795504678aa701
Content-Type: text/plain; charset=US-ASCII; name="obexapp-uid4.diff.txt"
Content-Disposition: attachment; filename="obexapp-uid4.diff.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ftj3uk8i0

SW5kZXg6IGV2ZW50LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Vzci9sb2NhbC9jdnMvcG9ydHMv
b2JleGFwcC9ldmVudC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtdSAtcjEuNiBl
dmVudC5jCi0tLSBldmVudC5jCTUgSmFuIDIwMDkgMTY6Mzc6MjUgLTAwMDAJMS42CisrKyBldmVu
dC5jCTE0IEFwciAyMDA5IDIxOjIzOjE2IC0wMDAwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIGV2
ZW50LmMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1l
bmtpbkB5YWhvby5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwOSBNYWtzaW0gWWV2bWVu
a2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8Ymx1ZXRvb3RoLmg+CiAj
aW5jbHVkZSA8b2JleC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+
CiAKICNpbmNsdWRlICJjb21wYXQuaCIKICNpbmNsdWRlICJvYmV4YXBwLmgiCkBAIC0xMzEsNyAr
MTMyLDcgQEAKIAogCWxvZ19kZWJ1ZygiJXMoKTogTWFkZSBzb21lIHByb2dyZXNzLi4uIiwgX19m
dW5jX18pOwogCi0JaWYgKCFjb250ZXh0LT5zZXJ2ZXIpIHsKKwlpZiAoIWNvbnRleHQtPnNlcnZl
ciAmJiAhY29udGV4dC0+bmkgJiYgaXNhdHR5KFNURE9VVF9GSUxFTk8pKSB7CiAJCXN0YXRpYyBj
aGFyCXNwaW5uZXJbXSA9ICJcXHwvLSI7CiAJCXN0YXRpYyB1aW50MzJfdAlzcGlubmVyX2lkeCA9
IDA7CiAKSW5kZXg6IG1haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvdXNyL2xvY2FsL2N2cy9w
b3J0cy9vYmV4YXBwL21haW4uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMwpkaWZmIC11IC1y
MS4xMyBtYWluLmMKLS0tIG1haW4uYwkyMyBBcHIgMjAwNyAxODoyOToxOCAtMDAwMAkxLjEzCisr
KyBtYWluLmMJMTQgQXByIDIwMDkgMjE6MjM6MzggLTAwMDAKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogbWFpbi5jCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDAyIE1ha3NpbSBZZXZtZW5raW4gPG1f
ZXZtZW5raW5AeWFob28uY29tPgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDkgTWFrc2ltIFll
dm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNjUsNyArNjUsNyBAQAogewogCXN0cnVjdCBzaWdhY3Rpb24J
c2E7CiAJY2hhcgkJCSplcCA9IE5VTEwsICpwcmlfbmFtZSA9IE5VTEw7Ci0JaW50CQkJbiwgc2Vy
dmljZSwgbm9uaW50ZXJhY3RpdmU7CisJaW50CQkJbiwgc2VydmljZSwgZGV0YWNoOwogCWNvbnRl
eHRfdAkJY29udGV4dDsKIAlvYmV4X2N0cmFuc190CQljdXN0ZnVuYzsKIApAQCAtODMsNyArODMs
NyBAQAogCS8qIFByZXBhcmUgY29udGV4dCAqLwogCW1lbXNldCgmY29udGV4dCwgMCwgc2l6ZW9m
KGNvbnRleHQpKTsKIAljb250ZXh0LnRmZCA9IGNvbnRleHQuc2ZkID0gLTE7Ci0JY29udGV4dC5k
ZXRhY2ggPSAxOworCWRldGFjaCA9IDE7CiAKIAljb250ZXh0LmxzX3NpemUgPSBPQkVYQVBQX0JV
RkZFUl9TSVpFOwogCWlmICgoY29udGV4dC5scyA9IChjaGFyICopIG1hbGxvYyhjb250ZXh0Lmxz
X3NpemUpKSA9PSBOVUxMKQpAQCAtMTE4LDggKzExOCw4IEBACiAJY3VzdGZ1bmMuY3VzdG9tZGF0
YSA9ICZjb250ZXh0OwogCiAJLyogUHJvY2VzcyBjb21tYW5kIGxpbmUgb3B0aW9ucyAqLwotCXNl
cnZpY2UgPSBub25pbnRlcmFjdGl2ZSA9IDA7Ci0Jd2hpbGUgKChuID0gZ2V0b3B0KGFyZ2MsIGFy
Z3YsICJhOkE6Y0M6ZERmaGw6bTpucjpTc3U6IikpICE9IC0xKSB7CisJc2VydmljZSA9IDA7CisJ
d2hpbGUgKChuID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhOkE6Y0M6ZERmaGw6bTpucjpSc1N1OiIp
KSAhPSAtMSkgewogCQlzd2l0Y2ggKG4pIHsKIAkJY2FzZSAnYSc6CiAJCQlpZiAoIWJ0X2F0b24o
b3B0YXJnLCAmY29udGV4dC5yYWRkcikpIHsKQEAgLTE4MCw3ICsxODAsNyBAQAogCQkJYnJlYWs7
CiAKIAkJY2FzZSAnZCc6IC8qIGRvIG5vdCBkZXRhY2ggc2VydmVyICovCi0JCQljb250ZXh0LmRl
dGFjaCA9IDA7CisJCQlkZXRhY2ggPSAwOwogCQkJYnJlYWs7CiAKIAkJY2FzZSAnRCc6IC8qIHVz
ZSBzdGRpbi9zdGRvdXQgKi8KQEAgLTIwOSw3ICsyMDksNyBAQAogCQkJCXVzYWdlKGJhc2VuYW1l
KGFyZ3ZbMF0pKTsKIAkJCQkvKiBOT1QgUkVBQ0hFRCAqLwogCi0JCQlub25pbnRlcmFjdGl2ZSA9
IDE7CisJCQljb250ZXh0Lm5pID0gMTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgJ3InOiAvKiByb290
ICovCkBAIC0yMTcsOCArMjE3LDEzIEBACiAJCQkJZXJyKDEsICJDb3VsZCBub3QgcmVhbHBhdGgo
JXMpIiwgb3B0YXJnKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgJ1InOiAvKiB2aXJ0dWFsaXplIHJv
b3QgZm9yIGVhY2ggZGV2aWNlICovCisJCQljb250ZXh0LnZyb290ID0gMTsKKwkJCWNvbnRleHQu
c2VjdXJlID0gMTsKKwkJCWJyZWFrOworCiAJCWNhc2UgJ3MnOiAvKiBzZXJ2ZXIgKi8KLQkJCWlm
IChub25pbnRlcmFjdGl2ZSkKKwkJCWlmIChjb250ZXh0Lm5pKQogCQkJCXVzYWdlKGJhc2VuYW1l
KGFyZ3ZbMF0pKTsKIAkJCQkvKiBOT1QgUkVBQ0hFRCAqLwogCkBAIC0yNjksMjMgKzI3NCwxMCBA
QAogCWxvZ19vcGVuKCJvYmV4YXBwIiwgcHJpX25hbWUsIDApOwogCiAJLyogRGV0YWNoIHNlcnZl
ciAoaWYgcmVxdWlyZWQpICovCi0JaWYgKGNvbnRleHQuc2VydmVyICYmIGNvbnRleHQuZGV0YWNo
KSB7Ci0JCXBpZF90CXBpZCA9IGZvcmsoKTsKLQotCQlpZiAocGlkID09IChwaWRfdCkgLTEpIHsK
LQkJCWxvZ19lcnIoIiVzKCk6IENvdWxkIG5vdCBmb3JrLiAlcyAoJWQpIiwKLQkJCQlfX2Z1bmNf
Xywgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0JCQlleGl0KDEpOwotCQl9Ci0KLQkJaWYgKHBp
ZCAhPSAwKQotCQkJZXhpdCgwKTsKLQotCQlpZiAoZGFlbW9uKDAsIDApIDwgMCkgewotCQkJbG9n
X2VycigiJXMoKTogQ291bGQgbm90IGRhZW1vbi4gJXMgKCVkKSIsCi0JCQkJX19mdW5jX18sIHN0
cmVycm9yKGVycm5vKSwgZXJybm8pOwotCQkJZXhpdCgxKTsKLQkJfQorCWlmIChjb250ZXh0LnNl
cnZlciAmJiBkZXRhY2ggJiYgZGFlbW9uKDAsIDApIDwgMCkgeworCQlsb2dfZXJyKCIlcygpOiBD
b3VsZCBub3QgZGFlbW9uLiAlcyAoJWQpIiwKKwkJCV9fZnVuY19fLCBzdHJlcnJvcihlcnJubyks
IGVycm5vKTsKKwkJZXhpdCgxKTsKIAl9CiAKIAkvKiBJbml0aWFsaXplIE9CRVggKi8KQEAgLTMw
NSw3ICsyOTcsNyBAQAogCiAJaWYgKGNvbnRleHQuc2VydmVyKQogCQluID0gb2JleGFwcF9zZXJ2
ZXIoY29udGV4dC5oYW5kbGUpOwotCWVsc2UgaWYgKG5vbmludGVyYWN0aXZlKQorCWVsc2UgaWYg
KGNvbnRleHQubmkpCiAJCW4gPSBvYmV4YXBwX25vbl9pbnRlcmFjdGl2ZV9jbGllbnQoY29udGV4
dC5oYW5kbGUsIGFyZ2MsIGFyZ3YpOwogCWVsc2UKIAkJbiA9IG9iZXhhcHBfY2xpZW50KGNvbnRl
eHQuaGFuZGxlKTsKSW5kZXg6IG9iZXhhcHAuMQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvdXNyL2xv
Y2FsL2N2cy9wb3J0cy9vYmV4YXBwL29iZXhhcHAuMSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
NQpkaWZmIC11IC1yMS4xNSBvYmV4YXBwLjEKLS0tIG9iZXhhcHAuMQkyMSBNYXkgMjAwNyAxNTo1
NTozNSAtMDAwMAkxLjE1CisrKyBvYmV4YXBwLjEJMTQgQXByIDIwMDkgMjE6MjQ6MDggLTAwMDAK
QEAgLTEsNiArMSw2IEBACiAuXCIgb2JleGFwcC4xCiAuXCIKLS5cIiBDb3B5cmlnaHQgKGMpIDIw
MDEtMjAwMyBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KKy5cIiBDb3B5
cmlnaHQgKGMpIDIwMDEtMjAwOSBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNv
bT4KIC5cIiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLlwiCiAuXCIgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw3
ICsyNyw3IEBACiAuXCIgJElkOiBvYmV4YXBwLjEsdiAxLjE1IDIwMDcvMDUvMjEgMTU6NTU6MzUg
bWF4IEV4cCAkCiAuXCIgJEZyZWVCU0QkCiAuXCIKLS5EZCBBcHJpbCAxMCwgMjAwNworLkRkIEFw
cmlsIDE0LCAyMDA5CiAuRHQgT0JFWEFQUCAxCiAuT3MKIC5TaCBOQU1FCkBAIC01NCw3ICs1NCw3
IEBACiAuQXIgcGFyYW1ldGVycwogLk5tCiAuRmwgcwotLk9wIEZsIGREU2gKKy5PcCBGbCBkRFNS
aAogLk9wIEZsIEEgQXIgQkRfQUREUgogLkZsIEMgQXIgY2hhbm5lbAogLk9wIEZsIG0gQXIgTVRV
CkBAIC0xOTMsNiArMTkzLDEyIEBACiBEZWZhdWx0cyB0byB0aGUgbWF4aW11bSBzdXBwb3J0ZWQg
dmFsdWUuCiAuSXQgRmwgbiAKIFdvcmsgaW4gdGhlIG5vbi1pbnRlcmFjdGl2ZSBjbGllbnQgbW9k
ZS4KKy5JdCBGbCBSCitWaXJ0dWFsaXplIHJvb3QgZm9sZGVyIGZvciBlYWNoIGNsaWVudCBkZXZp
Y2UgaW4gc2VydmVyIG1vZGUuCitXaWxsIGF1dG9tYXRpY2FsbHkgdHVybiBvbiBzZWN1cmUgbW9k
ZSwgaS5lLgorLkZsIFMKK29wdGlvbi4KK1BsZWFzZSByZWFkIHNlY3Rpb24gYmVsb3cgZm9yIGEg
Y29tcGxldGUgZGVzY3JpcHRpb24uCiAuSXQgRmwgciBBciBwYXRoCiBTcGVjaWZ5IHJvb3QgZm9s
ZGVyLgogRGVmYXVsdCByb290IGZvbGRlciBpbiB0aGUgc2VydmVyIG1vZGUgaXMKQEAgLTIxNiw2
ICsyMjIsNTcgQEAKIFRoZSB2YWx1ZSBzcGVjaWZpZWQgbWF5IGJlIGVpdGhlciBhIHVzZXJuYW1l
IG9yIGEgbnVtZXJpYyB1c2VyIGlkLgogVGhpcyBvbmx5IHdvcmtzIGlmIHNlcnZlciB3YXMgc3Rh
cnRlZCBhcyByb290LgogLkVsCisuU2ggVklSVFVBTCBST09UIEZPTERFUlMKK1doZW4gYWNjZXB0
aW5nIGNvbm5lY3Rpb25zIGluIHNlcnZlciBtb2RlLCAKKy5ObQord2lsbCBhdHRlbXB0IHRvIGZp
bmQgYW4gZW50cnkgdGhhdCB3b3VsZCBhY3QgYXMgYSB2aXJ0dWFsIHJvb3QKK2ZvbGRlciBmb3Ig
dGhlIGNvbm5lY3RpbmcgZGV2aWNlLgorVmlydHVhbCByb290IGZvbGRlcnMgbXVzdCByZXNpZGUg
dW5kZXIgZGVmYXVsdCByb290IGZvbGRlciB3aGljaCBpcyBzZXQKK3dpdGgKKy5GbCByCitvcHRp
b24uCitUaGUgcnVsZXMgYXJlIGFzIGZvbGxvd3M6CisuQmwgLWVudW0gLW9mZnNldCBpbmRlbnQg
LWNvbXBhY3QKKy5JdAorLk5tCit3aWxsIHRyeSB0byByZXNvbHZlIGNvbm5lY3RpbmcgZGV2aWNl
J3MgQkRfQUREUiB1c2luZworLlhyIGJ0X2dldGhvc3RieWFkZHIgMworY2FsbCBhbmQgY2hlY2sg
Zm9yIGFuIGVudHJ5IHRoYXQgbWF0Y2hlcyByZXNvbHZlZCBuYW1lIChpZiBhbnkpOworLkl0Cisu
Tm0KK3dpbGwgY2hlY2sgZm9yIGFuIGVudHJ5IHRoYXQgbWF0Y2hlcyBjb25uZWN0aW5nIGRldmlj
ZSdzIEJEX0FERFI7CisuSXQKKy5ObQord2lsbCBjaGVjayBmb3IgYW4gZW50cnksIG5hbWVkCisu
RHEgZGVmYXVsdCA7CisuRWwKK0lmIG5vbmUgb2YgdGhlIGFib3ZlIG1hdGNoZXMsIHRoZW4gdGhl
IGNvbm5lY3Rpb24gdG8gdGhlIGNsaWVudCBpcyB0ZXJtaW5hdGVkLgorT3RoZXJ3aXNlLAorLk5t
Cit3aWxsIHRyeSB0byBjaGFuZ2UgZGVmYXVsdCByb290IGZvbGRlciB0aGUgdGhlIGZvdW5kIGVu
dHJ5LgorLlBwCitJZgorLkZsIHUKK29wdGlvbiB3YXMgc3BlY2lmaWVkLCB0aGUKKy5ObQord2ls
bCB0cnkgdG8gY2hhbmdlIHRvIHRoZSBzcGVjaWZpZWQgdXNlci4KK090aGVyd2lzZQorLk5tCit3
aWxsIHRyeSBjaGFuZ2UgdG8gdGhlIHVzZXIsIHRoYXQgb3ducyB0aGUgZm91bmQgZW50cnkuCitU
aGF0IGlzLCBpZiB0aGUgZm91bmQgZW50cnkgaXMgYSBzeW1saW5rLCB0aGUKKy5ObQord2lsbCB0
cnkgY2hhbmdlIHRvIHRoZSB1c2VyLCB0aGF0IG93bnMgc3ltbGluayBhbmQgbm90IHRvIHRoZSB1
c2VyLCB0aGF0Citvd25zIHRoZSBlbnRyeSBzeW1saW5rIHBvaW50cyB0by4KKy5QcAorVGhpcyBh
bGxvd3MgdGhlIHNhbWUgc3lzdGVtIHRvIGludGVsbGlnZW50bHkgZGlzdGluZ3Vpc2ggZGlmZmVy
ZW50CitjbGllbnQgZGV2aWNlcyBhcyBiZWxvbmdpbmcgdG8gZGlmZmVyZW50IHVzZXJzLgorQW4g
YWRtaW5pc3RyYXRvciBjYW4gc2V0IHVwIHRoZSBzdWJkaXJlY3RvcmllcyBmb3IKK2tub3duIGRl
dmljZXMgdW5kZXIKKy5QYSAvdmFyL3Nwb29sL29iZXgKKyhvciB3aGVyZXZlciwgc2VlCisuRmwg
cgorb3B0aW9uKSBmb3IgZWFjaCB1c2VyLCBvciBldmVuIGFzIHN5bWxpbmtzIHRvIGVhY2ggdXNl
cidzIGhvbWUgZGlyZWN0b3J5Cisob3IgYSBzdWJkaXJlY3RvcnkgdGhlcmVvZikuCiAuU2ggTE9D
QUxFIFNVUFBPUlQKIFRoZQogLk5tCkBAIC0zMjUsNiArMzgyLDEzIEBACiAuRHYgQU5ZCiBhZGRy
ZXNzIGFuZCBSRkNPTU0gY2hhbm5lbAogLkxpIDEgLgorLkl0IGxuIC1zIEFyIC9ob21lL3dhbGxh
YnkgQXIgL3Zhci9zcG9vbC9vYmV4LzAwOjAxOjAyOjAzOjA0OjA1CisuSXQgY2hvd24gLWggd2Fs
bGFieSBBciAvdmFyL3Nwb29sL29iZXgvMDA6MDE6MDI6MDM6MDQ6MDUKK1doZW5ldmVyIHRoZSBk
ZXZpY2Ugd2l0aCBCRF9BRERSIG9mIDAwOjAxOjAyOjAzOjA0OjA1IGNvbm5lY3RzLAorLk5tCity
dW5uaW5nIGluIHNlcnZlciBtb2RlIHdpbGwgc3dpdGNoIHRvIHVzZXIgSUQKKy5BciB3YWxsYWJ5
CithbmQgdXNlIHRoZWlyIGhvbWUgZGlyZWN0b3J5IGFzIHRoZSB0b3AtbGV2ZWwgZm9yIHRoZSBj
b25uZWN0aW9uLiAKIC5FbAogLlNzIExldmVsIDEgSW5mb3JtYXRpb24gQWNjZXNzCiBUaGUgZmly
c3QgbGV2ZWwgaW52b2x2ZXMgdGhlIGJhc2ljIGFiaWxpdHkgdG8gcHV0IGFuIG9iamVjdCAoc3Vj
aCBhcyBhIHZDYXJkKQpJbmRleDogb2JleGFwcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC91c3Iv
bG9jYWwvY3ZzL3BvcnRzL29iZXhhcHAvb2JleGFwcC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjkKZGlmZiAtdSAtcjEuOSBvYmV4YXBwLmgKLS0tIG9iZXhhcHAuaAkyMyBBcHIgMjAwNyAxODoy
OToxOCAtMDAwMAkxLjkKKysrIG9iZXhhcHAuaAkxNCBBcHIgMjAwOSAyMToyNjo0NCAtMDAwMApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBvYmV4YXBwLmgKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MDIgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+CisgKiBDb3B5cmlnaHQg
KGMpIDIwMDItMjAwOSBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC04Nyw5ICs4NywxMCBA
QAogCXVuc2lnbmVkCQkgc2VydmVyICAgICA6IDE7IC8qIHNlcnZlciBtb2RlPyAqLwogCXVuc2ln
bmVkCQkgc2VjdXJlICAgICA6IDE7IC8qIHNlY3VyZSBtb2RlPyAqLwogCXVuc2lnbmVkCQkgZG9u
ZSAgICAgICA6IDE7IC8qIGRvbmU/ICovCi0JdW5zaWduZWQJCSBkZXRhY2ggICAgIDogMTsgLyog
ZGV0YWNoIHNlcnZlcj8gKi8KIAl1bnNpZ25lZCAJCSBmYnMgICAgICAgIDogMTsgLyogRm9sZGVy
IEJyb3dzaW5nIFNlcnZpY2UgKi8KLQl1bnNpZ25lZAkJIHJlc2VydmVkICAgOiAyOworCXVuc2ln
bmVkCQkgdnJvb3QJICAgIDogMTsgLyogdmlydHVhbGl6ZSBkZXZpY2UncyByb290ICovCisJdW5z
aWduZWQJCSBuaSAgICAgICAgIDogMTsgLyogbm9uLWludGVyYWN0aXZlPyAqLworCXVuc2lnbmVk
CQkgcmVzZXJ2ZWQgICA6IDE7CiAKIAkvKiBsb2NhbCBTRFAgc2Vzc2lvbiAoc2VydmVyIG9ubHkp
ICovCiAJdm9pZAkJCSpzczsKQEAgLTExMSw2ICsxMTIsMTAgQEAKIAl1aW50OF90CQkJKnNidWZm
ZXI7CiAKIAlpbnQJCQkgbXR1OyAgICAgICAgICAgIC8qIE9CRVggTVRVICovCisKKwkvKiBjcmVk
ZW50aWFscyAqLworCXVpZF90CQkJIHVpZDsKKwlnaWRfdAkJCSBnaWQ7CiB9OwogdHlwZWRlZiBz
dHJ1Y3QgY29udGV4dAkJY29udGV4dF90OwogdHlwZWRlZiBzdHJ1Y3QgY29udGV4dCAqCWNvbnRl
eHRfcDsKSW5kZXg6IHNlcnZlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC91c3IvbG9jYWwvY3Zz
L3BvcnRzL29iZXhhcHAvc2VydmVyLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAt
dSAtcjEuMTEgc2VydmVyLmMKLS0tIHNlcnZlci5jCTkgQXByIDIwMDkgMjM6MTY6MzEgLTAwMDAJ
MS4xMQorKysgc2VydmVyLmMJMTQgQXByIDIwMDkgMjA6NTU6MzcgLTAwMDAKQEAgLTEsNyArMSw3
IEBACiAvKgogICogc2VydmVyLmMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgTWFrc2ltIFll
dm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAw
OSBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KICAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC04OSw2ICs4OSwxMCBAQAogc3RhdGljIGNo
YXIgY29uc3QgKiBjb25zdAlsc19wYXJlbnRfZm9sZGVyID0KIAkiPHBhcmVudC1mb2xkZXIvPlxu
IjsKIAorc3RhdGljIGludCBvYmV4YXBwX3NlcnZlcl9zZXRfaW5pdGlhbF9yb290IChjb250ZXh0
X3AgY29udGV4dCk7CitzdGF0aWMgaW50IG9iZXhhcHBfc2VydmVyX3NldF9kZXZpY2Vfcm9vdCAg
KGNvbnRleHRfcCBjb250ZXh0KTsKK3N0YXRpYyBpbnQgb2JleGFwcF9zZXJ2ZXJfc2V0X2ZpbmFs
X3Jvb3QgICAoY29udGV4dF9wIGNvbnRleHQpOworCiAvKiBPQkVYIHJlcXVlc3QgaGFuZGxlcnMg
Ki8KIHN0YXRpYyBvYmV4YXBwX3JlcXVlc3RfaGFuZGxlcl90CW9iZXhhcHBfc2VydmVyX3JlcXVl
c3RfY29ubmVjdDsKIHN0YXRpYyBvYmV4YXBwX3JlcXVlc3RfaGFuZGxlcl90CW9iZXhhcHBfc2Vy
dmVyX3JlcXVlc3RfZGlzY29ubmVjdDsKQEAgLTExNCw3ICsxMTgsNiBAQAogb2JleGFwcF9zZXJ2
ZXIob2JleF90ICpoYW5kbGUpCiB7CiAJY29udGV4dF9wCQkgY29udGV4dCA9IChjb250ZXh0X3Ap
IE9CRVhfR2V0VXNlckRhdGEoaGFuZGxlKTsKLQlzdHJ1Y3QgcGFzc3dkCQkqcHcgPSBOVUxMOwog
CWludAkJCSBlcnJvciA9IC0xOwogCXN0cnVjdCBzb2NrYWRkcl9yZmNvbW0JIGFkZHI7CiAKQEAg
LTEzMSwyNiArMTM0LDYgQEAKIAkJZ290byBkb25lOwogCX0KIAotCWlmIChjb250ZXh0LT51c2Vy
ICE9IE5VTEwpIHsKLQkJaWYgKGF0b2koY29udGV4dC0+dXNlcikgIT0gMCkKLQkJCXB3ID0gZ2V0
cHd1aWQoYXRvaShjb250ZXh0LT51c2VyKSk7Ci0JCWVsc2UKLQkJCXB3ID0gZ2V0cHduYW0oY29u
dGV4dC0+dXNlcik7Ci0KLQkJaWYgKHB3ID09IE5VTEwpIHsKLQkJCWxvZ19lcnIoIiVzKCk6IFVu
a25vd24gdXNlciAlcyIsIF9fZnVuY19fLCAKLQkJCQljb250ZXh0LT51c2VyKTsKLQkJCWdvdG8g
ZG9uZTsKLQkJfQotCX0KLQotCWlmIChjb250ZXh0LT5yb290WzBdID09ICdcMCcpIHsKLQkJaWYg
KHB3ID09IE5VTEwpCi0JCQlzdHJsY3B5KGNvbnRleHQtPnJvb3QsIE9CRVhBUFBfUk9PVF9ESVIs
IFBBVEhfTUFYKTsKLQkJZWxzZQotCQkJc3RybGNweShjb250ZXh0LT5yb290LCBwdy0+cHdfZGly
LCBQQVRIX01BWCk7Ci0JfQotCiAJbG9nX2luZm8oIiVzOiBTdGFydGluZyBPQkVYIHNlcnZlciIs
IF9fZnVuY19fKTsKIAogCWlmIChPQkVYX1NldFRyYW5zcG9ydE1UVShoYW5kbGUsIGNvbnRleHQt
Pm10dSwgY29udGV4dC0+bXR1KSA8IDApIHsKQEAgLTE2Miw3ICsxNDUsNyBAQAogCWFkZHIucmZj
b21tX2xlbiA9IHNpemVvZihhZGRyKTsKIAlhZGRyLnJmY29tbV9mYW1pbHkgPSBBRl9CTFVFVE9P
VEg7CiAJYWRkci5yZmNvbW1fY2hhbm5lbCA9IGNvbnRleHQtPmNoYW5uZWw7Ci0JbWVtY3B5KCZh
ZGRyLnJmY29tbV9iZGFkZHIsICZjb250ZXh0LT5yYWRkciwgc2l6ZW9mKGNvbnRleHQtPnJhZGRy
KSk7CisJbWVtY3B5KCZhZGRyLnJmY29tbV9iZGFkZHIsICZjb250ZXh0LT5sYWRkciwgc2l6ZW9m
KGNvbnRleHQtPmxhZGRyKSk7CiAKIAlpZiAoT0JFWF9TZXJ2ZXJSZWdpc3RlcihoYW5kbGUsIChz
dHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsCiAJCQlzaXplb2YoYWRkcikpIDwgMCkgewpAQCAtMTcw
LDQwICsxNTMsMTIgQEAKIAkJZ290byBkb25lOwogCX0KIAotCWlmIChnZXR1aWQoKSA9PSAwKSB7
Ci0JCWlmIChjb250ZXh0LT5zZWN1cmUpIHsKLQkJCWlmIChjaHJvb3QoY29udGV4dC0+cm9vdCkg
PCAwKSB7Ci0JCQkJbG9nX2VycigiJXMoKTogQ291bGQgbm90IGNocm9vdCglcykuICVzICglZCki
LAotCQkJCQlfX2Z1bmNfXywgY29udGV4dC0+cm9vdCwKLQkJCQkJc3RyZXJyb3IoZXJybm8pLCBl
cnJubyk7Ci0JCQkJZ290byBkb25lOwotCQkJfQotCi0JCQlzdHJsY3B5KGNvbnRleHQtPnJvb3Qs
ICIvIiwgUEFUSF9NQVgpOwotCQl9Ci0KLQkJaWYgKHB3ICE9IE5VTEwpIHsKLQkJCWlmIChzZXRn
aWQocHctPnB3X2dpZCkgPCAwKSB7Ci0JCQkJbG9nX2VycigiJXMoKTogQ291bGQgbm90IHNldGdp
ZCglZCkuICVzICglZCkiLAotCQkJCQlfX2Z1bmNfXywgcHctPnB3X2dpZCwgc3RyZXJyb3IoZXJy
bm8pLAotCQkJCQllcnJubyk7Ci0JCQkJZ290byBkb25lOwotCQkJfQotCi0JCQlpZiAoc2V0dWlk
KHB3LT5wd191aWQpIDwgMCkgewotCQkJCWxvZ19lcnIoIiVzKCk6IENvdWxkIG5vdCBzZXR1aWQo
JWQpLiAlcyAoJWQpIiwKLQkJCQkJX19mdW5jX18sIHB3LT5wd191aWQsIHN0cmVycm9yKGVycm5v
KSwKLQkJCQkJZXJybm8pOwotCQkJCWdvdG8gZG9uZTsKLQkJCX0KLQkJfQotCX0KLQotCWlmIChj
aGRpcihjb250ZXh0LT5yb290KSA8IDApIHsKLQkJbG9nX2VycigiJXMoKTogQ291bGQgbm90IGNo
ZGlyKCVzKS4gJXMgKCVkKSIsCi0JCQlfX2Z1bmNfXywgY29udGV4dC0+cm9vdCwgc3RyZXJyb3Io
ZXJybm8pLCBlcnJubyk7CisJaWYgKG9iZXhhcHBfc2VydmVyX3NldF9pbml0aWFsX3Jvb3QoY29u
dGV4dCkgPCAwKQorCQlnb3RvIGRvbmU7CisJaWYgKGNvbnRleHQtPnZyb290ICYmIG9iZXhhcHBf
c2VydmVyX3NldF9kZXZpY2Vfcm9vdChjb250ZXh0KSA8IDApCisJCWdvdG8gZG9uZTsKKwlpZiAo
b2JleGFwcF9zZXJ2ZXJfc2V0X2ZpbmFsX3Jvb3QoY29udGV4dCkgPCAwKQogCQlnb3RvIGRvbmU7
Ci0JfQogCiAJbG9nX2RlYnVnKCIlcygpOiBFbnRlcmluZyBldmVudCBwcm9jZXNzaW5nIGxvb3Au
Li4iLCBfX2Z1bmNfXyk7CiAKQEAgLTIyNyw2ICsxODIsMTY1IEBACiB9IC8qIG9iZXhhcHBfc2Vy
dmVyICovCiAKIC8qCisgKiBTZXQgaW5pdGlhbCBzZXJ2ZXIgcm9vdAorICovCisKK3N0YXRpYyBp
bnQKK29iZXhhcHBfc2VydmVyX3NldF9pbml0aWFsX3Jvb3QoY29udGV4dF9wIGNvbnRleHQpCit7
CisJc3RydWN0IHBhc3N3ZAkqcHcgPSBOVUxMOworCWNoYXIJCSplcDsKKworCWlmIChjb250ZXh0
LT51c2VyICE9IE5VTEwpIHsKKwkJY29udGV4dC0+dWlkID0gc3RydG91bChjb250ZXh0LT51c2Vy
LCAmZXAsIDEwKTsKKwkJaWYgKCplcCAhPSAnXDAnKQorCQkJcHcgPSBnZXRwd25hbShjb250ZXh0
LT51c2VyKTsKKwkJZWxzZQorCQkJcHcgPSBnZXRwd3VpZChjb250ZXh0LT51aWQpOworCisJCWlm
IChwdyA9PSBOVUxMKSB7CisJCQlsb2dfZXJyKCIlcygpOiBVbmtub3duIHVzZXIgJyVzJyIsCisJ
CQkJX19mdW5jX18sIGNvbnRleHQtPnVzZXIpOworCQkJcmV0dXJuICgtMSk7CisJCX0KKworCQls
b2dfZGVidWcoIiVzKCk6IFJlcXVlc3RlZCB0byBydW4gYXMgJyVzJywgdWlkPSVkLCBnaWQ9JWQi
LAorCQkJX19mdW5jX18sIGNvbnRleHQtPnVzZXIsIHB3LT5wd191aWQsIHB3LT5wd19naWQpOwor
CisJCWNvbnRleHQtPnVpZCA9IHB3LT5wd191aWQ7CisJCWNvbnRleHQtPmdpZCA9IHB3LT5wd19n
aWQ7CisJfSBlbHNlIHsKKwkJY29udGV4dC0+dWlkID0gZ2V0dWlkKCk7CisJCWNvbnRleHQtPmdp
ZCA9IGdldGdpZCgpOworCX0KKworCS8qIFNldCBkZWZhdWx0IHJvb3QgKi8KKwlpZiAoY29udGV4
dC0+cm9vdFswXSA9PSAnXDAnKSB7CisJCWlmIChwdyA9PSBOVUxMKQorCQkJc3RybGNweShjb250
ZXh0LT5yb290LCBPQkVYQVBQX1JPT1RfRElSLCBQQVRIX01BWCk7CisJCWVsc2UKKwkJCXN0cmxj
cHkoY29udGV4dC0+cm9vdCwgcHctPnB3X2RpciwgUEFUSF9NQVgpOworCX0KKworCWlmIChjaGRp
cihjb250ZXh0LT5yb290KSA8IDApIHsKKwkJbG9nX2VycigiJXMoKTogQ291bGQgbm90IGNoZGly
KCVzKS4gJXMgKCVkKSIsCisJCQlfX2Z1bmNfXywgY29udGV4dC0+cm9vdCwgc3RyZXJyb3IoZXJy
bm8pLCBlcnJubyk7CisJCXJldHVybiAoLTEpOworCX0KKworCWxvZ19kZWJ1ZygiJXMoKTogVXNp
bmcgaW5pdGlhbCByb290ICVzIiwgX19mdW5jX18sIGNvbnRleHQtPnJvb3QpOworCisJcmV0dXJu
ICgwKTsKK30gLyogb2JleGFwcF9zZXJ2ZXJfc2V0X2luaXRpYWxfcm9vdCAqLworCisvKgorICog
U2V0IGRldmljZSBzcGVjaWZpYyBzZXJ2ZXIgcm9vdAorICovCisKK3N0YXRpYyBpbnQKK29iZXhh
cHBfc2VydmVyX3NldF9kZXZpY2Vfcm9vdChjb250ZXh0X3AgY29udGV4dCkKK3sKKwljaGFyIGNv
bnN0CSpyb290W10gPSB7IE5VTEwsIE5VTEwsIE5VTEwgfTsKKwlzdHJ1Y3QgaG9zdGVudAkqaGU7
CisJc3RydWN0IHN0YXQJc2I7CisJaW50CQluOworCisJbiA9IDA7CisKKwloZSA9IGJ0X2dldGhv
c3RieWFkZHIoKGNoYXIgY29uc3QgKikgJmNvbnRleHQtPnJhZGRyLAorCQkJc2l6ZW9mKGJkYWRk
cl90KSwgQUZfQkxVRVRPT1RIKTsKKwlpZiAoaGUgIT0gTlVMTCkKKwkJcm9vdFtuICsrXSA9IChj
aGFyIGNvbnN0ICopIGhlLT5oX25hbWU7CisKKwlyb290W24gKytdID0gYnRfbnRvYSgmY29udGV4
dC0+cmFkZHIsIE5VTEwpOworCisJcm9vdFtuICsrXSA9ICJkZWZhdWx0IjsKKworCWZvciAobiA9
IDA7IG4gPCAzOyBuICsrKSB7CisJCWlmIChyb290W25dID09IE5VTEwpCisJCQlicmVhazsKKwor
CQlsb2dfZGVidWcoIiVzKCk6IENoZWNraW5nIGZvciAlcy8lcyBzdWJkaXJlY3RvcnkiLAorCQkJ
X19mdW5jX18sIGNvbnRleHQtPnJvb3QsIHJvb3Rbbl0pOworCisJCWlmIChsc3RhdChyb290W25d
LCAmc2IpIDwgMCkgeworCQkJaWYgKGVycm5vID09IEVOT0VOVCkKKwkJCQljb250aW51ZTsKKwor
CQkJbG9nX2VycigiJXMoKTogQ291bGQgbm90IGxzdGF0KCVzLyVzKS4gJXMgKCVkKSIsCisJCQkJ
X19mdW5jX18sIGNvbnRleHQtPnJvb3QsIHJvb3Rbbl0sCisJCQkJc3RyZXJyb3IoZXJybm8pLCBl
cnJubyk7CisKKwkJCXJldHVybiAoLTEpOworCQl9CisKKwkJc3RybGNhdChjb250ZXh0LT5yb290
LCAiLyIsIFBBVEhfTUFYKTsKKwkJc3RybGNhdChjb250ZXh0LT5yb290LCByb290W25dLCBQQVRI
X01BWCk7CisKKwkJaWYgKGNoZGlyKHJvb3Rbbl0pIDwgMCkgeworCQkJbG9nX2VycigiJXMoKTog
Q291bGQgbm90IGNoZGlyKCVzKS4gJXMgKCVkKSIsCisJCQkJX19mdW5jX18sIGNvbnRleHQtPnJv
b3QsIHN0cmVycm9yKGVycm5vKSwKKwkJCQllcnJubyk7CisJCQlyZXR1cm4gKC0xKTsKKwkJfQor
CisJCS8qIElmIHVzZXIgd2FzIG5vdCBzZXQgYmVmb3JlLCB0YWtlIGl0IGZyb20gbHN0YXQoKSBk
YXRhICovCisJCWlmIChjb250ZXh0LT51c2VyID09IE5VTEwpIHsKKwkJCWNvbnRleHQtPnVpZCA9
IHNiLnN0X3VpZDsKKwkJCWNvbnRleHQtPmdpZCA9IHNiLnN0X2dpZDsKKwkJfQorCisJCWxvZ19k
ZWJ1ZygiJXMoKTogVXNpbmcgZGV2aWNlIHNwZWNpZmljIHJvb3QgJXMsIHVpZD0lZCwgZ2lkPSVk
IiwKKwkJCV9fZnVuY19fLCBjb250ZXh0LT5yb290LCBjb250ZXh0LT51aWQsIGNvbnRleHQtPmdp
ZCk7CisKKwkJcmV0dXJuICgxKTsKKwl9CisKKwlsb2dfZXJyKCIlcygpOiBDb3VsZCBub3QgZmlu
ZCBkZXZpY2Ugc3BlY2lmaWMgcm9vdCBmb3IgdGhlIGRldmljZSAiIFwKKwkJImJkYWRkciAlcyAo
JXMpIiwgX19mdW5jX18sIHJvb3RbMV0sCisJCXJvb3RbMF0/IHJvb3RbMF0gOiAiLW5vLW5hbWUt
Iik7CisKKwlyZXR1cm4gKC0xKTsKK30gLyogb2JleGFwcF9zZXJ2ZXJfc2V0X2RldmljZV9yb290
ICovCisKKy8qCisgKiBGaW5hbGl6ZSBzZXJ2ZXIgcm9vdAorICovCisKK3N0YXRpYyBpbnQKK29i
ZXhhcHBfc2VydmVyX3NldF9maW5hbF9yb290KGNvbnRleHRfcCBjb250ZXh0KQoreworCWlmIChj
b250ZXh0LT5zZWN1cmUpIHsKKwkJaWYgKGNocm9vdChjb250ZXh0LT5yb290KSA8IDApIHsKKwkJ
CWxvZ19lcnIoIiVzKCk6IENvdWxkIG5vdCBjaHJvb3QoJXMpLiAlcyAoJWQpIiwKKwkJCQlfX2Z1
bmNfXywgY29udGV4dC0+cm9vdCwKKwkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJCXJl
dHVybiAoLTEpOworCQl9CisKKwkJc3RybGNweShjb250ZXh0LT5yb290LCAiLyIsIFBBVEhfTUFY
KTsKKwl9CisKKwlpZiAoY29udGV4dC0+Z2lkICE9IGdldGdpZCgpICYmIHNldGdpZChjb250ZXh0
LT5naWQpIDwgMCkgeworCQlsb2dfZXJyKCIlcygpOiBDb3VsZCBub3Qgc2V0Z2lkKCVkKS4gJXMg
KCVkKSIsCisJCQlfX2Z1bmNfXywgY29udGV4dC0+Z2lkLCBzdHJlcnJvcihlcnJubyksIGVycm5v
KTsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJaWYgKGNvbnRleHQtPnVpZCAhPSBnZXR1aWQoKSAm
JiBzZXR1aWQoY29udGV4dC0+dWlkKSA8IDApIHsKKwkJbG9nX2VycigiJXMoKTogQ291bGQgbm90
IHNldHVpZCglZCkuICVzICglZCkiLAorCQkJX19mdW5jX18sIGNvbnRleHQtPnVpZCwgc3RyZXJy
b3IoZXJybm8pLCBlcnJubyk7CisJCXJldHVybiAoLTEpOworCX0KKworCWxvZ19ub3RpY2UoIiVz
KCk6IFVzaW5nIHJvb3QgJXM7IFNlY3VyZSBtb2RlICVzOyAiCisJCSJSdW5uaW5nIGFzIHVpZD0l
ZCwgZ2lkPSVkIiwgX19mdW5jX18sIGNvbnRleHQtPnJvb3QsCisJCWNvbnRleHQtPnNlY3VyZT8g
ImVuYWJsZWQiIDogImRpc2FibGVkIiwgZ2V0dWlkKCksIGdldGdpZCgpKTsKKworCXJldHVybiAo
MCk7Cit9IC8qIG9iZXhhcHBfc2VydmVyX3NldF9maW5hbF9yb290ICovCisKKy8qCiAgKiBQcm9j
ZXNzIE9CRVhfRVZfUkVRSElOVCBldmVudAogICovCiAKQEAgLTU2NSw2ICs2NzksMTUgQEAKIAkJ
CX0KIAkJfQogCisJCWlmIChjaG1vZChjb250ZXh0LT50ZW1wLCBTX0lSVVNSfFNfSVdVU1J8U19J
UkdSUHxTX0lXR1JQKSA8IDApIHsKKwkJCWxvZ19lcnIoIiVzKCk6IENvdWxkIG5vdCBjaG1vZCgl
cykuICVzICglZCkiLAorCQkJCV9fZnVuY19fLCBjb250ZXh0LT50ZW1wLAorCQkJCXN0cmVycm9y
KGVycm5vKSwgZXJybm8pOworCisJCQljb2RlcyA9IG9iZXhhcHBfdXRpbF9lcnJubzJyZXNwb25z
ZShlcnJubyk7CisJCQlnb3RvIGRvbmU7CisJCX0KKwogCQlpZiAocmVuYW1lKGNvbnRleHQtPnRl
bXAsIGNvbnRleHQtPmZpbGUpIDwgMCkgewogCQkJbG9nX2VycigiJXMoKTogQ291bGQgbm90IHJl
bmFtZSglcywgJXMpLiAlcyAoJWQpIiwKIAkJCQlfX2Z1bmNfXywgY29udGV4dC0+dGVtcCwKSW5k
ZXg6IHRyYW5zcG9ydC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC91c3IvbG9jYWwvY3ZzL3BvcnRz
L29iZXhhcHAvdHJhbnNwb3J0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMKZGlmZiAtdSAt
cjEuMTMgdHJhbnNwb3J0LmMKLS0tIHRyYW5zcG9ydC5jCTIxIE1heSAyMDA3IDE1OjU1OjM1IC0w
MDAwCTEuMTMKKysrIHRyYW5zcG9ydC5jCTE0IEFwciAyMDA5IDIxOjI2OjAyIC0wMDAwCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIHRyYW5zcG9ydC5jCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDAx
IE1ha3NpbSBZZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28uY29tPgorICogQ29weXJpZ2h0IChj
KSAyMDAxLTIwMDkgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+CiAgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgwLDYgKzI4MCw5IEBA
CiAJCQkJcmV0dXJuICgtMSk7CiAJCQl9CiAKKwkJCW1lbWNweSgmY29udGV4dC0+cmFkZHIsICZh
ZGRyLnJmY29tbV9iZGFkZHIsCisJCQkJc2l6ZW9mKGNvbnRleHQtPnJhZGRyKSk7CisKIAkJCXJl
dHVybiAoMSk7CiAJCX0KIApJbmRleDogdXRpbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC91c3Iv
bG9jYWwvY3ZzL3BvcnRzL29iZXhhcHAvdXRpbC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0
CmRpZmYgLXUgLXIxLjE0IHV0aWwuYwotLS0gdXRpbC5jCTEwIEFwciAyMDA5IDE3OjI2OjAzIC0w
MDAwCTEuMTQKKysrIHV0aWwuYwkxNCBBcHIgMjAwOSAyMToyNjowOCAtMDAwMApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiB1dGlsLmMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgTWFrc2ltIFll
dm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAw
OSBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KICAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MjUsOSArNDI1LDcgQEAKIAkgKiBzdHJp
bmcsIHNvIGFsd2F5cyBwYXNzIGEgY29weS4KIAkgKi8KIAotCXN0cm5jcHkobiwgbmFtZSwgc2l6
ZW9mKG4pKTsKLQluW3NpemVvZihuKSAtIDFdID0gJ1wwJzsKLQorCXN0cmxjcHkobiwgbmFtZSwg
c2l6ZW9mKG4pKTsKIAlzbnByaW50Zih0ZW1wLCB0ZW1wX3NpemUsICIlcy9YWFhYWFhYWCIsIGRp
cm5hbWUobikpOwogCiAJcmV0dXJuIChta3N0ZW1wKHRlbXApKTsK
--0016361e7db21a795504678aa701--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70904141438y2f8742efxa9c640f21581b2ed>