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