[tpop3d-discuss] Patch to prevent brute force password cracking

Yann GROSSEL olrick at sunnydale.phear.org
Wed, 16 Oct 2002 13:35:16 +0200


This is a multi-part message in MIME format.

--Multipart_Wed__16_Oct_2002_13:35:16_+0200_08255148
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit


Hi,

I'm looking for a new pop server to replace our aging qpopper,
and I found that tpop3d seems to be really nice. However there
are a few things I'd like to see in the pop daemon we'll use
that tpop3d lacks for the moment :

- delayed error responses (at least during authentification), to
prevent an attacker from doing brute force password cracking. That
is, once an user has attempted a wrong APOP or USER/PASS command,
the ERR answer doesn't come immediately, but only after a few seconds.
I've done a quick (attached) patch that do the thing. I'd like to
know what do you think about such a feature, and about my implementation ?

- multiple mysql servers (we'll be using a mysql cluster). I've
seen that this feature has been added to the TODO file in CVS and
I'm willing to implement it. I've already done a small patch that
seem to work but it still has a few problems. I'll keep working on
it.

Thanks in advance for your feedback :)

Yann GROSSEL

--Multipart_Wed__16_Oct_2002_13:35:16_+0200_08255148
Content-Type: application/octet-stream;
 name="tpop3d-CVS-delayed-responses.patch"
Content-Disposition: attachment;
 filename="tpop3d-CVS-delayed-responses.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtcnVOIHRwb3AzZC1DVlMtb3JpZy9jb25uZWN0aW9uLmMgdHBvcDNkLUNWUy9jb25uZWN0
