TESTING LDAP LIBRARIES ON DOS

X500 (bms%wipronsd@wipinfo.soft.net)
Wed, 8 May 1996 15:12:30 +0500 (GMT+0500)

This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--1430466530-1714609181-831550350=:16372
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello there,

We are students who are working on a project regarding running DE on DOS
for which we need to build and test LDAP libraries since DE needs to be
built over ldap.We have a ldap server installed and ldapd daemon running
on a SUNOS-4.1.3 m/c.We have tested the functioning of the server on this
m/c.

On the DOS side we have built the NCSA telnet stack and the
utilities like telnet,ftp,rsh,finger etc are working efficiently.
We have compiled the code of LDAP for NCSA and need to test the
libraries before proceeding with DE.

While testing using the ltest executable we find that the
ldap_open() funtion is successful and next is request for the
B(ldap_bind_s()) and later the system is in a loop for a suitable
ldap_result(). On the server side we have the daemon running with the
debug option "/usr/local/etc/ldapd -d 32767" and we are able to trace the
flow of program.We find that there is a variable called "netlen" which is
supposed to determine the length of the packet recieved and since we are
trying to print some messages and values to fix the error we found that
the value is huge and there is a failure in memory allocation. The
corresponding io.c file where these proceedings are done and the file
which has the messages trapped while running the daemon is for your kind
reference.No reply /result is sent in response for the DOS m/c. We request
you to suggest a suitable solution for the same.

Thanks in advance.

BMS.
--1430466530-1714609181-831550350=:16372
Content-Type: TEXT/PLAIN; name=file
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SUN.3.91.960508151230.16372B@wipronsd>
Content-Description:

LS0tLS0tLS1XZSBoYXZlIGluc2VydGVkIHN1aXRhYmxlIHByaW50IHN0YXRl
bWVudHMgdG8gdHJhcCBhbnkgZXJyb3ItLS0tLS0tLS0tDQoNCg0KRW50ZXJp
bmcgbWFpbi5jIGluIHNlcnZlcnMvbGRhcGQNCkVudGVyZWQgQmVycmVhZCB3
aXRoIExlbiA9IDENClZhbHVlIG9mIGJ1ZiwqYnVmIGluIEJlclJlYWQgPSA5
MDExMiAgICAsAg0KUmV0dXJuaW5nIGZyb20gYmVycmVhZCB3aXRoIG5yZWFk
ID0gMQ0KRW50ZXJlZCBCZXJyZWFkIHdpdGggTGVuID0gMQ0KVmFsdWUgb2Yg
YnVmLCpidWYgaW4gQmVyUmVhZCA9IDkwMTEyICAgICwNCg0KUmV0dXJuaW5n
IGZyb20gYmVycmVhZCB3aXRoIG5yZWFkID0gMQ0KTGMgPSAxMzINCk5vY3Rl
dHMgPSA0DQpESUZGID0gMA0KVmFsdWUgb2YgbmV0bGVuID0gMCBhbmQgYWRk
cmVzcyA9IC0xMzQyMTkzMDANCkVudGVyZWQgQmVycmVhZCB3aXRoIExlbiA9
IDQNClZhbHVlIG9mIGJ1ZiwqYnVmIGluIEJlclJlYWQgPSA5MDExMiAgICAs
Cw0KVmFsdWUgb2YgYnVmLCpidWYgaW4gQmVyUmVhZCA9IDkwMTEyICAgICwM
DQpWYWx1ZSBvZiBidWYsKmJ1ZiBpbiBCZXJSZWFkID0gOTAxMTIgICAgLA0N
ClZhbHVlIG9mIGJ1ZiwqYnVmIGluIEJlclJlYWQgPSA5MDExMiAgICAsDg0K
UmV0dXJuaW5nIGZyb20gYmVycmVhZCB3aXRoIG5yZWFkID0gNA0KVmFsdWUg
b2YgbmV0bGVuID0gMjY4NDM1NDU2IGFuZCBhZGRyZXNzID0gLTEzNDIxOTMw
MA0KVmFsdWUgb2YgbGVuID0gMjY4NDM1NDU2DQo=
--1430466530-1714609181-831550350=:16372
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="io.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SUN.3.91.960508151230.16372C@wipronsd>
Content-Description:

