[PHP-dev 232] session module patch

Yasuo Ohgaki php-dev@php.gr.jp
Tue, 05 Feb 2002 14:40:16 +0900


This is a multi-part message in MIME format.
--------------040103010206020502030507
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

大垣です。

一度このパッチと同様なパッチをCVSにコミットした直後にリバートして
しまいましたが、作り直してみました。(今になって考えてみるとリバート
する必要はあまり無かったのですが)

少し古いバージョンをphp-dev@lists.php.netに送信していますが、
このパッチの方がいろいろなチェックを付け加えてたり、sessionの状態に
エラー状態を追加したりしています。

もし、テストして頂ける方がいれば助かるのですが、、、

 - Fixed crashes when invliad save_path/session name is specified.
   read function returns false, etc.
   (Includes, crash when user saven handler returns invalid return
    value. Crash when external save handler returns false, null "val"
    for session read function. Crash mm save handler crash when load
    is *very* high)
 - Fixed mm save handler. It supposed to work under any config now.
 - Prevent starting session multiple times by mistake.
 - Fixed bogus error message with external serializer is used.
 - Fixed sticky session save handler problem with session_module_name()
 - Fixed deadlock problem with files save handler.
 - Fixed SID constant. It's always defined now.
 - Changed error level to E_NOTICE, if function return error status.
   (If function returns FALSE for error, E_NOTICE is used instead of
    E_WARNING)

register_globals=Onの場合に発生する不具合以外はほぼこのパッチで
修正されています。register_global=Onでテストしていないで、テスト
して頂けると非常に助かります。

Patchは4.2.0-dev用ですが、4.1.1でも使えるかも知れません。
問題がある場合、MLか直接私にメールをして下さい。

宜しくお願いします。

PS:前より厳密に状態管理をしている為、一部のスクリプト/設定を
変更しないと動作しない場合があります。(セッションをスタートすると
実行できなくなる関数があります)

-- 
Yasuo Ohgaki
yohgaki@dd.iij4u.or.jp

--------------040103010206020502030507
Content-Type: text/plain;
 name="session.diff"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="session.diff"

