NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/47276: ftp(1) is not supported https
The following reply was made to PR bin/47276; it has been noted by GNATS.
From: NONAKA Kimihiro <nonakap%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: bin/47276: ftp(1) is not supported https
Date: Tue, 4 Dec 2012 13:02:24 +0900
--e89a8f923f3aff7bb104cffeee57
Content-Type: text/plain; charset=ISO-8859-1
Hi,
2012/12/4 Julian Djamil Fagir <gnrp%komkon2.de@localhost>
> > apply following patch.
> > (most code from libfetch)
>
> are there any licencing issue with it then? I mean, there's a large portion
> of it and no licence text, should that be copied as well?
I think as you say, should be added license notice to source too.
I update patch.
> And: Can't you include libfetch directly and use it? We already have it in
> tree.
non https portion is already implemented in ftp(1).
Regards,
--
NONAKA Kimihiro
--e89a8f923f3aff7bb104cffeee57
Content-Type: application/octet-stream; name="tnftp-https-20121204.diff"
Content-Disposition: attachment; filename="tnftp-https-20121204.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_haahdztk0
ZGlmZiAtLWdpdCBhL2Rpc3RyaWIvYW1kNjQvY2Ryb21zL01ha2VmaWxlLmNkcm9tIGIvZGlzdHJp
Yi9hbWQ2NC9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KaW5kZXggOTk1MDk5ZC4uYTFiNjhiNSAxMDA2
NDQKLS0tIGEvZGlzdHJpYi9hbWQ2NC9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KKysrIGIvZGlzdHJp
Yi9hbWQ2NC9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KQEAgLTU1LDYgKzU1LDEwIEBAIENEUlVOVElN
RSs9CS4vdXNyL3NiaW4vaW5zdGFsbGJvb3QKIENEUlVOVElNRSs9CS4vdXNyL3NiaW4vd2ljb25m
aWcKIENEUlVOVElNRSs9CS4vdXNyL3NoYXJlL21pc2MvdGVybWluZm8uY2RiCiBDRFJVTlRJTUUr
PQkuL3Vzci9zaGFyZS9sb2NhbGUKKy5pZiAoJHtNS0NSWVBUT30gIT0gIm5vIikKK0NEUlVOVElN
RSs9CS4vdXNyL2xpYi9saWJjcnlwdG8uc28qCitDRFJVTlRJTUUrPQkuL3Vzci9saWIvbGlic3Ns
LnNvKgorLmVuZGlmCiAKIGltYWdlX21kX3ByZToKIAkke01LRElSfSBjZHJvbS9saWJleGVjL2Ro
Y3BjZC1ob29rcwpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9pMzg2L2Nkcm9tcy9NYWtlZmlsZS5jZHJv
bSBiL2Rpc3RyaWIvaTM4Ni9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KaW5kZXggMzNjMTEyOS4uYTVl
ZWRiZCAxMDA2NDQKLS0tIGEvZGlzdHJpYi9pMzg2L2Nkcm9tcy9NYWtlZmlsZS5jZHJvbQorKysg
Yi9kaXN0cmliL2kzODYvY2Ryb21zL01ha2VmaWxlLmNkcm9tCkBAIC01NSw2ICs1NSwxMCBAQCBD
RFJVTlRJTUUrPQkuL3Vzci9zYmluL2luc3RhbGxib290CiBDRFJVTlRJTUUrPQkuL3Vzci9zYmlu
L3dpY29uZmlnCiBDRFJVTlRJTUUrPQkuL3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvLmNkYgogQ0RS
VU5USU1FKz0JLi91c3Ivc2hhcmUvbG9jYWxlCisuaWYgKCR7TUtDUllQVE99ICE9ICJubyIpCitD
RFJVTlRJTUUrPQkuL3Vzci9saWIvbGliY3J5cHRvLnNvKgorQ0RSVU5USU1FKz0JLi91c3IvbGli
L2xpYnNzbC5zbyoKKy5lbmRpZgogCiBpbWFnZV9tZF9wcmU6CiAJJHtNS0RJUn0gY2Ryb20vbGli
ZXhlYy9kaGNwY2QtaG9va3MKZGlmZiAtLWdpdCBhL3Jlc2N1ZS9saXN0LmNyeXB0byBiL3Jlc2N1
ZS9saXN0LmNyeXB0bwppbmRleCAzNDVjNDQ1Li45NzljMTI3IDEwMDY0NAotLS0gYS9yZXNjdWUv
bGlzdC5jcnlwdG8KKysrIGIvcmVzY3VlL2xpc3QuY3J5cHRvCkBAIC03LDQgKzcsNCBAQCBQUk9H
CXNzaAkJc2xvZ2luCiBTUEVDSUFMCXNjcAlzcmNkaXIJY3J5cHRvL2V4dGVybmFsL2JzZC9vcGVu
c3NoL2Jpbi9zY3AKIFNQRUNJQUwJc3NoCXNyY2RpcgljcnlwdG8vZXh0ZXJuYWwvYnNkL29wZW5z
c2gvYmluL3NzaAogCi1MSUJTCS1sc3NoIC1sY3J5cHRvCitMSUJTCS1sc3NoIC1sc3NsIC1sY3J5
cHRvCmRpZmYgLS1naXQgYS91c3IuYmluL2Z0cC9NYWtlZmlsZSBiL3Vzci5iaW4vZnRwL01ha2Vm
aWxlCmluZGV4IGQxMTM1YWUuLmZiOTdkZGUgMTAwNjQ0Ci0tLSBhL3Vzci5iaW4vZnRwL01ha2Vm
aWxlCisrKyBiL3Vzci5iaW4vZnRwL01ha2VmaWxlCkBAIC0xOCw2ICsxOCwxMSBAQCBDUFBGTEFH
Uys9LUROT19FRElUQ09NUExFVEUgLUROT19BQk9VVCAtRE5PX0FVVEggLUROT19IRUxQIC1ETk9f
U1RBVFVTIC1ETk9fREVCVQogLmVsc2UKIExEQUREKz0JLWxlZGl0IC1sdGVybWluZm8KIERQQURE
Kz0JJHtMSUJFRElUfSAke0xJQlRFUk1JTkZPfQorLmlmICgke01LQ1JZUFRPfSAhPSAibm8iKQor
Q1BQRkxBR1MrPSAtRFdJVEhfU1NMCitMREFERCs9IC1sc3NsIC1sY3J5cHRvCitEUEFERCs9ICR7
TElCU1NMfSAke0xJQkNSWVBUT30KKy5lbmRpZgogLmVuZGlmCiAKIC5pZiAoIWRlZmluZWQoU01B
TExQUk9HKSB8fCBkZWZpbmVkKFNNQUxMUFJPR19JTkVUNikpICYmICgke1VTRV9JTkVUNn0gIT0g
Im5vIikKZGlmZiAtLWdpdCBhL3Vzci5iaW4vZnRwL2ZldGNoLmMgYi91c3IuYmluL2Z0cC9mZXRj
aC5jCmluZGV4IDMwMDg3ZjguLmRkZDFjNzkgMTAwNjQ0Ci0tLSBhL3Vzci5iaW4vZnRwL2ZldGNo
LmMKKysrIGIvdXNyLmJpbi9mdHAvZmV0Y2guYwpAQCAtMzIsNiArMzIsMzcgQEAKICAqIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTk4
LTIwMDQgRGFnLUVybGluZyBDb8OvZGFuIFNtw7hyZ3JhdgorICogQ29weXJpZ2h0IChjKSAyMDA4
LCAyMDEwIEpvZXJnIFNvbm5lbmJlcmdlciA8am9lcmdATmV0QlNELm9yZz4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGlzIHBvc2l0aW9uIGFuZCB1bmNo
YW5nZWQuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICogICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT
UyBPUgorICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKyAqIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwK
KyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICog
JEZyZWVCU0Q6IGNvbW1vbi5jLHYgMS41MyAyMDA3LzEyLzE5IDAwOjI2OjM2IGRlcyBFeHAgJAor
ICovCisKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KICNpZm5kZWYgbGludAogX19SQ1NJRCgiJE5l
dEJTRDogZmV0Y2guYyx2IDEuMTk4IDIwMTIvMDcvMDQgMDY6MDk6MzcgaXMgRXhwICQiKTsKQEAg
LTY0LDEyICs5NSwyNCBAQCBfX1JDU0lEKCIkTmV0QlNEOiBmZXRjaC5jLHYgMS4xOTggMjAxMi8w
Ny8wNCAwNjowOTozNyBpcyBFeHAgJCIpOwogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUg
PHRpbWUuaD4KIAorI2lmZGVmIFdJVEhfU1NMCisjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KKyNp
bmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgorI2lu
Y2x1ZGUgPG9wZW5zc2wvcGVtLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKyNpbmNsdWRl
IDxvcGVuc3NsL2Vyci5oPgorI2VuZGlmCisKICNpbmNsdWRlICJmdHBfdmFyLmgiCiAjaW5jbHVk
ZSAidmVyc2lvbi5oIgogCiB0eXBlZGVmIGVudW0gewogCVVOS05PV05fVVJMX1Q9LTEsCiAJSFRU
UF9VUkxfVCwKKyNpZmRlZiBXSVRIX1NTTAorCUhUVFBTX1VSTF9ULAorI2VuZGlmCiAJRlRQX1VS
TF9ULAogCUZJTEVfVVJMX1QsCiAJQ0xBU1NJQ19VUkxfVApAQCAtMTAwLDcgKzE0Myw1NjYgQEAg
c3RhdGljIGludAlyZWRpcmVjdF9sb29wOwogI2RlZmluZQlGSUxFX1VSTAkiZmlsZTovLyIJLyog
ZmlsZSBVUkwgcHJlZml4ICovCiAjZGVmaW5lCUZUUF9VUkwJCSJmdHA6Ly8iCS8qIGZ0cCBVUkwg
cHJlZml4ICovCiAjZGVmaW5lCUhUVFBfVVJMCSJodHRwOi8vIgkvKiBodHRwIFVSTCBwcmVmaXgg
Ki8KKyNpZmRlZiBXSVRIX1NTTAorI2RlZmluZQlIVFRQU19VUkwJImh0dHBzOi8vIgkvKiBodHRw
cyBVUkwgcHJlZml4ICovCisKKyNkZWZpbmUJSVNfSFRUUF9UWVBFKHVybHR5cGUpIFwKKwkoKCh1
cmx0eXBlKSA9PSBIVFRQX1VSTF9UKSB8fCAoKHVybHR5cGUpID09IEhUVFBTX1VSTF9UKSkKKwor
c3RydWN0IGZldGNoX2Nvbm5lY3QgeworCWludAkJCSBzZDsJCS8qIGZpbGUvc29ja2V0IGRlc2Ny
aXB0b3IgKi8KKwljaGFyCQkJKmJ1ZjsJCS8qIGJ1ZmZlciAqLworCXNpemVfdAkJCSBidWZzaXpl
OwkvKiBidWZmZXIgc2l6ZSAqLworCXNpemVfdAkJCSBidWZwb3M7CS8qIHBvc2l0aW9uIG9mIGJ1
ZmZlciAqLworCXNpemVfdAkJCSBidWZsZW47CS8qIGxlbmd0aCBvZiBidWZmZXIgY29udGVudHMg
Ki8KKwlzdHJ1Y3QgewkJCQkvKiBkYXRhIGNhY2hlZCBhZnRlciBhbgorCQkJCQkJICAgaW50ZXJy
dXB0ZWQgcmVhZCAqLworCQljaGFyCSpidWY7CisJCXNpemVfdAkgc2l6ZTsKKwkJc2l6ZV90CSBw
b3M7CisJCXNpemVfdAkgbGVuOworCX0gY2FjaGU7CisJaW50IAkJCSBpc3NvY2s7CisJaW50CQkJ
IGlzZXJyOworCWludAkJCSBpc2VvZjsKKwlTU0wJCQkqc3NsOwkJLyogU1NMIGhhbmRsZSAqLwor
fTsKK3R5cGVkZWYgc3RydWN0IGZldGNoX2Nvbm5lY3QgZmV0Y2hfY29ubmVjdF90OwogCisvKgor
ICogV3JpdGUgYSB2ZWN0b3IgdG8gYSBjb25uZWN0aW9uIHcvIHRpbWVvdXQKKyAqIE5vdGU6IGNh
biBtb2RpZnkgdGhlIGlvdmVjLgorICovCitzdGF0aWMgc3NpemVfdAorZmV0Y2hfd3JpdGV2KGZl
dGNoX2Nvbm5lY3RfdCAqY29ubiwgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQpCit7CisJ
c3RydWN0IHRpbWV2YWwgbm93LCB0aW1lb3V0LCBkZWx0YTsKKwlmZF9zZXQgd3JpdGVmZHM7CisJ
c3NpemVfdCBsZW4sIHRvdGFsOworCWludCByOworCisJaWYgKHF1aXRfdGltZSA+IDApIHsKKwkJ
RkRfWkVSTygmd3JpdGVmZHMpOworCQlnZXR0aW1lb2ZkYXkoJnRpbWVvdXQsIE5VTEwpOworCQl0
aW1lb3V0LnR2X3NlYyArPSBxdWl0X3RpbWU7CisJfQorCisJdG90YWwgPSAwOworCXdoaWxlIChp
b3ZjbnQgPiAwKSB7CisJCXdoaWxlIChxdWl0X3RpbWUgPiAwICYmICFGRF9JU1NFVChjb25uLT5z
ZCwgJndyaXRlZmRzKSkgeworCQkJRkRfU0VUKGNvbm4tPnNkLCAmd3JpdGVmZHMpOworCQkJZ2V0
dGltZW9mZGF5KCZub3csIE5VTEwpOworCQkJZGVsdGEudHZfc2VjID0gdGltZW91dC50dl9zZWMg
LSBub3cudHZfc2VjOworCQkJZGVsdGEudHZfdXNlYyA9IHRpbWVvdXQudHZfdXNlYyAtIG5vdy50
dl91c2VjOworCQkJaWYgKGRlbHRhLnR2X3VzZWMgPCAwKSB7CisJCQkJZGVsdGEudHZfdXNlYyAr
PSAxMDAwMDAwOworCQkJCWRlbHRhLnR2X3NlYy0tOworCQkJfQorCQkJaWYgKGRlbHRhLnR2X3Nl
YyA8IDApIHsKKwkJCQllcnJubyA9IEVUSU1FRE9VVDsKKwkJCQlyZXR1cm4gKC0xKTsKKwkJCX0K
KwkJCWVycm5vID0gMDsKKwkJCXIgPSBzZWxlY3QoY29ubi0+c2QgKyAxLCBOVUxMLCAmd3JpdGVm
ZHMsIE5VTEwsICZkZWx0YSk7CisJCQlpZiAociA9PSAtMSkgeworCQkJCWlmIChlcnJubyA9PSBF
SU5UUikKKwkJCQkJY29udGludWU7CisJCQkJcmV0dXJuICgtMSk7CisJCQl9CisJCX0KKwkJZXJy
bm8gPSAwOworCQlpZiAoY29ubi0+c3NsICE9IE5VTEwpCisJCQlsZW4gPSBTU0xfd3JpdGUoY29u
bi0+c3NsLCBpb3YtPmlvdl9iYXNlLCBpb3YtPmlvdl9sZW4pOworCQllbHNlCisJCQlsZW4gPSB3
cml0ZXYoY29ubi0+c2QsIGlvdiwgaW92Y250KTsKKwkJaWYgKGxlbiA9PSAwKSB7CisJCQkvKiB3
ZSBjb25zaWRlciBhIHNob3J0IHdyaXRlIGEgZmFpbHVyZSAqLworCQkJLyogWFhYIHBlcmhhcHMg
d2Ugc2hvdWxkbid0IGluIHRoZSBTU0wgY2FzZSAqLworCQkJZXJybm8gPSBFUElQRTsKKwkJCXJl
dHVybiAoLTEpOworCQl9CisJCWlmIChsZW4gPCAwKSB7CisJCQlpZiAoZXJybm8gPT0gRUlOVFIp
CisJCQkJY29udGludWU7CisJCQlyZXR1cm4gKC0xKTsKKwkJfQorCQl0b3RhbCArPSBsZW47CisJ
CXdoaWxlIChpb3ZjbnQgPiAwICYmIGxlbiA+PSAoc3NpemVfdClpb3YtPmlvdl9sZW4pIHsKKwkJ
CWxlbiAtPSBpb3YtPmlvdl9sZW47CisJCQlpb3YrKzsKKwkJCWlvdmNudC0tOworCQl9CisJCWlm
IChpb3ZjbnQgPiAwKSB7CisJCQlpb3YtPmlvdl9sZW4gLT0gbGVuOworCQkJaW92LT5pb3ZfYmFz
ZSA9IChjaGFyICopaW92LT5pb3ZfYmFzZSArIGxlbjsKKwkJfQorCX0KKwlyZXR1cm4gKHRvdGFs
KTsKK30KKworLyoKKyAqIFdyaXRlIHRvIGEgY29ubmVjdGlvbiB3LyB0aW1lb3V0CisgKi8KK3N0
YXRpYyBpbnQKK2ZldGNoX3dyaXRlKGZldGNoX2Nvbm5lY3RfdCAqY29ubiwgY29uc3QgY2hhciAq
c3RyLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCBpb3ZlYyBpb3ZbMV07CisKKwlpb3ZbMF0uaW92
X2Jhc2UgPSAoY2hhciAqKV9fVU5DT05TVChzdHIpOworCWlvdlswXS5pb3ZfbGVuID0gbGVuOwor
CXJldHVybiAoZmV0Y2hfd3JpdGV2KGNvbm4sIGlvdiwgMSkpOworfQorCisvKgorICogU2VuZCBh
IGZvcm1hdHRlZCBsaW5lOyBvcHRpb25hbGx5IGVjaG8gdG8gdGVybWluYWwKKyAqLworc3RhdGlj
IGludAorZmV0Y2hfcHJpbnRmKGZldGNoX2Nvbm5lY3RfdCAqY29ubiwgY29uc3QgY2hhciAqZm10
LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKwlzaXplX3QgbGVuOworCWNoYXIgKm1zZzsKKwlpbnQg
cjsKKworCXZhX3N0YXJ0KGFwLCBmbXQpOworCWxlbiA9IHZhc3ByaW50ZigmbXNnLCBmbXQsIGFw
KTsKKwl2YV9lbmQoYXApOworCisJaWYgKG1zZyA9PSBOVUxMKSB7CisJCWVycm5vID0gRU5PTUVN
OworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwlyID0gZmV0Y2hfd3JpdGUoY29ubiwgbXNnLCBsZW4p
OworCWZyZWUobXNnKTsKKwlyZXR1cm4gKHIpOworfQorCitzdGF0aWMgaW50CitmZXRjaF9maWxl
bm8oZmV0Y2hfY29ubmVjdF90ICpjb25uKQoreworCisJcmV0dXJuIChjb25uLT5zZCk7Cit9CisK
K3N0YXRpYyBpbnQKK2ZldGNoX2Vycm9yKGZldGNoX2Nvbm5lY3RfdCAqY29ubikKK3sKKworCXJl
dHVybiAoY29ubi0+aXNlcnIpOworfQorCitzdGF0aWMgdm9pZAorZmV0Y2hfY2xlYXJlcnIoZmV0
Y2hfY29ubmVjdF90ICpjb25uKQoreworCisJY29ubi0+aXNlcnIgPSAwOworfQorCitzdGF0aWMg
aW50CitmZXRjaF9mbHVzaChmZXRjaF9jb25uZWN0X3QgKmNvbm4pCit7CisJaW50IHY7CisKKwlp
ZiAoY29ubi0+aXNzb2NrKSB7CisjaWZkZWYgVENQX05PUFVTSAorCQl2ID0gMDsKKwkJc2V0c29j
a29wdChjb25uLT5zZCwgSVBQUk9UT19UQ1AsIFRDUF9OT1BVU0gsICZ2LCBzaXplb2YodikpOwor
I2VuZGlmCisJCXYgPSAxOworCQlzZXRzb2Nrb3B0KGNvbm4tPnNkLCBJUFBST1RPX1RDUCwgVENQ
X05PREVMQVksICZ2LCBzaXplb2YodikpOworCX0KKwlyZXR1cm4gKDApOworfQorCisvKkFSR1NV
U0VEKi8KK3N0YXRpYyBmZXRjaF9jb25uZWN0X3QgKgorZmV0Y2hfb3Blbihjb25zdCBjaGFyICpm
bmFtZSwgY29uc3QgY2hhciAqZm1vZGUpCit7CisJZmV0Y2hfY29ubmVjdF90ICpjb25uOworCWlu
dCBmZDsKKworCWZkID0gb3BlbihmbmFtZSwgT19SRE9OTFkpOyAvKiBYWFg6IGZtb2RlICovCisJ
aWYgKGZkIDwgMCkKKwkJcmV0dXJuIChOVUxMKTsKKworCWlmICgoY29ubiA9IGNhbGxvYygxLCBz
aXplb2YoKmNvbm4pKSkgPT0gTlVMTCkgeworCQljbG9zZShmZCk7CisJCXJldHVybiAoTlVMTCk7
CisJfQorCisJY29ubi0+c2QgPSBmZDsKKwljb25uLT5pc3NvY2sgPSAwOworCXJldHVybiAoY29u
bik7Cit9CisKKy8qQVJHU1VTRUQqLworc3RhdGljIGZldGNoX2Nvbm5lY3RfdCAqCitmZXRjaF9m
ZG9wZW4oaW50IHNkLCBjb25zdCBjaGFyICpmbW9kZSkKK3sKKwlmZXRjaF9jb25uZWN0X3QgKmNv
bm47CisJaW50IG9wdCA9IDE7CisKKwlpZiAoKGNvbm4gPSBjYWxsb2MoMSwgc2l6ZW9mKCpjb25u
KSkpID09IE5VTEwpCisJCXJldHVybiAoTlVMTCk7CisKKwljb25uLT5zZCA9IHNkOworCWNvbm4t
Pmlzc29jayA9IDE7CisJZmNudGwoc2QsIEZfU0VURkQsIEZEX0NMT0VYRUMpOworCXNldHNvY2tv
cHQoc2QsIFNPTF9TT0NLRVQsIFNPX05PU0lHUElQRSwgJm9wdCwgc2l6ZW9mKG9wdCkpOworI2lm
ZGVmIFRDUF9OT1BVU0gKKwlzZXRzb2Nrb3B0KHNkLCBJUFBST1RPX1RDUCwgVENQX05PUFVTSCwg
Jm9wdCwgc2l6ZW9mKG9wdCkpOworI2VuZGlmCisJcmV0dXJuIChjb25uKTsKK30KKworc3RhdGlj
IGludAorZmV0Y2hfY2xvc2UoZmV0Y2hfY29ubmVjdF90ICpjb25uKQoreworCWludCBydiA9IDA7
CisKKwlpZiAoY29ubiAhPSBOVUxMKSB7CisJCWZldGNoX2ZsdXNoKGNvbm4pOworCQlTU0xfZnJl
ZShjb25uLT5zc2wpOworCQlydiA9IGNsb3NlKGNvbm4tPnNkKTsKKwkJaWYgKHJ2IDwgMCkgewor
CQkJZXJybm8gPSBydjsKKwkJCXJ2ID0gRU9GOworCQl9CisJCWZyZWUoY29ubi0+Y2FjaGUuYnVm
KTsKKwkJZnJlZShjb25uLT5idWYpOworCQlmcmVlKGNvbm4pOworCX0KKwlyZXR1cm4gKHJ2KTsK
K30KKworI2RlZmluZSBGRVRDSF9SRUFEX1dBSVQJCS0yCisjZGVmaW5lIEZFVENIX1JFQURfRVJS
T1IJLTEKKworc3RhdGljIHNzaXplX3QKK2ZldGNoX3NzbF9yZWFkKFNTTCAqc3NsLCB2b2lkICpi
dWYsIHNpemVfdCBsZW4pCit7CisJc3NpemVfdCBybGVuOworCWludCBzc2xfZXJyOworCisJcmxl
biA9IFNTTF9yZWFkKHNzbCwgYnVmLCBsZW4pOworCWlmIChybGVuIDwgMCkgeworCQlzc2xfZXJy
ID0gU1NMX2dldF9lcnJvcihzc2wsIHJsZW4pOworCQlpZiAoc3NsX2VyciA9PSBTU0xfRVJST1Jf
V0FOVF9SRUFEIHx8CisJCSAgICBzc2xfZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKSB7CisJ
CQlyZXR1cm4gKEZFVENIX1JFQURfV0FJVCk7CisJCX0KKwkJRVJSX3ByaW50X2Vycm9yc19mcCh0
dHlvdXQpOworCQlyZXR1cm4gKEZFVENIX1JFQURfRVJST1IpOworCX0KKwlyZXR1cm4gKHJsZW4p
OworfQorCitzdGF0aWMgc3NpemVfdAorZmV0Y2hfbm9uc3NsX3JlYWQoaW50IHNkLCB2b2lkICpi
dWYsIHNpemVfdCBsZW4pCit7CisJc3NpemVfdCBybGVuOworCisJcmxlbiA9IHJlYWQoc2QsIGJ1
ZiwgbGVuKTsKKwlpZiAocmxlbiA8IDApIHsKKwkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
byA9PSBFSU5UUikKKwkJCXJldHVybiAoRkVUQ0hfUkVBRF9XQUlUKTsKKwkJcmV0dXJuIChGRVRD
SF9SRUFEX0VSUk9SKTsKKwl9CisJcmV0dXJuIChybGVuKTsKK30KKworLyoKKyAqIENhY2hlIHNv
bWUgZGF0YSB0aGF0IHdhcyByZWFkIGZyb20gYSBzb2NrZXQgYnV0IGNhbm5vdCBiZSBpbW1lZGlh
dGVseQorICogcmV0dXJuZWQgYmVjYXVzZSBvZiBhbiBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbC4K
KyAqLworc3RhdGljIGludAorZmV0Y2hfY2FjaGVfZGF0YShmZXRjaF9jb25uZWN0X3QgKmNvbm4s
IGNoYXIgKnNyYywgc2l6ZV90IG5ieXRlcykKK3sKKworCWlmIChjb25uLT5jYWNoZS5zaXplIDwg
bmJ5dGVzKSB7CisJCWNoYXIgKnRtcCA9IHJlYWxsb2MoY29ubi0+Y2FjaGUuYnVmLCBuYnl0ZXMp
OworCQlpZiAodG1wID09IE5VTEwpCisJCQlyZXR1cm4gKC0xKTsKKworCQljb25uLT5jYWNoZS5i
dWYgPSB0bXA7CisJCWNvbm4tPmNhY2hlLnNpemUgPSBuYnl0ZXM7CisJfQorCisJbWVtY3B5KGNv
bm4tPmNhY2hlLmJ1Ziwgc3JjLCBuYnl0ZXMpOworCWNvbm4tPmNhY2hlLmxlbiA9IG5ieXRlczsK
Kwljb25uLT5jYWNoZS5wb3MgPSAwOworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBzc2l6ZV90
CitmZXRjaF9yZWFkKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgZmV0Y2hf
Y29ubmVjdF90ICpjb25uKQoreworCXN0cnVjdCB0aW1ldmFsIG5vdywgdGltZW91dCwgZGVsdGE7
CisJZmRfc2V0IHJlYWRmZHM7CisJc3NpemVfdCBybGVuLCB0b3RhbDsKKwlzaXplX3QgbGVuOwor
CWNoYXIgKnN0YXJ0LCAqYnVmOworCisJaWYgKHF1aXRfdGltZSA+IDApIHsKKwkJZ2V0dGltZW9m
ZGF5KCZ0aW1lb3V0LCBOVUxMKTsKKwkJdGltZW91dC50dl9zZWMgKz0gcXVpdF90aW1lOworCX0K
KworCXRvdGFsID0gMDsKKwlzdGFydCA9IGJ1ZiA9IHB0cjsKKwlsZW4gPSBzaXplICogbm1lbWI7
CisKKwlpZiAoY29ubi0+Y2FjaGUubGVuID4gMCkgeworCQkvKgorCQkgKiBUaGUgbGFzdCBpbnZv
Y2F0aW9uIG9mIGZldGNoX3JlYWQgd2FzIGludGVycnVwdGVkIGJ5IGEKKwkJICogc2lnbmFsIGFm
dGVyIHNvbWUgZGF0YSBoYWQgYmVlbiByZWFkIGZyb20gdGhlIHNvY2tldC4gQ29weQorCQkgKiB0
aGUgY2FjaGVkIGRhdGEgaW50byB0aGUgc3VwcGxpZWQgYnVmZmVyIGJlZm9yZSB0cnlpbmcgdG8K
KwkJICogcmVhZCBmcm9tIHRoZSBzb2NrZXQgYWdhaW4uCisJCSAqLworCQl0b3RhbCA9IChjb25u
LT5jYWNoZS5sZW4gPCBsZW4pID8gY29ubi0+Y2FjaGUubGVuIDogbGVuOworCQltZW1jcHkoYnVm
LCBjb25uLT5jYWNoZS5idWYsIHRvdGFsKTsKKworCQljb25uLT5jYWNoZS5sZW4gLT0gdG90YWw7
CisJCWNvbm4tPmNhY2hlLnBvcyArPSB0b3RhbDsKKwkJbGVuIC09IHRvdGFsOworCQlidWYgKz0g
dG90YWw7CisJfQorCisJd2hpbGUgKGxlbiA+IDApIHsKKwkJLyoKKwkJICogVGhlIHNvY2tldCBp
cyBub24tYmxvY2tpbmcuICBJbnN0ZWFkIG9mIHRoZSBjYW5vbmljYWwKKwkJICogc2VsZWN0KCkg
LT4gcmVhZCgpLCB3ZSBkbyB0aGUgZm9sbG93aW5nOgorCQkgKgorCQkgKiAxKSBjYWxsIHJlYWQo
KSBvciBTU0xfcmVhZCgpLgorCQkgKiAyKSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgcmV0dXJuIC0x
LgorCQkgKiAzKSBpZiB3ZSByZWNlaXZlZCBkYXRhIGJ1dCB3ZSBzdGlsbCBleHBlY3QgbW9yZSwK
KwkJICogICAgdXBkYXRlIG91ciBjb3VudGVycyBhbmQgbG9vcC4KKwkJICogNCkgaWYgcmVhZCgp
IG9yIFNTTF9yZWFkKCkgc2lnbmFsZWQgRU9GLCByZXR1cm4uCisJCSAqIDUpIGlmIHdlIGRpZCBu
b3QgcmVjZWl2ZSBhbnkgZGF0YSBidXQgd2UncmUgbm90IGF0IEVPRiwKKwkJICogICAgY2FsbCBz
ZWxlY3QoKS4KKwkJICoKKwkJICogSW4gdGhlIFNTTCBjYXNlLCB0aGlzIGlzIG5lY2Vzc2FyeSBi
ZWNhdXNlIGlmIHdlCisJCSAqIHJlY2VpdmUgYSBjbG9zZSBub3RpZmljYXRpb24sIHdlIGhhdmUg
dG8gY2FsbAorCQkgKiBTU0xfcmVhZCgpIG9uZSBhZGRpdGlvbmFsIHRpbWUgYWZ0ZXIgd2UndmUg
cmVhZAorCQkgKiBldmVyeXRoaW5nIHdlIHJlY2VpdmVkLgorCQkgKgorCQkgKiBJbiB0aGUgbm9u
LVNTTCBjYXNlLCBpdCBtYXkgaW1wcm92ZSBwZXJmb3JtYW5jZSAodmVyeQorCQkgKiBzbGlnaHRs
eSkgd2hlbiByZWFkaW5nIHNtYWxsIGFtb3VudHMgb2YgZGF0YS4KKwkJICovCisJCWlmIChjb25u
LT5zc2wgIT0gTlVMTCkKKwkJCXJsZW4gPSBmZXRjaF9zc2xfcmVhZChjb25uLT5zc2wsIGJ1Ziwg
bGVuKTsKKwkJZWxzZQorCQkJcmxlbiA9IGZldGNoX25vbnNzbF9yZWFkKGNvbm4tPnNkLCBidWYs
IGxlbik7CisJCWlmIChybGVuID09IDApIHsKKwkJCWJyZWFrOworCQl9IGVsc2UgaWYgKHJsZW4g
PiAwKSB7CisJCQlsZW4gLT0gcmxlbjsKKwkJCWJ1ZiArPSBybGVuOworCQkJdG90YWwgKz0gcmxl
bjsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgaWYgKHJsZW4gPT0gRkVUQ0hfUkVBRF9FUlJPUikg
eworCQkJaWYgKGVycm5vID09IEVJTlRSKQorCQkJCWZldGNoX2NhY2hlX2RhdGEoY29ubiwgc3Rh
cnQsIHRvdGFsKTsKKwkJCXJldHVybiAoLTEpOworCQl9CisJCUZEX1pFUk8oJnJlYWRmZHMpOwor
CQl3aGlsZSAoIUZEX0lTU0VUKGNvbm4tPnNkLCAmcmVhZGZkcykpIHsKKwkJCUZEX1NFVChjb25u
LT5zZCwgJnJlYWRmZHMpOworCQkJaWYgKHF1aXRfdGltZSA+IDApIHsKKwkJCQlnZXR0aW1lb2Zk
YXkoJm5vdywgTlVMTCk7CisJCQkJaWYgKCF0aW1lcmNtcCgmdGltZW91dCwgJm5vdywgPikpIHsK
KwkJCQkJZXJybm8gPSBFVElNRURPVVQ7CisJCQkJCXJldHVybiAoLTEpOworCQkJCX0KKwkJCQl0
aW1lcnN1YigmdGltZW91dCwgJm5vdywgJmRlbHRhKTsKKwkJCX0KKwkJCWVycm5vID0gMDsKKwkJ
CWlmIChzZWxlY3QoY29ubi0+c2QgKyAxLCAmcmVhZGZkcywgTlVMTCwgTlVMTCwKKwkJCQlxdWl0
X3RpbWUgPiAwID8gJmRlbHRhIDogTlVMTCkgPCAwKSB7CisJCQkJaWYgKGVycm5vID09IEVJTlRS
KQorCQkJCQljb250aW51ZTsKKwkJCQlyZXR1cm4gKC0xKTsKKwkJCX0KKwkJfQorCX0KKwlyZXR1
cm4gKHRvdGFsKTsKK30KKworI2RlZmluZSBNSU5fQlVGX1NJWkUgMTAyNAorCisvKgorICogUmVh
ZCBhIGxpbmUgb2YgdGV4dCBmcm9tIGEgY29ubmVjdGlvbiB3LyB0aW1lb3V0CisgKi8KK3N0YXRp
YyBjaGFyICoKK2ZldGNoX2dldGxuKGNoYXIgKnN0ciwgaW50IHNpemUsIGZldGNoX2Nvbm5lY3Rf
dCAqY29ubikKK3sKKwlzaXplX3QgdG1wc2l6ZTsKKwlzc2l6ZV90IGxlbjsKKwljaGFyIGM7CisK
KwlpZiAoY29ubi0+YnVmID09IE5VTEwpIHsKKwkJaWYgKChjb25uLT5idWYgPSBtYWxsb2MoTUlO
X0JVRl9TSVpFKSkgPT0gTlVMTCkgeworCQkJZXJybm8gPSBFTk9NRU07CisJCQljb25uLT5pc2Vy
ciA9IDE7CisJCQlyZXR1cm4gKE5VTEwpOworCQl9CisJCWNvbm4tPmJ1ZnNpemUgPSBNSU5fQlVG
X1NJWkU7CisJfQorCisJaWYgKGNvbm4tPmlzZXJyIHx8IGNvbm4tPmlzZW9mKQorCQlyZXR1cm4g
KE5VTEwpOworCisJaWYgKGNvbm4tPmJ1ZmxlbiAtIGNvbm4tPmJ1ZnBvcyA+IDApCisJCWdvdG8g
ZG9uZTsKKworCWNvbm4tPmJ1ZlswXSA9ICdcMCc7CisJY29ubi0+YnVmcG9zID0gMDsKKwljb25u
LT5idWZsZW4gPSAwOworCWRvIHsKKwkJbGVuID0gZmV0Y2hfcmVhZCgmYywgc2l6ZW9mKGMpLCAx
LCBjb25uKTsKKwkJaWYgKGxlbiA9PSAtMSkgeworCQkJY29ubi0+aXNlcnIgPSAxOworCQkJcmV0
dXJuIChOVUxMKTsKKwkJfQorCQlpZiAobGVuID09IDApIHsKKwkJCWNvbm4tPmlzZW9mID0gMTsK
KwkJCWJyZWFrOworCQl9CisJCWNvbm4tPmJ1Zltjb25uLT5idWZsZW4rK10gPSBjOworCQlpZiAo
Y29ubi0+YnVmbGVuID09IGNvbm4tPmJ1ZnNpemUpIHsKKwkJCWNoYXIgKnRtcCA9IGNvbm4tPmJ1
ZjsKKwkJCXRtcHNpemUgPSBjb25uLT5idWZzaXplICogMiArIDE7CisJCQlpZiAoKHRtcCA9IHJl
YWxsb2ModG1wLCB0bXBzaXplKSkgPT0gTlVMTCkgeworCQkJCWVycm5vID0gRU5PTUVNOworCQkJ
CWNvbm4tPmlzZXJyID0gMTsKKwkJCQlyZXR1cm4gKE5VTEwpOworCQkJfQorCQkJY29ubi0+YnVm
ID0gdG1wOworCQkJY29ubi0+YnVmc2l6ZSA9IHRtcHNpemU7CisJCX0KKwl9IHdoaWxlIChjICE9
ICdcbicpOworCisJaWYgKGNvbm4tPmJ1ZmxlbiA9PSAwKQorCQlyZXR1cm4gKE5VTEwpOworIGRv
bmU6CisJdG1wc2l6ZSA9IE1JTihzaXplIC0gMSwgKGludCkoY29ubi0+YnVmbGVuIC0gY29ubi0+
YnVmcG9zKSk7CisJbWVtY3B5KHN0ciwgY29ubi0+YnVmICsgY29ubi0+YnVmcG9zLCB0bXBzaXpl
KTsKKwlzdHJbdG1wc2l6ZV0gPSAnXDAnOworCWNvbm4tPmJ1ZnBvcyArPSB0bXBzaXplOworCXJl
dHVybiAoc3RyKTsKK30KKworc3RhdGljIGludAorZmV0Y2hfZ2V0bGluZShmZXRjaF9jb25uZWN0
X3QgKmNvbm4sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwKKyAgICBjb25zdCBjaGFyICoqZXJy
b3Jtc2cpCit7CisJc2l6ZV90IGxlbjsKKwlpbnQgcnY7CisKKwlpZiAoZmV0Y2hfZ2V0bG4oYnVm
LCBidWZsZW4sIGNvbm4pID09IE5VTEwpIHsKKwkJaWYgKGNvbm4tPmlzZW9mKSB7CS8qIEVPRiAq
LworCQkJcnYgPSAtMjsKKwkJCWlmIChlcnJvcm1zZykKKwkJCQkqZXJyb3Jtc2cgPSAiXG5FT0Yg
cmVjZWl2ZWQiOworCQl9IGVsc2UgewkJLyogZXJyb3IgKi8KKwkJCXJ2ID0gLTE7CisJCQlpZiAo
ZXJyb3Jtc2cpCisJCQkJKmVycm9ybXNnID0gIkVycm9yIGVuY291bnRlcmVkIjsKKwkJfQorCQlm
ZXRjaF9jbGVhcmVycihjb25uKTsKKwkJcmV0dXJuIChydik7CisJfQorCWxlbiA9IHN0cmxlbihi
dWYpOworCWlmIChidWZbbGVuIC0gMV0gPT0gJ1xuJykgewkvKiBjbGVhciBhbnkgdHJhaWxpbmcg
bmV3bGluZSAqLworCQlidWZbLS1sZW5dID0gJ1wwJzsKKwl9IGVsc2UgaWYgKGxlbiA9PSBidWZs
ZW4gLSAxKSB7CS8qIGxpbmUgdG9vIGxvbmcgKi8KKwkJd2hpbGUgKDEpIHsKKwkJCWNoYXIgYzsK
KwkJCXNzaXplX3QgcmxlbiA9IGZldGNoX3JlYWQoJmMsIHNpemVvZihjKSwgMSwgY29ubik7CisJ
CQlpZiAocmxlbiA8PSAwIHx8IGMgPT0gJ1xuJykKKwkJCQlicmVhazsKKwkJfQorCQlpZiAoZXJy
b3Jtc2cpCisJCQkqZXJyb3Jtc2cgPSAiSW5wdXQgbGluZSBpcyB0b28gbG9uZyI7CisJCWZldGNo
X2NsZWFyZXJyKGNvbm4pOworCQlyZXR1cm4gKC0zKTsKKwl9CisJaWYgKGVycm9ybXNnKQorCQkq
ZXJyb3Jtc2cgPSBOVUxMOworCXJldHVybiAobGVuKTsKK30KKworc3RhdGljIFNTTCAqCitmZXRj
aF9zdGFydF9zc2woaW50IHNvY2spCit7CisJU1NMICpzc2w7CisJU1NMX0NUWCAqY3R4OworCWlu
dCByZXQsIHNzbF9lcnI7CisKKwkvKiBJbml0IHRoZSBTU0wgbGlicmFyeSBhbmQgY29udGV4dCAq
LworCWlmICghU1NMX2xpYnJhcnlfaW5pdCgpKXsKKwkJZnByaW50Zih0dHlvdXQsICJTU0wgbGli
cmFyeSBpbml0IGZhaWxlZFxuIik7CisJCXJldHVybiAoTlVMTCk7CisJfQorCisJU1NMX2xvYWRf
ZXJyb3Jfc3RyaW5ncygpOworCisJY3R4ID0gU1NMX0NUWF9uZXcoU1NMdjIzX2NsaWVudF9tZXRo
b2QoKSk7CisJU1NMX0NUWF9zZXRfbW9kZShjdHgsIFNTTF9NT0RFX0FVVE9fUkVUUlkpOworCisJ
c3NsID0gU1NMX25ldyhjdHgpOworCWlmIChzc2wgPT0gTlVMTCl7CisJCWZwcmludGYodHR5b3V0
LCAiU1NMIGNvbnRleHQgY3JlYXRpb24gZmFpbGVkXG4iKTsKKwkJU1NMX0NUWF9mcmVlKGN0eCk7
CisJCXJldHVybiAoTlVMTCk7CisJfQorCVNTTF9zZXRfZmQoc3NsLCBzb2NrKTsKKwl3aGlsZSAo
KHJldCA9IFNTTF9jb25uZWN0KHNzbCkpID09IC0xKSB7CisJCXNzbF9lcnIgPSBTU0xfZ2V0X2Vy
cm9yKHNzbCwgcmV0KTsKKwkJaWYgKHNzbF9lcnIgIT0gU1NMX0VSUk9SX1dBTlRfUkVBRCAmJgor
CQkgICAgc3NsX2VyciAhPSBTU0xfRVJST1JfV0FOVF9XUklURSkgeworCQkJRVJSX3ByaW50X2Vy
cm9yc19mcCh0dHlvdXQpOworCQkJU1NMX2ZyZWUoc3NsKTsKKwkJCXJldHVybiAoTlVMTCk7CisJ
CX0KKwl9CisKKwlpZiAoZnRwX2RlYnVnICYmIHZlcmJvc2UpIHsKKwkJWDUwOSAqY2VydDsKKwkJ
WDUwOV9OQU1FICpuYW1lOworCQljaGFyICpzdHI7CisKKwkJZnByaW50Zih0dHlvdXQsICJTU0wg
Y29ubmVjdGlvbiBlc3RhYmxpc2hlZCB1c2luZyAlc1xuIiwKKwkJICAgIFNTTF9nZXRfY2lwaGVy
KHNzbCkpOworCQljZXJ0ID0gU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKHNzbCk7CisJCW5hbWUg
PSBYNTA5X2dldF9zdWJqZWN0X25hbWUoY2VydCk7CisJCXN0ciA9IFg1MDlfTkFNRV9vbmVsaW5l
KG5hbWUsIDAsIDApOworCQlmcHJpbnRmKHR0eW91dCwgIkNlcnRpZmljYXRlIHN1YmplY3Q6ICVz
XG4iLCBzdHIpOworCQlmcmVlKHN0cik7CisJCW5hbWUgPSBYNTA5X2dldF9pc3N1ZXJfbmFtZShj
ZXJ0KTsKKwkJc3RyID0gWDUwOV9OQU1FX29uZWxpbmUobmFtZSwgMCwgMCk7CisJCWZwcmludGYo
dHR5b3V0LCAiQ2VydGlmaWNhdGUgaXNzdWVyOiAlc1xuIiwgc3RyKTsKKwkJZnJlZShzdHIpOwor
CX0KKworCXJldHVybiAoc3NsKTsKK30KKworI2Vsc2UJLyogIVdJVEhfU1NMICovCisjZGVmaW5l
CUlTX0hUVFBfVFlQRSh1cmx0eXBlKQkoKHVybHR5cGUpID09IEhUVFBfVVJMX1QpCit0eXBlZGVm
IEZJTEUgZmV0Y2hfY29ubmVjdF90OworI2RlZmluZQlmZXRjaF9wcmludGYJZnByaW50ZgorI2Rl
ZmluZQlmZXRjaF9maWxlbm8JZmlsZW5vCisjZGVmaW5lCWZldGNoX2Vycm9yCWZlcnJvcgorI2Rl
ZmluZQlmZXRjaF9mbHVzaAlmZmx1c2gKKyNkZWZpbmUJZmV0Y2hfb3Blbglmb3BlbgorI2RlZmlu
ZQlmZXRjaF9mZG9wZW4JZmRvcGVuCisjZGVmaW5lCWZldGNoX2Nsb3NlCWZjbG9zZQorI2RlZmlu
ZQlmZXRjaF9yZWFkCWZyZWFkCisjZGVmaW5lCWZldGNoX2dldGxuCWZnZXRzCisjZGVmaW5lCWZl
dGNoX2dldGxpbmUJZ2V0X2xpbmUKKyNlbmRpZgkvKiAhV0lUSF9TU0wgKi8KIAogLyoKICAqIERl
dGVybWluZSBpZiB0b2tlbiBpcyB0aGUgbmV4dCB3b3JkIGluIGJ1ZiAoY2FzZSBpbnNlbnNpdGl2
ZSkuCkBAIC0zNDYsNiArOTQ4LDEzIEBAIHBhcnNlX3VybChjb25zdCBjaGFyICp1cmwsIGNvbnN0
IGNoYXIgKmRlc2MsIHVybF90ICp1dHlwZSwKIAl9IGVsc2UgaWYgKFNUUk5FUVVBTCh1cmwsIEZJ
TEVfVVJMKSkgewogCQl1cmwgKz0gc2l6ZW9mKEZJTEVfVVJMKSAtIDE7CiAJCSp1dHlwZSA9IEZJ
TEVfVVJMX1Q7CisjaWZkZWYgV0lUSF9TU0wKKwl9IGVsc2UgaWYgKFNUUk5FUVVBTCh1cmwsIEhU
VFBTX1VSTCkpIHsKKwkJdXJsICs9IHNpemVvZihIVFRQU19VUkwpIC0gMTsKKwkJKnV0eXBlID0g
SFRUUFNfVVJMX1Q7CisJCSpwb3J0bnVtID0gSFRUUFNfUE9SVDsKKwkJdHBvcnQgPSBodHRwc3Bv
cnQ7CisjZW5kaWYKIAl9IGVsc2UgewogCQl3YXJueCgiSW52YWxpZCAlcyBgJXMnIiwgZGVzYywg
dXJsKTsKICBjbGVhbnVwX3BhcnNlX3VybDoKQEAgLTQ5OCwxNyArMTEwNywyMSBAQCBmZXRjaF91
cmwoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRo
LCBjaGFyICp3d3dhdXRoKQogCWNoYXIJCQkqcHVzZXIsICpwcGFzcywgKnVzZXJhZ2VudDsKIAlv
ZmZfdAkJCWhhc2hieXRlcywgcmFuZ2VzdGFydCwgcmFuZ2VlbmQsIGVudGl0eWxlbjsKIAlpbnQJ
CQkoKnZvbGF0aWxlIGNsb3NlZnVuYykoRklMRSAqKTsKLQlGSUxFCQkJKnZvbGF0aWxlIGZpbjsK
KwlmZXRjaF9jb25uZWN0X3QJCSp2b2xhdGlsZSBmaW47CiAJRklMRQkJCSp2b2xhdGlsZSBmb3V0
OwogCXRpbWVfdAkJCW10aW1lOwogCXVybF90CQkJdXJsdHlwZTsKIAlpbl9wb3J0X3QJCXBvcnRu
dW07CisjaWZkZWYgV0lUSF9TU0wKKwlTU0wJCQkqc3NsOworI2VuZGlmCiAKIAlEUFJJTlRGKCJm
ZXRjaF91cmw6IGAlcycgcHJveHllbnYgYCVzJ1xuIiwgdXJsLCBTVFJvck5VTEwocHJveHllbnYp
KTsKIAogCW9sZGludHIgPSBvbGRpbnRwID0gTlVMTDsKIAljbG9zZWZ1bmMgPSBOVUxMOwotCWZp
biA9IGZvdXQgPSBOVUxMOworCWZpbiA9IE5VTEw7CisJZm91dCA9IE5VTEw7CiAJcyA9IC0xOwog
CXNhdmVmaWxlID0gTlVMTDsKIAlhdXRoID0gbG9jYXRpb24gPSBtZXNzYWdlID0gTlVMTDsKQEAg
LTUzMSw3ICsxMTQ0LDcgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAq
cHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJCXJ2YWwgPSBmZXRj
aF9mdHAodXJsKTsKIAkJCWdvdG8gY2xlYW51cF9mZXRjaF91cmw7CiAJCX0KLQkJaWYgKHVybHR5
cGUgIT0gSFRUUF9VUkxfVCB8fCBvdXRmaWxlID09IE5VTEwpICB7CisJCWlmICghSVNfSFRUUF9U
WVBFKHVybHR5cGUpIHx8IG91dGZpbGUgPT0gTlVMTCkgIHsKIAkJCXdhcm54KCJJbnZhbGlkIFVS
TCAobm8gZmlsZSBhZnRlciBob3N0KSBgJXMnIiwgdXJsKTsKIAkJCWdvdG8gY2xlYW51cF9mZXRj
aF91cmw7CiAJCX0KQEAgLTU3MSwxNyArMTE4NCwxNyBAQCBmZXRjaF91cmwoY29uc3QgY2hhciAq
dXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBjaGFyICp3d3dhdXRo
KQogCX0KIAlpZiAodXJsdHlwZSA9PSBGSUxFX1VSTF9UKSB7CQkvKiBmaWxlOi8vIFVSTHMgKi8K
IAkJZGlyZWN0aW9uID0gImNvcGllZCI7Ci0JCWZpbiA9IGZvcGVuKGRlY29kZWRwYXRoLCAiciIp
OworCQlmaW4gPSBmZXRjaF9vcGVuKGRlY29kZWRwYXRoLCAiciIpOwogCQlpZiAoZmluID09IE5V
TEwpIHsKIAkJCXdhcm4oIkNhbid0IG9wZW4gYCVzJyIsIGRlY29kZWRwYXRoKTsKIAkJCWdvdG8g
Y2xlYW51cF9mZXRjaF91cmw7CiAJCX0KLQkJaWYgKGZzdGF0KGZpbGVubyhmaW4pLCAmc2IpID09
IDApIHsKKwkJaWYgKGZzdGF0KGZldGNoX2ZpbGVubyhmaW4pLCAmc2IpID09IDApIHsKIAkJCW10
aW1lID0gc2Iuc3RfbXRpbWU7CiAJCQlmaWxlc2l6ZSA9IHNiLnN0X3NpemU7CiAJCX0KIAkJaWYg
KHJlc3RhcnRfcG9pbnQpIHsKLQkJCWlmIChsc2VlayhmaWxlbm8oZmluKSwgcmVzdGFydF9wb2lu
dCwgU0VFS19TRVQpIDwgMCkgeworCQkJaWYgKGxzZWVrKGZldGNoX2ZpbGVubyhmaW4pLCByZXN0
YXJ0X3BvaW50LCBTRUVLX1NFVCkgPCAwKSB7CiAJCQkJd2FybigiQ2FuJ3Qgc2VlayB0byByZXN0
YXJ0IGAlcyciLAogCQkJCSAgICBkZWNvZGVkcGF0aCk7CiAJCQkJZ290byBjbGVhbnVwX2ZldGNo
X3VybDsKQEAgLTU5NCwxMiArMTIwNywxNSBAQCBmZXRjaF91cmwoY29uc3QgY2hhciAqdXJsLCBj
b25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBjaGFyICp3d3dhdXRoKQogCQkJ
CSAgICAoTExUKXJlc3RhcnRfcG9pbnQpOwogCQkJZnB1dHMoIlxuIiwgdHR5b3V0KTsKIAkJfQor
CQlpZiAoMCA9PSByY3ZidWZfc2l6ZSkgeworCQkJcmN2YnVmX3NpemUgPSA4ICogMTAyNDsgLyog
WFhYICovCisJCX0KIAl9IGVsc2UgewkJCQkvKiBmdHA6Ly8gb3IgaHR0cDovLyBVUkxzICovCiAJ
CWNvbnN0IGNoYXIgKmxlYWRpbmc7CiAJCWludCBoYXNsZWFkaW5nOwogCiAJCWlmIChwcm94eWVu
diA9PSBOVUxMKSB7Ci0JCQlpZiAodXJsdHlwZSA9PSBIVFRQX1VSTF9UKQorCQkJaWYgKElTX0hU
VFBfVFlQRSh1cmx0eXBlKSkKIAkJCQlwcm94eWVudiA9IGdldG9wdGlvbnZhbHVlKCJodHRwX3By
b3h5Iik7CiAJCQllbHNlIGlmICh1cmx0eXBlID09IEZUUF9VUkxfVCkKIAkJCQlwcm94eWVudiA9
IGdldG9wdGlvbnZhbHVlKCJmdHBfcHJveHkiKTsKQEAgLTY2MCw3ICsxMjc2LDcgQEAgZmV0Y2hf
dXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0
aCwgY2hhciAqd3d3YXV0aCkKIAkJCQkgICAgJnBwYXRoKSA9PSAtMSkKIAkJCQkJZ290byBjbGVh
bnVwX2ZldGNoX3VybDsKIAotCQkJCWlmICgocHVybHR5cGUgIT0gSFRUUF9VUkxfVAorCQkJCWlm
ICgoIUlTX0hUVFBfVFlQRShwdXJsdHlwZSkKIAkJCQkgICAgICYmIHB1cmx0eXBlICE9IEZUUF9V
UkxfVCkgfHwKIAkJCQkgICAgRU1QVFlTVFJJTkcocGhvc3QpIHx8CiAJCQkJICAgICghIEVNUFRZ
U1RSSU5HKHBwYXRoKQpAQCAtNjkwLDYgKzEzMDYsNyBAQCBmZXRjaF91cmwoY29uc3QgY2hhciAq
dXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBjaGFyICp3d3dhdXRo
KQogCQkJCUZSRUVQVFIocGF0aCk7CiAJCQkJcGF0aCA9IGZ0cF9zdHJkdXAodXJsKTsKIAkJCQlG
UkVFUFRSKHBwYXRoKTsKKwkJCQl1cmx0eXBlID0gcHVybHR5cGU7CiAJCQl9CiAJCX0gLyogISBF
TVBUWVNUUklORyhwcm94eWVudikgKi8KIApAQCAtNzA5LDYgKzEzMjYsOSBAQCBmZXRjaF91cmwo
Y29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBj
aGFyICp3d3dhdXRoKQogCQkJaG9zdCA9IHJlczAtPmFpX2Nhbm9ubmFtZTsKIAogCQlzID0gLTE7
CisjaWZkZWYgV0lUSF9TU0wKKwkJc3NsID0gTlVMTDsKKyNlbmRpZgogCQlmb3IgKHJlcyA9IHJl
czA7IHJlczsgcmVzID0gcmVzLT5haV9uZXh0KSB7CiAJCQljaGFyCWhuYW1lW05JX01BWEhPU1Rd
LCBzbmFtZVtOSV9NQVhTRVJWXTsKIApAQCAtNzQxLDYgKzEzNjEsMTYgQEAgZmV0Y2hfdXJsKGNv
bnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hh
ciAqd3d3YXV0aCkKIAkJCQljb250aW51ZTsKIAkJCX0KIAorI2lmZGVmIFdJVEhfU1NMCisJCQlp
ZiAodXJsdHlwZSA9PSBIVFRQU19VUkxfVCkgeworCQkJCWlmICgoc3NsID0gZmV0Y2hfc3RhcnRf
c3NsKHMpKSA9PSBOVUxMKSB7CisJCQkJCWNsb3NlKHMpOworCQkJCQlzID0gLTE7CisJCQkJCWNv
bnRpbnVlOworCQkJCX0KKwkJCX0KKyNlbmRpZgorCiAJCQkvKiBzdWNjZXNzICovCiAJCQlicmVh
azsKIAkJfQpAQCAtNzUwLDcgKzEzODAsMTEgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwg
Y29uc3QgY2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJ
CWdvdG8gY2xlYW51cF9mZXRjaF91cmw7CiAJCX0KIAotCQlmaW4gPSBmZG9wZW4ocywgInIrIik7
CisJCWZpbiA9IGZldGNoX2Zkb3BlbihzLCAicisiKTsKKyNpZmRlZiBXSVRIX1NTTAorCQlpZiAo
dXJsdHlwZSA9PSBIVFRQU19VUkxfVCkKKwkJCWZpbi0+c3NsID0gc3NsOworI2VuZGlmCiAJCS8q
CiAJCSAqIENvbnN0cnVjdCBhbmQgc2VuZCB0aGUgcmVxdWVzdC4KIAkJICovCkBAIC03NjUsMTEg
KzEzOTksMTEgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHll
bnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJCQlsZWFkaW5nID0gIiwgIjsK
IAkJCQloYXNsZWFkaW5nKys7CiAJCQl9Ci0JCQlmcHJpbnRmKGZpbiwgIkdFVCAlcyBIVFRQLzEu
MFxyXG4iLCBwYXRoKTsKKwkJCWZldGNoX3ByaW50ZihmaW4sICJHRVQgJXMgSFRUUC8xLjBcclxu
IiwgcGF0aCk7CiAJCQlpZiAoZmx1c2hjYWNoZSkKLQkJCQlmcHJpbnRmKGZpbiwgIlByYWdtYTog
bm8tY2FjaGVcclxuIik7CisJCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlByYWdtYTogbm8tY2FjaGVc
clxuIik7CiAJCX0gZWxzZSB7Ci0JCQlmcHJpbnRmKGZpbiwgIkdFVCAlcyBIVFRQLzEuMVxyXG4i
LCBwYXRoKTsKKwkJCWZldGNoX3ByaW50ZihmaW4sICJHRVQgJXMgSFRUUC8xLjFcclxuIiwgcGF0
aCk7CiAJCQlpZiAoc3RyY2hyKGhvc3QsICc6JykpIHsKIAkJCQljaGFyICpoLCAqcDsKIApAQCAt
NzgyLDE4ICsxNDE2LDIzIEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIg
KnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAJCQkJICAgIChwID0g
c3RyY2hyKGgsICclJykpICE9IE5VTEwpIHsKIAkJCQkJKnAgPSAnXDAnOwogCQkJCX0KLQkJCQlm
cHJpbnRmKGZpbiwgIkhvc3Q6IFslc10iLCBoKTsKKwkJCQlmZXRjaF9wcmludGYoZmluLCAiSG9z
dDogWyVzXSIsIGgpOwogCQkJCWZyZWUoaCk7CiAJCQl9IGVsc2UKLQkJCQlmcHJpbnRmKGZpbiwg
Ikhvc3Q6ICVzIiwgaG9zdCk7CisJCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIkhvc3Q6ICVzIiwgaG9z
dCk7CisjaWZkZWYgV0lUSF9TU0wKKwkJCWlmICgodXJsdHlwZSA9PSBIVFRQX1VSTF9UICYmIHBv
cnRudW0gIT0gSFRUUF9QT1JUKSB8fAorCQkJICAgICh1cmx0eXBlID09IEhUVFBTX1VSTF9UICYm
IHBvcnRudW0gIT0gSFRUUFNfUE9SVCkpCisjZWxzZQogCQkJaWYgKHBvcnRudW0gIT0gSFRUUF9Q
T1JUKQotCQkJCWZwcmludGYoZmluLCAiOiV1IiwgcG9ydG51bSk7Ci0JCQlmcHJpbnRmKGZpbiwg
IlxyXG4iKTsKLQkJCWZwcmludGYoZmluLCAiQWNjZXB0OiAqLypcclxuIik7Ci0JCQlmcHJpbnRm
KGZpbiwgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIpOworI2VuZGlmCisJCQkJZmV0Y2hfcHJpbnRm
KGZpbiwgIjoldSIsIHBvcnRudW0pOworCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlxyXG4iKTsKKwkJ
CWZldGNoX3ByaW50ZihmaW4sICJBY2NlcHQ6ICovKlxyXG4iKTsKKwkJCWZldGNoX3ByaW50Zihm
aW4sICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iKTsKIAkJCWlmIChyZXN0YXJ0X3BvaW50KSB7CiAJ
CQkJZnB1dHMobGVhZGluZywgdHR5b3V0KTsKLQkJCQlmcHJpbnRmKGZpbiwgIlJhbmdlOiBieXRl
cz0iIExMRiAiLVxyXG4iLAorCQkJCWZwcmludGYodHR5b3V0LCAiUmFuZ2U6IGJ5dGVzPSIgTExG
ICItXHJcbiIsCiAJCQkJICAgIChMTFQpcmVzdGFydF9wb2ludCk7CiAJCQkJZnByaW50Zih0dHlv
dXQsICJyZXN0YXJ0aW5nIGF0ICIgTExGLAogCQkJCSAgICAoTExUKXJlc3RhcnRfcG9pbnQpOwpA
QCAtODAxLDEyICsxNDQwLDEyIEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNo
YXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAJCQkJaGFzbGVh
ZGluZysrOwogCQkJfQogCQkJaWYgKGZsdXNoY2FjaGUpCi0JCQkJZnByaW50ZihmaW4sICJDYWNo
ZS1Db250cm9sOiBuby1jYWNoZVxyXG4iKTsKKwkJCQlmZXRjaF9wcmludGYoZmluLCAiQ2FjaGUt
Q29udHJvbDogbm8tY2FjaGVcclxuIik7CiAJCX0KIAkJaWYgKCh1c2VyYWdlbnQ9Z2V0ZW52KCJG
VFBVU0VSQUdFTlQiKSkgIT0gTlVMTCkgewotCQkJZnByaW50ZihmaW4sICJVc2VyLUFnZW50OiAl
c1xyXG4iLCB1c2VyYWdlbnQpOworCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlVzZXItQWdlbnQ6ICVz
XHJcbiIsIHVzZXJhZ2VudCk7CiAJCX0gZWxzZSB7Ci0JCQlmcHJpbnRmKGZpbiwgIlVzZXItQWdl
bnQ6ICVzLyVzXHJcbiIsCisJCQlmZXRjaF9wcmludGYoZmluLCAiVXNlci1BZ2VudDogJXMvJXNc
clxuIiwKIAkJCSAgICBGVFBfUFJPRFVDVCwgRlRQX1ZFUlNJT04pOwogCQl9CiAJCWlmICh3d3dh
dXRoKSB7CkBAIC04MTYsNyArMTQ1NSw3IEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNv
bnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAJCQkJ
bGVhZGluZyA9ICIsICI7CiAJCQkJaGFzbGVhZGluZysrOwogCQkJfQotCQkJZnByaW50ZihmaW4s
ICJBdXRob3JpemF0aW9uOiAlc1xyXG4iLCB3d3dhdXRoKTsKKwkJCWZldGNoX3ByaW50ZihmaW4s
ICJBdXRob3JpemF0aW9uOiAlc1xyXG4iLCB3d3dhdXRoKTsKIAkJfQogCQlpZiAocHJveHlhdXRo
KSB7CiAJCQlpZiAodmVyYm9zZSkgewpAQCAtODI1LDE4ICsxNDY0LDE4IEBAIGZldGNoX3VybChj
b25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNo
YXIgKnd3d2F1dGgpCiAJCQkJbGVhZGluZyA9ICIsICI7CiAJCQkJaGFzbGVhZGluZysrOwogCQkJ
fQotCQkJZnByaW50ZihmaW4sICJQcm94eS1BdXRob3JpemF0aW9uOiAlc1xyXG4iLCBwcm94eWF1
dGgpOworCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlByb3h5LUF1dGhvcml6YXRpb246ICVzXHJcbiIs
IHByb3h5YXV0aCk7CiAJCX0KIAkJaWYgKHZlcmJvc2UgJiYgaGFzbGVhZGluZykKIAkJCWZwdXRz
KCIpXG4iLCB0dHlvdXQpOwotCQlmcHJpbnRmKGZpbiwgIlxyXG4iKTsKLQkJaWYgKGZmbHVzaChm
aW4pID09IEVPRikgeworCQlmZXRjaF9wcmludGYoZmluLCAiXHJcbiIpOworCQlpZiAoZmV0Y2hf
Zmx1c2goZmluKSA9PSBFT0YpIHsKIAkJCXdhcm4oIldyaXRpbmcgSFRUUCByZXF1ZXN0Iik7CiAJ
CQlnb3RvIGNsZWFudXBfZmV0Y2hfdXJsOwogCQl9CiAKIAkJCQkvKiBSZWFkIHRoZSByZXNwb25z
ZSAqLwotCQlsZW4gPSBnZXRfbGluZShmaW4sIGJ1Ziwgc2l6ZW9mKGJ1ZiksICZlcnJvcm1zZyk7
CisJCWxlbiA9IGZldGNoX2dldGxpbmUoZmluLCBidWYsIHNpemVvZihidWYpLCAmZXJyb3Jtc2cp
OwogCQlpZiAobGVuIDwgMCkgewogCQkJaWYgKCplcnJvcm1zZyA9PSAnXG4nKQogCQkJCWVycm9y
bXNnKys7CkBAIC04NjAsNyArMTQ5OSw3IEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNv
bnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAKIAkJ
CQkvKiBSZWFkIHRoZSByZXN0IG9mIHRoZSBoZWFkZXIuICovCiAJCXdoaWxlICgxKSB7Ci0JCQls
ZW4gPSBnZXRfbGluZShmaW4sIGJ1Ziwgc2l6ZW9mKGJ1ZiksICZlcnJvcm1zZyk7CisJCQlsZW4g
PSBmZXRjaF9nZXRsaW5lKGZpbiwgYnVmLCBzaXplb2YoYnVmKSwgJmVycm9ybXNnKTsKIAkJCWlm
IChsZW4gPCAwKSB7CiAJCQkJaWYgKCplcnJvcm1zZyA9PSAnXG4nKQogCQkJCQllcnJvcm1zZysr
OwpAQCAtMTE0OCw3ICsxNzg3LDcgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3Qg
Y2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJbGFzdGNo
dW5rID0gMDsKIAkJCQkJLyogcmVhZCBjaHVuay1zaXplICovCiAJCWlmIChpc2NodW5rZWQpIHsK
LQkJCWlmIChmZ2V0cyh4ZmVyYnVmLCBidWZzaXplLCBmaW4pID09IE5VTEwpIHsKKwkJCWlmIChm
ZXRjaF9nZXRsbih4ZmVyYnVmLCBidWZzaXplLCBmaW4pID09IE5VTEwpIHsKIAkJCQl3YXJueCgi
VW5leHBlY3RlZCBFT0YgcmVhZGluZyBjaHVuay1zaXplIik7CiAJCQkJZ290byBjbGVhbnVwX2Zl
dGNoX3VybDsKIAkJCX0KQEAgLTEyMDEsNyArMTg0MCw3IEBAIGZldGNoX3VybChjb25zdCBjaGFy
ICp1cmwsIGNvbnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1
dGgpCiAJCQlpZiAoaXNjaHVua2VkKQogCQkJCWJ1ZnJlbSA9IE1JTihjaHVua3NpemUsIGJ1ZnJl
bSk7CiAJCQl3aGlsZSAoYnVmcmVtID4gMCkgewotCQkJCWZsZW4gPSBmcmVhZCh4ZmVyYnVmLCBz
aXplb2YoY2hhciksCisJCQkJZmxlbiA9IGZldGNoX3JlYWQoeGZlcmJ1Ziwgc2l6ZW9mKGNoYXIp
LAogCQkJCSAgICBNSU4oKG9mZl90KWJ1ZnNpemUsIGJ1ZnJlbSksIGZpbik7CiAJCQkJaWYgKGZs
ZW4gPD0gMCkKIAkJCQkJZ290byBjaHVua2RvbmU7CkBAIC0xMjQwLDcgKzE4NzksNyBAQCBmZXRj
aF91cmwoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlh
dXRoLCBjaGFyICp3d3dhdXRoKQogCQkJCQkvKiByZWFkIENSTEYgYWZ0ZXIgY2h1bmsqLwogIGNo
dW5rZG9uZToKIAkJaWYgKGlzY2h1bmtlZCkgewotCQkJaWYgKGZnZXRzKHhmZXJidWYsIGJ1ZnNp
emUsIGZpbikgPT0gTlVMTCkgeworCQkJaWYgKGZldGNoX2dldGxuKHhmZXJidWYsIGJ1ZnNpemUs
IGZpbikgPT0gTlVMTCkgewogCQkJCXdhcm54KCJVbmV4cGVjdGVkIEVPRiByZWFkaW5nIGNodW5r
IENSTEYiKTsKIAkJCQlnb3RvIGNsZWFudXBfZmV0Y2hfdXJsOwogCQkJfQpAQCAtMTI2MCw3ICsx
ODk5LDcgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHllbnYs
IGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJCSh2b2lkKXB1dGMoJyMnLCB0dHlv
dXQpOwogCQkodm9pZClwdXRjKCdcbicsIHR0eW91dCk7CiAJfQotCWlmIChmZXJyb3IoZmluKSkg
eworCWlmIChmZXRjaF9lcnJvcihmaW4pKSB7CiAJCXdhcm4oIlJlYWRpbmcgZmlsZSIpOwogCQln
b3RvIGNsZWFudXBfZmV0Y2hfdXJsOwogCX0KQEAgLTEyOTcsNyArMTkzNiw3IEBAIGZldGNoX3Vy
bChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgs
IGNoYXIgKnd3d2F1dGgpCiAJaWYgKG9sZGludHApCiAJCSh2b2lkKXhzaWduYWwoU0lHUElQRSwg
b2xkaW50cCk7CiAJaWYgKGZpbiAhPSBOVUxMKQotCQlmY2xvc2UoZmluKTsKKwkJZmV0Y2hfY2xv
c2UoZmluKTsKIAllbHNlIGlmIChzICE9IC0xKQogCQljbG9zZShzKTsKIAlpZiAoY2xvc2VmdW5j
ICE9IE5VTEwgJiYgZm91dCAhPSBOVUxMKQpAQCAtMTcyOSw3ICsyMzY4LDExIEBAIGdvX2ZldGNo
KGNvbnN0IGNoYXIgKnVybCkKIAkvKgogCSAqIENoZWNrIGZvciBmaWxlOi8vIGFuZCBodHRwOi8v
IFVSTHMuCiAJICovCi0JaWYgKFNUUk5FUVVBTCh1cmwsIEhUVFBfVVJMKSB8fCBTVFJORVFVQUwo
dXJsLCBGSUxFX1VSTCkpCisJaWYgKFNUUk5FUVVBTCh1cmwsIEhUVFBfVVJMKQorI2lmZGVmIFdJ
VEhfU1NMCisJICAgIHx8IFNUUk5FUVVBTCh1cmwsIEhUVFBTX1VSTCkKKyNlbmRpZgorCSAgICB8
fCBTVFJORVFVQUwodXJsLCBGSUxFX1VSTCkpCiAJCXJldHVybiAoZmV0Y2hfdXJsKHVybCwgTlVM
TCwgTlVMTCwgTlVMTCkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3Vzci5iaW4vZnRwL2Z0cF92YXIu
aCBiL3Vzci5iaW4vZnRwL2Z0cF92YXIuaAppbmRleCBkYjUwMWNmLi44MTk5Yjc4IDEwMDY0NAot
LS0gYS91c3IuYmluL2Z0cC9mdHBfdmFyLmgKKysrIGIvdXNyLmJpbi9mdHAvZnRwX3Zhci5oCkBA
IC0xNzcsNiArMTc3LDcgQEAgZW51bSB7CiAKICNkZWZpbmUJRlRQX1BPUlQJMjEJLyogZGVmYXVs
dCBpZiAhIGdldHNlcnZieW5hbWUoImZ0cC90Y3AiKSAqLwogI2RlZmluZQlIVFRQX1BPUlQJODAJ
LyogZGVmYXVsdCBpZiAhIGdldHNlcnZieW5hbWUoImh0dHAvdGNwIikgKi8KKyNkZWZpbmUJSFRU
UFNfUE9SVAk0NDMJLyogZGVmYXVsdCBpZiAhIGdldHNlcnZieW5hbWUoImh0dHBzL3RjcCIpICov
CiAjaWZuZGVmCUdBVEVfUE9SVAogI2RlZmluZQlHQVRFX1BPUlQJMjEJLyogZGVmYXVsdCBpZiAh
IGdldHNlcnZieW5hbWUoImZ0cGdhdGUvdGNwIikgKi8KICNlbmRpZgpAQCAtMjczLDYgKzI3NCw5
IEBAIEdMT0JBTAljaGFyICAgKnVzZXJuYW1lOwkvKiBuYW1lIG9mIHVzZXIgbG9nZ2VkIGluIGFz
LiAoZHluYW1pYykgKi8KIEdMT0JBTAlzYV9mYW1pbHlfdCBmYW1pbHk7CS8qIGFkZHJlc3MgZmFt
aWx5IHRvIHVzZSBmb3IgY29ubmVjdGlvbnMgKi8KIEdMT0JBTAljb25zdCBjaGFyICpmdHBwb3J0
OwkvKiBwb3J0IG51bWJlciB0byB1c2UgZm9yIEZUUCBjb25uZWN0aW9ucyAqLwogR0xPQkFMCWNv
bnN0IGNoYXIgKmh0dHBwb3J0OwkvKiBwb3J0IG51bWJlciB0byB1c2UgZm9yIEhUVFAgY29ubmVj
dGlvbnMgKi8KKyNpZmRlZiBXSVRIX1NTTAorR0xPQkFMCWNvbnN0IGNoYXIgKmh0dHBzcG9ydDsJ
LyogcG9ydCBudW1iZXIgdG8gdXNlIGZvciBIVFRQUyBjb25uZWN0aW9ucyAqLworI2VuZGlmCiBH
TE9CQUwJY29uc3QgY2hhciAqZ2F0ZXBvcnQ7CS8qIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3IgZ2F0
ZWZ0cCBjb25uZWN0aW9ucyAqLwogR0xPQkFMCXN0cnVjdCBhZGRyaW5mbyAqYmluZGFpOyAvKiBs
b2NhbCBhZGRyZXNzIHRvIGJpbmQgYXMgKi8KIApkaWZmIC0tZ2l0IGEvdXNyLmJpbi9mdHAvbWFp
bi5jIGIvdXNyLmJpbi9mdHAvbWFpbi5jCmluZGV4IDU4MjM0ZWUuLmMwZjY5MmIgMTAwNjQ0Ci0t
LSBhL3Vzci5iaW4vZnRwL21haW4uYworKysgYi91c3IuYmluL2Z0cC9tYWluLmMKQEAgLTE1MCw2
ICsxNTAsOSBAQCBtYWluKGludCB2b2xhdGlsZSBhcmdjLCBjaGFyICoqdm9sYXRpbGUgYXJndikK
IAogCWZ0cHBvcnQgPSAiZnRwIjsKIAlodHRwcG9ydCA9ICJodHRwIjsKKyNpZmRlZiBXSVRIX1NT
TAorCWh0dHBzcG9ydCA9ICJodHRwcyI7CisjZW5kaWYKIAlnYXRlcG9ydCA9IE5VTEw7CiAJY3Ag
PSBnZXRlbnYoIkZUUFNFUlZFUlBPUlQiKTsKIAlpZiAoY3AgIT0gTlVMTCkKQEAgLTEwNDQsNiAr
MTA0Nyw5IEBAIHVzYWdlKHZvaWQpCiAiICAgICAgICAgICBbW3VzZXJAXWhvc3QgW3BvcnRdXSBb
aG9zdDpwYXRoWy9dXSBbZmlsZTovLy9maWxlXVxuIgogIiAgICAgICAgICAgW2Z0cDovL1t1c2Vy
WzpwYXNzXUBdaG9zdFs6cG9ydF0vcGF0aFsvXV1cbiIKICIgICAgICAgICAgIFtodHRwOi8vW3Vz
ZXJbOnBhc3NdQF1ob3N0Wzpwb3J0XS9wYXRoXSBbLi4uXVxuIgorI2lmZGVmIFdJVEhfU1NMCisi
ICAgICAgICAgICBbaHR0cHM6Ly9bdXNlcls6cGFzc11AXWhvc3RbOnBvcnRdL3BhdGhdIFsuLi5d
XG4iCisjZW5kaWYKICIgICAgICAgJXMgLXUgVVJMIGZpbGUgWy4uLl1cbiIsIHByb2duYW1lLCBw
cm9nbmFtZSk7CiAJZXhpdCgxKTsKIH0K
--e89a8f923f3aff7bb104cffeee57--
Home |
Main Index |
Thread Index |
Old Index