Date: Wed, 6 Jan 2010 21:40:04 GMT From: "Pedro F. Giffuni" <giffunip@tutopia.com> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/142384: sync fsck_msdosfs with OpenBSD Message-ID: <201001062140.o06Le4wN020466@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/142384; it has been noted by GNATS. From: "Pedro F. Giffuni" <giffunip@tutopia.com> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Bruce Evans <brde@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--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001062140.o06Le4wN020466>