LyogaW8uYyAtIGJlciBnZW5lcmFsIGkvbyByb3V0aW5lcyAqLw0KLyoNCiAq
IENvcHlyaWdodCAoYykgMTk5MCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5
IG9mIE1pY2hpZ2FuLg0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqDQog
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zIGFyZSBwZXJtaXR0ZWQNCiAqIHByb3ZpZGVkIHRoYXQgdGhpcyBu
b3RpY2UgaXMgcHJlc2VydmVkIGFuZCB0aGF0IGR1ZSBjcmVkaXQgaXMgZ2l2
ZW4NCiAqIHRvIHRoZSBVbml2ZXJzaXR5IG9mIE1pY2hpZ2FuIGF0IEFubiBB
cmJvci4gVGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkNCiAqIG1heSBub3Qg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMNCiAqIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBUaGlzIHNvZnR3YXJlDQogKiBpcyBw
cm92aWRlZCBgYGFzIGlzJycgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQg
d2FycmFudHkuDQogKi8NCg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVk
ZSA8Y3R5cGUuaD4NCg0KI2lmIGRlZmluZWQoIERPUyApIHx8IGRlZmluZWQo
IF9XSU4zMiApDQojaW5jbHVkZSAibXNkb3MuaCINCiNlbmRpZiAvKiBET1Mg
fHwgX1dJTjMyICovDQoNCiNpZmRlZiBNQUNPUw0KI2luY2x1ZGUgPHN0ZGxp
Yi5oPg0KI2luY2x1ZGUgIm1hY29zLmgiDQojZWxzZSAvKiBNQUNPUyAqLw0K
I2lmIGRlZmluZWQoTmVYVCkgfHwgZGVmaW5lZChWTVMpDQojaW5jbHVkZSA8
c3RkbGliLmg+DQojZWxzZSAvKiBuZXh0IHx8IHZtcyAqLw0KI2luY2x1ZGUg
PG1hbGxvYy5oPg0KI2VuZGlmIC8qIG5leHQgfHwgdm1zICovDQojaW5jbHVk
ZSA8ZXJybm8uaD4NCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCiNpbmNsdWRl
IDxzeXMvc29ja2V0Lmg+DQojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KI2lm
ZGVmIFBDTkZTDQojaW5jbHVkZSA8dGtsaWIuaD4NCiNlbmRpZiAvKiBQQ05G
UyAqLw0KI2VuZGlmIC8qIE1BQ09TICovDQoNCiNpZm5kZWYgVk1TDQojaW5j
bHVkZSA8bWVtb3J5Lmg+DQojZW5kaWYNCiNpbmNsdWRlIDxzdHJpbmcuaD4N
CiNpbmNsdWRlICJsYmVyLmgiDQoNCiNpZmRlZiBfV0lOMzINCiNpbmNsdWRl
IDx3aW5zb2NrLmg+DQojaW5jbHVkZSA8aW8uaD4NCiNlbmRpZiAvKiBfV0lO
MzIgKi8NCg0KI2lmZGVmIE5FRURQUk9UT1MNCnN0YXRpYyBpbnQgYmVyX3Jl
YWxsb2MoIEJlckVsZW1lbnQgKmJlciwgdW5zaWduZWQgbG9uZyBsZW4gKTsN
CnN0YXRpYyBpbnQgYmVyX2ZpbGJ1ZiggU29ja2J1ZiAqc2IsIGxvbmcgbGVu
ICk7DQpzdGF0aWMgbG9uZyBCZXJSZWFkKCBTb2NrYnVmICpzYiwgY2hhciAq
YnVmLCBsb25nIGxlbiApOw0KI2lmZGVmIFBDTkZTDQpzdGF0aWMgaW50IEJl
cldyaXRlKCBTb2NrYnVmICpzYiwgY2hhciAqYnVmLCBsb25nIGxlbiApOw0K
I2VuZGlmIC8qIFBDTkZTICovDQojZWxzZQ0KaW50IGJlcl9maWxidWYoKTsN
CmxvbmcgQmVyUmVhZCgpOw0Kc3RhdGljIGludCBiZXJfcmVhbGxvYygpOw0K
I2VuZGlmIC8qIE5FRURQUk9UT1MgKi8NCg0KI2RlZmluZSBiZXJnZXRjKCBz
YiwgbGVuICkgICAgKCBzYi0+c2JfYmVyLmJlcl9lbmQgPiBzYi0+c2JfYmVy
LmJlcl9wdHIgPyBcDQoJCQkgICh1bnNpZ25lZCBjaGFyKSpzYi0+c2JfYmVy
LmJlcl9wdHIrKyA6IFwNCgkJCSAgYmVyX2ZpbGJ1Ziggc2IsIGxlbiApKQ0K
DQojaWZkZWYgTUFDT1MNCi8qDQogKiBNYWNUQ1ANCiAqLw0KI2RlZmluZSBy
ZWFkKCBzLCBiLCBsICkgdGNwcmVhZCggcywgMCwgKHVuc2lnbmVkIGNoYXIg
KiliLCBsLCBOVUxMICkNCiNkZWZpbmUgQmVyV3JpdGUoIHNiLCBiLCBsICkg
ICB0Y3B3cml0ZSggc2ItPnNiX3NkLCAodW5zaWduZWQgY2hhciAqKShiKSwg
bCApDQojZWxzZSAvKiBNQUNPUyAqLw0KI2lmZGVmIERPUw0KI2lmZGVmIFBD
TkZTDQovKg0KICogUENORlMgKHVuZGVyIERPUykNCiAqLw0KI2RlZmluZSBy
ZWFkKCBzLCBiLCBsICkgcmVjdiggcywgYiwgbCwgMCApDQojZGVmaW5lIEJl
cldyaXRlKCBzLCBiLCBsICkgc2VuZCggcy0+c2Jfc2QsIGIsIChpbnQpIGws
IDAgKQ0KI2VuZGlmIC8qIFBDTkZTICovDQojaWZkZWYgTkNTQQ0KLyoNCiAq
IE5DU0EgVGVsbmV0IFRDUC9JUCBzdGFjayAodW5kZXIgRE9TKQ0KICovDQoj
ZGVmaW5lIHJlYWQoIHMsIGIsIGwgKSBucmVhZCggcywgYiwgbCApDQojZGVm
aW5lIEJlcldyaXRlKCBzLCBiLCBsICkgbmV0d3JpdGUoIHMtPnNiX3NkLCBi
LCBsICkNCiNlbmRpZiAvKiBOQ1NBICovDQojaWZkZWYgV0lOU09DSw0KLyoN
CiAqIFdpbmRvd3MgU29ja2V0IEFQSSAodW5kZXIgRE9TL1dpbmRvd3MgMy54
KQ0KICovDQojZGVmaW5lIHJlYWQoIHMsIGIsIGwgKSByZWN2KCBzLCBiLCBs
LCAwICkNCiNkZWZpbmUgQmVyV3JpdGUoIHMsIGIsIGwgKSBzZW5kKCBzLT5z
Yl9zZCwgYiwgbCwgMCApDQojZW5kaWYgLyogV0lOU09DSyAqLw0KI2Vsc2Ug
LyogRE9TICovDQojaWZkZWYgX1dJTjMyDQovKg0KICogMzItYml0IFdpbmRv
d3MgU29ja2V0IEFQSSAodW5kZXIgV2luZG93cyBOVCBvciBXaW5kb3dzIDk1
KQ0KICovDQojZGVmaW5lIHJlYWQoIHMsIGIsIGwgKQkJcmVjdiggcywgYiwg
bCwgMCApDQojZGVmaW5lIEJlcldyaXRlKCBzLCBiLCBsICkJc2VuZCggcy0+
c2Jfc2QsIGIsIGwsIDAgKQ0KI2Vsc2UgLyogX1dJTjMyICovDQojaWZkZWYg
Vk1TDQovKg0KICogVk1TIC0tIGVhY2ggd3JpdGUgbXVzdCBiZSA2NEsgb3Ig
c21hbGxlcg0KICovDQojZGVmaW5lIE1BWF9XUklURSA2NTUzNQ0KI2RlZmlu
ZSBCZXJXcml0ZSggc2IsIGIsIGwgKSB3cml0ZSggc2ItPnNiX3NkLCBiLCAo
bDxNQVhfV1JJVEUpPyBsIDogTUFYX1dSSVRFKQ0KI2Vsc2UgLyogVk1TICov
DQovKg0KICogZXZlcnl0aGluZyBlbHNlIChVbml4L0JTRCA0LjMgc29ja2V0
IEFQSSkNCiAqLw0KI2RlZmluZSBCZXJXcml0ZSggc2IsIGIsIGwgKQl3cml0
ZSggc2ItPnNiX3NkLCBiLCBsICkNCiNlbmRpZiAvKiBWTVMgKi8NCiNkZWZp
bmUgdWRwX3JlYWQoIHNiLCBiLCBsLCBhbCApIHJlY3Zmcm9tKHNiLT5zYl9z
ZCwgKGNoYXIgKiliLCBsLCAwLCBcDQoJCShzdHJ1Y3Qgc29ja2FkZHIgKilz
Yi0+c2JfZnJvbWFkZHIsIFwNCgkJKGFsID0gc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkciksICZhbCkpDQojZGVmaW5lIHVkcF93cml0ZSggc2IsIGIsIGwgKSBz
ZW5kdG8oc2ItPnNiX3NkLCAoY2hhciAqKShiKSwgbCwgMCwgXA0KCQkoc3Ry
dWN0IHNvY2thZGRyICopc2ItPnNiX3VzZWFkZHIsIHNpemVvZihzdHJ1Y3Qg
c29ja2FkZHIpKQ0KI2VuZGlmIC8qIF9XSU4zMiAqLw0KI2VuZGlmIC8qIERP
UyAqLw0KI2VuZGlmIC8qIE1BQ09TICovDQoNCiNpZm5kZWYgdWRwX3JlYWQN
CiNkZWZpbmUgdWRwX3JlYWQoIHNiLCBiLCBsLCBhbCApCUNMREFQIE5PVCBT
VVBQT1JURUQNCiNkZWZpbmUgdWRwX3dyaXRlKCBzYiwgYiwgbCApCQlDTERB
UCBOT1QgU1VQUE9SVEVEDQojZW5kaWYgLyogdWRwX3JlYWQgKi8NCg0KI2Rl
ZmluZSBFWEJVRlNJWgkxMDI0DQoNCmludA0KYmVyX2ZpbGJ1ZiggU29ja2J1
ZiAqc2IsIGxvbmcgbGVuICkNCnsNCglzaG9ydAlyYzsNCiNpZmRlZiBDTERB
UA0KCWludAlhZGRybGVuOw0KI2VuZGlmIC8qIENMREFQICovDQoNCglpZiAo
IHNiLT5zYl9iZXIuYmVyX2J1ZiA9PSBOVUxMICkgew0KCQlpZiAoIChzYi0+
c2JfYmVyLmJlcl9idWYgPSAoY2hhciAqKSBtYWxsb2MoIFJFQURCVUZTSVog
KSkgPT0NCgkJICAgIE5VTEwgKQ0KCQkJcmV0dXJuKCAtMSApOw0KCQlzYi0+
c2JfYmVyLmJlcl9wdHIgPSBzYi0+c2JfYmVyLmJlcl9idWY7DQoJCXNiLT5z
Yl9iZXIuYmVyX2VuZCA9IHNiLT5zYl9iZXIuYmVyX2J1ZjsNCgl9DQoNCglp
ZiAoIHNiLT5zYl9uYWRkciA+IDAgKSB7DQojaWZkZWYgQ0xEQVANCgkJcmMg
PSB1ZHBfcmVhZChzYiwgc2ItPnNiX2Jlci5iZXJfYnVmLCBSRUFEQlVGU0la
LCBhZGRybGVuICk7DQojaWZkZWYgTERBUF9ERUJVRw0KCQlpZiAoIGxiZXJf
ZGVidWcgKSB7DQoJCQlmcHJpbnRmKCBzdGRlcnIsICJiZXJfZmlsYnVmIHVk
cF9yZWFkICVkIGJ5dGVzXG4iLA0KCQkJCXJjICk7DQoJCQlpZiAoIGxiZXJf
ZGVidWcgPiAxICYmIHJjID4gMCApDQoJCQkJbGJlcl9icHJpbnQoIHNiLT5z
Yl9iZXIuYmVyX2J1ZiwgcmMgKTsNCgkJfQ0KI2VuZGlmIC8qIExEQVBfREVC
VUcgKi8NCiNlbHNlIC8qIENMREFQICovDQoJCXJjID0gLTE7DQojZW5kaWYg
LyogQ0xEQVAgKi8NCgl9IGVsc2Ugew0KCQlyYyA9IHJlYWQoIHNiLT5zYl9z
ZCwgc2ItPnNiX2Jlci5iZXJfYnVmLA0KCQkgICAgKChzYi0+c2Jfb3B0aW9u
cyAmIExCRVJfTk9fUkVBRF9BSEVBRCkgJiYNCgkJICAgIChsZW4gPCBSRUFE
QlVGU0laKSkgPw0KCQkgICAgbGVuIDogUkVBREJVRlNJWiApOw0KCX0NCg0K
CWlmICggcmMgPiAwICkgew0KCQlzYi0+c2JfYmVyLmJlcl9wdHIgPSBzYi0+
c2JfYmVyLmJlcl9idWYgKyAxOw0KCQlzYi0+c2JfYmVyLmJlcl9lbmQgPSBz
Yi0+c2JfYmVyLmJlcl9idWYgKyByYzsNCgkJcmV0dXJuKCAodW5zaWduZWQg
Y2hhcikqc2ItPnNiX2Jlci5iZXJfYnVmICk7DQoJfQ0KDQoJcmV0dXJuKCAt
MSApOw0KfQ0KDQoNCmxvbmcNCkJlclJlYWQoIFNvY2tidWYgKnNiLCBjaGFy
ICpidWYsIGxvbmcgbGVuICkNCnsNCglpbnQJYzsNCglsb25nCW5yZWFkID0g
MDsNCgkvKmJtcyovDQoJcHJpbnRmKCJFbnRlcmVkIEJlcnJlYWQgd2l0aCBM
ZW4gPSAlbGRcbiIsbGVuKTsNCgl3aGlsZSAoIGxlbiA+IDAgKSB7DQoJCWlm
ICggKGMgPSBiZXJnZXRjKCBzYiwgbGVuICkpIDwgMCApIHsNCgkJCWlmICgg
bnJlYWQgPiAwICkNCgkJCQlicmVhazsNCgkJCXJldHVybiggYyApOw0KCQl9
DQoJCS8qYm1zKi8NCnByaW50ZigiVmFsdWUgb2YgYnVmLCpidWYgaW4gQmVy
UmVhZCA9ICVkICAgICwlY1xuIik7DQoJCSpidWYgPSBjOw0KCQlidWYrKzsN
CgkJbnJlYWQrKzsNCgkJbGVuLS07DQoJfQ0KCS8qYm1zKi8NCglwcmludGYo
IlJldHVybmluZyBmcm9tIGJlcnJlYWQgd2l0aCBucmVhZCA9ICVsZFxuIixu
cmVhZCk7DQoNCglyZXR1cm4oIG5yZWFkICk7DQp9DQoNCg0KbG9uZw0KYmVy
X3JlYWQoIEJlckVsZW1lbnQgKmJlciwgY2hhciAqYnVmLCB1bnNpZ25lZCBs
b25nIGxlbiApDQp7DQoJbG9uZwlhY3R1YWxsZW4sIG5sZWZ0Ow0KDQoJbmxl
ZnQgPSBiZXItPmJlcl9lbmQgLSBiZXItPmJlcl9wdHI7DQoJYWN0dWFsbGVu
ID0gbmxlZnQgPCBsZW4gPyBubGVmdCA6IGxlbjsNCg0KCVNBRkVNRU1DUFko
IGJ1ZiwgYmVyLT5iZXJfcHRyLCAoc2l6ZV90KWFjdHVhbGxlbiApOw0KDQoJ
YmVyLT5iZXJfcHRyICs9IGFjdHVhbGxlbjsNCg0KCXJldHVybiggYWN0dWFs
bGVuICk7DQp9DQoNCmxvbmcNCmJlcl93cml0ZSggQmVyRWxlbWVudCAqYmVy
LCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbGVuLCBpbnQgbm9zb3MgKQ0K
ew0KCWlmICggbm9zb3MgfHwgYmVyLT5iZXJfc29zID09IE5VTEwgKSB7DQoJ
CWlmICggYmVyLT5iZXJfcHRyICsgbGVuID4gYmVyLT5iZXJfZW5kICkgew0K
CQkJaWYgKCBiZXJfcmVhbGxvYyggYmVyLCBsZW4gKSAhPSAwICkNCgkJCQly
ZXR1cm4oIC0xICk7DQoJCX0NCgkJU0FGRU1FTUNQWSggYmVyLT5iZXJfcHRy
LCBidWYsIChzaXplX3QpbGVuICk7DQoJCWJlci0+YmVyX3B0ciArPSBsZW47
DQoJCXJldHVybiggbGVuICk7DQoJfSBlbHNlIHsNCgkJaWYgKCBiZXItPmJl
cl9zb3MtPnNvc19wdHIgKyBsZW4gPiBiZXItPmJlcl9lbmQgKSB7DQoJCQlp
ZiAoIGJlcl9yZWFsbG9jKCBiZXIsIGxlbiApICE9IDAgKQ0KCQkJCXJldHVy
biggLTEgKTsNCgkJfQ0KCQlTQUZFTUVNQ1BZKCBiZXItPmJlcl9zb3MtPnNv
c19wdHIsIGJ1ZiwgKHNpemVfdClsZW4gKTsNCgkJYmVyLT5iZXJfc29zLT5z
b3NfcHRyICs9IGxlbjsNCgkJYmVyLT5iZXJfc29zLT5zb3NfY2xlbiArPSBs
ZW47DQoJCXJldHVybiggbGVuICk7DQoJfQ0KfQ0KDQpzdGF0aWMgaW50DQpi
ZXJfcmVhbGxvYyggQmVyRWxlbWVudCAqYmVyLCB1bnNpZ25lZCBsb25nIGxl
biApDQp7DQoJdW5zaWduZWQgbG9uZwluZWVkLCBoYXZlLCB0b3RhbDsNCglT
ZXFvcnNldAkqczsNCglsb25nCQlvZmY7DQoJY2hhcgkJKm9sZGJ1ZjsNCg0K
CWhhdmUgPSAoYmVyLT5iZXJfZW5kIC0gYmVyLT5iZXJfYnVmKSAvIEVYQlVG
U0laOw0KCW5lZWQgPSAobGVuIDwgRVhCVUZTSVogPyAxIDogKGxlbiArIChF
WEJVRlNJWiAtIDEpKSAvIEVYQlVGU0laKTsNCgl0b3RhbCA9IGhhdmUgKiBF
WEJVRlNJWiArIG5lZWQgKiBFWEJVRlNJWjsNCg0KCW9sZGJ1ZiA9IGJlci0+
YmVyX2J1ZjsNCg0KCWlmICggYmVyLT5iZXJfYnVmID09IE5VTEwgKSB7DQoJ
CWlmICggKGJlci0+YmVyX2J1ZiA9IChjaGFyICopIG1hbGxvYyggKHNpemVf
dCl0b3RhbCApKSA9PSBOVUxMICkNCgkJCXJldHVybiggLTEgKTsNCgl9IGVs
c2UgaWYgKCAoYmVyLT5iZXJfYnVmID0gKGNoYXIgKikgcmVhbGxvYyggYmVy
LT5iZXJfYnVmLA0KCSAgICAoc2l6ZV90KXRvdGFsICkpID09IE5VTEwgKQ0K
CQlyZXR1cm4oIC0xICk7DQoNCgliZXItPmJlcl9lbmQgPSBiZXItPmJlcl9i
dWYgKyB0b3RhbDsNCg0KCS8qDQoJICogSWYgdGhlIHN0aW5raW5nIHRoaW5n
IHdhcyBtb3ZlZCwgd2UgbmVlZCB0byBnbyB0aHJvdWdoIGFuZA0KCSAqIHJl
c2V0IGFsbCB0aGUgc29zIGFuZCBiZXIgcG9pbnRlcnMuICBPZmZzZXRzIHdv
dWxkJ3ZlIGJlZW4NCgkgKiBhIGJldHRlciBpZGVhLi4uIG9oIHdlbGwuDQoJ
ICovDQoNCglpZiAoIGJlci0+YmVyX2J1ZiAhPSBvbGRidWYgKSB7DQoJCWJl
ci0+YmVyX3B0ciA9IGJlci0+YmVyX2J1ZiArIChiZXItPmJlcl9wdHIgLSBv
bGRidWYpOw0KDQoJCWZvciAoIHMgPSBiZXItPmJlcl9zb3M7IHMgIT0gTlVM
TFNFUU9SU0VUOyBzID0gcy0+c29zX25leHQgKSB7DQoJCQlvZmYgPSBzLT5z
b3NfZmlyc3QgLSBvbGRidWY7DQoJCQlzLT5zb3NfZmlyc3QgPSBiZXItPmJl
cl9idWYgKyBvZmY7DQoNCgkJCW9mZiA9IHMtPnNvc19wdHIgLSBvbGRidWY7
DQoJCQlzLT5zb3NfcHRyID0gYmVyLT5iZXJfYnVmICsgb2ZmOw0KCQl9DQoJ
fQ0KDQoJcmV0dXJuKCAwICk7DQp9DQoNCnZvaWQNCmJlcl9mcmVlKCBCZXJF
bGVtZW50ICpiZXIsIGludCBmcmVlYnVmICkNCnsNCglpZiAoIGZyZWVidWYg
JiYgYmVyLT5iZXJfYnVmICE9IE5VTEwgKQ0KCQlmcmVlKCBiZXItPmJlcl9i
dWYgKTsNCglmcmVlKCAoY2hhciAqKSBiZXIgKTsNCn0NCg0KaW50DQpiZXJf
Zmx1c2goIFNvY2tidWYgKnNiLCBCZXJFbGVtZW50ICpiZXIsIGludCBmcmVl
aXQgKQ0Kew0KCWludAlyYzsNCglsb25nCW53cml0dGVuLCB0b3dyaXRlOw0K
DQoJaWYgKCBiZXItPmJlcl9yd3B0ciA9PSBOVUxMICkgew0KCQliZXItPmJl
cl9yd3B0ciA9IGJlci0+YmVyX2J1ZjsNCgl9DQoJdG93cml0ZSA9IGJlci0+
YmVyX3B0ciAtIGJlci0+YmVyX3J3cHRyOw0KDQojaWZkZWYgTERBUF9ERUJV
Rw0KCWlmICggbGJlcl9kZWJ1ZyApIHsNCgkJZnByaW50Ziggc3RkZXJyLCAi
YmVyX2ZsdXNoOiAlZCBieXRlcyB0byBzZCAlZCVzXG4iLCB0b3dyaXRlLA0K
CQkgICAgc2ItPnNiX3NkLCBiZXItPmJlcl9yd3B0ciAhPSBiZXItPmJlcl9i
dWYgPyAiIChyZS1mbHVzaCkiDQoJCSAgICA6ICIiICk7DQoJCWlmICggbGJl
cl9kZWJ1ZyA+IDEgKQ0KCQkJbGJlcl9icHJpbnQoIGJlci0+YmVyX3J3cHRy
LCB0b3dyaXRlICk7DQoJfQ0KI2VuZGlmDQojaWYgIWRlZmluZWQoTUFDT1Mp
ICYmICFkZWZpbmVkKERPUykNCglpZiAoIHNiLT5zYl9vcHRpb25zICYgKExC
RVJfVE9fRklMRSB8IExCRVJfVE9fRklMRV9PTkxZKSApIHsNCgkJcmMgPSB3
cml0ZSggc2ItPnNiX2ZkLCBiZXItPmJlcl9idWYsIHRvd3JpdGUgKTsNCgkJ
aWYgKCBzYi0+c2Jfb3B0aW9ucyAmIExCRVJfVE9fRklMRV9PTkxZICkgew0K
CQkJcmV0dXJuKCByYyApOw0KCQl9DQoJfQ0KI2VuZGlmDQoNCglud3JpdHRl
biA9IDA7DQoJZG8gew0KCQlpZiAoc2ItPnNiX25hZGRyID4gMCkgew0KI2lm
ZGVmIENMREFQDQoJCQlyYyA9IHVkcF93cml0ZSggc2IsIGJlci0+YmVyX2J1
ZiArIG53cml0dGVuLA0KCQkJICAgIChzaXplX3QpdG93cml0ZSApOw0KI2Vs
c2UgLyogQ0xEQVAgKi8NCgkJCXJjID0gLTE7DQojZW5kaWYgLyogQ0xEQVAg
Ki8NCgkJCWlmICggcmMgPD0gMCApDQoJCQkJcmV0dXJuKCAtMSApOw0KCQkJ
LyogZmFrZSBlcnJvciBpZiB3cml0ZSB3YXMgbm90IGF0b21pYyAqLw0KCQkJ
aWYgKHJjIDwgdG93cml0ZSkgew0KI2lmICFkZWZpbmVkKCBNQUNPUyApICYm
ICFkZWZpbmVkKCBET1MgKQ0KCQkJICAgIGVycm5vID0gRU1TR1NJWkU7DQoj
ZW5kaWYNCgkJCSAgICByZXR1cm4oIC0xICk7DQoJCQl9DQoJCX0gZWxzZSB7
DQoJCQlpZiAoIChyYyA9IEJlcldyaXRlKCBzYiwgYmVyLT5iZXJfcndwdHIs
DQoJCQkgICAgKHNpemVfdCkgdG93cml0ZSApKSA8PSAwICkgew0KCQkJCXJl
dHVybiggLTEgKTsNCgkJCX0NCgkJfQ0KCQl0b3dyaXRlIC09IHJjOw0KCQlu
d3JpdHRlbiArPSByYzsNCgkJYmVyLT5iZXJfcndwdHIgKz0gcmM7DQoJfSB3
aGlsZSAoIHRvd3JpdGUgPiAwICk7DQoNCglpZiAoIGZyZWVpdCApDQoJCWJl
cl9mcmVlKCBiZXIsIDEgKTsNCg0KCXJldHVybiggMCApOw0KfQ0KDQpCZXJF
bGVtZW50ICoNCmJlcl9hbGxvY190KCBpbnQgb3B0aW9ucyApDQp7DQoJQmVy
RWxlbWVudAkqYmVyOw0KDQoJaWYgKCAoYmVyID0gKEJlckVsZW1lbnQgKikg
Y2FsbG9jKCAxLCBzaXplb2YoQmVyRWxlbWVudCkgKSkgPT0gTlVMTEJFUiAp
DQoJCXJldHVybiggTlVMTEJFUiApOw0KCWJlci0+YmVyX3RhZyA9IExCRVJf
REVGQVVMVDsNCgliZXItPmJlcl9vcHRpb25zID0gb3B0aW9uczsNCg0KCXJl
dHVybiggYmVyICk7DQp9DQoNCkJlckVsZW1lbnQgKg0KYmVyX2FsbG9jKCkN
CnsNCglyZXR1cm4oIGJlcl9hbGxvY190KCAwICkgKTsNCn0NCg0KQmVyRWxl
bWVudCAqDQpkZXJfYWxsb2MoKQ0Kew0KCXJldHVybiggYmVyX2FsbG9jX3Qo
IExCRVJfVVNFX0RFUiApICk7DQp9DQoNCkJlckVsZW1lbnQgKg0KYmVyX2R1
cCggQmVyRWxlbWVudCAqYmVyICkNCnsNCglCZXJFbGVtZW50CSpuZXc7DQoN
CglpZiAoIChuZXcgPSBiZXJfYWxsb2MoKSkgPT0gTlVMTEJFUiApDQoJCXJl
dHVybiggTlVMTEJFUiApOw0KDQoJKm5ldyA9ICpiZXI7DQoNCglyZXR1cm4o
IG5ldyApOw0KfQ0KDQoNCnZvaWQNCmJlcl9pbml0KCBCZXJFbGVtZW50ICpi
ZXIsIGludCBvcHRpb25zICkNCnsNCgkodm9pZCkgbWVtc2V0KCAoY2hhciAq
KWJlciwgJ1wwJywgc2l6ZW9mKCBCZXJFbGVtZW50ICkpOw0KCWJlci0+YmVy
X3RhZyA9IExCRVJfREVGQVVMVDsNCgliZXItPmJlcl9vcHRpb25zID0gb3B0
aW9uczsNCn0NCg0KDQp2b2lkDQpiZXJfcmVzZXQoIEJlckVsZW1lbnQgKmJl
ciwgaW50IHdhc193cml0aW5nICkNCnsNCglpZiAoIHdhc193cml0aW5nICkg
ew0KCQliZXItPmJlcl9lbmQgPSBiZXItPmJlcl9wdHI7DQoJCWJlci0+YmVy
X3B0ciA9IGJlci0+YmVyX2J1ZjsNCgl9IGVsc2Ugew0KCQliZXItPmJlcl9w
dHIgPSBiZXItPmJlcl9lbmQ7DQoJfQ0KDQoJYmVyLT5iZXJfcndwdHIgPSBO
VUxMOw0KfQ0KDQoNCiNpZmRlZiBMREFQX0RFQlVHDQoNCnZvaWQNCmJlcl9k
dW1wKCBCZXJFbGVtZW50ICpiZXIsIGludCBpbm91dCApDQp7DQoJZnByaW50
Ziggc3RkZXJyLCAiYmVyX2R1bXA6IGJ1ZiAweCVseCwgcHRyIDB4JWx4LCBl
bmQgMHglbHhcbiIsDQoJICAgIGJlci0+YmVyX2J1ZiwgYmVyLT5iZXJfcHRy
LCBiZXItPmJlcl9lbmQgKTsNCglpZiAoIGlub3V0ID09IDEgKSB7DQoJCWZw
cmludGYoIHN0ZGVyciwgIiAgICAgICAgICBjdXJyZW50IGxlbiAlbGQsIGNv
bnRlbnRzOlxuIiwNCgkJICAgIGJlci0+YmVyX2VuZCAtIGJlci0+YmVyX3B0
ciApOw0KCQlsYmVyX2JwcmludCggYmVyLT5iZXJfcHRyLCBiZXItPmJlcl9l
bmQgLSBiZXItPmJlcl9wdHIgKTsNCgl9IGVsc2Ugew0KCQlmcHJpbnRmKCBz
dGRlcnIsICIgICAgICAgICAgY3VycmVudCBsZW4gJWxkLCBjb250ZW50czpc
biIsDQoJCSAgICBiZXItPmJlcl9wdHIgLSBiZXItPmJlcl9idWYgKTsNCgkJ
bGJlcl9icHJpbnQoIGJlci0+YmVyX2J1ZiwgYmVyLT5iZXJfcHRyIC0gYmVy
LT5iZXJfYnVmICk7DQoJfQ0KfQ0KDQp2b2lkDQpiZXJfc29zX2R1bXAoIFNl
cW9yc2V0ICpzb3MgKQ0Kew0KCWZwcmludGYoIHN0ZGVyciwgIioqKiBzb3Mg
ZHVtcCAqKipcbiIgKTsNCgl3aGlsZSAoIHNvcyAhPSBOVUxMU0VRT1JTRVQg
KSB7DQoJCWZwcmludGYoIHN0ZGVyciwgImJlcl9zb3NfZHVtcDogY2xlbiAl
bGQgZmlyc3QgMHglbHggcHRyIDB4JWx4XG4iLA0KCQkgICAgc29zLT5zb3Nf
Y2xlbiwgc29zLT5zb3NfZmlyc3QsIHNvcy0+c29zX3B0ciApOw0KCQlmcHJp
bnRmKCBzdGRlcnIsICIgICAgICAgICAgICAgIGN1cnJlbnQgbGVuICVsZCBj
b250ZW50czpcbiIsDQoJCSAgICBzb3MtPnNvc19wdHIgLSBzb3MtPnNvc19m
aXJzdCApOw0KCQlsYmVyX2JwcmludCggc29zLT5zb3NfZmlyc3QsIHNvcy0+
c29zX3B0ciAtIHNvcy0+c29zX2ZpcnN0ICk7DQoNCgkJc29zID0gc29zLT5z
b3NfbmV4dDsNCgl9DQoJZnByaW50Ziggc3RkZXJyLCAiKioqIGVuZCBkdW1w
ICoqKlxuIiApOw0KfQ0KDQojZW5kaWYNCg0KLyogcmV0dXJuIHRoZSB0YWcg
LSBMQkVSX0RFRkFVTFQgcmV0dXJuZWQgbWVhbnMgdHJvdWJsZSAqLw0Kc3Rh
dGljIHVuc2lnbmVkIGxvbmcNCmdldF90YWcoIFNvY2tidWYgKnNiICkNCnsN
Cgl1bnNpZ25lZCBjaGFyCXhieXRlOw0KCXVuc2lnbmVkIGxvbmcJdGFnOw0K
CWNoYXIJCSp0YWdwOw0KCWludAkJaTsNCg0KCWlmICggQmVyUmVhZCggc2Is
IChjaGFyICopICZ4Ynl0ZSwgMSApICE9IDEgKQ0KCQlyZXR1cm4oIExCRVJf
REVGQVVMVCApOw0KDQoJaWYgKCAoeGJ5dGUgJiBMQkVSX0JJR19UQUdfTUFT
SykgIT0gTEJFUl9CSUdfVEFHX01BU0sgKQ0KCQlyZXR1cm4oICh1bnNpZ25l
ZCBsb25nKSB4Ynl0ZSApOw0KDQoJdGFncCA9IChjaGFyICopICZ0YWc7DQoJ
dGFncFswXSA9IHhieXRlOw0KCWZvciAoIGkgPSAxOyBpIDwgc2l6ZW9mKGxv
bmcpOyBpKysgKSB7DQoJCWlmICggQmVyUmVhZCggc2IsIChjaGFyICopICZ4
Ynl0ZSwgMSApICE9IDEgKQ0KCQkJcmV0dXJuKCBMQkVSX0RFRkFVTFQgKTsN
Cg0KCQl0YWdwW2ldID0geGJ5dGU7DQoNCgkJaWYgKCAhICh4Ynl0ZSAmIExC
RVJfTU9SRV9UQUdfTUFTSykgKQ0KCQkJYnJlYWs7DQoJfQ0KDQoJLyogdGFn
IHRvbyBiaWchICovDQoJaWYgKCBpID09IHNpemVvZihsb25nKSApDQoJCXJl
dHVybiggTEJFUl9ERUZBVUxUICk7DQoNCgkvKiB3YW50IGxlYWRpbmcsIG5v
dCB0cmFpbGluZyAwJ3MgKi8NCglyZXR1cm4oIHRhZyA+PiAoc2l6ZW9mKGxv
bmcpIC0gaSAtIDEpICk7DQp9DQoNCnVuc2lnbmVkIGxvbmcNCmJlcl9nZXRf
bmV4dCggU29ja2J1ZiAqc2IsIHVuc2lnbmVkIGxvbmcgKmxlbiwgQmVyRWxl
bWVudCAqYmVyICkNCnsNCgl1bnNpZ25lZCBsb25nCXRhZzsNCgl1bnNpZ25l
ZCBjaGFyCWxjOw0KCWludAkJcmMsIHRvcmVhZCwgbm9jdGV0cywgZGlmZjsN
Cgl1bnNpZ25lZCBsb25nCW5ldGxlbjsNCg0KI2lmZGVmIExEQVBfREVCVUcN
CglpZiAoIGxiZXJfZGVidWcgKQ0KCQlmcHJpbnRmKCBzdGRlcnIsICJiZXJf
Z2V0X25leHRcbiIgKTsNCiNlbmRpZg0KDQoJLyoNCgkgKiBBbnkgYmVyIGVs
ZW1lbnQgbG9va3MgbGlrZSB0aGlzOiB0YWcgbGVuZ3RoIGNvbnRlbnRzLg0K
CSAqIEFzc3VtaW5nIGV2ZXJ5dGhpbmcncyBvaywgd2UgcmV0dXJuIHRoZSB0
YWcgYnl0ZSAod2UNCgkgKiBjYW4gYXNzdW1lIGEgc2luZ2xlIGJ5dGUpLCBy
ZXR1cm4gdGhlIGxlbmd0aCBpbiBsZW4sDQoJICogYW5kIHRoZSByZXN0IG9m
IHRoZSB1bmRlY29kZWQgZWxlbWVudCBpbiBidWYuDQoJICoNCgkgKiBBc3N1
bXB0aW9uczoNCgkgKgkxKSBzbWFsbCB0YWdzIChsZXNzIHRoYW4gMTI4KQ0K
CSAqCTIpIGRlZmluaXRlIGxlbmd0aHMNCgkgKgkzKSBwcmltaXRpdmUgZW5j
b2RpbmdzIHVzZWQgd2hlbmV2ZXIgcG9zc2libGUNCgkgKi8NCg0KCS8qDQoJ
ICogZmlyc3QgdGltZSB0aHJvdWdoIC0gbWFsbG9jIHRoZSBidWZmZXIsIHNl
dCB1cCBwdHJzLCBhbmQNCgkgKiByZWFkIHRoZSB0YWcgYW5kIHRoZSBsZW5n
dGggYW5kIGFzIG11Y2ggb2YgdGhlIHJlc3QgYXMgd2UgY2FuDQoJICovDQoN
CglpZiAoIGJlci0+YmVyX3J3cHRyID09IE5VTEwgKSB7DQoJCS8qDQoJCSAq
IEZpcnN0LCB3ZSByZWFkIHRoZSB0YWcuDQoJCSAqLw0KDQoJCWlmICggKHRh
ZyA9IGdldF90YWcoIHNiICkpID09IExCRVJfREVGQVVMVCApIHsNCgkJLypi
bXMqLw0KCQlwcmludGYoIjEgZmFpbGVkXG4iKTsNCgkJCXJldHVybiggTEJF
Ul9ERUZBVUxUICk7DQoJCX0NCgkJYmVyLT5iZXJfdGFnID0gdGFnOw0KDQoJ
CS8qDQoJCSAqIE5leHQsIHJlYWQgdGhlIGxlbmd0aC4gIFRoZSBmaXJzdCBi
eXRlIGNvbnRhaW5zIHRoZSBsZW5ndGgNCgkJICogb2YgdGhlIGxlbmd0aC4g
IElmIGJpdCA4IGlzIHNldCwgdGhlIGxlbmd0aCBpcyB0aGUgbG9uZw0KCQkg
KiBmb3JtLCBvdGhlcndpc2UgaXQncyB0aGUgc2hvcnQgZm9ybS4gIFdlIGRv
bid0IGFsbG93IGENCgkJICogbGVuZ3RoIHRoYXQncyBncmVhdGVyIHRoYW4g
d2hhdCB3ZSBjYW4gaG9sZCBpbiBhbiB1bnNpZ25lZA0KCQkgKiBsb25nLg0K
CQkgKi8NCg0KCQkqbGVuID0gbmV0bGVuID0gMDsNCgkJaWYgKCBCZXJSZWFk
KCBzYiwgKGNoYXIgKikgJmxjLCAxICkgIT0gMSApIHsNCgkJDQoJCS8qYm1z
Ki8NCgkJcHJpbnRmKCIyIGZhaWxlZFxuIik7DQoJCQkNCgkJcmV0dXJuKCBM
QkVSX0RFRkFVTFQgKTsNCgkJfQ0KCQkvKmJtcyovDQoJCXByaW50ZigiTGMg
PSAlZFxuIixsYyk7DQoJCWlmICggbGMgJiAweDgwICkgew0KCQkJbm9jdGV0
cyA9IChsYyAmIDB4N2YpOw0KCQkvKmJtcyovDQoJCXByaW50ZigiTm9jdGV0
cyA9ICVkXG4iLG5vY3RldHMpOw0KCQkJaWYgKCBub2N0ZXRzID4gc2l6ZW9m
KHVuc2lnbmVkIGxvbmcpICkNCgkJCQlyZXR1cm4oIExCRVJfREVGQVVMVCAp
Ow0KCQkJZGlmZiA9IHNpemVvZih1bnNpZ25lZCBsb25nKSAtIG5vY3RldHM7
DQoJCQkvKmJtcyovDQoJCQlwcmludGYoIkRJRkYgPSAlZFxuIixkaWZmKTsN
CgkJCS8qYm1zKi8NCgkJCXByaW50ZigiVmFsdWUgb2YgbmV0bGVuID0gJWxk
IGFuZCBhZGRyZXNzID0gJWRcbiIsbmV0bGVuLChjaGFyICopJm5ldGxlbik7
DQoJCQlpZiAoIEJlclJlYWQoIHNiLCAoY2hhciAqKSAmbmV0bGVuK2RpZmYg
LCBub2N0ZXRzICkgIT0NCgkJCSAgICBub2N0ZXRzICkgew0KCQkvKmJtcyov
DQoJCXByaW50ZigiNCBmYWlsZWRcbiIpOw0KCQkJCXJldHVybiggTEJFUl9E
RUZBVUxUICk7DQoJCQl9DQoJCQkvKmJtcyovDQoJCQlwcmludGYoIlZhbHVl
IG9mIG5ldGxlbiA9ICVsZCBhbmQgYWRkcmVzcyA9ICVkXG4iLG5ldGxlbiwm
bmV0bGVuKTsNCgkJCSpsZW4gPSBMQkVSX05UT0hMKCBuZXRsZW4gKTsNCgkJ
fSBlbHNlIHsvKmJtcyovDQoJCQlwcmludGYoIkVudGVyZWQgZWxzZSBwYXJ0
XG4iKTsNCgkJCSpsZW4gPSBsYzsNCgkJfQ0KCQliZXItPmJlcl9sZW4gPSAq
bGVuOw0KDQoJCS8qDQoJCSAqIEZpbmFsbHksIG1hbGxvYyBhIGJ1ZmZlciBm
b3IgdGhlIGNvbnRlbnRzIGFuZCByZWFkIGl0IGluLg0KCQkgKiBJdCdzIHRo
aXMgYnVmZmVyIHRoYXQncyBwYXNzZWQgdG8gYWxsIHRoZSBvdGhlciBiZXIg
ZGVjb2RpbmcNCgkJICogcm91dGluZXMuDQoJCSAqLw0KDQojaWZkZWYgRE9T
DQoJCWlmICggKmxlbiA+IDY1NTM1ICkgewkvKiBET1MgY2FuJ3QgYWxsb2Nh
dGUgPiA2NEsgKi8NCgkJICAgIHJldHVybiggTEJFUl9ERUZBVUxUICk7DQoJ
CX0NCiNlbmRpZiAvKiBET1MgKi8NCg0KCQlpZiAoICggc2ItPnNiX29wdGlv
bnMgJiBMQkVSX01BWF9JTkNPTUlOR19TSVpFICkgJiYNCgkJICAgICpsZW4g
PiBzYi0+c2JfbWF4X2luY29taW5nICkgew0KCQkvKmJtcyovDQoJCXByaW50
ZigiNSBmYWlsZWRcbiIpOw0KCQlyZXR1cm4oIExCRVJfREVGQVVMVCApOw0K
CQl9DQoJCS8qYm1zKi8NCgkJcHJpbnRmKCJWYWx1ZSBvZiBsZW4gPSAlbGRc
biIsKCpsZW4pKTsNCgkJDQoJCWlmICggKGJlci0+YmVyX2J1ZiA9IChjaGFy
ICopIG1hbGxvYyggKHNpemVfdCkoKmxlbikgKSkgPT0gTlVMTCApIHsNCgkJ
CXsNCgkJCS8qYm1zKi8NCgkJCXByaW50ZigiNiBmYWlsZWRcbiIpOw0KCQkJ
cmV0dXJuKCBMQkVSX0RFRkFVTFQgKTsNCgkJfX0NCgkJYmVyLT5iZXJfcHRy
ID0gYmVyLT5iZXJfYnVmOw0KCQliZXItPmJlcl9lbmQgPSBiZXItPmJlcl9i
dWYgKyAqbGVuOw0KCQliZXItPmJlcl9yd3B0ciA9IGJlci0+YmVyX2J1ZjsN
Cgl9DQoNCgl0b3JlYWQgPSBiZXItPmJlcl9lbmQgLSBiZXItPmJlcl9yd3B0
cjsNCglkbyB7DQoJCWlmICggKHJjID0gQmVyUmVhZCggc2IsIGJlci0+YmVy
X3J3cHRyLCB0b3JlYWQgKSkgPD0gMCApIHsNCgkJLypibXMqLw0KCQlwcmlu
dGYoIjcgZmFpbGVkXG4iKTsNCgkJcmV0dXJuKCBMQkVSX0RFRkFVTFQgKTsN
CgkJfQ0KDQoJLypibXMqLw0KCXByaW50ZigiVmFsdWUgb2YgdG9yZWFkID0g
JWxkXG4iLHRvcmVhZCk7DQoJCXRvcmVhZCAtPSByYzsNCgkJYmVyLT5iZXJf
cndwdHIgKz0gcmM7DQoJfSB3aGlsZSAoIHRvcmVhZCA+IDAgKTsNCgkvKmJt
cyovDQoJcHJpbnRmKCJPdXQgb2Ygd2hpbGUgbG9vcFxuIik7DQojaWZkZWYg
TERBUF9ERUJVRw0KCWlmICggbGJlcl9kZWJ1ZyApIHsNCgkJZnByaW50Zigg
c3RkZXJyLCAiYmVyX2dldF9uZXh0OiB0YWcgMHgleCBsZW4gJWxkIGNvbnRl
bnRzOlxuIiwNCgkJICAgIHRhZywgYmVyLT5iZXJfbGVuICk7DQoJCWlmICgg
bGJlcl9kZWJ1ZyA+IDEgKQ0KCQkJYmVyX2R1bXAoIGJlciwgMSApOw0KCX0N
CiNlbmRpZg0KCS8qYm1zKi8NCglwcmludGYoIk91dCBvZiBiZXJfZHVtcFxu
Iik7DQoNCgkqbGVuID0gYmVyLT5iZXJfbGVuOw0KCWJlci0+YmVyX3J3cHRy
ID0gTlVMTDsNCglyZXR1cm4oIGJlci0+YmVyX3RhZyApOw0KfQ0KDQoNCiNp
Zm5kZWYgTk9fVVNFUklOVEVSRkFDRQ0KLyoNCiAqIFByaW50IGFyYml0cmFy
eSBzdHVmZiwgZm9yIGRlYnVnZ2luZy4NCiAqLw0KDQojZGVmaW5lIEJQTEVO
CTQ4DQoNCnZvaWQNCmxiZXJfYnByaW50KCBjaGFyICpkYXRhLCBpbnQgbGVu
ICkNCnsNCiAgICBzdGF0aWMgY2hhcgloZXhkaWdbXSA9ICIwMTIzNDU2Nzg5
YWJjZGVmIjsNCiAgICBjaGFyCW91dFsgQlBMRU4gXTsNCiAgICBpbnQJCWkg
PSAwOw0KDQogICAgbWVtc2V0KCBvdXQsIDAsIEJQTEVOICk7DQogICAgZm9y
ICggOzsgKSB7DQoJaWYgKCBsZW4gPCAxICkgew0KCSAgICBmcHJpbnRmKCBz
dGRlcnIsICJcdCVzXG4iLCAoIGkgPT0gMCApID8gIihlbmQpIiA6IG91dCAp
Ow0KCSAgICBicmVhazsNCgl9DQoNCiNpZm5kZWYgSEVYDQoJaWYgKCBpc2dy
YXBoKCAodW5zaWduZWQgY2hhcikqZGF0YSApKSB7DQoJICAgIG91dFsgaSBd
ID0gJyAnOw0KCSAgICBvdXRbIGkrMSBdID0gKmRhdGE7DQoJfSBlbHNlIHsN
CiNlbmRpZg0KCSAgICBvdXRbIGkgXSA9IGhleGRpZ1sgKCAqZGF0YSAmIDB4
ZjAgKSA+PiA0IF07DQoJICAgIG91dFsgaSsxIF0gPSBoZXhkaWdbICpkYXRh
ICYgMHgwZiBdOw0KI2lmbmRlZiBIRVgNCgl9DQojZW5kaWYNCglpICs9IDI7
DQoJbGVuLS07DQoJZGF0YSsrOw0KDQoJaWYgKCBpID4gQlBMRU4gLSAyICkg
ew0KCSAgICBmcHJpbnRmKCBzdGRlcnIsICJcdCVzXG4iLCBvdXQgKTsNCgkg
ICAgbWVtc2V0KCBvdXQsIDAsIEJQTEVOICk7DQoJICAgIGkgPSAwOw0KCSAg
ICBjb250aW51ZTsNCgl9DQoJb3V0WyBpKysgXSA9ICcgJzsNCiAgICB9DQp9
DQojZW5kaWYgLyogTk9fVVNFUklOVEVSRkFDRSAqLw0K
--1430466530-1714609181-831550350=:16372--