PyBleHQvc2Vzc2lvbi90bXAuZGlmZgo/IGV4dC9zZXNzaW9uL2JhawpJbmRleDogZXh0L3Nl
c3Npb24vL21vZF9maWxlcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5
L3BocDQvZXh0L3Nlc3Npb24vbW9kX2ZpbGVzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NjcKZGlmZiAtdSAtcjEuNjcgbW9kX2ZpbGVzLmMKLS0tIGV4dC9zZXNzaW9uLy9tb2RfZmls
ZXMuYwkzIEZlYiAyMDAyIDA1OjQwOjE5IC0wMDAwCTEuNjcKKysrIGV4dC9zZXNzaW9uLy9t
b2RfZmlsZXMuYwk1IEZlYiAyMDAyIDAzOjI0OjE1IC0wMDAwCkBAIC0xNiw3ICsxNiw3IEBA
CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAqLwogCi0vKiAkSWQ6IG1vZF9maWxlcy5jLHYg
MS42NyAyMDAyLzAyLzAzIDA1OjQwOjE5IHlvaGdha2kgRXhwICQgKi8KKy8qICRJZDogbW9k
X2ZpbGVzLmMsdiAxLjY2IDIwMDIvMDIvMDMgMDM6MTc6MzUgeW9oZ2FraSBFeHAgJCAqLwog
CiAjaW5jbHVkZSAicGhwLmgiCiAKQEAgLTEyMyw3ICsxMjMsNyBAQAogCX0KIH0KIAotc3Rh
dGljIHZvaWQgcHNfZmlsZXNfb3Blbihwc19maWxlcyAqZGF0YSwgY29uc3QgY2hhciAqa2V5
KQorc3RhdGljIGludCBwc19maWxlc19vcGVuKHBzX2ZpbGVzICpkYXRhLCBjb25zdCBjaGFy
ICprZXkpCiB7CiAJY2hhciBidWZbTUFYUEFUSExFTl07CiAJVFNSTUxTX0ZFVENIKCk7CkBA
IC0xMzgsNyArMTM4LDcgQEAKIAkJCiAJCWlmICghcHNfZmlsZXNfdmFsaWRfa2V5KGtleSkg
fHwgCiAJCQkJIXBzX2ZpbGVzX3BhdGhfY3JlYXRlKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGRhdGEs
IGtleSkpCi0JCQlyZXR1cm47CisJCQlyZXR1cm4gRkFJTFVSRTsKIAkJCiAJCWRhdGEtPmxh
c3RrZXkgPSBlc3RyZHVwKGtleSk7CiAJCQpAQCAtMTUzLDEwICsxNTMsMTMgQEAKIAkJaWYg
KGRhdGEtPmZkICE9IC0xKSAKIAkJCWZsb2NrKGRhdGEtPmZkLCBMT0NLX0VYKTsKIAotCQlp
ZiAoZGF0YS0+ZmQgPT0gLTEpCisJCWlmIChkYXRhLT5mZCA9PSAtMSkgewogCQkJcGhwX2Vy
cm9yKEVfV0FSTklORywgIm9wZW4oJXMsIE9fUkRXUikgZmFpbGVkOiAlcyAoJWQpIiwgYnVm
LCAKIAkJCQkJc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CisJCQlyZXR1cm4gRkFJTFVSRTsK
KwkJfQogCX0KKwlyZXR1cm4gU1VDQ0VTUzsKIH0KIAogc3RhdGljIGludCBwc19maWxlc19j
bGVhbnVwX2Rpcihjb25zdCBjaGFyICpkaXJuYW1lLCBpbnQgbWF4bGlmZXRpbWUpCkBAIC0y
NTQsNyArMjU3LDkgQEAKIAlzdHJ1Y3Qgc3RhdCBzYnVmOwogCVBTX0ZJTEVTX0RBVEE7CiAK
LQlwc19maWxlc19vcGVuKGRhdGEsIGtleSk7CisJaWYgKHBzX2ZpbGVzX29wZW4oZGF0YSwg
a2V5KSA9PSBGQUlMVVJFKQorCQlyZXR1cm4gRkFJTFVSRTsKKwkKIAlpZiAoZGF0YS0+ZmQg
PCAwKQogCQlyZXR1cm4gRkFJTFVSRTsKIAkKQEAgLTI4Myw3ICsyODgsOSBAQAogCWxvbmcg
bjsKIAlQU19GSUxFU19EQVRBOwogCi0JcHNfZmlsZXNfb3BlbihkYXRhLCBrZXkpOworCWlm
IChwc19maWxlc19vcGVuKGRhdGEsIGtleSkgPT0gRkFJTFVSRSkKKwkJcmV0dXJuIEZBSUxV
UkU7CisKIAlpZiAoZGF0YS0+ZmQgPCAwKQogCQlyZXR1cm4gRkFJTFVSRTsKIApJbmRleDog
ZXh0L3Nlc3Npb24vL21vZF9tbS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0
b3J5L3BocDQvZXh0L3Nlc3Npb24vbW9kX21tLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MzEKZGlmZiAtdSAtcjEuMzEgbW9kX21tLmMKLS0tIGV4dC9zZXNzaW9uLy9tb2RfbW0uYwky
NSBKYW4gMjAwMiAyMDo1OToyNCAtMDAwMAkxLjMxCisrKyBleHQvc2Vzc2lvbi8vbW9kX21t
LmMJNSBGZWIgMjAwMiAwMzoyNDoxNSAtMDAwMApAQCAtMzE5LDcgKzMxOSw2IEBACiB7CiAJ
UFNfTU1fREFUQTsKIAlwc19zZCAqc2Q7Ci0JaW50IHJldCA9IEZBSUxVUkU7CiAKIAltbV9s
b2NrKGRhdGEtPm1tLCBNTV9MT0NLX1JEKTsKIAkKQEAgLTMyOSwxMiArMzI4LDE0IEBACiAJ
CSp2YWwgPSBlbWFsbG9jKHNkLT5kYXRhbGVuICsgMSk7CiAJCW1lbWNweSgqdmFsLCBzZC0+
ZGF0YSwgc2QtPmRhdGFsZW4pOwogCQkoKnZhbClbc2QtPmRhdGFsZW5dID0gJ1wwJzsKLQkJ
cmV0ID0gU1VDQ0VTUzsKIAl9Ci0KKwllbHNlIHsKKwkJKnZhbCA9IGVzdHJkdXAoIlwwIik7
CisJfQorCQogCW1tX3VubG9jayhkYXRhLT5tbSk7CiAJCi0JcmV0dXJuIHJldDsKKyAJcmV0
dXJuIFNVQ0NFU1M7CiB9CiAKIFBTX1dSSVRFX0ZVTkMobW0pCkluZGV4OiBleHQvc2Vzc2lv
bi8vcGhwX3Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9w
aHA0L2V4dC9zZXNzaW9uL3BocF9zZXNzaW9uLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NjgKZGlmZiAtdSAtcjEuNjggcGhwX3Nlc3Npb24uaAotLS0gZXh0L3Nlc3Npb24vL3BocF9z
ZXNzaW9uLmgJNSBGZWIgMjAwMiAwMToyODo1NSAtMDAwMAkxLjY4CisrKyBleHQvc2Vzc2lv
bi8vcGhwX3Nlc3Npb24uaAk1IEZlYiAyMDAyIDAzOjI0OjE1IC0wMDAwCkBAIC02MSwxMSAr
NjEsMTYgQEAKIAkjeCwgcHNfb3Blbl8jI3gsIHBzX2Nsb3NlXyMjeCwgcHNfcmVhZF8jI3gs
IHBzX3dyaXRlXyMjeCwgXAogCSBwc19kZWxldGVfIyN4LCBwc19nY18jI3ggCiAKLXR5cGVk
ZWYgZW51bSB7Ci0JcGhwX3Nlc3Npb25fZGlzYWJsZWQsCi0JcGhwX3Nlc3Npb25fbm9uZSwK
LQlwaHBfc2Vzc2lvbl9hY3RpdmUKLX0gcGhwX3Nlc3Npb25fc3RhdHVzOworLyogdHlwZWRl
ZiBlbnVtIHsgKi8KKy8qIAlwaHBfc2Vzc2lvbl9kaXNhYmxlZCwgKi8KKy8qIAlwaHBfc2Vz
c2lvbl9ub25lLCAqLworLyogCXBocF9zZXNzaW9uX2FjdGl2ZSAqLworLyogfSBwaHBfc2Vz
c2lvbl9zdGF0dXM7ICovCisKKyNkZWZpbmUgUFNfRElTQUJMRUQgICAgIDEKKyNkZWZpbmUg
UFNfTk9ORSAgICAgICAgIDIKKyNkZWZpbmUgUFNfQUNUSVZFICAgICAgIDQKKyNkZWZpbmUg
UFNfRVJST1IgICAgICAgIDgKIAogdHlwZWRlZiBzdHJ1Y3QgX3BocF9wc19nbG9iYWxzIHsK
IAljaGFyICpzYXZlX3BhdGg7CkBAIC03OSwxMCArODQsMTEgQEAKIAljaGFyICpjb29raWVf
cGF0aDsKIAljaGFyICpjb29raWVfZG9tYWluOwogCXplbmRfYm9vbCAgY29va2llX3NlY3Vy
ZTsKKwlsb25nIHJpbml0X21vZDsKIAlwc19tb2R1bGUgKm1vZDsKIAl2b2lkICptb2RfZGF0
YTsKIAlIYXNoVGFibGUgdmFyczsKLQlwaHBfc2Vzc2lvbl9zdGF0dXMgc2Vzc2lvbl9zdGF0
dXM7CisJbG9uZyBzZXNzaW9uX3N0YXR1czsKIAlsb25nIGdjX3Byb2JhYmlsaXR5OwogCWxv
bmcgZ2NfbWF4bGlmZXRpbWU7CiAJaW50IG1vZHVsZV9udW1iZXI7CkluZGV4OiBleHQvc2Vz
c2lvbi8vc2Vzc2lvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3Bo
cDQvZXh0L3Nlc3Npb24vc2Vzc2lvbi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3NQpk
aWZmIC11IC1yMS4yNzUgc2Vzc2lvbi5jCi0tLSBleHQvc2Vzc2lvbi8vc2Vzc2lvbi5jCTUg
RmViIDIwMDIgMDE6MzA6MjIgLTAwMDAJMS4yNzUKKysrIGV4dC9zZXNzaW9uLy9zZXNzaW9u
LmMJNSBGZWIgMjAwMiAwMzoyNDoxNiAtMDAwMApAQCAtODcsNyArODcsNyBAQAogCiBzdGF0
aWMgdm9pZCBwaHBfc2Vzc2lvbl9vdXRwdXRfaGFuZGxlcihjaGFyICpvdXRwdXQsIHVpbnQg
b3V0cHV0X2xlbiwgY2hhciAqKmhhbmRsZWRfb3V0cHV0LCB1aW50ICpoYW5kbGVkX291dHB1
dF9sZW4sIGludCBtb2RlIFRTUk1MU19EQykKIHsKLQlpZiAoKFBTKHNlc3Npb25fc3RhdHVz
KSA9PSBwaHBfc2Vzc2lvbl9hY3RpdmUpKSB7CisJaWYgKChQUyhzZXNzaW9uX3N0YXR1cykg
JiBQU19BQ1RJVkUpKSB7CiAJCSpoYW5kbGVkX291dHB1dCA9IHVybF9hZGFwdF9leHRfZXgo
b3V0cHV0LCBvdXRwdXRfbGVuLCBQUyhzZXNzaW9uX25hbWUpLCBQUyhpZCksIGhhbmRsZWRf
b3V0cHV0X2xlbiwgKHplbmRfYm9vbCkgKG1vZGUmUEhQX09VVFBVVF9IQU5ETEVSX0VORCA/
IDEgOiAwKSBUU1JNTFNfQ0MpOwogCX0gZWxzZSB7CiAJCSpoYW5kbGVkX291dHB1dCA9IE5V
TEw7CkBAIC0xMjgsOSArMTI4LDEyIEBACiBzdGF0aWMgUEhQX0lOSV9NSChPblVwZGF0ZVNl
cmlhbGl6ZXIpCiB7CiAJUFMoc2VyaWFsaXplcikgPSBfcGhwX2ZpbmRfcHNfc2VyaWFsaXpl
cihuZXdfdmFsdWUgVFNSTUxTX0NDKTsKLQlpZighUFMoc2VyaWFsaXplcikpIHsKLQkgIHBo
cF9lcnJvcihFX0VSUk9SLCJDYW5ub3QgZmluZCBzZXJpYWxpemF0aW9uIGhhbmRsZXIgJXMi
LG5ld192YWx1ZSk7Ci0JfQkgIAorLyogRm9sbG93aW5nIGxpbmVzIGFyZSBjb21tZW50ZWQg
b3V0IHRvIHByZXZlbnQgYm9ndXMgZXJyb3IgbWVzc2FnZSBhdAorICAgc3RhcnQgdXAuIGku
ZS4gU2VyaWFsaXplciBtb2R1bGVzIGFyZSBub3QgaW5pdGlsemllZCBiZWZvcmUgU2Vzc2lv
bgorICAgbW9kdWxlLiAqLworLyogCWlmKCFQUyhzZXJpYWxpemVyKSkgeyAqLworLyogCSAg
cGhwX2Vycm9yKEVfRVJST1IsIkNhbm5vdCBmaW5kIHNlcmlhbGl6YXRpb24gaGFuZGxlciAl
cyIsbmV3X3ZhbHVlKTsgKi8KKy8qIAl9CSAgICovCiAJcmV0dXJuIFNVQ0NFU1M7CiB9CiAK
QEAgLTQ3NywxOCArNDgwLDIzIEBACiB7CiAJY2hhciAqcmV0ID0gTlVMTDsKIAotCWlmIChQ
UyhzZXJpYWxpemVyKS0+ZW5jb2RlKCZyZXQsIG5ld2xlbiBUU1JNTFNfQ0MpID09IEZBSUxV
UkUpCisJaWYgKFBTKHNlcmlhbGl6ZXIpLT5lbmNvZGUoJnJldCwgbmV3bGVuIFRTUk1MU19D
QykgPT0gRkFJTFVSRSkgeworCQlQUyhzZXNzaW9uX3N0YXR1cykgPSBQU19FUlJPUjsKIAkJ
cmV0ID0gTlVMTDsKLQorCX0KKwkKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBw
aHBfc2Vzc2lvbl9kZWNvZGUoY29uc3QgY2hhciAqdmFsLCBpbnQgdmFsbGVuIFRTUk1MU19E
QykKIHsKLQlwaHBfc2Vzc2lvbl90cmFja19pbml0KFRTUk1MU19DKTsKLQlpZiAoUFMoc2Vy
aWFsaXplciktPmRlY29kZSh2YWwsIHZhbGxlbiBUU1JNTFNfQ0MpID09IEZBSUxVUkUpIHsK
LQkJcGhwX3Nlc3Npb25fZGVzdHJveShUU1JNTFNfQyk7Ci0JCXBocF9lcnJvcihFX1dBUk5J
TkcsICJGYWlsZWQgdG8gZGVjb2RlIHNlc3Npb24gb2JqZWN0LiBTZXNzaW9uIGhhcyBiZWVu
IGRlc3Ryb3llZC4iKTsKKwlpZiAoUFMoc2Vzc2lvbl9zdGF0dXMpICYgUFNfQUNUSVZFKSB7
CisJCXBocF9zZXNzaW9uX3RyYWNrX2luaXQoVFNSTUxTX0MpOworCQlpZiAoUFMoc2VyaWFs
aXplciktPmRlY29kZSh2YWwsIHZhbGxlbiBUU1JNTFNfQ0MpID09IEZBSUxVUkUpIHsKKwkJ
CVBTKHNlc3Npb25fc3RhdHVzKSA9IFBTX0VSUk9SOworCQkJcGhwX3Nlc3Npb25fZGVzdHJv
eShUU1JNTFNfQyk7CisJCQlwaHBfZXJyb3IoRV9XQVJOSU5HLCAiRmFpbGVkIHRvIGRlY29k
ZSBzZXNzaW9uIG9iamVjdC4gU2Vzc2lvbiBoYXMgYmVlbiBkZXN0cm95ZWQuIik7CisJCX0K
IAl9CiB9CiAKQEAgLTU0OSwxMyArNTU3LDE3IEBACiAJaW50IHZhbGxlbjsKIAkKIAlpZiAo
UFMobW9kKS0+b3BlbigmUFMobW9kX2RhdGEpLCBQUyhzYXZlX3BhdGgpLCBQUyhzZXNzaW9u
X25hbWUpKSA9PSBGQUlMVVJFKSB7Ci0JCXBocF9lcnJvcihFX0VSUk9SLCAiRmFpbGVkIHRv
IGluaXRpYWxpemUgc2Vzc2lvbiBtb2R1bGUiKTsKKwkJUFMoc2Vzc2lvbl9zdGF0dXMpID0g
UFNfRVJST1I7CisJCXBocF9lcnJvcihFX1dBUk5JTkcsICJGYWlsZWQgdG8gaW5pdGlhbGl6
ZSBzZXNzaW9uIG1vZHVsZSIpOwogCQlyZXR1cm47CiAJfQotCWlmIChQUyhtb2QpLT5yZWFk
KCZQUyhtb2RfZGF0YSksIFBTKGlkKSwgJnZhbCwgJnZhbGxlbikgPT0gU1VDQ0VTUykgewot
CQlwaHBfc2Vzc2lvbl9kZWNvZGUodmFsLCB2YWxsZW4gVFNSTUxTX0NDKTsKLQkJZWZyZWUo
dmFsKTsKKwlpZiAoUFMobW9kKS0+cmVhZCgmUFMobW9kX2RhdGEpLCBQUyhpZCksICZ2YWws
ICZ2YWxsZW4pID09IEZBSUxVUkUpIHsKKwkJUFMoc2Vzc2lvbl9zdGF0dXMpID0gUFNfRVJS
T1I7CisJCXBocF9lcnJvcihFX1dBUk5JTkcsICJGYWlsZWQgdG8gcmVhZCBzZXNzaW9uIGRh
dGEiKTsKKwkJcmV0dXJuOwogCX0KKwlwaHBfc2Vzc2lvbl9kZWNvZGUodmFsLCB2YWxsZW4g
VFNSTUxTX0NDKTsKKwllZnJlZSh2YWwpOwogfQogCiAKQEAgLTU2OSwxNiArNTgxLDE0IEBA
CiAJdWxvbmcgbnVtX2tleTsKIAlIYXNoUG9zaXRpb24gcG9zOwogCQotCWlmICghUEcocmVn
aXN0ZXJfZ2xvYmFscykgJiYgIVBTKGh0dHBfc2Vzc2lvbl92YXJzKSkgeworCWlmICgoIVBH
KHJlZ2lzdGVyX2dsb2JhbHMpICYmICFQUyhodHRwX3Nlc3Npb25fdmFycykpIHx8IChQUyhz
ZXNzaW9uX3N0YXR1cykgJiAoUFNfRElTQUJMRUR8UFNfTk9ORXxQU19FUlJPUikpKSB7CiAJ
CXJldHVybjsKIAl9CiAJCQotCWlmIChQUyhodHRwX3Nlc3Npb25fdmFycykpIHsKLQkJZm9y
ICh6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldF9leChaX0FSUlZBTF9QKFBTKGh0
dHBfc2Vzc2lvbl92YXJzKSksICZwb3MpOwotCQkJCXplbmRfaGFzaF9nZXRfY3VycmVudF9r
ZXlfZXgoWl9BUlJWQUxfUChQUyhodHRwX3Nlc3Npb25fdmFycykpLCAmdmFyaWFibGUsICZ2
YXJpYWJsZV9sZW4sICZudW1fa2V5LCAwLCAmcG9zKSA9PSBIQVNIX0tFWV9JU19TVFJJTkc7
Ci0JCQkJemVuZF9oYXNoX21vdmVfZm9yd2FyZF9leChaX0FSUlZBTF9QKFBTKGh0dHBfc2Vz
c2lvbl92YXJzKSksJnBvcykpIHsKLQkJCVBTX0FERF9WQVJMKHZhcmlhYmxlLHZhcmlhYmxl
X2xlbi0xKTsKLQkJfQorCWZvciAoemVuZF9oYXNoX2ludGVybmFsX3BvaW50ZXJfcmVzZXRf
ZXgoWl9BUlJWQUxfUChQUyhodHRwX3Nlc3Npb25fdmFycykpLCAmcG9zKTsKKwkJIHplbmRf
aGFzaF9nZXRfY3VycmVudF9rZXlfZXgoWl9BUlJWQUxfUChQUyhodHRwX3Nlc3Npb25fdmFy
cykpLCAmdmFyaWFibGUsICZ2YXJpYWJsZV9sZW4sICZudW1fa2V5LCAwLCAmcG9zKSA9PSBI
QVNIX0tFWV9JU19TVFJJTkc7CisJCSB6ZW5kX2hhc2hfbW92ZV9mb3J3YXJkX2V4KFpfQVJS
VkFMX1AoUFMoaHR0cF9zZXNzaW9uX3ZhcnMpKSwmcG9zKSkgeworCQlQU19BRERfVkFSTCh2
YXJpYWJsZSx2YXJpYWJsZV9sZW4tMSk7CiAJfQogCiAJaWYgKFBTKG1vZF9kYXRhKSkgewpA
QCAtNTkxLDEzICs2MDEsMTQgQEAKIAkJfQogCX0KIAkKLQlpZiAocmV0ID09IEZBSUxVUkUp
CisJaWYgKHJldCA9PSBGQUlMVVJFKSB7CisJCVBTKHNlc3Npb25fc3RhdHVzKSA9IFBTX0VS
Uk9SOwogCQlwaHBfZXJyb3IoRV9XQVJOSU5HLCAiRmFpbGVkIHRvIHdyaXRlIHNlc3Npb24g
ZGF0YSAoJXMpLiBQbGVhc2UgIgotCQkJCSJ2ZXJpZnkgdGhhdCB0aGUgY3VycmVudCBzZXR0
aW5nIG9mIHNlc3Npb24uc2F2ZV9wYXRoICIKLQkJCQkiaXMgY29ycmVjdCAoJXMpIiwKLQkJ
CQlQUyhtb2QpLT5uYW1lLAotCQkJCVBTKHNhdmVfcGF0aCkpOwotCQorCQkJCSAgInZlcmlm
eSB0aGF0IHRoZSBjdXJyZW50IHNldHRpbmcgb2Ygc2Vzc2lvbi5zYXZlX3BhdGggIgorCQkJ
CSAgImlzIGNvcnJlY3QgKCVzKSIsCisJCQkJICBQUyhtb2QpLT5uYW1lLAorCQkJCSAgUFMo
c2F2ZV9wYXRoKSk7CisJfQogCQogCWlmIChQUyhtb2RfZGF0YSkpCiAJCVBTKG1vZCktPmNs
b3NlKCZQUyhtb2RfZGF0YSkpOwpAQCAtNzQ0LDYgKzc1NSw3IEBACiAJc21hcnRfc3RyIG5j
b29raWUgPSB7MH07CiAJY2hhciAqZGF0ZV9mbXQgPSBOVUxMOwogCisKIAlpZiAoU0coaGVh
ZGVyc19zZW50KSkgewogCQljaGFyICpvdXRwdXRfc3RhcnRfZmlsZW5hbWUgPSBwaHBfZ2V0
X291dHB1dF9zdGFydF9maWxlbmFtZShUU1JNTFNfQyk7CiAJCWludCBvdXRwdXRfc3RhcnRf
bGluZW5vID0gcGhwX2dldF9vdXRwdXRfc3RhcnRfbGluZW5vKFRTUk1MU19DKTsKQEAgLTgz
NCwxMCArODQ2LDExIEBACiAJaW50IG1vZHVsZV9udW1iZXIgPSBQUyhtb2R1bGVfbnVtYmVy
KTsKIAlpbnQgbnJhbmQ7CiAJaW50IGxlbnNlc3M7CisJc21hcnRfc3RyIHZhciA9IHswfTsK
IAogCVBTKGFwcGx5X3RyYW5zX3NpZCkgPSBQUyh1c2VfdHJhbnNfc2lkKTsKIAotCWlmIChQ
UyhzZXNzaW9uX3N0YXR1cykgIT0gcGhwX3Nlc3Npb25fbm9uZSkgCisJaWYgKFBTKHNlc3Np
b25fc3RhdHVzKSAmIChQU19BQ1RJVkV8UFNfRVJST1IpKSAKIAkJcmV0dXJuOwogCiAJbGVu
c2VzcyA9IHN0cmxlbihQUyhzZXNzaW9uX25hbWUpKTsKQEAgLTkyNywzMCArOTQwLDIzIEBA
CiAJCXBocF9zZXNzaW9uX3NlbmRfY29va2llKFRTUk1MU19DKTsKIAl9CiAKLQotCWlmIChQ
UyhhcHBseV90cmFuc19zaWQpKSB7Ci0JCXNtYXJ0X3N0ciB2YXIgPSB7MH07Ci0KLQkJc21h
cnRfc3RyX2FwcGVuZHMoJnZhciwgUFMoc2Vzc2lvbl9uYW1lKSk7Ci0JCXNtYXJ0X3N0cl9h
cHBlbmRjKCZ2YXIsICc9Jyk7Ci0JCXNtYXJ0X3N0cl9hcHBlbmRzKCZ2YXIsIFBTKGlkKSk7
Ci0JCXNtYXJ0X3N0cl8wKCZ2YXIpOwotCQlSRUdJU1RFUl9TVFJJTkdfQ09OU1RBTlQoIlNJ
RCIsIHZhci5jLCAwKTsKLQl9IGVsc2UgewotCQlSRUdJU1RFUl9TVFJJTkdfQ09OU1RBTlQo
IlNJRCIsIGVtcHR5X3N0cmluZywgMCk7Ci0JfQotCi0JUFMoc2Vzc2lvbl9zdGF0dXMpID0g
cGhwX3Nlc3Npb25fYWN0aXZlOworCXNtYXJ0X3N0cl9hcHBlbmRzKCZ2YXIsIFBTKHNlc3Np
b25fbmFtZSkpOworCXNtYXJ0X3N0cl9hcHBlbmRjKCZ2YXIsICc9Jyk7CisJc21hcnRfc3Ry
X2FwcGVuZHMoJnZhciwgUFMoaWQpKTsKKwlzbWFydF9zdHJfMCgmdmFyKTsKKwlSRUdJU1RF
Ul9TVFJJTkdfQ09OU1RBTlQoIlNJRCIsIHZhci5jLCAwKTsKIAlpZiAoUFMoYXBwbHlfdHJh
bnNfc2lkKSkgewogCQlwaHBfc2Vzc2lvbl9zdGFydF9vdXRwdXRfaGFuZGxlcig0MDk2IFRT
Uk1MU19DQyk7CiAJfQogCisJUFMoc2Vzc2lvbl9zdGF0dXMpID0gUFNfQUNUSVZFOworCiAJ
cGhwX3Nlc3Npb25fY2FjaGVfbGltaXRlcihUU1JNTFNfQyk7CiAJcGhwX3Nlc3Npb25faW5p
dGlhbGl6ZShUU1JNTFNfQyk7CiAKLQlpZiAoUFMobW9kX2RhdGEpICYmIFBTKGdjX3Byb2Jh
YmlsaXR5KSA+IDApIHsKKwlpZiAoKFBTKHNlc3Npb25fc3RhdHVzKSAmIFBTX0FDVElWRSkg
JiYgUFMoZ2NfcHJvYmFiaWxpdHkpID4gMCkgewogCQlpbnQgbnJkZWxzID0gLTE7Ci0KKwkJ
CiAJCW5yYW5kID0gKGludCkgKDEwMC4wKnBocF9jb21iaW5lZF9sY2coVFNSTUxTX0MpKTsK
IAkJaWYgKG5yYW5kIDwgUFMoZ2NfcHJvYmFiaWxpdHkpKSB7CiAJCQlQUyhtb2QpLT5nYygm
UFMobW9kX2RhdGEpLCBQUyhnY19tYXhsaWZldGltZSksICZucmRlbHMpOwpAQCAtOTYyLDE4
ICs5NjgsMjAgQEAKIAl9CiB9CiAKKwogc3RhdGljIHplbmRfYm9vbCBwaHBfc2Vzc2lvbl9k
ZXN0cm95KFRTUk1MU19EKQogewogCXplbmRfYm9vbCByZXR2YWwgPSBTVUNDRVNTOwogCi0J
aWYgKFBTKHNlc3Npb25fc3RhdHVzKSAhPSBwaHBfc2Vzc2lvbl9hY3RpdmUpIHsKLQkJcGhw
X2Vycm9yKEVfV0FSTklORywgIlRyeWluZyB0byBkZXN0cm95IHVuaW5pdGlhbGl6ZWQgc2Vz
c2lvbiIpOworCWlmIChQUyhzZXNzaW9uX3N0YXR1cykgJiAoUFNfRElTQUJMRUR8UFNfTk9O
RXxQU19FUlJPUikpIHsKKwkJcGhwX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGRlc3Ry
b3kgdW5pbml0aWFsaXplZCBzZXNzaW9uIik7CiAJCXJldHVybiBGQUlMVVJFOwogCX0KIAog
CWlmIChQUyhtb2QpLT5kZXN0cm95KCZQUyhtb2RfZGF0YSksIFBTKGlkKSkgPT0gRkFJTFVS
RSkgeworCQlQUyhzZXNzaW9uX3N0YXR1cykgPSBQU19FUlJPUjsJCQogCQlyZXR2YWwgPSBG
QUlMVVJFOwotCQlwaHBfZXJyb3IoRV9XQVJOSU5HLCAiU2Vzc2lvbiBvYmplY3QgZGVzdHJ1
Y3Rpb24gZmFpbGVkIik7CisJCXBocF9lcnJvcihFX05PVElDRSwgIlNlc3Npb24gb2JqZWN0
IGRlc3RydWN0aW9uIGZhaWxlZCIpOwogCX0KIAkKIAlwaHBfcnNodXRkb3duX3Nlc3Npb25f
Z2xvYmFscyhUU1JNTFNfQyk7CkBAIC0xMDAwLDkgKzEwMDgsMTUgQEAKIAlQUyhjb29raWVf
bGlmZXRpbWUpID0gWl9MVkFMX1BQKGxpZmV0aW1lKTsKIAogCWlmIChaRU5EX05VTV9BUkdT
KCkgPiAxKSB7CisJCWlmIChQUyhzZXNzaW9uX3N0YXR1cykgJiAoUFNfQUNUSVZFKSkgewor
CQkJcGhwX2Vycm9yKEVfTk9USUNFLCAiJXMoKSBjYW5ub3Qgc2V0IGNvb2tpZSBwYXJhbWV0
ZXIgb25jZSBzZXNzaW9uIGlzIHN0YXJ0ZWQuIiwKKwkJCQkJICBnZXRfYWN0aXZlX2Z1bmN0
aW9uX25hbWUoVFNSTUxTX0MpKTsKKwkJCVJFVFVSTl9GQUxTRTsKKwkJfQorCQkKIAkJY29u
dmVydF90b19zdHJpbmdfZXgocGF0aCk7CiAJCXplbmRfYWx0ZXJfaW5pX2VudHJ5KCJzZXNz
aW9uLmNvb2tpZV9wYXRoIiwgc2l6ZW9mKCJzZXNzaW9uLmNvb2tpZV9wYXRoIiksIFpfU1RS
VkFMX1BQKHBhdGgpLCBaX1NUUkxFTl9QUChwYXRoKSwgUEhQX0lOSV9VU0VSLCBQSFBfSU5J
X1NUQUdFX1JVTlRJTUUpOwotCisJCQogCQlpZiAoWkVORF9OVU1fQVJHUygpID4gMikgewog
CQkJY29udmVydF90b19zdHJpbmdfZXgoZG9tYWluKTsKIAkJCXplbmRfYWx0ZXJfaW5pX2Vu
dHJ5KCJzZXNzaW9uLmNvb2tpZV9kb21haW4iLCBzaXplb2YoInNlc3Npb24uY29va2llX2Rv
bWFpbiIpLCBaX1NUUlZBTF9QUChkb21haW4pLCBaX1NUUkxFTl9QUChkb21haW4pLCBQSFBf
SU5JX1VTRVIsIFBIUF9JTklfU1RBR0VfUlVOVElNRSk7CkBAIC0xMDEyLDYgKzEwMjYsNyBA
QAogCQkJfQogCQl9CiAJfQorCQogfQogLyogfX19ICovCiAKQEAgLTEwNDksNiArMTA2NCwx
MiBAQAogCQlXUk9OR19QQVJBTV9DT1VOVDsKIAogCWlmIChhYyA9PSAxKSB7CisJCWlmIChQ
UyhzZXNzaW9uX3N0YXR1cykgJiBQU19BQ1RJVkUpIHsKKwkJCWVmcmVlKG9sZCk7CisJCQlw
aHBfZXJyb3IoRV9OT1RJQ0UsICIlcygpIGNhbm5vdCBzZXQgc2Vzc2lvbiBuYW1lIG9uY2Ug
c2Vzc2lvbiBpcyBzdGFydGVkLiIsCisJCQkJCSAgZ2V0X2FjdGl2ZV9mdW5jdGlvbl9uYW1l
KFRTUk1MU19DKSk7CisJCQlSRVRVUk5fRkFMU0U7CisJCX0KIAkJY29udmVydF90b19zdHJp
bmdfZXgocF9uYW1lKTsKIAkJemVuZF9hbHRlcl9pbmlfZW50cnkoInNlc3Npb24ubmFtZSIs
IHNpemVvZigic2Vzc2lvbi5uYW1lIiksIFpfU1RSVkFMX1BQKHBfbmFtZSksIFpfU1RSTEVO
X1BQKHBfbmFtZSksIFBIUF9JTklfVVNFUiwgUEhQX0lOSV9TVEFHRV9SVU5USU1FKTsKIAl9
CkBAIC0xMDczLDE5ICsxMDk0LDI4IEBACiAJaWYgKGFjID09IDEpIHsKIAkJcHNfbW9kdWxl
ICp0ZW1wbW9kOwogCisJCWlmIChQUyhzZXNzaW9uX3N0YXR1cykgJiAoUFNfQUNUSVZFfFBT
X0VSUk9SKSkgeworCQkJZWZyZWUob2xkKTsKKwkJCXBocF9lcnJvcihFX05PVElDRSwgIiVz
KCkgY2Fubm90IHNldCBzZXNzaW9uIG1vZHVsZSBuYW1lIG9uY2Ugc2Vzc2lvbiBpcyBzdGFy
dGVkLiAiCisJCQkJCSAgIkN1cnJlbnQgc2Vzc2lvbiBzYXZlIGhhbmRsZXIgKCVzKSIsCisJ
CQkJCSAgZ2V0X2FjdGl2ZV9mdW5jdGlvbl9uYW1lKFRTUk1MU19DKSwKKwkJCQkJICAoUFMo
bW9kKS0+bmFtZSA/IFBTKG1vZCktPm5hbWUgOiAibm9uZSIpKTsKKwkJCVJFVFVSTl9GQUxT
RTsKKwkJfQorCQkJCiAJCWNvbnZlcnRfdG9fc3RyaW5nX2V4KHBfbmFtZSk7CiAJCXRlbXBt
b2QgPSBfcGhwX2ZpbmRfcHNfbW9kdWxlKFpfU1RSVkFMX1BQKHBfbmFtZSkgVFNSTUxTX0ND
KTsKLQkJaWYgKHRlbXBtb2QpIHsKLQkJCWlmIChQUyhtb2RfZGF0YSkpCi0JCQkJUFMobW9k
KS0+Y2xvc2UoJlBTKG1vZF9kYXRhKSk7Ci0JCQlQUyhtb2QpID0gdGVtcG1vZDsKLQkJCVBT
KG1vZF9kYXRhKSA9IE5VTEw7Ci0JCX0gZWxzZSB7CisJCWlmICghdGVtcG1vZCkgewogCQkJ
ZWZyZWUob2xkKTsKLQkJCXBocF9lcnJvcihFX0VSUk9SLCAiQ2Fubm90IGZpbmQgbmFtZWQg
UEhQIHNlc3Npb24gbW9kdWxlICglcykiLAotCQkJCQlaX1NUUlZBTF9QUChwX25hbWUpKTsK
KwkJCXBocF9lcnJvcihFX05PVElDRSwgIkNhbm5vdCBmaW5kIG5hbWVkIFBIUCBzZXNzaW9u
IG1vZHVsZSAoJXMpIiwKKwkJCQkJICBaX1NUUlZBTF9QUChwX25hbWUpKTsKIAkJCVJFVFVS
Tl9GQUxTRTsKIAkJfQorCQlpZiAoUFMobW9kX2RhdGEpKQorCQkJUFMobW9kKS0+Y2xvc2Uo
JlBTKG1vZF9kYXRhKSk7CisJCVBTKG1vZCkgPSB0ZW1wbW9kOworCQlQUyhtb2RfZGF0YSkg
PSBOVUxMOworCQlQUyhyaW5pdF9tb2QpID0gMTsKIAl9CiAKIAlSRVRWQUxfU1RSSU5HKG9s
ZCwgMCk7CkBAIC0xMTAzLDggKzExMzMsMTMgQEAKIAlpZiAoWkVORF9OVU1fQVJHUygpICE9
IDYgfHwgemVuZF9nZXRfcGFyYW1ldGVyc19hcnJheV9leCg2LCBhcmdzKSA9PSBGQUlMVVJF
KQogCQlXUk9OR19QQVJBTV9DT1VOVDsKIAkKLQlpZiAoUFMoc2Vzc2lvbl9zdGF0dXMpICE9
IHBocF9zZXNzaW9uX25vbmUpIAorCWlmIChQUyhzZXNzaW9uX3N0YXR1cykgJiBQU19BQ1RJ
VkUpIHsKKwkJcGhwX2Vycm9yKEVfTk9USUNFLCAiJXMoKSBjYW5ub3Qgc2V0IHNlc3Npb24g
c2F2ZSBoYW5kbGVyIGZ1bmN0aW9ucyBvbmNlIHNlc3Npb24gaXMgc3RhcnRlZC4gIgorCQkJ
CSAgIkN1cnJlbnQgc2Vzc2lvbiBzYXZlIGhhbmRsZXIgKCVzKSIsCisJCQkJICBnZXRfYWN0
aXZlX2Z1bmN0aW9uX25hbWUoVFNSTUxTX0MpLAorCQkJCSAgKFBTKG1vZCktPm5hbWUgPyBQ
Uyhtb2QpLT5uYW1lIDogIm5vbmUiKSk7CiAJCVJFVFVSTl9GQUxTRTsKKwl9CiAJCiAJemVu
ZF9hbHRlcl9pbmlfZW50cnkoInNlc3Npb24uc2F2ZV9oYW5kbGVyIiwgc2l6ZW9mKCJzZXNz
aW9uLnNhdmVfaGFuZGxlciIpLCAidXNlciIsIHNpemVvZigidXNlciIpLTEsIFBIUF9JTklf
VVNFUiwgUEhQX0lOSV9TVEFHRV9SVU5USU1FKTsKIApAQCAtMTEzMyw4ICsxMTY4LDE0IEBA
CiAKIAlpZiAoYWMgPCAwIHx8IGFjID4gMSB8fCB6ZW5kX2dldF9wYXJhbWV0ZXJzX2V4KGFj
LCAmcF9uYW1lKSA9PSBGQUlMVVJFKQogCQlXUk9OR19QQVJBTV9DT1VOVDsKLQorCQogCWlm
IChhYyA9PSAxKSB7CisJCWlmIChQUyhzZXNzaW9uX3N0YXR1cykgJiBQU19BQ1RJVkUpIHsK
KwkJCWVmcmVlKG9sZCk7CisJCQlwaHBfZXJyb3IoRV9OT1RJQ0UsICIlcygpIGNhbm5vdCBj
aGFuZ2Ugc2Vzc2lvbiBzYXZlIHBhdGggIG9uY2Ugc2Vzc2lvbiBpcyBzdGFydGVkLiIsCisJ
CQkJCSAgZ2V0X2FjdGl2ZV9mdW5jdGlvbl9uYW1lKFRTUk1MU19DKSk7CisJCQlSRVRVUk5f
RkFMU0U7CisJCX0KIAkJY29udmVydF90b19zdHJpbmdfZXgocF9uYW1lKTsKIAkJemVuZF9h
bHRlcl9pbmlfZW50cnkoInNlc3Npb24uc2F2ZV9wYXRoIiwgc2l6ZW9mKCJzZXNzaW9uLnNh
dmVfcGF0aCIpLCBaX1NUUlZBTF9QUChwX25hbWUpLCBaX1NUUkxFTl9QUChwX25hbWUpLCBQ
SFBfSU5JX1VTRVIsIFBIUF9JTklfU1RBR0VfUlVOVElNRSk7CiAJfQpAQCAtMTE1NiwxMCAr
MTE5NywxNiBAQAogCiAJaWYgKGFjIDwgMCB8fCBhYyA+IDEgfHwgemVuZF9nZXRfcGFyYW1l
dGVyc19leChhYywgJnBfbmFtZSkgPT0gRkFJTFVSRSkKIAkJV1JPTkdfUEFSQU1fQ09VTlQ7
Ci0KKwkKIAlpZiAoYWMgPT0gMSkgewotCQljb252ZXJ0X3RvX3N0cmluZ19leChwX25hbWUp
OwogCQlpZiAoUFMoaWQpKSBlZnJlZShQUyhpZCkpOworCQlpZiAoUFMoc2Vzc2lvbl9zdGF0
dXMpICYgUFNfQUNUSVZFKSB7CisJCQllZnJlZShvbGQpOworCQkJcGhwX2Vycm9yKEVfTk9U
SUNFLCAiJXMoKSBjYW5ub3Qgc2V0IHNlc3Npb24gaWQgb25jZSBzZXNzaW9uIGlzIHN0YXJ0
ZWQuIiwKKwkJCQkJICBnZXRfYWN0aXZlX2Z1bmN0aW9uX25hbWUoVFNSTUxTX0MpKTsKKwkJ
CVJFVFVSTl9GQUxTRTsKKwkJfQorCQljb252ZXJ0X3RvX3N0cmluZ19leChwX25hbWUpOwog
CQlQUyhpZCkgPSBlc3RybmR1cChaX1NUUlZBTF9QUChwX25hbWUpLCBaX1NUUkxFTl9QUChw
X25hbWUpKTsKIAl9CiAJCkBAIC0xMTgxLDYgKzEyMjgsMTMgQEAKIAkJV1JPTkdfUEFSQU1f
Q09VTlQ7CiAKIAlpZiAoYWMgPT0gMSkgeworCQlpZiAoUFMoc2Vzc2lvbl9zdGF0dXMpICYg
KFBTX0FDVElWRXxQU19FUlJPUikpIHsKKwkJCWVmcmVlKG9sZCk7CisJCQlwaHBfZXJyb3Io
RV9OT1RJQ0UsICIlcygpIGNhbm5vdCBzZXQgc2Vzc2lvbiBtb2R1bGUgbmFtZSBvbmNlIHNl
c3Npb24gaXMgc3RhcnRlZC4iLAorCQkJCQkgIGdldF9hY3RpdmVfZnVuY3Rpb25fbmFtZShU
U1JNTFNfQykpOworCQkJUkVUVVJOX0ZBTFNFOworCQl9CisJCQogCQljb252ZXJ0X3RvX3N0
cmluZ19leChwX2NhY2hlX2xpbWl0ZXIpOwogCQl6ZW5kX2FsdGVyX2luaV9lbnRyeSgic2Vz
c2lvbi5jYWNoZV9saW1pdGVyIiwgc2l6ZW9mKCJzZXNzaW9uLmNhY2hlX2xpbWl0ZXIiKSwg
Wl9TVFJWQUxfUFAocF9jYWNoZV9saW1pdGVyKSwgWl9TVFJMRU5fUFAocF9jYWNoZV9saW1p
dGVyKSwgUEhQX0lOSV9VU0VSLCBQSFBfSU5JX1NUQUdFX1JVTlRJTUUpOwogCX0KQEAgLTEy
NTIsNyArMTMwNiw3IEBACiAJCVdST05HX1BBUkFNX0NPVU5UOwogCX0KIAotCWlmIChQUyhz
ZXNzaW9uX3N0YXR1cykgPT0gcGhwX3Nlc3Npb25fbm9uZSkKKwlpZiAoUFMoc2Vzc2lvbl9z
dGF0dXMpICYgUFNfTk9ORSkKIAkJcGhwX3Nlc3Npb25fc3RhcnQoVFNSTUxTX0MpOwogCiAJ
Zm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewpAQCAtMTI3Niw3ICsxMzMwLDEzIEBACiAK
IAlpZiAoYWMgIT0gMSB8fCB6ZW5kX2dldF9wYXJhbWV0ZXJzX2V4KGFjLCAmcF9uYW1lKSA9
PSBGQUlMVVJFKQogCQlXUk9OR19QQVJBTV9DT1VOVDsKLQkKKworCWlmICghKFBTKHNlc3Np
b25fc3RhdHVzKSAmIFBTX0FDVElWRSkpIHsKKwkJcGhwX2Vycm9yKEVfTk9USUNFLCAiJXMo
KSBjYW5ub3QgYmUgdXNlZCB1bmxlc3Mgc2Vzc2lvbiBpcyBzdGFydGVkLiIsCisJCQkJICBn
ZXRfYWN0aXZlX2Z1bmN0aW9uX25hbWUoVFNSTUxTX0MpKTsKKwkJUkVUVVJOX0ZBTFNFOwor
CX0KKwkJCiAJY29udmVydF90b19zdHJpbmdfZXgocF9uYW1lKTsKIAkKIAlQU19ERUxfVkFS
TChaX1NUUlZBTF9QUChwX25hbWUpLCBaX1NUUkxFTl9QUChwX25hbWUpKTsKQEAgLTEyOTYs
NiArMTM1NiwxMiBAQAogCWlmIChhYyAhPSAxIHx8IHplbmRfZ2V0X3BhcmFtZXRlcnNfZXgo
YWMsICZwX25hbWUpID09IEZBSUxVUkUpCiAJCVdST05HX1BBUkFNX0NPVU5UOwogCQorCWlm
ICghKFBTKHNlc3Npb25fc3RhdHVzKSAmIFBTX0FDVElWRSkpIHsKKwkJcGhwX2Vycm9yKEVf
Tk9USUNFLCAiJXMoKSBjYW5ub3QgYmUgdXNlZCB1bmxlc3Mgc2Vzc2lvbiBpcyBzdGFydGVk
LiIsCisJCQkJICBnZXRfYWN0aXZlX2Z1bmN0aW9uX25hbWUoVFNSTUxTX0MpKTsKKwkJUkVU
VVJOX0ZBTFNFOworCX0KKwogCWNvbnZlcnRfdG9fc3RyaW5nX2V4KHBfbmFtZSk7CiAJCiAJ
aWYgKHplbmRfaGFzaF9maW5kKCZQUyh2YXJzKSwgWl9TVFJWQUxfUFAocF9uYW1lKSwgCkBA
IC0xMzcyLDcgKzE0MzgsNyBAQAogCWNoYXIJICp2YXJpYWJsZTsKIAl1bG9uZyAgICAgbnVt
X2tleTsKIAkKLQlpZiAoUFMoc2Vzc2lvbl9zdGF0dXMpID09IHBocF9zZXNzaW9uX25vbmUp
CisJaWYgKFBTKHNlc3Npb25fc3RhdHVzKSAmIFBTX05PTkUpCiAJCVJFVFVSTl9GQUxTRTsK
IAogCWlmIChQRyhyZWdpc3Rlcl9nbG9iYWxzKSkgewpAQCAtMTM5Myw3ICsxNDU5LDcgQEAK
IAogUEhQQVBJIHZvaWQgc2Vzc2lvbl9hZGFwdF91cmwoY29uc3QgY2hhciAqdXJsLCBzaXpl
X3QgdXJsbGVuLCBjaGFyICoqbmV3LCBzaXplX3QgKm5ld2xlbiBUU1JNTFNfREMpCiB7Ci0J
aWYgKFBTKGFwcGx5X3RyYW5zX3NpZCkgJiYgKFBTKHNlc3Npb25fc3RhdHVzKSA9PSBwaHBf
c2Vzc2lvbl9hY3RpdmUpKSB7CisJaWYgKFBTKGFwcGx5X3RyYW5zX3NpZCkgJiYgKFBTKHNl
c3Npb25fc3RhdHVzKSAmIFBTX0FDVElWRSkpIHsKIAkJKm5ldyA9IHVybF9hZGFwdF9zaW5n
bGVfdXJsKHVybCwgdXJsbGVuLCBQUyhzZXNzaW9uX25hbWUpLCBQUyhpZCksIG5ld2xlbiBU
U1JNTFNfQ0MpOwogCX0KIH0KQEAgLTE0MDMsNyArMTQ2OSw3IEBACiB7CQkKIAl6ZW5kX2hh
c2hfaW5pdCgmUFModmFycyksIDAsIE5VTEwsIE5VTEwsIDApOwogCVBTKGlkKSA9IE5VTEw7
Ci0JUFMoc2Vzc2lvbl9zdGF0dXMpID0gcGhwX3Nlc3Npb25fbm9uZTsKKwlQUyhzZXNzaW9u
X3N0YXR1cykgPSBQU19OT05FOwogCVBTKG1vZF9kYXRhKSA9IE5VTEw7CiAJUFMob3V0cHV0
X2hhbmRsZXJfcmVnaXN0ZXJlZCkgPSAwOwogfQpAQCAtMTQyNCw4ICsxNDkwLDkgQEAKIHsK
IAlwaHBfcmluaXRfc2Vzc2lvbl9nbG9iYWxzKFRTUk1MU19DKTsKIAotCWlmIChQUyhtb2Qp
ID09IE5VTEwpIHsKKwlpZiAoUFMobW9kKSA9PSBOVUxMIHx8IFBTKHJpbml0X21vZCkpIHsK
IAkJY2hhciAqdmFsdWU7CisJCVBTKHJpbml0X21vZCkgPSAwOwogCiAJCXZhbHVlID0gemVu
ZF9pbmlfc3RyaW5nKCJzZXNzaW9uLnNhdmVfaGFuZGxlciIsIHNpemVvZigic2Vzc2lvbi5z
YXZlX2hhbmRsZXIiKSwgMCk7CiAJCWlmICh2YWx1ZSkgewpAQCAtMTQzNCw3ICsxNTAxLDcg
QEAKIAogCQlpZiAoIVBTKG1vZCkpIHsKIAkJCS8qIGN1cnJlbnQgc3RhdHVzIGlzIHVudXNh
YmxlICovCi0JCQlQUyhzZXNzaW9uX3N0YXR1cykgPSBwaHBfc2Vzc2lvbl9kaXNhYmxlZDsK
KwkJCVBTKHNlc3Npb25fc3RhdHVzKSA9IFBTX0RJU0FCTEVEOwogCQkJcmV0dXJuIFNVQ0NF
U1M7CiAJCX0KIAl9CkBAIC0xNDQ4LDkgKzE1MTUsOSBAQAogCiBzdGF0aWMgdm9pZCBwaHBf
c2Vzc2lvbl9mbHVzaChUU1JNTFNfRCkKIHsKLQlpZihQUyhzZXNzaW9uX3N0YXR1cyk9PXBo
cF9zZXNzaW9uX2FjdGl2ZSkgeworCWlmKFBTKHNlc3Npb25fc3RhdHVzKSAmIFBTX0FDVElW
RSkgewogCQlwaHBfc2Vzc2lvbl9zYXZlX2N1cnJlbnRfc3RhdGUoVFNSTUxTX0MpOwotCQlQ
UyhzZXNzaW9uX3N0YXR1cyk9cGhwX3Nlc3Npb25fbm9uZTsKKwkJUFMoc2Vzc2lvbl9zdGF0
dXMpID0gUFNfRElTQUJMRUQ7CiAJfQogfQogCkBAIC0xNDY4LDYgKzE1MzUsNyBAQAogCX0K
IAlwaHBfc2Vzc2lvbl9mbHVzaChUU1JNTFNfQyk7CiAJcGhwX3JzaHV0ZG93bl9zZXNzaW9u
X2dsb2JhbHMoVFNSTUxTX0MpOworCVBTKHNlc3Npb25fc3RhdHVzKSA9IFBTX0RJU0FCTEVE
OwogCXJldHVybiBTVUNDRVNTOwogfQogLyogfX19ICovCg==
--------------040103010206020502030507--

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/