bin/142384: sync fsck_msdosfs with OpenBSD
Pedro F. Giffuni
giffunip at tutopia.com
Wed Jan 6 21:40:05 UTC 2010
The following reply was made to PR bin/142384; it has been noted by GNATS.
From: "Pedro F. Giffuni" <giffunip at tutopia.com>
To: FreeBSD-gnats-submit at FreeBSD.org
Cc: Bruce Evans <brde at optusnet.com.au>
Subject: Re: bin/142384: sync fsck_msdosfs with OpenBSD
Date: Wed, 6 Jan 2010 13:31:35 -0800 (PST)
--0-365583171-1262813495=:15260
Content-Type: text/plain; charset=us-ascii
As Bruce Evans has kindly noted, the OpenBSD changes are plagued with
style errors so we should use the NetBSD changes instead.
This patch is bigger but cleans real bugs.
In general:
- fix sign-compare issues
- Move to 2 clause license, approved by Wolfgang Solfrank
In boot.c:
- Change mismatch of bytes 11 to 90 to be a warning, not an error
- print out the values of the bytes that do not match.
- Add comment explaining that there is no documented rationale for the
check.
- removes unused ctype.h header
in dir.c:
- use bounded string op
- the root directory of non fat32 filesystems is stored in a special area.
a couple of corner cases can cause it to fail to write out that area
after it performs repairs.
in fat.c:
- don't leak memory on allocation failure.
- Do not crash when boot->FSNext contains garbage (i.e. -1).
- don't use uint32_t when you mean size_t.
--0-365583171-1262813495=:15260
Content-Type: application/octet-stream; name=patch-fsck_msdosfs
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch-fsck_msdosfs"
ZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9yaWcvYm9vdC5jIGZzY2tfbXNkb3Nm
cy9ib290LmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Jvb3QuYwkyMDEwLTAx
LTA2IDExOjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2Zz
L2Jvb3QuYwkyMDEwLTAxLTA2IDE1OjE5OjMzLjAwMDAwMDAwMCArMDAwMApA
QCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy
aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3
YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds
ZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg
ZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5n
IFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5p
dmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElT
JycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTCkBAIC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdGRs
aWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAK
QEAgLTU2LDggKzQ4LDkgQEAKIAl1X2NoYXIgZnNpbmZvWzIgKiBET1NCT09U
QkxPQ0tTSVpFXTsKIAl1X2NoYXIgYmFja3VwW0RPU0JPT1RCTE9DS1NJWkVd
OwogCWludCByZXQgPSBGU09LOworCWludCBpOwogCQotCWlmIChyZWFkKGRv
c2ZzLCBibG9jaywgc2l6ZW9mIGJsb2NrKSA8IHNpemVvZiBibG9jaykgewor
CWlmIChyZWFkKChzaXplX3QpZG9zZnMsIGJsb2NrLCBzaXplb2YgYmxvY2sp
ICE9IHNpemVvZiBibG9jaykgewogCQlwZXJyb3IoImNvdWxkIG5vdCByZWFk
IGJvb3QgYmxvY2siKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQpAQCAtMTYx
LDEyICsxNTQsMjIgQEAKIAkJfQogCQliYWNrdXBbNjVdID0gYmxvY2tbNjVd
OwkJCQkvKiBYWFggKi8KIAkJaWYgKG1lbWNtcChibG9jayArIDExLCBiYWNr
dXAgKyAxMSwgNzkpKSB7Ci0JCQkvKiBDb3JyZWN0PwkJCQkJWFhYICovCi0J
CQlwZmF0YWwoImJhY2t1cCBkb2Vzbid0IGNvbXBhcmUgdG8gcHJpbWFyeSBi
b290YmxvY2siKTsKLQkJCWlmIChhbHdheXNubykKLQkJCQlwZmF0YWwoIlxu
Iik7Ci0JCQllbHNlCi0JCQkJcmV0dXJuIEZTRkFUQUw7CisJCQkvKgorCQkJ
ICogWFhYIFdlIHJlcXVpcmUgYSByZWZlcmVuY2UgdGhhdCBleHBsYWlucwor
CQkJICogdGhhdCB0aGVzZSBieXRlcyBuZWVkIHRvIG1hdGNoLCBvciBzaG91
bGQKKwkJCSAqIGRyb3AgdGhlIGNoZWNrLiAgZ2R0QE5ldEJTRCBoYXMgb2Jz
ZXJ2ZWQKKwkJCSAqIGZpbGVzeXN0ZW1zIHRoYXQgd29yayBmaW5lIHVuZGVy
IFdpbmRvd3MgWFAKKwkJCSAqIGFuZCBOZXRCU0QgdGhhdCBkbyBub3QgbWF0
Y2gsIHNvIHRoZQorCQkJICogcmVxdWlyZW1lbnQgaXMgc3VzcGVjdC4gIEZv
ciBub3csIGp1c3QKKwkJCSAqIHByaW50IG91dCB1c2VmdWwgaW5mb3JtYXRp
b24gYW5kIGNvbnRpbnVlLgorCQkJICovCisJCQlwZmF0YWwoImJhY2t1cCAo
YmxvY2sgJWQpIG1pc21hdGNoIHdpdGggcHJpbWFyeSBib290YmxvY2s6XG4i
LAorCQkJICAgICAgICBib290LT5CYWNrdXApOworCQkJZm9yIChpID0gMTE7
IGkgPCAxMSArIDkwOyBpKyspIHsKKwkJCQlpZiAoYmxvY2tbaV0gIT0gYmFj
a3VwW2ldKQorCQkJCQlwZmF0YWwoIlx0aT0lZFx0cHJpbWFyeSAweCUwMnhc
dGJhY2t1cCAweCUwMnhcbiIsCisJCQkJCSAgICAgICBpLCBibG9ja1tpXSwg
YmFja3VwW2ldKTsKKwkJCX0KIAkJfQogCQkvKiBDaGVjayBiYWNrdXAgRlNJ
bmZvPwkJCQkJWFhYICovCiAJfQpkaWZmIC1ydSBmc2NrX21zZG9zZnMub3Jp
Zy9jaGVjay5jIGZzY2tfbXNkb3Nmcy9jaGVjay5jCi0tLSBmc2NrX21zZG9z
ZnMub3JpZy9jaGVjay5jCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAw
ICswMDAwCisrKyBmc2NrX21zZG9zZnMvY2hlY2suYwkyMDEwLTAxLTA2IDE2
OjEwOjM5LjAwMDAwMDAwMCArMDAwMApAQCAtMTAsMTMgKzEwLDYgQEAKICAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1
cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3Bs
YXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHBy
b2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBI
dXNlbWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz
b2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9S
CiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCkBAIC00MCw3ICsz
Myw2IEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAg
LTU0LDcgKzQ2LDggQEAKIAlpbnQgZG9zZnM7CiAJc3RydWN0IGJvb3RibG9j
ayBib290OwogCXN0cnVjdCBmYXRFbnRyeSAqZmF0ID0gTlVMTDsKLQlpbnQg
aSwgZmluaXNoX2Rvc2RpcnNlY3Rpb249MDsKKwlpbnQgZmluaXNoX2Rvc2Rp
cnNlY3Rpb249MDsKKwl1X2ludCBpOwogCWludCBtb2QgPSAwOwogCWludCBy
ZXQgPSA4OwogCmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2Rpci5jIGZz
Y2tfbXNkb3Nmcy9kaXIuYwotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZGlyLmMJ
MjAxMC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tf
bXNkb3Nmcy9kaXIuYwkyMDEwLTAxLTA2IDE2OjE3OjE3LjAwMDAwMDAwMCAr
MDAwMApAQCAtMTIsMTMgKzEyLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5n
IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlz
IHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh
Y2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m
dHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdv
bGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRv
cnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgog
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBg
YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTCkBAIC00NCw3ICszNyw2IEBACiAjaW5jbHVkZSA8
c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3R5
cGUuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHVuaXN0ZC5o
PgogI2luY2x1ZGUgPHRpbWUuaD4KIApAQCAtMjI2LDE2ICsyMTgsMjkgQEAK
IAlpbnQgYjEsIGIyOwogCWNsX3QgY2w7CiAJaW50IHJldCA9IEZTT0s7CisJ
c2l6ZV90IGxlbjsKIAogCWIxID0gYm9vdC0+Um9vdERpckVudHMgKiAzMjsK
IAliMiA9IGJvb3QtPlNlY1BlckNsdXN0ICogYm9vdC0+Qnl0ZXNQZXJTZWM7
CiAKLQlpZiAoIShidWZmZXIgPSBtYWxsb2MoYjEgPiBiMiA/IGIxIDogYjIp
KQotCSAgICB8fCAhKGRlbGJ1ZiA9IG1hbGxvYyhiMikpCi0JICAgIHx8ICEo
cm9vdERpciA9IG5ld0Rvc0RpckVudHJ5KCkpKSB7Ci0JCXBlcnJvcigiTm8g
c3BhY2UgZm9yIGRpcmVjdG9yeSIpOworCWlmICgoYnVmZmVyID0gbWFsbG9j
KGxlbiA9IGIxID4gYjIgPyBiMSA6IGIyKSkgPT0gTlVMTCkgeworCQlwZXJy
b3IoIk5vIHNwYWNlIGZvciBkaXJlY3RvcnkgYnVmZmVyIik7CiAJCXJldHVy
biBGU0ZBVEFMOwogCX0KKworCWlmICgoZGVsYnVmID0gbWFsbG9jKGxlbiA9
IGIyKSkgPT0gTlVMTCkgeworCQlmcmVlKGJ1ZmZlcik7CisJCXBlcnJvcigi
Tm8gc3BhY2UgZm9yIGRpcmVjdG9yeSBkZWxidWYiKTsKKwkJcmV0dXJuIEZT
RkFUQUw7CisJfQorCisJaWYgKChyb290RGlyID0gbmV3RG9zRGlyRW50cnko
KSkgPT0gTlVMTCkgeworCQlmcmVlKGJ1ZmZlcik7CisJCWZyZWUoZGVsYnVm
KTsKKwkJcGVycm9yKCJObyBzcGFjZSBmb3IgZGlyZWN0b3J5IGVudHJ5Iik7
CisJCXJldHVybiBGU0ZBVEFMOworCX0KKwogCW1lbXNldChyb290RGlyLCAw
LCBzaXplb2YgKnJvb3REaXIpOwogCWlmIChib290LT5mbGFncyAmIEZBVDMy
KSB7CiAJCWlmIChib290LT5Sb290Q2wgPCBDTFVTVF9GSVJTVCB8fCBib290
LT5Sb290Q2wgPj0gYm9vdC0+TnVtQ2x1c3RlcnMpIHsKQEAgLTM2Nyw3ICsz
NzIsOCBAQAogCQkJCXJldHVybiBGU0ZBVEFMOwogCQkJc3RhcnQgPSBidWZm
ZXI7CiAJCX0KLQkJaWYgKGVuZGNsID09IGN1cmNsKQorCQkvKiBzdGFydGNs
IGlzIDwgQ0xVU1RfRklSU1QgZm9yICFmYXQzMiByb290ICovCisJCWlmICgo
ZW5kY2wgPT0gY3VyY2wpIHx8IChzdGFydGNsIDwgQ0xVU1RfRklSU1QpKQog
CQkJZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCArPSAzMikKIAkJCQkqc3Rh
cnQgPSBTTE9UX0RFTEVURUQ7CiAJCXJldHVybiBGU0RJUk1PRDsKQEAgLTM4
NSw3ICszOTEsNyBAQAogCS8qCiAJICogQ2hlY2sgc2l6ZSBvbiBvcmRpbmFy
eSBmaWxlcwogCSAqLwotCWludDMyX3QgcGh5c2ljYWxTaXplOworCXVfaW50
MzJfdCBwaHlzaWNhbFNpemU7CiAKIAlpZiAoZGlyLT5oZWFkID09IENMVVNU
X0ZSRUUpCiAJCXBoeXNpY2FsU2l6ZSA9IDA7CkBAIC02NDQsNyArNjUwLDgg
QEAKIAkJCQlkaXJlbnQuaGVhZCB8PSAocFsyMF0gPDwgMTYpIHwgKHBbMjFd
IDw8IDI0KTsKIAkJCWRpcmVudC5zaXplID0gcFsyOF0gfCAocFsyOV0gPDwg
OCkgfCAocFszMF0gPDwgMTYpIHwgKHBbMzFdIDw8IDI0KTsKIAkJCWlmICh2
YWxsZm4pIHsKLQkJCQlzdHJjcHkoZGlyZW50LmxuYW1lLCBsb25nTmFtZSk7
CisJCQkJc3RybGNweShkaXJlbnQubG5hbWUsIGxvbmdOYW1lLAorCQkJCSAg
ICBzaXplb2YoZGlyZW50LmxuYW1lKSk7CiAJCQkJbG9uZ05hbWVbMF0gPSAn
XDAnOwogCQkJCXNob3J0U3VtID0gLTE7CiAJCQl9CkBAIC04MzIsNiArODM5
LDEwIEBACiAJCQl9CiAJCQlib290LT5OdW1GaWxlcysrOwogCQl9CisKKwkJ
aWYgKCEoYm9vdC0+ZmxhZ3MgJiBGQVQzMikgJiYgIWRpci0+cGFyZW50KQor
CQkJYnJlYWs7CisKIAkJaWYgKG1vZCAmIFRISVNNT0QpIHsKIAkJCWxhc3Qg
Kj0gMzI7CiAJCQlpZiAobHNlZWsoZiwgb2ZmLCBTRUVLX1NFVCkgIT0gb2Zm
CkBAIC04NDcsNiArODU4LDE5IEBACiAJCQkJaW52bGZuID8gaW52bGZuIDog
dmFsbGZuLCBwLAogCQkJCWludmxmbiA/IGludmNsIDogdmFsY2wsIC0xLCAw
LAogCQkJCWZ1bGxwYXRoKGRpciksIDEpOworCisJLyogVGhlIHJvb3QgZGly
ZWN0b3J5IG9mIG5vbiBmYXQzMiBmaWxlc3lzdGVtcyBpcyBpbiBhIHNwZWNp
YWwKKwkgKiBhcmVhIGFuZCBtYXkgaGF2ZSBiZWVuIG1vZGlmaWVkIGFib3Zl
IHdpdGhvdXQgYmVpbmcgd3JpdHRlbiBvdXQuCisJICovCisJaWYgKChtb2Qg
JiBGU0RJUk1PRCkgJiYgIShib290LT5mbGFncyAmIEZBVDMyKSAmJiAhZGly
LT5wYXJlbnQpIHsKKwkJbGFzdCAqPSAzMjsKKwkJaWYgKGxzZWVrKGYsIG9m
ZiwgU0VFS19TRVQpICE9IG9mZgorCQkgICAgfHwgd3JpdGUoZiwgYnVmZmVy
LCBsYXN0KSAhPSBsYXN0KSB7CisJCQlwZXJyb3IoIlVuYWJsZSB0byB3cml0
ZSBkaXJlY3RvcnkiKTsKKwkJCXJldHVybiBGU0ZBVEFMOworCQl9CisJCW1v
ZCAmPSB+VEhJU01PRDsKKwl9CiAJcmV0dXJuIG1vZCAmIH5USElTTU9EOwog
fQogCkBAIC05MzYsNyArOTYwLDcgQEAKIAkJbGZvZmYgPSBsZmNsICogYm9v
dC0+Q2x1c3RlclNpemUKIAkJICAgICsgYm9vdC0+Q2x1c3Rlck9mZnNldCAq
IGJvb3QtPkJ5dGVzUGVyU2VjOwogCQlpZiAobHNlZWsoZG9zZnMsIGxmb2Zm
LCBTRUVLX1NFVCkgIT0gbGZvZmYKLQkJICAgIHx8IHJlYWQoZG9zZnMsIGxm
YnVmLCBib290LT5DbHVzdGVyU2l6ZSkgIT0gYm9vdC0+Q2x1c3RlclNpemUp
IHsKKwkJICAgIHx8IChzaXplX3QpcmVhZChkb3NmcywgbGZidWYsIGJvb3Qt
PkNsdXN0ZXJTaXplKSAhPSBib290LT5DbHVzdGVyU2l6ZSkgewogCQkJcGVy
cm9yKCJjb3VsZCBub3QgcmVhZCBMT1NULkRJUiIpOwogCQkJcmV0dXJuIEZT
RkFUQUw7CiAJCX0KQEAgLTk2Niw3ICs5OTAsNyBAQAogCXBbMzFdID0gKHVf
Y2hhcikoZC5zaXplID4+IDI0KTsKIAlmYXRbaGVhZF0uZmxhZ3MgfD0gRkFU
X1VTRUQ7CiAJaWYgKGxzZWVrKGRvc2ZzLCBsZm9mZiwgU0VFS19TRVQpICE9
IGxmb2ZmCi0JICAgIHx8IHdyaXRlKGRvc2ZzLCBsZmJ1ZiwgYm9vdC0+Q2x1
c3RlclNpemUpICE9IGJvb3QtPkNsdXN0ZXJTaXplKSB7CisJICAgIHx8IChz
aXplX3Qpd3JpdGUoZG9zZnMsIGxmYnVmLCBib290LT5DbHVzdGVyU2l6ZSkg
IT0gYm9vdC0+Q2x1c3RlclNpemUpIHsKIAkJcGVycm9yKCJjb3VsZCBub3Qg
d3JpdGUgTE9TVC5ESVIiKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQpkaWZm
IC1ydSBmc2NrX21zZG9zZnMub3JpZy9kb3Nmcy5oIGZzY2tfbXNkb3Nmcy9k
b3Nmcy5oCi0tLSBmc2NrX21zZG9zZnMub3JpZy9kb3Nmcy5oCTIwMTAtMDEt
MDYgMTE6MDc6MjQuMDAwMDAwMDAwICswMDAwCisrKyBmc2NrX21zZG9zZnMv
ZG9zZnMuaAkyMDEwLTAxLTA2IDE1OjQ2OjQ1LjAwMDAwMDAwMCArMDAwMApA
QCAtMTIsMTMgKzEyLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy
aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3
YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds
ZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg
ZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5n
IFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5p
dmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElT
JycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTCmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2V4dC5oIGZz
Y2tfbXNkb3Nmcy9leHQuaAotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZXh0LmgJ
MjAxMC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tf
bXNkb3Nmcy9leHQuaAkyMDEwLTAxLTA2IDE2OjE1OjM1LjAwMDAwMDAwMCAr
MDAwMApAQCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5n
IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlz
IHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh
Y2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m
dHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdv
bGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRv
cnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgog
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBg
YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTCkBAIC04Miw3ICs3NSw3IEBACiAjZGVmaW5lIEZT
RklYRkFUCTY0CQkvKiBGaXggZmlsZSBzeXN0ZW0gRkFUICovCiAKIC8qCi0g
KiByZWFkIGEgYm9vdCBibG9jayBpbiBhIG1hY2hpbmUgaW5kZXBlbmRlbmQg
ZmFzaGlvbiBhbmQgdHJhbnNsYXRlCisgKiByZWFkIGEgYm9vdCBibG9jayBp
biBhIG1hY2hpbmUgaW5kZXBlbmRlbnQgZmFzaGlvbiBhbmQgdHJhbnNsYXRl
CiAgKiBpdCBpbnRvIG91ciBzdHJ1Y3QgYm9vdGJsb2NrLgogICovCiBpbnQg
cmVhZGJvb3QoaW50LCBzdHJ1Y3QgYm9vdGJsb2NrICopOwpAQCAtOTYsMTMg
Kzg5LDEzIEBACiAgKiBSZWFkIG9uZSBvZiB0aGUgRkFUIGNvcGllcyBhbmQg
cmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmV3CiAgKiBhbGxvY2F0ZWQgYXJy
YXkgaG9sZGluZyBvdXIgZGVzY3JpcHRpb24gb2YgaXQuCiAgKi8KLWludCBy
ZWFkZmF0KGludCwgc3RydWN0IGJvb3RibG9jayAqLCBpbnQsIHN0cnVjdCBm
YXRFbnRyeSAqKik7CitpbnQgcmVhZGZhdChpbnQsIHN0cnVjdCBib290Ymxv
Y2sgKiwgdV9pbnQsIHN0cnVjdCBmYXRFbnRyeSAqKik7CiAKIC8qCiAgKiBD
aGVjayB0d28gRkFUIGNvcGllcyBmb3IgY29uc2lzdGVuY3kgYW5kIG1lcmdl
IGNoYW5nZXMgaW50byB0aGUKICAqIGZpcnN0IGlmIG5lY2Nlc3NhcnkuCiAg
Ki8KLWludCBjb21wYXJlZmF0KHN0cnVjdCBib290YmxvY2sgKiwgc3RydWN0
IGZhdEVudHJ5ICosIHN0cnVjdCBmYXRFbnRyeSAqLCBpbnQpOworaW50IGNv
bXBhcmVmYXQoc3RydWN0IGJvb3RibG9jayAqLCBzdHJ1Y3QgZmF0RW50cnkg
Kiwgc3RydWN0IGZhdEVudHJ5ICosIHVfaW50KTsKIAogLyoKICAqIENoZWNr
IGEgRkFUCmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2ZhdC5jIGZzY2tf
bXNkb3Nmcy9mYXQuYwotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZmF0LmMJMjAx
MC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tfbXNk
b3Nmcy9mYXQuYwkyMDEwLTAxLTA2IDE2OjI1OjIzLjAwMDAwMDAwMCArMDAw
MApAQCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1h
dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNv
ZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tu
b3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh
cmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZn
YW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
VW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
LSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTCkBAIC00NywxMCArNDAsMTAgQEAKICNpbmNsdWRlICJl
eHQuaCIKICNpbmNsdWRlICJmc3V0aWwuaCIKIAotc3RhdGljIGludCBjaGVj
a2NsbnVtKHN0cnVjdCBib290YmxvY2sgKiwgaW50LCBjbF90LCBjbF90ICop
Owotc3RhdGljIGludCBjbHVzdGRpZmZlcihjbF90LCBjbF90ICosIGNsX3Qg
KiwgaW50KTsKK3N0YXRpYyBpbnQgY2hlY2tjbG51bShzdHJ1Y3QgYm9vdGJs
b2NrICosIHVfaW50LCBjbF90LCBjbF90ICopOworc3RhdGljIGludCBjbHVz
dGRpZmZlcihjbF90LCBjbF90ICosIGNsX3QgKiwgdV9pbnQpOwogc3RhdGlj
IGludCB0cnljbGVhcihzdHJ1Y3QgYm9vdGJsb2NrICosIHN0cnVjdCBmYXRF
bnRyeSAqLCBjbF90LCBjbF90ICopOwotc3RhdGljIGludCBfcmVhZGZhdChp
bnQsIHN0cnVjdCBib290YmxvY2sgKiwgaW50LCB1X2NoYXIgKiopOworc3Rh
dGljIGludCBfcmVhZGZhdChpbnQsIHN0cnVjdCBib290YmxvY2sgKiwgdV9p
bnQsIHVfY2hhciAqKik7CiAKIC8qLQogICogVGhlIGZpcnN0IDIgRkFUIGVu
dHJpZXMgY29udGFpbiBwc2V1ZG8tY2x1c3RlciBudW1iZXJzIHdpdGggdGhl
IGZvbGxvd2luZwpAQCAtMTM1LDcgKzEyOCw3IEBACiAgKiBDaGVjayBhIGNs
dXN0ZXIgbnVtYmVyIGZvciB2YWxpZCB2YWx1ZQogICovCiBzdGF0aWMgaW50
Ci1jaGVja2NsbnVtKHN0cnVjdCBib290YmxvY2sgKmJvb3QsIGludCBmYXQs
IGNsX3QgY2wsIGNsX3QgKm5leHQpCitjaGVja2NsbnVtKHN0cnVjdCBib290
YmxvY2sgKmJvb3QsIHVfaW50IGZhdCwgY2xfdCBjbCwgY2xfdCAqbmV4dCkK
IHsKIAlpZiAoKm5leHQgPj0gKENMVVNUX1JTUlZEJmJvb3QtPkNsdXN0TWFz
aykpCiAJCSpuZXh0IHw9IH5ib290LT5DbHVzdE1hc2s7CkBAIC0xNjYsNyAr
MTU5LDcgQEAKICAqIFJlYWQgYSBGQVQgZnJvbSBkaXNrLiBSZXR1cm5zIDEg
aWYgc3VjY2Vzc2Z1bCwgMCBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBpbnQK
LV9yZWFkZmF0KGludCBmcywgc3RydWN0IGJvb3RibG9jayAqYm9vdCwgaW50
IG5vLCB1X2NoYXIgKipidWZmZXIpCitfcmVhZGZhdChpbnQgZnMsIHN0cnVj
dCBib290YmxvY2sgKmJvb3QsIHVfaW50IG5vLCB1X2NoYXIgKipidWZmZXIp
CiB7CiAJb2ZmX3Qgb2ZmOwogCkBAIC0xODQsNyArMTc3LDcgQEAKIAkJZ290
byBlcnI7CiAJfQogCi0JaWYgKHJlYWQoZnMsICpidWZmZXIsIGJvb3QtPkZB
VHNlY3MgKiBib290LT5CeXRlc1BlclNlYykKKwlpZiAoKHNpemVfdClyZWFk
KGZzLCAqYnVmZmVyLCBib290LT5GQVRzZWNzICogYm9vdC0+Qnl0ZXNQZXJT
ZWMpCiAJICAgICE9IGJvb3QtPkZBVHNlY3MgKiBib290LT5CeXRlc1BlclNl
YykgewogCQlwZXJyb3IoIlVuYWJsZSB0byByZWFkIEZBVCIpOwogCQlnb3Rv
IGVycjsKQEAgLTIwMSwyNCArMTk0LDI2IEBACiAgKiBSZWFkIGEgRkFUIGFu
ZCBkZWNvZGUgaXQgaW50byBpbnRlcm5hbCBmb3JtYXQKICAqLwogaW50Ci1y
ZWFkZmF0KGludCBmcywgc3RydWN0IGJvb3RibG9jayAqYm9vdCwgaW50IG5v
LCBzdHJ1Y3QgZmF0RW50cnkgKipmcCkKK3JlYWRmYXQoaW50IGZzLCBzdHJ1
Y3QgYm9vdGJsb2NrICpib290LCB1X2ludCBubywgc3RydWN0IGZhdEVudHJ5
ICoqZnApCiB7CiAJc3RydWN0IGZhdEVudHJ5ICpmYXQ7CiAJdV9jaGFyICpi
dWZmZXIsICpwOwogCWNsX3QgY2w7CiAJaW50IHJldCA9IEZTT0s7CisJc2l6
ZV90IGxlbjsKIAogCWJvb3QtPk51bUZyZWUgPSBib290LT5OdW1CYWQgPSAw
OwogCiAJaWYgKCFfcmVhZGZhdChmcywgYm9vdCwgbm8sICZidWZmZXIpKQog
CQlyZXR1cm4gRlNGQVRBTDsKIAkJCi0JZmF0ID0gY2FsbG9jKGJvb3QtPk51
bUNsdXN0ZXJzLCBzaXplb2Yoc3RydWN0IGZhdEVudHJ5KSk7CisJZmF0ID0g
bWFsbG9jKGxlbiA9IGJvb3QtPk51bUNsdXN0ZXJzICogc2l6ZW9mKHN0cnVj
dCBmYXRFbnRyeSkpOwogCWlmIChmYXQgPT0gTlVMTCkgewogCQlwZXJyb3Io
Ik5vIHNwYWNlIGZvciBGQVQiKTsKIAkJZnJlZShidWZmZXIpOwogCQlyZXR1
cm4gRlNGQVRBTDsKIAl9CisJKHZvaWQpbWVtc2V0KGZhdCwgMCwgbGVuKTsK
IAogCWlmIChidWZmZXJbMF0gIT0gYm9vdC0+TWVkaWEKIAkgICAgfHwgYnVm
ZmVyWzFdICE9IDB4ZmYgfHwgYnVmZmVyWzJdICE9IDB4ZmYKQEAgLTMzMSw3
ICszMjYsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1jbHVzdGRpZmZlcihjbF90
IGNsLCBjbF90ICpjcDEsIGNsX3QgKmNwMiwgaW50IGZhdG51bSkKK2NsdXN0
ZGlmZmVyKGNsX3QgY2wsIGNsX3QgKmNwMSwgY2xfdCAqY3AyLCB1X2ludCBm
YXRudW0pCiB7CiAJaWYgKCpjcDEgPT0gQ0xVU1RfRlJFRSB8fCAqY3AxID49
IENMVVNUX1JTUlZEKSB7CiAJCWlmICgqY3AyID09IENMVVNUX0ZSRUUgfHwg
KmNwMiA+PSBDTFVTVF9SU1JWRCkgewpAQCAtMzQ2LDEzICszNDEsMTMgQEAK
IAkJCQl9CiAJCQkJcmV0dXJuIEZTRkFUQUw7CiAJCQl9Ci0JCQlwd2Fybigi
Q2x1c3RlciAldSBpcyBtYXJrZWQgJXMgaW4gRkFUIDAsICVzIGluIEZBVCAl
ZFxuIiwKKwkJCXB3YXJuKCJDbHVzdGVyICV1IGlzIG1hcmtlZCAlcyBpbiBG
QVQgMCwgJXMgaW4gRkFUICV1XG4iLAogCQkJICAgICAgY2wsIHJzcnZkY2x0
eXBlKCpjcDEpLCByc3J2ZGNsdHlwZSgqY3AyKSwgZmF0bnVtKTsKIAkJCWlm
IChhc2soMCwgIlVzZSBGQVQgMCdzIGVudHJ5IikpIHsKIAkJCQkqY3AyID0g
KmNwMTsKIAkJCQlyZXR1cm4gRlNGQVRNT0Q7CiAJCQl9Ci0JCQlpZiAoYXNr
KDAsICJVc2UgRkFUICVkJ3MgZW50cnkiLCBmYXRudW0pKSB7CisJCQlpZiAo
YXNrKDAsICJVc2UgRkFUICV1J3MgZW50cnkiLCBmYXRudW0pKSB7CiAJCQkJ
KmNwMSA9ICpjcDI7CiAJCQkJcmV0dXJuIEZTRkFUTU9EOwogCQkJfQpAQCAt
MzYwLDcgKzM1NSw3IEBACiAJCX0KIAkJcHdhcm4oIkNsdXN0ZXIgJXUgaXMg
bWFya2VkICVzIGluIEZBVCAwLCBidXQgY29udGludWVzIHdpdGggY2x1c3Rl
ciAldSBpbiBGQVQgJWRcbiIsCiAJCSAgICAgIGNsLCByc3J2ZGNsdHlwZSgq
Y3AxKSwgKmNwMiwgZmF0bnVtKTsKLQkJaWYgKGFzaygwLCAiVXNlIGNvbnRp
bnVhdGlvbiBmcm9tIEZBVCAlZCIsIGZhdG51bSkpIHsKKwkJaWYgKGFzaygw
LCAiVXNlIGNvbnRpbnVhdGlvbiBmcm9tIEZBVCAldSIsIGZhdG51bSkpIHsK
IAkJCSpjcDEgPSAqY3AyOwogCQkJcmV0dXJuIEZTRkFUTU9EOwogCQl9CkBA
IC0zNzEsNyArMzY2LDcgQEAKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQogCWlm
ICgqY3AyID09IENMVVNUX0ZSRUUgfHwgKmNwMiA+PSBDTFVTVF9SU1JWRCkg
ewotCQlwd2FybigiQ2x1c3RlciAldSBjb250aW51ZXMgd2l0aCBjbHVzdGVy
ICV1IGluIEZBVCAwLCBidXQgaXMgbWFya2VkICVzIGluIEZBVCAlZFxuIiwK
KwkJcHdhcm4oIkNsdXN0ZXIgJXUgY29udGludWVzIHdpdGggY2x1c3RlciAl
dSBpbiBGQVQgMCwgYnV0IGlzIG1hcmtlZCAlcyBpbiBGQVQgJXVcbiIsCiAJ
CSAgICAgIGNsLCAqY3AxLCByc3J2ZGNsdHlwZSgqY3AyKSwgZmF0bnVtKTsK
IAkJaWYgKGFzaygwLCAiVXNlIGNvbnRpbnVhdGlvbiBmcm9tIEZBVCAwIikp
IHsKIAkJCSpjcDIgPSAqY3AxOwpAQCAtMzgzLDEzICszNzgsMTMgQEAKIAkJ
fQogCQlyZXR1cm4gRlNFUlJPUjsKIAl9Ci0JcHdhcm4oIkNsdXN0ZXIgJXUg
Y29udGludWVzIHdpdGggY2x1c3RlciAldSBpbiBGQVQgMCwgYnV0IHdpdGgg
Y2x1c3RlciAldSBpbiBGQVQgJWRcbiIsCisJcHdhcm4oIkNsdXN0ZXIgJXUg
Y29udGludWVzIHdpdGggY2x1c3RlciAldSBpbiBGQVQgMCwgYnV0IHdpdGgg
Y2x1c3RlciAldSBpbiBGQVQgJXVcbiIsCiAJICAgICAgY2wsICpjcDEsICpj
cDIsIGZhdG51bSk7CiAJaWYgKGFzaygwLCAiVXNlIGNvbnRpbnVhdGlvbiBm
cm9tIEZBVCAwIikpIHsKIAkJKmNwMiA9ICpjcDE7CiAJCXJldHVybiBGU0ZB
VE1PRDsKIAl9Ci0JaWYgKGFzaygwLCAiVXNlIGNvbnRpbnVhdGlvbiBmcm9t
IEZBVCAlZCIsIGZhdG51bSkpIHsKKwlpZiAoYXNrKDAsICJVc2UgY29udGlu
dWF0aW9uIGZyb20gRkFUICV1IiwgZmF0bnVtKSkgewogCQkqY3AxID0gKmNw
MjsKIAkJcmV0dXJuIEZTRkFUTU9EOwogCX0KQEAgLTQwMSw4ICszOTYsOCBA
QAogICogaW50byB0aGUgZmlyc3Qgb25lLgogICovCiBpbnQKLWNvbXBhcmVm
YXQoc3RydWN0IGJvb3RibG9jayAqYm9vdCwgc3RydWN0IGZhdEVudHJ5ICpm
aXJzdCwgCi0gICAgc3RydWN0IGZhdEVudHJ5ICpzZWNvbmQsIGludCBmYXRu
dW0pCitjb21wYXJlZmF0KHN0cnVjdCBib290YmxvY2sgKmJvb3QsIHN0cnVj
dCBmYXRFbnRyeSAqZmlyc3QsCisgICAgc3RydWN0IGZhdEVudHJ5ICpzZWNv
bmQsIHVfaW50IGZhdG51bSkKIHsKIAljbF90IGNsOwogCWludCByZXQgPSBG
U09LOwpAQCAtNTQyLDggKzUzNyw4IEBACiB7CiAJdV9jaGFyICpidWZmZXIs
ICpwOwogCWNsX3QgY2w7Ci0JaW50IGk7Ci0JdV9pbnQzMl90IGZhdHN6Owor
CXVfaW50IGk7CisJc2l6ZV90IGZhdHN6OwogCW9mZl90IG9mZjsKIAlpbnQg
cmV0ID0gRlNPSzsKIApAQCAtNjMzLDcgKzYyOCw3IEBACiAJCW9mZiA9IGJv
b3QtPlJlc1NlY3RvcnMgKyBpICogYm9vdC0+RkFUc2VjczsKIAkJb2ZmICo9
IGJvb3QtPkJ5dGVzUGVyU2VjOwogCQlpZiAobHNlZWsoZnMsIG9mZiwgU0VF
S19TRVQpICE9IG9mZgotCQkgICAgfHwgd3JpdGUoZnMsIGJ1ZmZlciwgZmF0
c3opICE9IGZhdHN6KSB7CisJCSAgICB8fCAoc2l6ZV90KXdyaXRlKGZzLCBi
dWZmZXIsIGZhdHN6KSAhPSBmYXRzeikgewogCQkJcGVycm9yKCJVbmFibGUg
dG8gd3JpdGUgRkFUIik7CiAJCQlyZXQgPSBGU0ZBVEFMOyAvKiBSZXR1cm4g
aW1tZWRpYXRlbHk/CQlYWFggKi8KIAkJfQpAQCAtNjgzLDkgKzY3OCwxMCBA
QAogCQkJCXJldCA9IDE7CiAJCQl9CiAJCX0KLQkJaWYgKGJvb3QtPk51bUZy
ZWUgJiYgZmF0W2Jvb3QtPkZTTmV4dF0ubmV4dCAhPSBDTFVTVF9GUkVFKSB7
Ci0JCQlwd2FybigiTmV4dCBmcmVlIGNsdXN0ZXIgaW4gRlNJbmZvIGJsb2Nr
ICgldSkgbm90IGZyZWVcbiIsCi0JCQkgICAgICBib290LT5GU05leHQpOwor
CQlpZiAoYm9vdC0+RlNOZXh0ID49IGJvb3QtPk51bUNsdXN0ZXJzIHx8IChi
b290LT5OdW1GcmVlICYmIGZhdFtib290LT5GU05leHRdLm5leHQgIT0gQ0xV
U1RfRlJFRSkpIHsKKwkJCXB3YXJuKCJOZXh0IGZyZWUgY2x1c3RlciBpbiBG
U0luZm8gYmxvY2sgKCV1KSAlc1xuIiwKKwkJCSAgICAgIGJvb3QtPkZTTmV4
dCwKKwkJCSAgICAgIChib290LT5GU05leHQgPj0gYm9vdC0+TnVtQ2x1c3Rl
cnMpID8gImludmFsaWQiIDogIm5vdCBmcmVlIik7CiAJCQlpZiAoYXNrKDEs
ICJGaXgiKSkKIAkJCQlmb3IgKGhlYWQgPSBDTFVTVF9GSVJTVDsgaGVhZCA8
IGJvb3QtPk51bUNsdXN0ZXJzOyBoZWFkKyspCiAJCQkJCWlmIChmYXRbaGVh
ZF0ubmV4dCA9PSBDTFVTVF9GUkVFKSB7CmRpZmYgLXJ1IGZzY2tfbXNkb3Nm
cy5vcmlnL2ZzY2tfbXNkb3Nmcy44IGZzY2tfbXNkb3Nmcy9mc2NrX21zZG9z
ZnMuOAotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZnNja19tc2Rvc2ZzLjgJMjAx
MC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tfbXNk
b3Nmcy9mc2NrX21zZG9zZnMuOAkyMDEwLTAxLTA2IDE2OjAzOjI5LjAwMDAw
MDAwMCArMDAwMApAQCAtMTEsMTMgKzExLDYgQEAKIC5cIiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAogLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
IC5cIiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLlwiIDMuIEFsbCBh
ZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1
c2Ugb2YgdGhpcyBzb2Z0d2FyZQotLlwiICAgIG11c3QgZGlzcGxheSB0aGUg
Zm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLS5cIglUaGlzIHByb2R1Y3Qg
aW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFu
bgotLlwiCWFuZCBXb2xmZ2FuZyBTb2xmcmFuay4KLS5cIiA0LiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycwotLlwiICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZQotLlwiICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgogLlwiCiAuXCIgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9S
CiAuXCIgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpkaWZmIC1ydSBm
c2NrX21zZG9zZnMub3JpZy9tYWluLmMgZnNja19tc2Rvc2ZzL21haW4uYwot
LS0gZnNja19tc2Rvc2ZzLm9yaWcvbWFpbi5jCTIwMTAtMDEtMDYgMTE6MDc6
MjQuMDAwMDAwMDAwICswMDAwCisrKyBmc2NrX21zZG9zZnMvbWFpbi5jCTIw
MTAtMDEtMDYgMTY6MDI6NTQuMDAwMDAwMDAwICswMDAwCkBAIC0xMCwxMyAr
MTAsNiBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp
b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAg
IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoK
LSAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg
YnkgTWFydGluIEh1c2VtYW5uCi0gKglhbmQgV29sZmdhbmcgU29sZnJhbmsu
Ci0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
IEVYUFJFU1MgT1IKICAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMK
QEAgLTQwLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lu
Y2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxl
cnJuby5oPgo=
--0-365583171-1262813495=:15260--
More information about the freebsd-bugs
mailing list