aW9uLmMKLS0tIHRwb3AzZC1DVlMtb3JpZy9jb25uZWN0aW9uLmMJMjAwMi0wOC0wNSAyMDo0Nzoz
Ni4wMDAwMDAwMDAgKzAyMDAKKysrIHRwb3AzZC1DVlMvY29ubmVjdGlvbi5jCTIwMDItMTAtMTMg
MjE6MDA6MTkuMDAwMDAwMDAwICswMjAwCkBAIC0zNCw2ICszNCw5IEBACiAKIGV4dGVybiBpbnQg
dmVyYm9zZTsKIAorZXh0ZXJuIGludCBwb3N0X2Zvcms7IC8qIGluIG1haW4uYyAqLworZXh0ZXJu
IHZvaWQgcmVtb3ZlX2Nvbm5lY3Rpb24oY29ubmVjdGlvbik7IC8qIGluIG1haW4uYyAqLworCiAv
KiBtYWtlX3RpbWVzdGFtcDoKICAqIENyZWF0ZSBhIHRpbWVzdGFtcCBzdHJpbmcuICovCiAjZGVm
aW5lIFRJTUVTVEFNUF9MRU4gICAzMgpAQCAtMTU4LDYgKzE2MSw3IEBACiAgICAgaWYgKGMtPnRp
bWVzdGFtcCkgeGZyZWUoYy0+dGltZXN0YW1wKTsKICAgICBpZiAoYy0+dXNlcikgICAgICB4ZnJl
ZShjLT51c2VyKTsKICAgICBpZiAoYy0+cGFzcykgICAgICB4ZnJlZShjLT5wYXNzKTsKKyAgICBp
ZiAoYy0+ZGVsYXllZF9yZXNwb25zZSkgeGZyZWUoYy0+ZGVsYXllZF9yZXNwb25zZSk7CiAgICAg
eGZyZWUoYyk7CiB9CiAKQEAgLTMxNiw2ICszMjAsMTMgQEAKICAgICB4ZnJlZShwKTsKIH0KIAor
LyogY29ubmVjdGlvbl9mcmVlemU6CisgKiBmcmVlemUgYSBjb25uZWN0aW9uIGZvciBhIGZldyBz
ZWNvbmRzICovCit2b2lkIGNvbm5lY3Rpb25fZnJlZXplKGNvbm5lY3Rpb24gYykgeworICAgIC8q
IFhYWCBDaGVjayBhbmQgY29tcGxhaW4gaWYgYWxyZWFkeSBmcm96ZW4gPyAqLworICAgIGMtPmZy
b3plbnVudGlsID0gdGltZShOVUxMKSArIDU7Cit9CisKIC8qIGNvbm5lY3Rpb25fc2VuZHJlc3Bv
bnNlOgogICogU2VuZCBhICtPSy4uLiAvIC1FUlIuLi4gcmVzcG9uc2UgdG8gYSBtZXNzYWdlLiBS
ZXR1cm5zIDEgb24gc3VjY2VzcyBvciAwIG9uCiAgKiBmYWlsdXJlLiAqLwpAQCAtMzI1LDYgKzMz
NiwxOSBAQAogICAgIHggPSB4bWFsbG9jKGwgPSAoNCArIHN0cmxlbihzKSArIDMgKyAxKSk7CiAg
ICAgaWYgKCF4KSByZXR1cm4gMDsKICAgICBzbnByaW50Zih4LCBsLCAiJXMgJXNcclxuIiwgc3Vj
Y2VzcyA/ICIrT0siIDogIi1FUlIiLCBzKTsKKyAgICBpZiAoYy0+ZnJvemVudW50aWwpIHsKKyAg
ICAgICAgaWYgKGMtPmRlbGF5ZWRfcmVzcG9uc2UpIHsKKyAgICAgICAgICAgIC8qIE1oaC4uLiB0
aGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGhhcHBlbi4gU2hvdWxkIHdlIGNvbXBsYWluIGluc3RlYWQg
PyAqLworICAgICAgICAgICAgYy0+ZGVsYXllZF9yZXNwb25zZSA9IHhyZWFsbG9jKGMtPmRlbGF5
ZWRfcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgc3RybGVuKGMtPmRlbGF5ZWRfcmVzcG9uc2Up
ICsgc3RybGVuKHgpKTsKKyAgICAgICAgICAgIHN0cmNhdChjLT5kZWxheWVkX3Jlc3BvbnNlLCB4
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjLT5kZWxheWVkX3Jlc3Bv
bnNlID0geDsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBsb2dfcHJpbnQoTE9H
X0RFQlVHLCBfKCJjb25uZWN0aW9uX3NlbmRyZXNwb25zZTogY2xpZW50ICVzOiBkZWxheWluZyBy
ZXNwb25zZSBgJXMgJXMnIiksIGMtPmlkc3RyLCBzdWNjZXNzPyAiK09LIiA6ICItRVJSIiwgcyk7
CisgICAgICAgIHJldHVybiAxOworICAgIH0KICAgICBtID0geHdyaXRlKGMtPnMsIHgsIGwgPSBz
dHJsZW4oeCkpOwogICAgIHhmcmVlKHgpOwogICAgIGlmICh2ZXJib3NlKQpAQCAtMzM0LDYgKzM1
OCwyOCBAQAogICAgIHJldHVybiAobSA9PSBsKTsKIH0KIAorLyogY29ubmVjdGlvbl90aGF3Ogor
ICogRmx1c2ggdGhlIG91cHV0IHF1ZXVlIG9mIGEgZnJvemVuIGNvbm5lY3Rpb24sIHRoZW4gY2xv
c2UgaXQgaWYgbmVjZXNzYXJ5ICovCit2b2lkIGNvbm5lY3Rpb25fdGhhdyhjb25uZWN0aW9uIGMp
IHsKKyAgICBjLT5mcm96ZW51bnRpbCA9IDA7CisgICAgdGltZSgmKGMtPmlkbGVzaW5jZSkpOwor
ICAgIGlmIChjLT5kZWxheWVkX3Jlc3BvbnNlKSB7CisgICAgICAgIGludCBtID0geHdyaXRlKGMt
PnMsIGMtPmRlbGF5ZWRfcmVzcG9uc2UsIHN0cmxlbihjLT5kZWxheWVkX3Jlc3BvbnNlKSk7Cisg
ICAgICAgIHhmcmVlKGMtPmRlbGF5ZWRfcmVzcG9uc2UpOworICAgICAgICBjLT5kZWxheWVkX3Jl
c3BvbnNlID0gTlVMTDsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBsb2dfcHJp
bnQoTE9HX0RFQlVHLCBfKCJjb25uZWN0aW9uX3RoYXc6IGNsaWVudCAlczogZmx1c2hlZCBkZWxh
eWVkIHJlc3BvbnNlIiksIGMtPmlkc3RyKTsKKyAgICAgICAgaWYgKG0gPiAwKQorICAgICAgICAg
ICAgYy0+bndyICs9IG07CisgICAgfQorICAgIGlmIChjLT5kZWxheWVkX2Nsb3NlKSB7CisgICAg
ICAgIGxvZ19wcmludChMT0dfSU5GTywgXygiY29ubmVjdGlvbl90aGF3OiBjbGllbnQgJXM6IGRv
aW5nIGRlbGF5ZWQgZGlzY29ubmVjdGlvbjsgJWQvJWQgYnl0ZXMgcmVhZC93cml0dGVuIiksIGMt
Pmlkc3RyLCBjLT5ucmQsIGMtPm53cik7CisgICAgICAgIHJlbW92ZV9jb25uZWN0aW9uKGMpOwor
ICAgICAgICBjb25uZWN0aW9uX2RlbGV0ZShjKTsKKyAgICAgICAgaWYgKHBvc3RfZm9yaykgX2V4
aXQoMCk7CisgICAgfQorfQorCiAvKiBjb25uZWN0aW9uX3NlbmRsaW5lOgogICogU2VuZCBhbiBh
cmJpdHJhcnkgbGluZSB0byBhIGNvbm5lY3RlZCBwZWVyLiBSZXR1cm5zIDEgb24gc3VjY2VzcyBv
ciAwIG9uCiAgKiBmYWlsdXJlLiBVc2VkIHRvIHNlbmQgbXVsdGlsaW5lIHJlc3BvbnNlcy4gKi8K
ZGlmZiAtcnVOIHRwb3AzZC1DVlMtb3JpZy9jb25uZWN0aW9uLmggdHBvcDNkLUNWUy9jb25uZWN0
aW9uLmgKLS0tIHRwb3AzZC1DVlMtb3JpZy9jb25uZWN0aW9uLmgJMjAwMi0wNi0yNSAyMjoyODow
MC4wMDAwMDAwMDAgKzAyMDAKKysrIHRwb3AzZC1DVlMvY29ubmVjdGlvbi5oCTIwMDItMTAtMTMg
MjE6MDA6MTkuMDAwMDAwMDAwICswMjAwCkBAIC00OCw2ICs0OCwxMiBAQAogCiAgICAgdGltZV90
IGlkbGVzaW5jZTsgICAgICAgLyogdXNlZCB0byBpbXBsZW1lbnQgdGltZW91dHMgKi8KIAorICAg
IHRpbWVfdCBmcm96ZW51bnRpbDsgICAgIC8qIHVzZWQgdG8gcHJldmVudCBicnV0ZSBmb3JjZSBj
cmFja2luZyAqLworCisgICAgY2hhciAqZGVsYXllZF9yZXNwb25zZTsgLyogZGVsYXllZCByZXNw
b25zZSBvdXRwdXQgKi8KKworICAgIGludCBkZWxheWVkX2Nsb3NlOyAgICAgIC8qIGRlbGF5ZWQg
Y2xvc2UgY29ubmVjdGlvbiAqLworCiAgICAgaW50IG5fYXV0aF90cmllcywgbl9lcnJvcnM7CiAg
ICAgY2hhciAqdXNlciwgKnBhc3M7ICAgICAgLyogc3RhdGUgYWNjdW11bGF0ZWQgKi8KICAgICBh
dXRoY29udGV4dCBhOwpAQCAtNzQsOSArODAsMTUgQEAKIC8qIFJlYWQgZGF0YSBvdXQgb2YgdGhl
IHNvY2tldCBpbnRvIHRoZSBidWZmZXIgKi8KIHNzaXplX3QgY29ubmVjdGlvbl9yZWFkKGNvbm5l
Y3Rpb24gYyk7CiAKKy8qIEZyZWV6ZSBhIGNvbm5lY3Rpb24gZm9yIGEgZmV3IHNlY29uZHMgKi8K
K3ZvaWQgY29ubmVjdGlvbl9mcmVlemUoY29ubmVjdGlvbiBjKTsKKwogLyogU2VuZCBhIHJlc3Bv
bnNlLCBnaXZlbiBpbiBzICh3aXRob3V0IHRoZSB0cmFpbGluZyBcclxuKSAqLwogaW50IGNvbm5l
Y3Rpb25fc2VuZHJlc3BvbnNlKGNvbm5lY3Rpb24gYywgY29uc3QgaW50IHN1Y2Nlc3MsIGNvbnN0
IGNoYXIgKnMpOwogCisvKiBUaGF3IGEgY29ubmVjdGlvbiBhbmQgZmx1c2ggYnVmZmVyZWQgb3V0
cHV0ICovCit2b2lkIGNvbm5lY3Rpb25fdGhhdyhjb25uZWN0aW9uIGMpOworCiAvKiBTZW5kIGEg
bGluZSwgZ2l2ZW4gaW4gcyAod2l0aG91dCB0aGUgdHJhaWxpbmcgXHJcbikgKi8KIGludCBjb25u
ZWN0aW9uX3NlbmRsaW5lKGNvbm5lY3Rpb24gYywgY29uc3QgY2hhciAqcyk7CiAKZGlmZiAtcnVO
IHRwb3AzZC1DVlMtb3JpZy9tYWluLmMgdHBvcDNkLUNWUy9tYWluLmMKLS0tIHRwb3AzZC1DVlMt
b3JpZy9tYWluLmMJMjAwMi0wOC0xOSAxNDowMjoyOC4wMDAwMDAwMDAgKzAyMDAKKysrIHRwb3Az
ZC1DVlMvbWFpbi5jCTIwMDItMTAtMTMgMjE6MDA6MTkuMDAwMDAwMDAwICswMjAwCkBAIC0xODMs
NyArMTgzLDcgQEAKIHZvaWQgY29ubmVjdGlvbnNfcHJlX3NlbGVjdChpbnQgKm4sIGZkX3NldCAq
cmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMpIHsKICAgICBjb25u
ZWN0aW9uICpKOwogICAgIGZvciAoSiA9IGNvbm5lY3Rpb25zOyBKIDwgY29ubmVjdGlvbnMgKyBt
YXhfY29ubmVjdGlvbnM7ICsrSikKLSAgICAgICAgaWYgKCpKKSB7CisgICAgICAgIGlmICgqSiAm
JiAoKkopLT5mcm96ZW51bnRpbCA9PSAwKSB7CiAgICAgICAgICAgICBpbnQgcyA9ICgqSiktPnM7
CiAgICAgICAgICAgICBGRF9TRVQocywgcmVhZGZkcyk7CiAgICAgICAgICAgICBpZiAocyA+ICpu
KSAqbiA9IHM7CkBAIC0zMTcsNyArMzE3LDEwIEBACiAgKiBDYWxsZWQgYWZ0ZXIgdGhlIG1haW4g
c2VsZWN0KDIpIHRvIGRvIHN0dWZmIHdpdGggY29ubmVjdGlvbnMuICovCiB2b2lkIGNvbm5lY3Rp
b25zX3Bvc3Rfc2VsZWN0KGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0
ICpleGNlcHRmZHMpIHsKICAgICBjb25uZWN0aW9uICpJOwotICAgIAorICAgIHN0YXRpYyB0aW1l
X3QgbGFzdF90aW1lID0gMDsKKworICAgIGlmIChsYXN0X3RpbWUgPT0gMCkgdGltZSgmbGFzdF90
aW1lKTsKKwogICAgIGZvciAoSSA9IGNvbm5lY3Rpb25zOyBJIDwgY29ubmVjdGlvbnMgKyBtYXhf
Y29ubmVjdGlvbnM7ICsrSSkgewogICAgICAgICBjb25uZWN0aW9uIGMgPSAqSTsKICAgICAgICAg
aWYgKGMpIHsKQEAgLTM0NSwxMSArMzQ4LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBw
b3AzY29tbWFuZF9kZWxldGUocCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFj
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgY2xvc2VfY29ubmVjdGlvbjoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3ByaW50KExPR19JTkZPLCBfKCJj
b25uZWN0aW9uc19wb3N0X3NlbGVjdDogY2xpZW50ICVzOiBkaXNjb25uZWN0ZWQ7ICVkLyVkIGJ5
dGVzIHJlYWQvd3JpdHRlbiIpLCBjLT5pZHN0ciwgYy0+bnJkLCBjLT5ud3IpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfY29ubmVjdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9kZWxldGUoYyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpJID0gYyA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChwb3N0X2ZvcmspIF9leGl0KDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYy0+ZnJvemVudW50aWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ19wcmludChMT0dfSU5GTywgXygiY29ubmVjdGlvbnNfcG9zdF9zZWxl
Y3Q6IGNsaWVudCAlczogZGVsYXlpbmcgZGlzY29ubmVjdGlvbiIpLCBjLT5pZHN0cik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5kZWxheWVkX2Nsb3NlID0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ19wcmludChMT0dfSU5GTywgXygiY29ubmVjdGlvbnNfcG9z
dF9zZWxlY3Q6IGNsaWVudCAlczogZGlzY29ubmVjdGVkOyAlZC8lZCBieXRlcyByZWFkL3dyaXR0
ZW4iKSwgYy0+aWRzdHIsIGMtPm5yZCwgYy0+bndyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlbW92ZV9jb25uZWN0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbl9kZWxldGUoYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqSSA9IGMgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBvc3RfZm9yaykgX2V4aXQoMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGZvcmtfYW5kX3NldHVpZDoKQEAgLTM2
OCw2ICszNzYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChjLT5mcm96
ZW51bnRpbCAmJiAoKHRpbWUoTlVMTCkgPiBjLT5mcm96ZW51bnRpbCkgfHwgdGltZShOVUxMKSA8
IGxhc3RfdGltZSkpIHsKKyAgICAgICAgICAgICAgICAvKiBDb25uZWN0aW9uIGhhcyBiZWVuIGZy
b3plbiBsb25nIGVub3VnaCwgb3IgdGltZSB3ZW50IGJhY2t3YXJkcyAqLworICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb25fdGhhdyhjKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodGltZW91dF9z
ZWNvbmRzICYmICh0aW1lKE5VTEwpID4gKGMtPmlkbGVzaW5jZSArIHRpbWVvdXRfc2Vjb25kcykp
KSB7CiAgICAgICAgICAgICAgICAgLyogQ29ubmVjdGlvbiBoYXMgdGltZWQgb3V0LiAqLwogI2lm
bmRlZiBOT19TTklERV9DT01NRU5UUwpkaWZmIC1ydU4gdHBvcDNkLUNWUy1vcmlnL3BvcDMuYyB0
cG9wM2QtQ1ZTL3BvcDMuYwotLS0gdHBvcDNkLUNWUy1vcmlnL3BvcDMuYwkyMDAyLTA3LTE1IDEw
OjA1OjI2LjAwMDAwMDAwMCArMDIwMAorKysgdHBvcDNkLUNWUy9wb3AzLmMJMjAwMi0xMC0xMyAy
MTowMDoxOS4wMDAwMDAwMDAgKzAyMDAKQEAgLTQ1LDE3ICs0NSwyMSBAQAogICAgICAgICBzd2l0
Y2ggKHAtPmNtZCkgewogICAgICAgICBjYXNlIFVTRVI6CiAgICAgICAgICAgICBpZiAoYXBvcF9v
bmx5KSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9mcmVlemUoYyk7CiAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbl9zZW5kcmVzcG9uc2UoYywgMCwgXygiU29ycnksIHlvdSBtdXN0IHVz
ZSBBUE9QLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VfY29ubmVjdGlvbjsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAocC0+dG9rcy0+bnVtICE9IDIpIHsKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uX2ZyZWV6ZShjKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX3NlbmRy
ZXNwb25zZShjLCAwLCBfKCJObywgdGhhdCdzIG5vdCByaWdodC4iKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGRvX25vdGhpbmc7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGMtPnVzZXIpIHsK
KyAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2ZyZWV6ZShjKTsKICAgICAgICAgICAgICAgICBj
b25uZWN0aW9uX3NlbmRyZXNwb25zZShjLCAwLCBfKCJCdXQgeW91IGFscmVhZHkgc2FpZCBgVVNF
UicuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBkb19ub3RoaW5nOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBjLT51c2VyID0geHN0cmR1cCgoY2hhciopcC0+dG9r
cy0+dG9rc1sxXSk7CiAgICAgICAgICAgICAgICAgaWYgKCFjLT51c2VyKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb25fZnJlZXplKGMpOwogI2lmbmRlZiBOT19TTklERV9DT01NRU5U
UwogICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX3NlbmRyZXNwb25zZShjLCAwLCBfKCJU
ZWxsIG1lIHlvdXIgbmFtZSwga25hdmUhIikpOwogI2Vsc2UKQEAgLTY4LDE0ICs3MiwxNyBAQAog
CiAgICAgICAgIGNhc2UgUEFTUzoKICAgICAgICAgICAgIGlmIChwLT50b2tzLT5udW0gIT0gMikg
eworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fZnJlZXplKGMpOwogICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb25fc2VuZHJlc3BvbnNlKGMsIDAsIF8oIk5vLCB0aGF0J3Mgbm90IHJpZ2h0LiIp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZG9fbm90aGluZzsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoYy0+cGFzcykgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fZnJlZXplKGMpOwog
ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fc2VuZHJlc3BvbnNlKGMsIDAsIF8oIkJ1dCB5b3Ug
YWxyZWFkeSBzYWlkIGBQQVNTJy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRvX25vdGhp
bmc7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGMtPnBhc3MgPSB4c3Ry
ZHVwKHAtPnRva3MtPnRva3NbMV0pOwogICAgICAgICAgICAgICAgIGlmICghYy0+cGFzcykgewor
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2ZyZWV6ZShjKTsKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbl9zZW5kcmVzcG9uc2UoYywgMCwgXygiWW91IG11c3QgZ2l2ZSBhIHBh
c3N3b3JkLiIpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvX25vdGhpbmc7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtOTAsNiArOTcsNyBAQAogICAgICAgICAgICAgICAgICsrYy0+bl9h
dXRoX3RyaWVzOwogCiAgICAgICAgICAgICAgICAgaWYgKHAtPnRva3MtPm51bSAhPSAzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fZnJlZXplKGMpOwogICAgICAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uX3NlbmRyZXNwb25zZShjLCAwLCBfKCJObywgdGhhdCdzIG5vdCByaWdo
dC4iKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb19ub3RoaW5nOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTk4LDYgKzEwNiw3IEBACiAgICAgICAgICAgICAgICAgaGV4ZGlnZXN0ID0g
KGNoYXIqKXAtPnRva3MtPnRva3NbMl07CiAKICAgICAgICAgICAgICAgICBpZiAoYy0+bl9hdXRo
X3RyaWVzID09IE1BWF9BVVRIX1RSSUVTKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b25fZnJlZXplKGMpOwogI2lmbmRlZiBOT19TTklERV9DT01NRU5UUwogICAgICAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uX3NlbmRyZXNwb25zZShjLCAwLCBfKCJUaGlzIGlzIHJpZGljdWxvdXMu
IEkgZ2l2ZSB1cC4iKSk7CiAjZWxzZQpAQCAtMTA3LDEwICsxMTYsMTIgQEAKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIW5hbWUgfHwgKm5hbWUgPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2ZyZWV6ZShjKTsKICAgICAgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbl9zZW5kcmVzcG9uc2UoYywgMCwgXygiVGhhdCdzIG5vdCByaWdodC4iKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlm
IChzdHJsZW4oaGV4ZGlnZXN0KSAhPSAzMikgeworICAgICAgICAgICAgICAgICAgICBjb25uZWN0
aW9uX2ZyZWV6ZShjKTsKICNpZm5kZWYgTk9fU05JREVfQ09NTUVOVFMKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbl9zZW5kcmVzcG9uc2UoYywgMCwgXygiVHJ5IGFnYWluLCBidXQgZ2V0
IGl0IHJpZ2h0IG5leHQgdGltZS4iKSk7CiAjZWxzZQpAQCAtMTIxLDYgKzEzMiw3IEBACiAKICAg
ICAgICAgICAgICAgICAvKiBPYnRhaW4gZGlnZXN0ICovCiAgICAgICAgICAgICAgICAgaWYgKCF1
bmhleF9kaWdlc3QoaGV4ZGlnZXN0LCBkaWdlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25fZnJlZXplKGMpOwogI2lmbmRlZiBOT19TTklERV9DT01NRU5UUwogICAgICAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uX3NlbmRyZXNwb25zZShjLCAwLCBfKCJDbHVlbGVzcyBidW5u
eSEiKSk7CiAjZWxzZQpAQCAtMTU5LDYgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGMt
PnN0YXRlID0gdHJhbnNhY3Rpb247CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JrX2Fu
ZF9zZXR1aWQ7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbl9mcmVlemUoYyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjLT5uX2F1dGhf
dHJpZXMgPT0gTUFYX0FVVEhfVFJJRVMpIHsKICNpZm5kZWYgTk9fU05JREVfQ09NTUVOVFMKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fc2VuZHJlc3BvbnNlKGMsIDAsIF8oIlRo
aXMgaXMgcmlkaWN1bG91cy4gSSBnaXZlIHVwLiIpKTsKQEAgLTIzNyw2ICsyNTAsNyBAQAogICAg
ICAgICAgICAgICAgIGVudW0gY29ubmVjdGlvbl9hY3Rpb24gYWN0OwogCiAgICAgICAgICAgICAg
ICAgKytjLT5uX2F1dGhfdHJpZXM7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9mcmVlemUo
Yyk7CiAgICAgICAgICAgICAgICAgaWYgKGMtPm5fYXV0aF90cmllcyA9PSBNQVhfQVVUSF9UUklF
UykgewogI2lmbmRlZiBOT19TTklERV9DT01NRU5UUwogICAgICAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uX3NlbmRyZXNwb25zZShjLCAwLCBfKCJUaGlzIGlzIHJpZGljdWxvdXMuIEkgZ2l2ZSB1
cC4iKSk7Cg==

--Multipart_Wed__16_Oct_2002_13:35:16_+0200_08255148--