[OpenAFS-devel] [PATCH]: Some modifications to the pam module (2)

jacobi@de.ibm.com jacobi@de.ibm.com
Thu, 29 Mar 2001 15:45:17 +0200


--0__=PJryEKrcnGsPzhBek2mtR1ziplNy336BoRsNewHLMs8imQHxhzz9kJfl
Content-type: text/plain; charset=us-ascii
Content-Disposition: inline



Ok, I have some new ideas concerning the AFS pam module. Last month
I introduced the "trust_root" and "catch_su" options to the authentication.
I rethought the whole thing because I was still not satisfied with those
options.
So far the module is prompting every user for a password (except root),
even if she is not registered in the current AFS cell.
Now I included "pr" calls to ask for the existence of the user first
(actually the
module does the same like "ptr examine"). When the user is registered in
the cell
she will be prompted for the AFS password the usual way. Otherwise the
module
returns success, so that another pam module has to block/grant the user
(from) authentication.
This behaviour can be turned on using the new "trust_unknown_user" switch.
A pam config may look like this:

auth required  /lib/security/pam_unix.so      nullok md5 ....
auth required  /lib/security/pam_afs.so.1     try_first_pass
trust_unknown_user

Thus, the admin can still create local users who are not known to the AFS
cell but
should have access to the machine. The "trust_unknown_user" switch makes
"trust_root" and "catch_su" obsolete, and I think this is the right way to
evaluate whether
to prompt for an AFS password or not. Hopefully, nobody but me used those
to
switches that are removed by my new patch ... 8-\
In case AFS is not available only root is granted login access. From my
point of view
this is necessary in order not to lock out the sys admins if the network is
down (you can
believe me this was a very painful experience for me 8-( ) on the one hand,
but on the
other hand it should not be possible to break in a system by blocking a
service (i.e.
make AFS unavailable to make the pam_afs module grant access without
prompting
for a password (for example by pulling the network cable out of the wall
plug)). I still
have in mind giving users null passwords locally and having them type in
the
AFS password for a login.
Does somebody have any further ideas/suggestions? Here is the patch ...

Carsten Jacobi

(See attached file: openafs-1.0.3-pam_trust_unknown.patch)

--0__=PJryEKrcnGsPzhBek2mtR1ziplNy336BoRsNewHLMs8imQHxhzz9kJfl
Content-type: application/octet-stream; 
	name="openafs-1.0.3-pam_trust_unknown.patch"
Content-Disposition: attachment; filename="openafs-1.0.3-pam_trust_unknown.patch"
Content-transfer-encoding: base64

LS0tIHNyYy9wYW0vYWZzX2F1dGguYy5wYW1fdHJ1c3RfdXNlcglUdWUgTWFyICA2IDIyOjMyOjQy
IDIwMDEKKysrIHNyYy9wYW0vYWZzX2F1dGguYwlXZWQgTWFyIDI4IDIxOjM5OjMzIDIwMDEKQEAg
LTE3LDYgKzE3LDggQEAKICNpbmNsdWRlIDxhZnMvcGFyYW0uaD4KICNpbmNsdWRlIDxzeXMvcGFy
YW0uaD4KICNpbmNsdWRlIDxhZnMva2F1dGlscy5oPgorI2luY2x1ZGUgPGFmcy9kaXJwYXRoLmg+
CisjaW5jbHVkZSA8YWZzL3B0Y2xpZW50Lmg+CiAjaW5jbHVkZSAiYWZzX21lc3NhZ2UuaCIKICNp
bmNsdWRlICJhZnNfdXRpbC5oIgogI2luY2x1ZGUgPHNpZ25hbC5oPgpAQCAtNDIsMjEgKzQ0LDI3
IEBACiAgICAgaW50IHVzZV9maXJzdF9wYXNzID0gMDsKICAgICBpbnQgdHJ5X2ZpcnN0X3Bhc3Mg
PSAwOwogICAgIGludCBpZ25vcmVfcm9vdCA9IDA7Ci0gICAgaW50IHRydXN0X3Jvb3QgPSAwOwot
ICAgIGludCBjYXRjaF9zdSA9IDA7CisgICAgaW50IHRydXN0X3VzZXIgPSAwOwogICAgIGludCBz
ZXRfZXhwaXJlcyA9IDA7ICAvKiBUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWQgaW4gcGFtX3NldF9j
cmVkKCkgKi8KICAgICBpbnQgZ290X2F1dGh0b2sgPSAwOwkvKiBnb3QgUEFNX0FVVEhUT0sgdXBv
biBlbnRyeSAqLwogICAgIGludCBub3VzZXIgPSAwOwogICAgIGNoYXIgbXlfcGFzc3dvcmRfYnVm
WzI1Nl07CiAgICAgY2hhciAqdXNlciA9IE5VTEwsICpwYXNzd29yZCA9IE5VTEw7CisgICAgcHJu
YW1lIHVzZXJuYW1lOwogICAgIGludCB0b3JjaF9wYXNzd29yZCA9IDE7CiAgICAgaW50IGk7Cisg
ICAgaW50IHNlYyA9IDE7CiAgICAgc3RydWN0IHBhbV9jb252ICpwYW1fY29udnAgPSBOVUxMOwog
ICAgIGludCBhdXRoX29rOwogICAgIHVpZF90IHVpZDsKICAgICBzdHJ1Y3QgcGFzc3dkIHVuaXhf
cHdkLCAqdXB3ZCA9IE5VTEw7CisKKyAgICBuYW1lbGlzdCBzaG9ydF9uYW1lbGlzdDsKKyAgICBp
ZGxpc3QgcmVzdWx0X2xpc3Q7CisKICAgICBjaGFyIHVwd2RfYnVmWzIwNDhdOwkvKiBzaXplIGlz
IGEgZ3Vlc3MuICovCiAgICAgY2hhcioJcmVhc29uID0gTlVMTDsKKyAgICBjaGFyICpjZWxsID0g
TlVMTDsKICAgICBwaWRfdCBjcGlkLCByY3BpZDsKICAgICBpbnQgICBzdGF0dXM7CiAgICAgc3Ry
dWN0IHNpZ2FjdGlvbiBuZXdBY3Rpb24sIG9yaWdBY3Rpb247CkBAIC04MiwxMCArOTAsOCBAQAog
CSAgICB0cnlfZmlyc3RfcGFzcyA9IDE7CiAJfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3ZbaV0s
ICJpZ25vcmVfcm9vdCIgICApID09IDApIHsKIAkgICAgaWdub3JlX3Jvb3QgPSAxOwotCX0gZWxz
ZSBpZiAoc3RyY2FzZWNtcChhcmd2W2ldLCAidHJ1c3Rfcm9vdCIgICApID09IDApIHsKLQkgICAg
dHJ1c3Rfcm9vdCA9IDE7Ci0JfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3ZbaV0sICJjYXRjaF9z
dSIgICApID09IDApIHsKLQkgICAgY2F0Y2hfc3UgPSAxOworCX0gZWxzZSBpZiAoc3RyY2FzZWNt
cChhcmd2W2ldLCAidHJ1c3RfdW5rbm93bl91c2VyIiAgICkgPT0gMCkgeworCSAgICB0cnVzdF91
c2VyID0gMTsKIAl9IGVsc2UgaWYgKHN0cmNhc2VjbXAoYXJndltpXSwgInNldGVudl9wYXNzd29y
ZF9leHBpcmVzIikgPT0gMCkgewogICAgICAgICAgICAgc2V0X2V4cGlyZXMgPSAxOwogCX0gZWxz
ZSB7CkBAIC0xMTMsMTMgKzExOSw3NSBAQAogCVJFVChQQU1fVVNFUl9VTktOT1dOKTsKICAgICB9
CiAKLSAgICBpZiAoKCFzdHJuY21wICgicm9vdCIsIHVzZXIsIDQpKSAmJiB0cnVzdF9yb290KSB7
Ci0JcGFtX2Fmc19zeXNsb2coTE9HX0lORk8sIFBBTUFGU19UUlVTVFJPT1QsIHVzZXIpOwotCVJF
VChQQU1fU1VDQ0VTUyk7Ci0gICAgfQotCiAgICAgcGFtX2Fmc19zeXNsb2coTE9HX0RFQlVHLCBQ
QU1BRlNfVVNFUk5BTUVERUJVRywgdXNlcik7CiAKKyAgICAvKiBOb3cgbG9vayBmb3IgdGhlIHVz
ZXIgaW4gdGhlIGN1cnJlbnQgQUZTIGNlbGwsIHJldHVybiBzdWNjZXNzIGV2ZW4KKwlpZiBjYWxs
cyBmYWlsIGluIG9yZGVyIG5vdCB0byBibG9jayBhIGxvZ2luIHdoZW4gQUZTIGlzIG5vdAorCWF2
YWlsYWJsZSEgKi8KKworICAgIGlmICh0cnVzdF91c2VyKQorICAgICAgeworCS8qIENvcHkgdGhl
IHVzZXIgbmFtZSBpbnRvIG91ciBvd24gbWVtLWFyZWEgZm9yICJwciIgZnVuY3Rpb25zICovCisJ
c3RybmNweSAodXNlcm5hbWUsIHVzZXIsIFBSX01BWE5BTUVMRU4pOworCisJLyogSW5pdGlhbGl6
ZSBhICJuYW1lIGxpc3QiIGFuZCBhbiAiaWRsaXN0IiBzdHJ1Y3R1cmUgKi8KKwlzaG9ydF9uYW1l
bGlzdC5uYW1lbGlzdF9sZW4gPSAxOworCXNob3J0X25hbWVsaXN0Lm5hbWVsaXN0X3ZhbCA9ICZ1
c2VybmFtZTsKKwlyZXN1bHRfbGlzdC5pZGxpc3RfbGVuID0gMDsKKwlyZXN1bHRfbGlzdC5pZGxp
c3RfdmFsID0gTlVMTDsKKworCS8qIEluaXRpYWxpemUgdGhlICJwciIgc3lzdGVtIGZpcnN0ISAq
LworCWlmICgoZXJyY29kZSA9IHByX0luaXRpYWxpemUoc2VjLCBBRlNESVJfQ0xJRU5UX0VUQ19E
SVJQQVRILCBjZWxsKSkgIT0gMCkKKwkgIHsKKwkgICAgcGFtX2Fmc19zeXNsb2coTE9HX0VSUiwg
UEFNQUZTX0FGU19FUlJPUiwgZXJyY29kZSk7CisJICAgIGlmICggc3RybmNtcCggdXNlcm5hbWUs
ICJyb290XDAiLCA1KSA9PSAwKQorCSAgICAgIHsKKwkJLyogU3RpbGwgYWNjZXB0IHJvb3QgaW4g
ZW1lcmdlbmN5IGNhc2VzIHdoZW4gQUZTIGlzIG5vdAorCQkgICBhdmFpbGFibGUhICovCisJCVJF
VChQQU1fU1VDQ0VTUyk7CisJICAgICAgfQorCSAgICBlbHNlCisJICAgICAgeworCQkvKiBBRlMg
aXMgbm90IHRoZXJlLCBzbyB3ZSBkb24ndCBrbm93IHdoZXRoZXIgdGhpcyB1c2VyIGlzCisJCSAg
IHZhbGlkIG9yIG5vdCAuLi4gcmVqZWN0ISAqLworCQlSRVQoUEFNX1VTRVJfVU5LTk9XTik7CisJ
ICAgICAgfQorCSAgfQorCisJLyogTm93IHJlc29sdmUgdGhlIG5hbWUgdG8gdGhlIGNvcnJlY3Qg
QUZTIElkICovCisJaWYgKChlcnJjb2RlID0gcHJfTmFtZVRvSWQoICZzaG9ydF9uYW1lbGlzdCwg
JnJlc3VsdF9saXN0KSkgIT0gMCkKKwkgIHsKKwkgICAgcGFtX2Fmc19zeXNsb2coTE9HX0VSUiwg
UEFNQUZTX0FGU19FUlJPUiwgZXJyY29kZSk7CisJICAgIGlmICggc3RybmNtcCggdXNlcm5hbWUs
ICJyb290XDAiLCA1KSA9PSAwKQorCSAgICAgIHsKKwkJLyogU3RpbGwgYWNjZXB0IHJvb3QgaW4g
ZW1lcmdlbmN5IGNhc2VzIHdoZW4gQUZTIGlzIG5vdAorCQkgICBhdmFpbGFibGUhICovCisJCVJF
VChQQU1fU1VDQ0VTUyk7CisJICAgICAgfQorCSAgICBlbHNlCisJICAgICAgeworCQkvKiBBRlMg
aXMgbm90IHRoZXJlLCBzbyB3ZSBkb24ndCBrbm93IHdoZXRoZXIgdGhpcyB1c2VyIGlzCisJCSAg
IHZhbGlkIG9yIG5vdCAuLi4gcmVqZWN0ISAqLworCQlSRVQoUEFNX1VTRVJfVU5LTk9XTik7CisJ
ICAgICAgfQorCSAgfQorCisJLyogVGVybWluYXRlIHRoZSAicHIiIHN5c3RlbSAqLworCXByX0Vu
ZCgpOworCXJ4X0ZpbmFsaXplKCk7CisKKwkvKiByZXN1bHRfbGlzdC5pZGxpc3RfdmFsWzBdIHNo
b3VsZCBub3cgY29udGFpbiB0aGUgdmFsaWQgQUZTIElkCisJICAgb2YgdGhlIHVzZXIsIG9yIDB4
N2ZmZSAoIi0yIiBhcyAxNWJpdC1udW1iZXIgLi4uIGZvcmV2ZXIgd2hpY2gKKwkgICByZWFzb24p
IGlmIHRoZSB1c2VyIGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBjZWxsICovCisJaWYgKHJlc3Vs
dF9saXN0LmlkbGlzdF92YWxbMF0gPT0gMHg3ZmZlKQorCSAgeworCSAgICBwYW1fYWZzX3N5c2xv
ZyhMT0dfSU5GTywgUEFNQUZTX1RSVVNUVVNFUiwgdXNlciwgcmVzdWx0X2xpc3QuaWRsaXN0X3Zh
bFswXSk7CisJICAgIFJFVChQQU1fU1VDQ0VTUyk7IC8qIExvb2tzIGNvbmZ1c2luZywgYnV0ICJ0
cnVzdF91c2VyIiBtZWFucyB0aGF0CisJCQkJIHdlIHRydXN0IG90aGVyIFBBTSBtb2R1bGVzIHRv
IGF1dGhlbnRpY2F0ZSB0aGUKKwkJCQkgdXNlciB3aG8gaXMgdW5rbm93biB0byB1cyAqLworCSAg
fQorICAgICAgfQorCiAgICAgLyoKICAgICAgKiBJZiB0aGUgdXNlciBoYXMgYSAibG9jYWwiIChv
ciB2aWEgbnNzLCBwb3NzaWJseSBuc3NfZGNlKSBwd2VudCwKICAgICAgKiBhbmQgaXRzIHVpZD09
MCwgYW5kICJpZ25vcmVfcm9vdCIgd2FzIGdpdmVuIGluIHBhbS5jb25mLApAQCAtMTQ3LDkgKzIx
NSw2IEBACiAJaWYgKGlnbm9yZV9yb290KSB7IAogCQlwYW1fYWZzX3N5c2xvZyhMT0dfSU5GTywg
UEFNQUZTX0lHTk9SSU5HUk9PVCwgdXNlcik7CiAJCVJFVChQQU1fQVVUSF9FUlIpOwotCX0gZWxz
ZSBpZiAodHJ1c3Rfcm9vdCAmJiAhY2F0Y2hfc3UpIHsKLQkJcGFtX2Fmc19zeXNsb2coTE9HX0lO
Rk8sIFBBTUFGU19UUlVTVFJPT1QsIHVzZXIpOwotCQlSRVQoUEFNX1NVQ0NFU1MpOwogCX0KICAg
ICB9CiAjZW5kaWYKLS0tIHNyYy9wYW0vYWZzX3NldGNyZWQuYy5wYW1fdHJ1c3RfdXNlcglUdWUg
TWFyICA2IDIyOjMyOjQzIDIwMDEKKysrIHNyYy9wYW0vYWZzX3NldGNyZWQuYwlXZWQgTWFyIDI4
IDIxOjQwOjU1IDIwMDEKQEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRlIDxhZnMvcGFyYW0uaD4K
ICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxhZnMva2F1dGlscy5oPgorI2luY2x1
ZGUgPGFmcy9kaXJwYXRoLmg+CisjaW5jbHVkZSA8YWZzL3B0Y2xpZW50Lmg+CiAjaW5jbHVkZSAi
YWZzX21lc3NhZ2UuaCIKICNpbmNsdWRlICJhZnNfdXRpbC5oIgogCkBAIC00MCwxMyArNDIsMTQg
QEAKICAgICBpbnQgb3JpZ21hc2s7CiAgICAgaW50IGxvZ21hc2sgPSBMT0dfVVBUTyhMT0dfSU5G
Tyk7CiAgICAgaW50IG5vd2FybiA9IDA7Ci0gICAgaW50IHVzZV9maXJzdF9wYXNzID0gMTsgLyog
dXNlIHRoZSBwYXNzd29yZCBwYXNzZWQgaW4gYnkgYXV0aCAqLworICAgIGludCB1c2VfZmlyc3Rf
cGFzcyA9IDA7IC8qIHVzZSB0aGUgcGFzc3dvcmQgcGFzc2VkIGluIGJ5IGF1dGggKi8KICAgICBp
bnQgdHJ5X2ZpcnN0X3Bhc3MgPSAwOwogICAgIGludCBnb3RfYXV0aHRvayA9IDA7CiAgICAgaW50
IGlnbm9yZV9yb290ID0gMDsKLSAgICBpbnQgdHJ1c3Rfcm9vdCA9IDA7CisgICAgaW50IHRydXN0
X3VzZXIgPSAwOwogICAgIGludCBzZXRfZXhwaXJlcyA9IDA7IC8qIHRoZSBkZWZhdWx0IGlzIHRv
IG5vdCB0byBzZXQgdGhlIGVudiB2YXJpYWJsZSAqLwogICAgIGludCBpOworICAgIGludCBzZWMg
PSAxOwogICAgIHN0cnVjdCBwYW1fY29udiAqcGFtX2NvbnZwID0gTlVMTDsKICAgICBjaGFyIG15
X3Bhc3N3b3JkX2J1ZlsyNTZdOwogICAgIGNoYXIgc2J1ZmZlclsxMDBdOwpAQCAtNTUsOSArNTgs
MTUgQEAKICAgICBpbnQgYXV0aF9vayA9IDA7CiAgICAgY2hhcioJbGg7CiAgICAgY2hhciAqdXNl
ciA9IE5VTEw7CisgICAgcHJuYW1lIHVzZXJuYW1lOwogICAgIGxvbmcgcGFzc3dvcmRfZXhwaXJl
cz0gLTE7CiAgICAgY2hhcioJcmVhc29uID0gTlVMTDsKKyAgICBjaGFyICpjZWxsID0gTlVMTDsK
ICAgICBzdHJ1Y3QgcGFzc3dkIHVuaXhfcHdkLCAqdXB3ZCA9IE5VTEw7CisKKyAgICBuYW1lbGlz
dCBzaG9ydF9uYW1lbGlzdDsKKyAgICBpZGxpc3QgcmVzdWx0X2xpc3Q7CisKICAgICBjaGFyIHVw
d2RfYnVmWzIwNDhdOyAgICAgICAgLyogc2l6ZSBpcyBhIGd1ZXNzLiAqLwogCiAjaWZuZGVmIEFG
U19TVU41Nl9FTlYKQEAgLTgwLDEwICs4OSw4IEBACiAJICAgIHRyeV9maXJzdF9wYXNzID0gMTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3ZbaV0sICJpZ25vcmVfcm9vdCIgICAp
ID09IDApIHsKICAgICAgICAgICAgIGlnbm9yZV9yb290ID0gMTsKLSAgICAgICAgfSBlbHNlIGlm
IChzdHJjYXNlY21wKGFyZ3ZbaV0sICJ0cnVzdF9yb290IiAgICkgPT0gMCkgewotICAgICAgICAg
ICAgdHJ1c3Rfcm9vdCA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyY2FzZWNtcChhcmd2W2ld
LCAiY2F0Y2hfc3UiICAgKSA9PSAwKSB7Ci0gICAgICAgICAgICB1c2VfZmlyc3RfcGFzcyA9IDA7
CisgICAgICAgIH0gZWxzZSBpZiAoc3RyY2FzZWNtcChhcmd2W2ldLCAidHJ1c3RfdW5rbm93bl91
c2VyIiAgICkgPT0gMCkgeworICAgICAgICAgICAgdHJ1c3RfdXNlciA9IDE7CiAJfSBlbHNlIGlm
IChzdHJjYXNlY21wKGFyZ3ZbaV0sICJzZXRlbnZfcGFzc3dvcmRfZXhwaXJlcyIpPT0wKSB7CiAJ
ICAgIHNldF9leHBpcmVzID0gMTsKIAl9IGVsc2UgewpAQCAtMTA2LDYgKzExMyw3MiBAQAogICAg
ICAgICBwYW1fYWZzX3N5c2xvZyhMT0dfRVJSLCBQQU1BRlNfTk9VU0VSLCBlcnJjb2RlKTsKICAg
ICAgICAgUkVUKFBBTV9VU0VSX1VOS05PV04pOwogICAgIH0KKworICAgIC8qIE5vdyBsb29rIGZv
ciB0aGUgdXNlciBpbiB0aGUgY3VycmVudCBBRlMgY2VsbCAqLworICAgIGlmICh0cnVzdF91c2Vy
KQorICAgICAgeworCS8qIENvcHkgdGhlIHVzZXIgbmFtZSBpbnRvIG91ciBvd24gbWVtLWFyZWEg
Zm9yICJwciIgZnVuY3Rpb25zICovCisJc3RybmNweSAodXNlcm5hbWUsIHVzZXIsIFBSX01BWE5B
TUVMRU4pOworCisJLyogSW5pdGlhbGl6ZSBhICJuYW1lIGxpc3QiIGFuZCBhbiAiaWRsaXN0IiBz
dHJ1Y3R1cmUgKi8KKwlzaG9ydF9uYW1lbGlzdC5uYW1lbGlzdF9sZW4gPSAxOworCXNob3J0X25h
bWVsaXN0Lm5hbWVsaXN0X3ZhbCA9ICZ1c2VybmFtZTsKKwlyZXN1bHRfbGlzdC5pZGxpc3RfbGVu
ID0gMDsKKwlyZXN1bHRfbGlzdC5pZGxpc3RfdmFsID0gTlVMTDsKKworCS8qIEluaXRpYWxpemUg
dGhlICJwciIgc3lzdGVtIGZpcnN0ISAqLworCWlmICgoZXJyY29kZSA9IHByX0luaXRpYWxpemUo
c2VjLCBBRlNESVJfQ0xJRU5UX0VUQ19ESVJQQVRILCBjZWxsKSkgIT0gMCkKKwkgIHsKKwkgICAg
cGFtX2Fmc19zeXNsb2coTE9HX0VSUiwgUEFNQUZTX0FGU19FUlJPUiwgZXJyY29kZSk7CisJICAg
IGlmICggc3RybmNtcCggdXNlcm5hbWUsICJyb290XDAiLCA1KSA9PSAwKQorCSAgICAgIHsKKwkJ
LyogU3RpbGwgYWNjZXB0IHJvb3QgaW4gZW1lcmdlbmN5IGNhc2VzIHdoZW4gQUZTIGlzIG5vdAor
CQkgICBhdmFpbGFibGUhICovCisJCVJFVChQQU1fU1VDQ0VTUyk7CisJICAgICAgfQorCSAgICBl
bHNlCisJICAgICAgeworCQkvKiBBRlMgaXMgbm90IHRoZXJlLCBzbyB3ZSBkb24ndCBrbm93IHdo
ZXRoZXIgdGhpcyB1c2VyIGlzCisJCSAgIHZhbGlkIG9yIG5vdCAuLi4gcmVqZWN0ISAqLworCQlS
RVQoUEFNX1VTRVJfVU5LTk9XTik7CisJICAgICAgfQorCSAgfQorCisJLyogTm93IHJlc29sdmUg
dGhlIG5hbWUgdG8gdGhlIGNvcnJlY3QgQUZTIElkICovCisJaWYgKChlcnJjb2RlID0gcHJfTmFt
ZVRvSWQoICZzaG9ydF9uYW1lbGlzdCwgJnJlc3VsdF9saXN0KSkgIT0gMCkKKwkgIHsKKwkgICAg
cGFtX2Fmc19zeXNsb2coTE9HX0VSUiwgUEFNQUZTX0FGU19FUlJPUiwgZXJyY29kZSk7CisJICAg
IGlmICggc3RybmNtcCggdXNlcm5hbWUsICJyb290XDAiLCA1KSA9PSAwKQorCSAgICAgIHsKKwkJ
LyogU3RpbGwgYWNjZXB0IHJvb3QgaW4gZW1lcmdlbmN5IGNhc2VzIHdoZW4gQUZTIGlzIG5vdAor
CQkgICBhdmFpbGFibGUhICovCisJCVJFVChQQU1fU1VDQ0VTUyk7CisJICAgICAgfQorCSAgICBl
bHNlCisJICAgICAgeworCQkvKiBBRlMgaXMgbm90IHRoZXJlLCBzbyB3ZSBkb24ndCBrbm93IHdo
ZXRoZXIgdGhpcyB1c2VyIGlzCisJCSAgIHZhbGlkIG9yIG5vdCAuLi4gcmVqZWN0ISAqLworCQlS
RVQoUEFNX1VTRVJfVU5LTk9XTik7CisJICAgICAgfQorCSAgfQorCisJLyogVGVybWluYXRlIHRo
ZSAicHIiIHN5c3RlbSAqLworCXByX0VuZCgpOworCXJ4X0ZpbmFsaXplKCk7CisKKwkvKiByZXN1
bHRfbGlzdC5pZGxpc3RfdmFsWzBdIHNob3VsZCBub3cgY29udGFpbiB0aGUgdmFsaWQgQUZTIElk
CisJICAgb2YgdGhlIHVzZXIsIG9yIDB4N2ZmZSAoIi0yIiBhcyAxNWJpdC1udW1iZXIgLi4uIGZv
cmV2ZXIgd2hpY2gKKwkgICByZWFzb24pIGlmIHRoZSB1c2VyIGlzIG5vdCByZWdpc3RlcmVkIGlu
IHRoZSBjZWxsICovCisJaWYgKHJlc3VsdF9saXN0LmlkbGlzdF92YWxbMF0gPT0gMHg3ZmZlKQor
CSAgeworCSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfSU5GTywgUEFNQUZTX1RSVVNUVVNFUiwgdXNl
cik7CisJICAgIFJFVChQQU1fU1VDQ0VTUyk7IC8qIExvb2tzIGNvbmZ1c2luZywgYnV0ICJ0cnVz
dF91c2VyIiBtZWFucworCQkJCSB0aGF0IHdlIHRydXN0IG90aGVyIFBBTSBtb2R1bGVzIHRvCisJ
CQkJIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciB3aG8gaXMgdW5rbm93biB0bworCQkJCSB1cyAqLwor
CSAgfQorICAgICAgfQorCiAgICAgLyoKICAgICAgKiBJZiB0aGUgdXNlciBoYXMgYSAibG9jYWwi
IChvciB2aWEgbnNzLCBwb3NzaWJseSBuc3NfZGNlKSBwd2VudCwKICAgICAgKiBhbmQgaXRzIHVp
ZD09MCwgYW5kICJpZ25vcmVfcm9vdCIgd2FzIGdpdmVuIGluIHBhbS5jb25mLApAQCAtMTMzLDkg
KzIwNiw2IEBACiAJaWYgKGlnbm9yZV9yb290KSB7IAogCQlwYW1fYWZzX3N5c2xvZyhMT0dfSU5G
TywgUEFNQUZTX0lHTk9SSU5HUk9PVCwgdXNlcik7CiAJCVJFVChQQU1fQVVUSF9FUlIpOwotCX0g
ZWxzZSBpZiAodHJ1c3Rfcm9vdCkgewotCQlwYW1fYWZzX3N5c2xvZyhMT0dfSU5GTywgUEFNQUZT
X1RSVVNUUk9PVCwgdXNlcik7Ci0JCVJFVChQQU1fU1VDQ0VTUyk7CiAJfQogICAgIH0KICNlbmRp
ZgotLS0gc3JjL3BhbS9hZnNfbWVzc2FnZS5jLnBhbV90cnVzdF91c2VyCVR1ZSBNYXIgIDYgMjM6
MjQ6NTggMjAwMQorKysgc3JjL3BhbS9hZnNfbWVzc2FnZS5jCVdlZCBNYXIgMjggMTc6NTc6NTYg
MjAwMQpAQCAtNjgsNyArNjgsNyBAQAogCQkJCQkJLyogMzM6ICovCiAgICAgIiIsCiAJCQkJCQkv
KiAzNDogKi8KLSAgICAiQUZTIGJsaW5kbHkgdHJ1c3RpbmcgdXNlciAlc1xuIiwJCS8qIDM1OiBU
UlVTVFJPT1QJKi8KKyAgICAiQUZTIGJsaW5kbHkgdHJ1c3RpbmcgdXNlciAlcywgQUZTLUlEPSVk
XG4iLC8qIDM1OiBUUlVTVFVTRVIJKi8KICAgICAiTmV3IEFGUyBQYXNzd29yZDogIiwgICAgICAg
ICAgICAgICAgICAgICAgIC8qIDM2OiBORVdfUFdEX1BST01QVCAgICovCiAgICAgIk5ldyBBRlMg
UGFzc3dvcmQgKGFnYWluKTogIiwgICAgICAgICAgICAgICAvKiAzNzogVkVSSUZZX1BXRF9QUk9N
UFQgKi8KICAgICAiRmFpbGVkIHRvIGNoYW5nZSBBRlMgcGFzc3dvcmQiLCAgICAgICAgICAgIC8q
IDM4OiBLUkJQQVNTX0ZBSUwgICAgICovCi0tLSBzcmMvcGFtL2Fmc19tZXNzYWdlLmgucGFtX3Ry
dXN0X3VzZXIJVHVlIE1hciAgNiAyMzoyNDo1OSAyMDAxCisrKyBzcmMvcGFtL2Fmc19tZXNzYWdl
LmgJV2VkIE1hciAyOCAxNzo1Nzo1NiAyMDAxCkBAIC00NSw3ICs0NSw3IEBACiAjZGVmaW5lIFBB
TUFGU19QQVNTRVhQRkFJTAkzMiAvKiAiRmFpbGVkIHRvIHNldCBQQVNTV09SRF9FWFBJUkVTIiAg
Ki8KICNkZWZpbmUgUEFNQUZTX0NIT1dOS1JCCQkzMyAvKiAiRmFpbGVkIHRvIGNob3duIGtyYiB0
aWNrZXRmaWxlIiAgKi8KICNkZWZpbmUgUEFNQUZTX0tSQkZBSUwJCTM0IC8qICJGYWlsZWQgdG8g
c2V0IEtSQlRLVEZJTEUiICAgICAgICAqLwotI2RlZmluZSBQQU1BRlNfVFJVU1RST09UCTM1IC8q
ICJJZ25vcmluZyBzdXBlcnVzZXIgJXMiCQkqLworI2RlZmluZSBQQU1BRlNfVFJVU1RVU0VSCTM1
IC8qICJUcnVzdGluZyB1c2VyICVzIgkJKi8KICNkZWZpbmUgUEFNQUZTX05FV19QV0RfUFJPTVBU
ICAgMzYgLyogIk5ldyBBRlMgUGFzc3dvcmQ6IiAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFBB
TUFGU19WRVJJRllfUFdEX1BST01QVCAgMzcgLyogIk5ldyBBRlMgUGFzc3dvcmQgKGFnYWluKToi
ICAgICAqLwogI2RlZmluZSBQQU1BRlNfS0FQQVNTX0ZBSUwgICAgICAzOCAvKiAiRmFpbGVkIHRv
IGNoYW5nZSBBRlMgcGFzc3dvcmQiICAgKi8K

--0__=PJryEKrcnGsPzhBek2mtR1ziplNy336BoRsNewHLMs8imQHxhzz9kJfl--