From owner-freebsd-bugs@FreeBSD.ORG Fri Jan 8 03:20:05 2010 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C65321065670 for ; Fri, 8 Jan 2010 03:20:05 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 9C1EF8FC16 for ; Fri, 8 Jan 2010 03:20:05 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id o083K5EN007463 for ; Fri, 8 Jan 2010 03:20:05 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id o083K5pb007462; Fri, 8 Jan 2010 03:20:05 GMT (envelope-from gnats) Date: Fri, 8 Jan 2010 03:20:05 GMT Message-Id: <201001080320.o083K5pb007462@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: "Pedro F. Giffuni" Cc: Subject: Re: bin/142384: sync fsck_msdosfs with OpenBSD X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "Pedro F. Giffuni" List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jan 2010 03:20:05 -0000 The following reply was made to PR bin/142384; it has been noted by GNATS. From: "Pedro F. Giffuni" To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org Cc: Subject: Re: bin/142384: sync fsck_msdosfs with OpenBSD Date: Thu, 7 Jan 2010 19:18:44 -0800 (PST) --0-3016821-1262920724=:92513 Content-Type: text/plain; charset=us-ascii A new, and hopefully final, update: -Added a fix to a bug coverity found on NetBSD. -Removed bogus check that attempted to clear the sector after FSInfo in a valid FAT32 filesystem. --0-3016821-1262920724=:92513 Content-Type: application/octet-stream; name=patch-fsck_msdosfs Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=patch-fsck_msdosfs ZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9yaWcvYm9vdC5jIGZzY2tfbXNkb3Nm cy9ib290LmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Jvb3QuYwkyMDEwLTAx LTA2IDExOjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2Zz L2Jvb3QuYwkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCArMDAwMApA 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 ICswMDAwCisrKyBmc2NrX21zZG9zZnMvY2hlY2suYwkyMDEwLTAxLTA3IDIy OjA5OjEzLjAwMDAwMDAwMCArMDAwMApAQCAtMTAsMTMgKzEwLDYgQEAKICAq 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 bXNkb3Nmcy9kaXIuYwkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCAr 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 ZG9zZnMuaAkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCArMDAwMApA QCAtMTIsMTMgKzEyLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3 YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5n IFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5p dmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAq ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElT JycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTCmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2V4dC5oIGZz Y2tfbXNkb3Nmcy9leHQuaAotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZXh0LmgJ MjAxMC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tf bXNkb3Nmcy9leHQuaAkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCAr MDAwMApAQCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w eXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlz IHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh Y2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdv bGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0 aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRv cnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0 aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgog ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBg YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q TElFRCBXQVJSQU5USUVTCkBAIC03NywxMiArNzAsMTIgQEAKICNkZWZpbmUJ RlNESVJNT0QJMgkJLyogU29tZSBkaXJlY3Rvcnkgd2FzIG1vZGlmaWVkICov CiAjZGVmaW5lCUZTRkFUTU9ECTQJCS8qIFRoZSBGQVQgd2FzIG1vZGlmaWVk ICovCiAjZGVmaW5lCUZTRVJST1IJCTgJCS8qIFNvbWUgdW5yZWNvdmVyZWQg ZXJyb3IgcmVtYWlucyAqLwotI2RlZmluZQlGU0ZBVEFMCQkxNgkJLyogU29t ZSB1bnJlY292ZXJhYmxlIGVycm9yIG9jY3VyZWQgKi8KKyNkZWZpbmUJRlNG QVRBTAkJMTYJCS8qIFNvbWUgdW5yZWNvdmVyYWJsZSBlcnJvciBvY2N1cnJl ZCAqLwogI2RlZmluZSBGU0RJUlRZCQkzMgkJLyogRmlsZSBzeXN0ZW0gaXMg ZGlydHkgKi8KICNkZWZpbmUgRlNGSVhGQVQJNjQJCS8qIEZpeCBmaWxlIHN5 c3RlbSBGQVQgKi8KIAogLyoKLSAqIHJlYWQgYSBib290IGJsb2NrIGluIGEg bWFjaGluZSBpbmRlcGVuZGVuZCBmYXNoaW9uIGFuZCB0cmFuc2xhdGUKKyAq IHJlYWQgYSBib290IGJsb2NrIGluIGEgbWFjaGluZSBpbmRlcGVuZGVudCBm YXNoaW9uIGFuZCB0cmFuc2xhdGUKICAqIGl0IGludG8gb3VyIHN0cnVjdCBi b290YmxvY2suCiAgKi8KIGludCByZWFkYm9vdChpbnQsIHN0cnVjdCBib290 YmxvY2sgKik7CkBAIC05NiwxMyArODksMTMgQEAKICAqIFJlYWQgb25lIG9m IHRoZSBGQVQgY29waWVzIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBu ZXcKICAqIGFsbG9jYXRlZCBhcnJheSBob2xkaW5nIG91ciBkZXNjcmlwdGlv biBvZiBpdC4KICAqLwotaW50IHJlYWRmYXQoaW50LCBzdHJ1Y3QgYm9vdGJs b2NrICosIGludCwgc3RydWN0IGZhdEVudHJ5ICoqKTsKK2ludCByZWFkZmF0 KGludCwgc3RydWN0IGJvb3RibG9jayAqLCB1X2ludCwgc3RydWN0IGZhdEVu dHJ5ICoqKTsKIAogLyoKICAqIENoZWNrIHR3byBGQVQgY29waWVzIGZvciBj b25zaXN0ZW5jeSBhbmQgbWVyZ2UgY2hhbmdlcyBpbnRvIHRoZQotICogZmly c3QgaWYgbmVjY2Vzc2FyeS4KKyAqIGZpcnN0IGlmIG5lY2Vzc2FyeS4KICAq LwotaW50IGNvbXBhcmVmYXQoc3RydWN0IGJvb3RibG9jayAqLCBzdHJ1Y3Qg ZmF0RW50cnkgKiwgc3RydWN0IGZhdEVudHJ5ICosIGludCk7CitpbnQgY29t cGFyZWZhdChzdHJ1Y3QgYm9vdGJsb2NrICosIHN0cnVjdCBmYXRFbnRyeSAq LCBzdHJ1Y3QgZmF0RW50cnkgKiwgdV9pbnQpOwogCiAvKgogICogQ2hlY2sg YSBGQVQKZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9yaWcvZmF0LmMgZnNja19t c2Rvc2ZzL2ZhdC5jCi0tLSBmc2NrX21zZG9zZnMub3JpZy9mYXQuYwkyMDEw LTAxLTA2IDExOjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rv c2ZzL2ZhdC5jCTIwMTAtMDEtMDcgMjI6MTM6MzEuMDAwMDAwMDAwICswMDAw CkBAIC0xMCwxMyArMTAsNiBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGlu IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0 ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29m dHdhcmUKLSAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25v d2xlZGdlbWVudDoKLSAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2Fy ZSBkZXZlbG9wZWQgYnkgTWFydGluIEh1c2VtYW5uCi0gKglhbmQgV29sZmdh bmcgU29sZnJhbmsuCi0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBV bml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwot ICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1 Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0 IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1JTIGBgQVMg SVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKICAqIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE IFdBUlJBTlRJRVMKQEAgLTQ3LDEwICs0MCwxMCBAQAogI2luY2x1ZGUgImV4 dC5oIgogI2luY2x1ZGUgImZzdXRpbC5oIgogCi1zdGF0aWMgaW50IGNoZWNr Y2xudW0oc3RydWN0IGJvb3RibG9jayAqLCBpbnQsIGNsX3QsIGNsX3QgKik7 Ci1zdGF0aWMgaW50IGNsdXN0ZGlmZmVyKGNsX3QsIGNsX3QgKiwgY2xfdCAq LCBpbnQpOworc3RhdGljIGludCBjaGVja2NsbnVtKHN0cnVjdCBib290Ymxv Y2sgKiwgdV9pbnQsIGNsX3QsIGNsX3QgKik7CitzdGF0aWMgaW50IGNsdXN0 ZGlmZmVyKGNsX3QsIGNsX3QgKiwgY2xfdCAqLCB1X2ludCk7CiBzdGF0aWMg aW50IHRyeWNsZWFyKHN0cnVjdCBib290YmxvY2sgKiwgc3RydWN0IGZhdEVu dHJ5ICosIGNsX3QsIGNsX3QgKik7Ci1zdGF0aWMgaW50IF9yZWFkZmF0KGlu dCwgc3RydWN0IGJvb3RibG9jayAqLCBpbnQsIHVfY2hhciAqKik7CitzdGF0 aWMgaW50IF9yZWFkZmF0KGludCwgc3RydWN0IGJvb3RibG9jayAqLCB1X2lu dCwgdV9jaGFyICoqKTsKIAogLyotCiAgKiBUaGUgZmlyc3QgMiBGQVQgZW50 cmllcyBjb250YWluIHBzZXVkby1jbHVzdGVyIG51bWJlcnMgd2l0aCB0aGUg Zm9sbG93aW5nCkBAIC0xMzUsNyArMTI4LDcgQEAKICAqIENoZWNrIGEgY2x1 c3RlciBudW1iZXIgZm9yIHZhbGlkIHZhbHVlCiAgKi8KIHN0YXRpYyBpbnQK LWNoZWNrY2xudW0oc3RydWN0IGJvb3RibG9jayAqYm9vdCwgaW50IGZhdCwg Y2xfdCBjbCwgY2xfdCAqbmV4dCkKK2NoZWNrY2xudW0oc3RydWN0IGJvb3Ri bG9jayAqYm9vdCwgdV9pbnQgZmF0LCBjbF90IGNsLCBjbF90ICpuZXh0KQog ewogCWlmICgqbmV4dCA+PSAoQ0xVU1RfUlNSVkQmYm9vdC0+Q2x1c3RNYXNr KSkKIAkJKm5leHQgfD0gfmJvb3QtPkNsdXN0TWFzazsKQEAgLTE2Niw3ICsx NTksNyBAQAogICogUmVhZCBhIEZBVCBmcm9tIGRpc2suIFJldHVybnMgMSBp ZiBzdWNjZXNzZnVsLCAwIG90aGVyd2lzZS4KICAqLwogc3RhdGljIGludAot X3JlYWRmYXQoaW50IGZzLCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBpbnQg bm8sIHVfY2hhciAqKmJ1ZmZlcikKK19yZWFkZmF0KGludCBmcywgc3RydWN0 IGJvb3RibG9jayAqYm9vdCwgdV9pbnQgbm8sIHVfY2hhciAqKmJ1ZmZlcikK IHsKIAlvZmZfdCBvZmY7CiAKQEAgLTE4NCw3ICsxNzcsNyBAQAogCQlnb3Rv IGVycjsKIAl9CiAKLQlpZiAocmVhZChmcywgKmJ1ZmZlciwgYm9vdC0+RkFU c2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2VjKQorCWlmICgoc2l6ZV90KXJlYWQo ZnMsICpidWZmZXIsIGJvb3QtPkZBVHNlY3MgKiBib290LT5CeXRlc1BlclNl YykKIAkgICAgIT0gYm9vdC0+RkFUc2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2Vj KSB7CiAJCXBlcnJvcigiVW5hYmxlIHRvIHJlYWQgRkFUIik7CiAJCWdvdG8g ZXJyOwpAQCAtMjAxLDI0ICsxOTQsMjYgQEAKICAqIFJlYWQgYSBGQVQgYW5k IGRlY29kZSBpdCBpbnRvIGludGVybmFsIGZvcm1hdAogICovCiBpbnQKLXJl YWRmYXQoaW50IGZzLCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBpbnQgbm8s IHN0cnVjdCBmYXRFbnRyeSAqKmZwKQorcmVhZGZhdChpbnQgZnMsIHN0cnVj dCBib290YmxvY2sgKmJvb3QsIHVfaW50IG5vLCBzdHJ1Y3QgZmF0RW50cnkg KipmcCkKIHsKIAlzdHJ1Y3QgZmF0RW50cnkgKmZhdDsKIAl1X2NoYXIgKmJ1 ZmZlciwgKnA7CiAJY2xfdCBjbDsKIAlpbnQgcmV0ID0gRlNPSzsKKwlzaXpl X3QgbGVuOwogCiAJYm9vdC0+TnVtRnJlZSA9IGJvb3QtPk51bUJhZCA9IDA7 CiAKIAlpZiAoIV9yZWFkZmF0KGZzLCBib290LCBubywgJmJ1ZmZlcikpCiAJ CXJldHVybiBGU0ZBVEFMOwogCQkKLQlmYXQgPSBjYWxsb2MoYm9vdC0+TnVt Q2x1c3RlcnMsIHNpemVvZihzdHJ1Y3QgZmF0RW50cnkpKTsKKwlmYXQgPSBt YWxsb2MobGVuID0gYm9vdC0+TnVtQ2x1c3RlcnMgKiBzaXplb2Yoc3RydWN0 IGZhdEVudHJ5KSk7CiAJaWYgKGZhdCA9PSBOVUxMKSB7CiAJCXBlcnJvcigi Tm8gc3BhY2UgZm9yIEZBVCIpOwogCQlmcmVlKGJ1ZmZlcik7CiAJCXJldHVy biBGU0ZBVEFMOwogCX0KKwkodm9pZCltZW1zZXQoZmF0LCAwLCBsZW4pOwog CiAJaWYgKGJ1ZmZlclswXSAhPSBib290LT5NZWRpYQogCSAgICB8fCBidWZm ZXJbMV0gIT0gMHhmZiB8fCBidWZmZXJbMl0gIT0gMHhmZgpAQCAtMzExLDcg KzMwNiwxMSBAQAogCX0KIAogCWZyZWUoYnVmZmVyKTsKLQkqZnAgPSBmYXQ7 CisJaWYgKHJldCAmIEZTRkFUQUwpIHsKKwkJZnJlZShmYXQpOworCQkqZnAg PSBOVUxMOworCX0gZWxzZQorCQkqZnAgPSBmYXQ7CiAJcmV0dXJuIHJldDsK IH0KIApAQCAtMzMxLDcgKzMzMCw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNs dXN0ZGlmZmVyKGNsX3QgY2wsIGNsX3QgKmNwMSwgY2xfdCAqY3AyLCBpbnQg ZmF0bnVtKQorY2x1c3RkaWZmZXIoY2xfdCBjbCwgY2xfdCAqY3AxLCBjbF90 ICpjcDIsIHVfaW50IGZhdG51bSkKIHsKIAlpZiAoKmNwMSA9PSBDTFVTVF9G UkVFIHx8ICpjcDEgPj0gQ0xVU1RfUlNSVkQpIHsKIAkJaWYgKCpjcDIgPT0g Q0xVU1RfRlJFRSB8fCAqY3AyID49IENMVVNUX1JTUlZEKSB7CkBAIC0zNDYs MTMgKzM0NSwxMyBAQAogCQkJCX0KIAkJCQlyZXR1cm4gRlNGQVRBTDsKIAkJ CX0KLQkJCXB3YXJuKCJDbHVzdGVyICV1IGlzIG1hcmtlZCAlcyBpbiBGQVQg MCwgJXMgaW4gRkFUICVkXG4iLAorCQkJcHdhcm4oIkNsdXN0ZXIgJXUgaXMg bWFya2VkICVzIGluIEZBVCAwLCAlcyBpbiBGQVQgJXVcbiIsCiAJCQkgICAg ICBjbCwgcnNydmRjbHR5cGUoKmNwMSksIHJzcnZkY2x0eXBlKCpjcDIpLCBm YXRudW0pOwogCQkJaWYgKGFzaygwLCAiVXNlIEZBVCAwJ3MgZW50cnkiKSkg ewogCQkJCSpjcDIgPSAqY3AxOwogCQkJCXJldHVybiBGU0ZBVE1PRDsKIAkJ CX0KLQkJCWlmIChhc2soMCwgIlVzZSBGQVQgJWQncyBlbnRyeSIsIGZhdG51 bSkpIHsKKwkJCWlmIChhc2soMCwgIlVzZSBGQVQgJXUncyBlbnRyeSIsIGZh dG51bSkpIHsKIAkJCQkqY3AxID0gKmNwMjsKIAkJCQlyZXR1cm4gRlNGQVRN T0Q7CiAJCQl9CkBAIC0zNjAsNyArMzU5LDcgQEAKIAkJfQogCQlwd2Fybigi Q2x1c3RlciAldSBpcyBtYXJrZWQgJXMgaW4gRkFUIDAsIGJ1dCBjb250aW51 ZXMgd2l0aCBjbHVzdGVyICV1IGluIEZBVCAlZFxuIiwKIAkJICAgICAgY2ws IHJzcnZkY2x0eXBlKCpjcDEpLCAqY3AyLCBmYXRudW0pOwotCQlpZiAoYXNr KDAsICJVc2UgY29udGludWF0aW9uIGZyb20gRkFUICVkIiwgZmF0bnVtKSkg eworCQlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9uIGZyb20gRkFUICV1 IiwgZmF0bnVtKSkgewogCQkJKmNwMSA9ICpjcDI7CiAJCQlyZXR1cm4gRlNG QVRNT0Q7CiAJCX0KQEAgLTM3MSw3ICszNzAsNyBAQAogCQlyZXR1cm4gRlNG QVRBTDsKIAl9CiAJaWYgKCpjcDIgPT0gQ0xVU1RfRlJFRSB8fCAqY3AyID49 IENMVVNUX1JTUlZEKSB7Ci0JCXB3YXJuKCJDbHVzdGVyICV1IGNvbnRpbnVl cyB3aXRoIGNsdXN0ZXIgJXUgaW4gRkFUIDAsIGJ1dCBpcyBtYXJrZWQgJXMg aW4gRkFUICVkXG4iLAorCQlwd2FybigiQ2x1c3RlciAldSBjb250aW51ZXMg d2l0aCBjbHVzdGVyICV1IGluIEZBVCAwLCBidXQgaXMgbWFya2VkICVzIGlu IEZBVCAldVxuIiwKIAkJICAgICAgY2wsICpjcDEsIHJzcnZkY2x0eXBlKCpj cDIpLCBmYXRudW0pOwogCQlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9u IGZyb20gRkFUIDAiKSkgewogCQkJKmNwMiA9ICpjcDE7CkBAIC0zODMsMTMg KzM4MiwxMyBAQAogCQl9CiAJCXJldHVybiBGU0VSUk9SOwogCX0KLQlwd2Fy bigiQ2x1c3RlciAldSBjb250aW51ZXMgd2l0aCBjbHVzdGVyICV1IGluIEZB VCAwLCBidXQgd2l0aCBjbHVzdGVyICV1IGluIEZBVCAlZFxuIiwKKwlwd2Fy bigiQ2x1c3RlciAldSBjb250aW51ZXMgd2l0aCBjbHVzdGVyICV1IGluIEZB VCAwLCBidXQgd2l0aCBjbHVzdGVyICV1IGluIEZBVCAldVxuIiwKIAkgICAg ICBjbCwgKmNwMSwgKmNwMiwgZmF0bnVtKTsKIAlpZiAoYXNrKDAsICJVc2Ug Y29udGludWF0aW9uIGZyb20gRkFUIDAiKSkgewogCQkqY3AyID0gKmNwMTsK IAkJcmV0dXJuIEZTRkFUTU9EOwogCX0KLQlpZiAoYXNrKDAsICJVc2UgY29u dGludWF0aW9uIGZyb20gRkFUICVkIiwgZmF0bnVtKSkgeworCWlmIChhc2so MCwgIlVzZSBjb250aW51YXRpb24gZnJvbSBGQVQgJXUiLCBmYXRudW0pKSB7 CiAJCSpjcDEgPSAqY3AyOwogCQlyZXR1cm4gRlNGQVRNT0Q7CiAJfQpAQCAt NDAxLDggKzQwMCw4IEBACiAgKiBpbnRvIHRoZSBmaXJzdCBvbmUuCiAgKi8K IGludAotY29tcGFyZWZhdChzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBzdHJ1 Y3QgZmF0RW50cnkgKmZpcnN0LCAKLSAgICBzdHJ1Y3QgZmF0RW50cnkgKnNl Y29uZCwgaW50IGZhdG51bSkKK2NvbXBhcmVmYXQoc3RydWN0IGJvb3RibG9j ayAqYm9vdCwgc3RydWN0IGZhdEVudHJ5ICpmaXJzdCwKKyAgICBzdHJ1Y3Qg ZmF0RW50cnkgKnNlY29uZCwgdV9pbnQgZmF0bnVtKQogewogCWNsX3QgY2w7 CiAJaW50IHJldCA9IEZTT0s7CkBAIC01NDIsOCArNTQxLDggQEAKIHsKIAl1 X2NoYXIgKmJ1ZmZlciwgKnA7CiAJY2xfdCBjbDsKLQlpbnQgaTsKLQl1X2lu dDMyX3QgZmF0c3o7CisJdV9pbnQgaTsKKwlzaXplX3QgZmF0c3o7CiAJb2Zm X3Qgb2ZmOwogCWludCByZXQgPSBGU09LOwogCkBAIC02MzMsNyArNjMyLDcg QEAKIAkJb2ZmID0gYm9vdC0+UmVzU2VjdG9ycyArIGkgKiBib290LT5GQVRz ZWNzOwogCQlvZmYgKj0gYm9vdC0+Qnl0ZXNQZXJTZWM7CiAJCWlmIChsc2Vl ayhmcywgb2ZmLCBTRUVLX1NFVCkgIT0gb2ZmCi0JCSAgICB8fCB3cml0ZShm cywgYnVmZmVyLCBmYXRzeikgIT0gZmF0c3opIHsKKwkJICAgIHx8IChzaXpl X3Qpd3JpdGUoZnMsIGJ1ZmZlciwgZmF0c3opICE9IGZhdHN6KSB7CiAJCQlw ZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBGQVQiKTsKIAkJCXJldCA9IEZTRkFU QUw7IC8qIFJldHVybiBpbW1lZGlhdGVseT8JCVhYWCAqLwogCQl9CkBAIC02 ODMsMTcgKzY4Miw2IEBACiAJCQkJcmV0ID0gMTsKIAkJCX0KIAkJfQotCQlp ZiAoYm9vdC0+TnVtRnJlZSAmJiBmYXRbYm9vdC0+RlNOZXh0XS5uZXh0ICE9 IENMVVNUX0ZSRUUpIHsKLQkJCXB3YXJuKCJOZXh0IGZyZWUgY2x1c3RlciBp biBGU0luZm8gYmxvY2sgKCV1KSBub3QgZnJlZVxuIiwKLQkJCSAgICAgIGJv b3QtPkZTTmV4dCk7Ci0JCQlpZiAoYXNrKDEsICJGaXgiKSkKLQkJCQlmb3Ig KGhlYWQgPSBDTFVTVF9GSVJTVDsgaGVhZCA8IGJvb3QtPk51bUNsdXN0ZXJz OyBoZWFkKyspCi0JCQkJCWlmIChmYXRbaGVhZF0ubmV4dCA9PSBDTFVTVF9G UkVFKSB7Ci0JCQkJCQlib290LT5GU05leHQgPSBoZWFkOwotCQkJCQkJcmV0 ID0gMTsKLQkJCQkJCWJyZWFrOwotCQkJCQl9Ci0JCX0KIAkJaWYgKHJldCkK IAkJCW1vZCB8PSB3cml0ZWZzaW5mbyhkb3NmcywgYm9vdCk7CiAJfQpkaWZm IC1ydSBmc2NrX21zZG9zZnMub3JpZy9mc2NrX21zZG9zZnMuOCBmc2NrX21z ZG9zZnMvZnNja19tc2Rvc2ZzLjgKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Zz Y2tfbXNkb3Nmcy44CTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICsw MDAwCisrKyBmc2NrX21zZG9zZnMvZnNja19tc2Rvc2ZzLjgJMjAxMC0wMS0w NyAyMjowOToxMy4wMDAwMDAwMDAgKzAwMDAKQEAgLTExLDEzICsxMSw2IEBA CiAuXCIgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKIC5cIiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4gdGhlCiAuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv bi4KLS5cIiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLS5cIiAgICBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0u XCIJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSBNYXJ0aW4gSHVzZW1hbm4KLS5cIglhbmQgV29sZmdhbmcgU29sZnJhbmsu Ci0uXCIgNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBu b3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLS5cIiAgICBtYXkg YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUKLS5cIiAgICB3aXRob3V0IHNwZWNpZmlj IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KIC5cIgogLlwiIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUlMgYGBBUyBJUycnIEFO RCBBTlkgRVhQUkVTUyBPUgogLlwiIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB TlRJRVMKZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9yaWcvbWFpbi5jIGZzY2tf bXNkb3Nmcy9tYWluLmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL21haW4uYwky MDEwLTAxLTA2IDExOjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19t c2Rvc2ZzL21haW4uYwkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCAr MDAwMApAQCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w eXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlz IHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh Y2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdv bGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0 aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRv cnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0 aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgog ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBg YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q TElFRCBXQVJSQU5USUVTCkBAIC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRl IDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxj dHlwZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3Rk Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4K --0-3016821-1262920724=:92513--