From owner-freebsd-bugs@FreeBSD.ORG Fri Jan 8 20:34:40 2010 Return-Path: Delivered-To: freebsd-bugs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 30416106566B for ; Fri, 8 Jan 2010 20:34:40 +0000 (UTC) (envelope-from giffunip@tutopia.com) Received: from web113517.mail.gq1.yahoo.com (web113517.mail.gq1.yahoo.com [98.136.167.57]) by mx1.freebsd.org (Postfix) with SMTP id 075DB8FC28 for ; Fri, 8 Jan 2010 20:34:39 +0000 (UTC) Received: (qmail 78006 invoked by uid 60001); 8 Jan 2010 20:34:36 -0000 Message-ID: <903235.77647.qm@web113517.mail.gq1.yahoo.com> X-YMail-OSG: o6MeOLYVM1mBzjZwIRQ9ThgTB0OqG7k6OOHlgcNgGqqBJtQ_cgW2w4j1CcER9TCEsT_uBAs1haM8IZTboLfQVfl6R.rl0VLIFTRKnCYBatgheNRddSaJVQRQhASkPJ6Z47dhsVZNirGcPL6gXkF3mkllRqW7iGtgNVfhEJ.WuaVfWDAD7d5rqoGCuSSzYpNWfYId739Bc79o.mwmjX9.B8ekRVJPZYb45ntVjAryOlkBaYhVZYlhq2oQBMjn5zGwBTjOQqM2pnyI.KnPnVYi1dIR4L7fw66hZAWC_In16JT51TCD4tEXhxcBS7lr0PPp8O2lquuUXOv9gggzx4.Aag-- Received: from [190.157.123.47] by web113517.mail.gq1.yahoo.com via HTTP; Fri, 08 Jan 2010 12:34:36 PST X-RocketYMMF: giffunip X-Mailer: YahooMailClassic/9.0.20 YahooMailWebService/0.8.100.260964 Date: Fri, 8 Jan 2010 12:34:36 -0800 (PST) From: "Pedro F. Giffuni" To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-768091124-1262982876=:77647" 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: giffunip@tutopia.com List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jan 2010 20:34:40 -0000 --0-768091124-1262982876=:77647 Content-Type: text/plain; charset=us-ascii (I spoke too soon) Remove unused variable len: This is used by NetBSD in error reports but we don't use it. --0-768091124-1262982876=:77647 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 bXNkb3Nmcy9kaXIuYwkyMDEwLTAxLTA4IDE1OjMwOjAzLjAwMDAwMDAwMCAr MDAwMApAQCAtMTIsMTMgKzEyLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w eXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlz IHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh Y2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdv bGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0 aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRv cnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0 aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgog ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBg YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q TElFRCBXQVJSQU5USUVTCkBAIC00NCw3ICszNyw2IEBACiAjaW5jbHVkZSA8 c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3R5 cGUuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHVuaXN0ZC5o PgogI2luY2x1ZGUgPHRpbWUuaD4KIApAQCAtMjMwLDEyICsyMjIsMjQgQEAK IAliMSA9IGJvb3QtPlJvb3REaXJFbnRzICogMzI7CiAJYjIgPSBib290LT5T ZWNQZXJDbHVzdCAqIGJvb3QtPkJ5dGVzUGVyU2VjOwogCi0JaWYgKCEoYnVm ZmVyID0gbWFsbG9jKGIxID4gYjIgPyBiMSA6IGIyKSkKLQkgICAgfHwgIShk ZWxidWYgPSBtYWxsb2MoYjIpKQotCSAgICB8fCAhKHJvb3REaXIgPSBuZXdE b3NEaXJFbnRyeSgpKSkgewotCQlwZXJyb3IoIk5vIHNwYWNlIGZvciBkaXJl Y3RvcnkiKTsKKwlpZiAoKGJ1ZmZlciA9IG1hbGxvYyggYjEgPiBiMiA/IGIx IDogYjIpKSA9PSBOVUxMKSB7CisJCXBlcnJvcigiTm8gc3BhY2UgZm9yIGRp cmVjdG9yeSBidWZmZXIiKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQorCisJ aWYgKChkZWxidWYgPSBtYWxsb2MoYjIpKSA9PSBOVUxMKSB7CisJCWZyZWUo YnVmZmVyKTsKKwkJcGVycm9yKCJObyBzcGFjZSBmb3IgZGlyZWN0b3J5IGRl bGJ1ZiIpOworCQlyZXR1cm4gRlNGQVRBTDsKKwl9CisKKwlpZiAoKHJvb3RE aXIgPSBuZXdEb3NEaXJFbnRyeSgpKSA9PSBOVUxMKSB7CisJCWZyZWUoYnVm ZmVyKTsKKwkJZnJlZShkZWxidWYpOworCQlwZXJyb3IoIk5vIHNwYWNlIGZv ciBkaXJlY3RvcnkgZW50cnkiKTsKKwkJcmV0dXJuIEZTRkFUQUw7CisJfQor CiAJbWVtc2V0KHJvb3REaXIsIDAsIHNpemVvZiAqcm9vdERpcik7CiAJaWYg KGJvb3QtPmZsYWdzICYgRkFUMzIpIHsKIAkJaWYgKGJvb3QtPlJvb3RDbCA8 IENMVVNUX0ZJUlNUIHx8IGJvb3QtPlJvb3RDbCA+PSBib290LT5OdW1DbHVz dGVycykgewpAQCAtMzY3LDcgKzM3MSw4IEBACiAJCQkJcmV0dXJuIEZTRkFU QUw7CiAJCQlzdGFydCA9IGJ1ZmZlcjsKIAkJfQotCQlpZiAoZW5kY2wgPT0g Y3VyY2wpCisJCS8qIHN0YXJ0Y2wgaXMgPCBDTFVTVF9GSVJTVCBmb3IgIWZh dDMyIHJvb3QgKi8KKwkJaWYgKChlbmRjbCA9PSBjdXJjbCkgfHwgKHN0YXJ0 Y2wgPCBDTFVTVF9GSVJTVCkpCiAJCQlmb3IgKDsgc3RhcnQgPCBlbmQ7IHN0 YXJ0ICs9IDMyKQogCQkJCSpzdGFydCA9IFNMT1RfREVMRVRFRDsKIAkJcmV0 dXJuIEZTRElSTU9EOwpAQCAtMzg1LDcgKzM5MCw3IEBACiAJLyoKIAkgKiBD aGVjayBzaXplIG9uIG9yZGluYXJ5IGZpbGVzCiAJICovCi0JaW50MzJfdCBw aHlzaWNhbFNpemU7CisJdV9pbnQzMl90IHBoeXNpY2FsU2l6ZTsKIAogCWlm IChkaXItPmhlYWQgPT0gQ0xVU1RfRlJFRSkKIAkJcGh5c2ljYWxTaXplID0g MDsKQEAgLTY0NCw3ICs2NDksOCBAQAogCQkJCWRpcmVudC5oZWFkIHw9IChw WzIwXSA8PCAxNikgfCAocFsyMV0gPDwgMjQpOwogCQkJZGlyZW50LnNpemUg PSBwWzI4XSB8IChwWzI5XSA8PCA4KSB8IChwWzMwXSA8PCAxNikgfCAocFsz MV0gPDwgMjQpOwogCQkJaWYgKHZhbGxmbikgewotCQkJCXN0cmNweShkaXJl bnQubG5hbWUsIGxvbmdOYW1lKTsKKwkJCQlzdHJsY3B5KGRpcmVudC5sbmFt ZSwgbG9uZ05hbWUsCisJCQkJICAgIHNpemVvZihkaXJlbnQubG5hbWUpKTsK IAkJCQlsb25nTmFtZVswXSA9ICdcMCc7CiAJCQkJc2hvcnRTdW0gPSAtMTsK IAkJCX0KQEAgLTgzMiw2ICs4MzgsMTAgQEAKIAkJCX0KIAkJCWJvb3QtPk51 bUZpbGVzKys7CiAJCX0KKworCQlpZiAoIShib290LT5mbGFncyAmIEZBVDMy KSAmJiAhZGlyLT5wYXJlbnQpCisJCQlicmVhazsKKwogCQlpZiAobW9kICYg VEhJU01PRCkgewogCQkJbGFzdCAqPSAzMjsKIAkJCWlmIChsc2VlayhmLCBv ZmYsIFNFRUtfU0VUKSAhPSBvZmYKQEAgLTg0Nyw2ICs4NTcsMTkgQEAKIAkJ CQlpbnZsZm4gPyBpbnZsZm4gOiB2YWxsZm4sIHAsCiAJCQkJaW52bGZuID8g aW52Y2wgOiB2YWxjbCwgLTEsIDAsCiAJCQkJZnVsbHBhdGgoZGlyKSwgMSk7 CisKKwkvKiBUaGUgcm9vdCBkaXJlY3Rvcnkgb2Ygbm9uIGZhdDMyIGZpbGVz eXN0ZW1zIGlzIGluIGEgc3BlY2lhbAorCSAqIGFyZWEgYW5kIG1heSBoYXZl IGJlZW4gbW9kaWZpZWQgYWJvdmUgd2l0aG91dCBiZWluZyB3cml0dGVuIG91 dC4KKwkgKi8KKwlpZiAoKG1vZCAmIEZTRElSTU9EKSAmJiAhKGJvb3QtPmZs YWdzICYgRkFUMzIpICYmICFkaXItPnBhcmVudCkgeworCQlsYXN0ICo9IDMy OworCQlpZiAobHNlZWsoZiwgb2ZmLCBTRUVLX1NFVCkgIT0gb2ZmCisJCSAg ICB8fCB3cml0ZShmLCBidWZmZXIsIGxhc3QpICE9IGxhc3QpIHsKKwkJCXBl cnJvcigiVW5hYmxlIHRvIHdyaXRlIGRpcmVjdG9yeSIpOworCQkJcmV0dXJu IEZTRkFUQUw7CisJCX0KKwkJbW9kICY9IH5USElTTU9EOworCX0KIAlyZXR1 cm4gbW9kICYgflRISVNNT0Q7CiB9CiAKQEAgLTkzNiw3ICs5NTksNyBAQAog CQlsZm9mZiA9IGxmY2wgKiBib290LT5DbHVzdGVyU2l6ZQogCQkgICAgKyBi b290LT5DbHVzdGVyT2Zmc2V0ICogYm9vdC0+Qnl0ZXNQZXJTZWM7CiAJCWlm IChsc2Vlayhkb3NmcywgbGZvZmYsIFNFRUtfU0VUKSAhPSBsZm9mZgotCQkg ICAgfHwgcmVhZChkb3NmcywgbGZidWYsIGJvb3QtPkNsdXN0ZXJTaXplKSAh PSBib290LT5DbHVzdGVyU2l6ZSkgeworCQkgICAgfHwgKHNpemVfdClyZWFk KGRvc2ZzLCBsZmJ1ZiwgYm9vdC0+Q2x1c3RlclNpemUpICE9IGJvb3QtPkNs dXN0ZXJTaXplKSB7CiAJCQlwZXJyb3IoImNvdWxkIG5vdCByZWFkIExPU1Qu RElSIik7CiAJCQlyZXR1cm4gRlNGQVRBTDsKIAkJfQpAQCAtOTY2LDcgKzk4 OSw3IEBACiAJcFszMV0gPSAodV9jaGFyKShkLnNpemUgPj4gMjQpOwogCWZh dFtoZWFkXS5mbGFncyB8PSBGQVRfVVNFRDsKIAlpZiAobHNlZWsoZG9zZnMs IGxmb2ZmLCBTRUVLX1NFVCkgIT0gbGZvZmYKLQkgICAgfHwgd3JpdGUoZG9z ZnMsIGxmYnVmLCBib290LT5DbHVzdGVyU2l6ZSkgIT0gYm9vdC0+Q2x1c3Rl clNpemUpIHsKKwkgICAgfHwgKHNpemVfdCl3cml0ZShkb3NmcywgbGZidWYs IGJvb3QtPkNsdXN0ZXJTaXplKSAhPSBib290LT5DbHVzdGVyU2l6ZSkgewog CQlwZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBMT1NULkRJUiIpOwogCQlyZXR1 cm4gRlNGQVRBTDsKIAl9CmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2Rv c2ZzLmggZnNja19tc2Rvc2ZzL2Rvc2ZzLmgKLS0tIGZzY2tfbXNkb3Nmcy5v cmlnL2Rvc2ZzLmgJMjAxMC0wMS0wNiAxMTowNzoyNC4wMDAwMDAwMDAgKzAw MDAKKysrIGZzY2tfbXNkb3Nmcy9kb3Nmcy5oCTIwMTAtMDEtMDcgMjI6MDk6 MTMuMDAwMDAwMDAwICswMDAwCkBAIC0xMiwxMyArMTIsNiBAQAogICogMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp biB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAgIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqCVRoaXMgcHJvZHVj dCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgTWFydGluIEh1c2Vt YW5uCi0gKglhbmQgV29sZmdhbmcgU29sZnJhbmsuCi0gKiA0LiBOZWl0aGVy IHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2Yg aXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3 YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy bWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBBVVRIT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKICAq IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKZGlmZiAtcnUgZnNja19t c2Rvc2ZzLm9yaWcvZXh0LmggZnNja19tc2Rvc2ZzL2V4dC5oCi0tLSBmc2Nr X21zZG9zZnMub3JpZy9leHQuaAkyMDEwLTAxLTA2IDExOjA3OjI0LjAwMDAw MDAwMCArMDAwMAorKysgZnNja19tc2Rvc2ZzL2V4dC5oCTIwMTAtMDEtMDcg MjI6MDk6MTMuMDAwMDAwMDAwICswMDAwCkBAIC0xMCwxMyArMTAsNiBAQAog ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g KiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVh dHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAgIG11c3QgZGlz cGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqCVRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgTWFydGlu IEh1c2VtYW5uCi0gKglhbmQgV29sZmdhbmcgU29sZnJhbmsuCi0gKiA0LiBO ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFt ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8g ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ REVEIEJZIFRIRSBBVVRIT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg T1IKICAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKQEAgLTc3LDEy ICs3MCwxMiBAQAogI2RlZmluZQlGU0RJUk1PRAkyCQkvKiBTb21lIGRpcmVj dG9yeSB3YXMgbW9kaWZpZWQgKi8KICNkZWZpbmUJRlNGQVRNT0QJNAkJLyog VGhlIEZBVCB3YXMgbW9kaWZpZWQgKi8KICNkZWZpbmUJRlNFUlJPUgkJOAkJ LyogU29tZSB1bnJlY292ZXJlZCBlcnJvciByZW1haW5zICovCi0jZGVmaW5l CUZTRkFUQUwJCTE2CQkvKiBTb21lIHVucmVjb3ZlcmFibGUgZXJyb3Igb2Nj dXJlZCAqLworI2RlZmluZQlGU0ZBVEFMCQkxNgkJLyogU29tZSB1bnJlY292 ZXJhYmxlIGVycm9yIG9jY3VycmVkICovCiAjZGVmaW5lIEZTRElSVFkJCTMy CQkvKiBGaWxlIHN5c3RlbSBpcyBkaXJ0eSAqLwogI2RlZmluZSBGU0ZJWEZB VAk2NAkJLyogRml4IGZpbGUgc3lzdGVtIEZBVCAqLwogCiAvKgotICogcmVh ZCBhIGJvb3QgYmxvY2sgaW4gYSBtYWNoaW5lIGluZGVwZW5kZW5kIGZhc2hp b24gYW5kIHRyYW5zbGF0ZQorICogcmVhZCBhIGJvb3QgYmxvY2sgaW4gYSBt YWNoaW5lIGluZGVwZW5kZW50IGZhc2hpb24gYW5kIHRyYW5zbGF0ZQogICog aXQgaW50byBvdXIgc3RydWN0IGJvb3RibG9jay4KICAqLwogaW50IHJlYWRi b290KGludCwgc3RydWN0IGJvb3RibG9jayAqKTsKQEAgLTk2LDEzICs4OSwx MyBAQAogICogUmVhZCBvbmUgb2YgdGhlIEZBVCBjb3BpZXMgYW5kIHJldHVy biBhIHBvaW50ZXIgdG8gdGhlIG5ldwogICogYWxsb2NhdGVkIGFycmF5IGhv bGRpbmcgb3VyIGRlc2NyaXB0aW9uIG9mIGl0LgogICovCi1pbnQgcmVhZGZh dChpbnQsIHN0cnVjdCBib290YmxvY2sgKiwgaW50LCBzdHJ1Y3QgZmF0RW50 cnkgKiopOworaW50IHJlYWRmYXQoaW50LCBzdHJ1Y3QgYm9vdGJsb2NrICos IHVfaW50LCBzdHJ1Y3QgZmF0RW50cnkgKiopOwogCiAvKgogICogQ2hlY2sg dHdvIEZBVCBjb3BpZXMgZm9yIGNvbnNpc3RlbmN5IGFuZCBtZXJnZSBjaGFu Z2VzIGludG8gdGhlCi0gKiBmaXJzdCBpZiBuZWNjZXNzYXJ5LgorICogZmly c3QgaWYgbmVjZXNzYXJ5LgogICovCi1pbnQgY29tcGFyZWZhdChzdHJ1Y3Qg Ym9vdGJsb2NrICosIHN0cnVjdCBmYXRFbnRyeSAqLCBzdHJ1Y3QgZmF0RW50 cnkgKiwgaW50KTsKK2ludCBjb21wYXJlZmF0KHN0cnVjdCBib290YmxvY2sg Kiwgc3RydWN0IGZhdEVudHJ5ICosIHN0cnVjdCBmYXRFbnRyeSAqLCB1X2lu dCk7CiAKIC8qCiAgKiBDaGVjayBhIEZBVApkaWZmIC1ydSBmc2NrX21zZG9z ZnMub3JpZy9mYXQuYyBmc2NrX21zZG9zZnMvZmF0LmMKLS0tIGZzY2tfbXNk b3Nmcy5vcmlnL2ZhdC5jCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAw ICswMDAwCisrKyBmc2NrX21zZG9zZnMvZmF0LmMJMjAxMC0wMS0wNyAyMjox MzozMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTEwLDEzICsxMCw2IEBACiAgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMu IEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5 IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgotICoJVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4gSHVz ZW1hbm4KLSAqCWFuZCBXb2xmZ2FuZyBTb2xmcmFuay4KLSAqIDQuIE5laXRo ZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBv ZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRv cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUKLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIEFVVEhPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgog ICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpAQCAtNDcsMTAgKzQw LDEwIEBACiAjaW5jbHVkZSAiZXh0LmgiCiAjaW5jbHVkZSAiZnN1dGlsLmgi CiAKLXN0YXRpYyBpbnQgY2hlY2tjbG51bShzdHJ1Y3QgYm9vdGJsb2NrICos IGludCwgY2xfdCwgY2xfdCAqKTsKLXN0YXRpYyBpbnQgY2x1c3RkaWZmZXIo Y2xfdCwgY2xfdCAqLCBjbF90ICosIGludCk7CitzdGF0aWMgaW50IGNoZWNr Y2xudW0oc3RydWN0IGJvb3RibG9jayAqLCB1X2ludCwgY2xfdCwgY2xfdCAq KTsKK3N0YXRpYyBpbnQgY2x1c3RkaWZmZXIoY2xfdCwgY2xfdCAqLCBjbF90 ICosIHVfaW50KTsKIHN0YXRpYyBpbnQgdHJ5Y2xlYXIoc3RydWN0IGJvb3Ri bG9jayAqLCBzdHJ1Y3QgZmF0RW50cnkgKiwgY2xfdCwgY2xfdCAqKTsKLXN0 YXRpYyBpbnQgX3JlYWRmYXQoaW50LCBzdHJ1Y3QgYm9vdGJsb2NrICosIGlu dCwgdV9jaGFyICoqKTsKK3N0YXRpYyBpbnQgX3JlYWRmYXQoaW50LCBzdHJ1 Y3QgYm9vdGJsb2NrICosIHVfaW50LCB1X2NoYXIgKiopOwogCiAvKi0KICAq IFRoZSBmaXJzdCAyIEZBVCBlbnRyaWVzIGNvbnRhaW4gcHNldWRvLWNsdXN0 ZXIgbnVtYmVycyB3aXRoIHRoZSBmb2xsb3dpbmcKQEAgLTEzNSw3ICsxMjgs NyBAQAogICogQ2hlY2sgYSBjbHVzdGVyIG51bWJlciBmb3IgdmFsaWQgdmFs dWUKICAqLwogc3RhdGljIGludAotY2hlY2tjbG51bShzdHJ1Y3QgYm9vdGJs b2NrICpib290LCBpbnQgZmF0LCBjbF90IGNsLCBjbF90ICpuZXh0KQorY2hl Y2tjbG51bShzdHJ1Y3QgYm9vdGJsb2NrICpib290LCB1X2ludCBmYXQsIGNs X3QgY2wsIGNsX3QgKm5leHQpCiB7CiAJaWYgKCpuZXh0ID49IChDTFVTVF9S U1JWRCZib290LT5DbHVzdE1hc2spKQogCQkqbmV4dCB8PSB+Ym9vdC0+Q2x1 c3RNYXNrOwpAQCAtMTY2LDcgKzE1OSw3IEBACiAgKiBSZWFkIGEgRkFUIGZy b20gZGlzay4gUmV0dXJucyAxIGlmIHN1Y2Nlc3NmdWwsIDAgb3RoZXJ3aXNl LgogICovCiBzdGF0aWMgaW50Ci1fcmVhZGZhdChpbnQgZnMsIHN0cnVjdCBi b290YmxvY2sgKmJvb3QsIGludCBubywgdV9jaGFyICoqYnVmZmVyKQorX3Jl YWRmYXQoaW50IGZzLCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCB1X2ludCBu bywgdV9jaGFyICoqYnVmZmVyKQogewogCW9mZl90IG9mZjsKIApAQCAtMTg0 LDcgKzE3Nyw3IEBACiAJCWdvdG8gZXJyOwogCX0KIAotCWlmIChyZWFkKGZz LCAqYnVmZmVyLCBib290LT5GQVRzZWNzICogYm9vdC0+Qnl0ZXNQZXJTZWMp CisJaWYgKChzaXplX3QpcmVhZChmcywgKmJ1ZmZlciwgYm9vdC0+RkFUc2Vj cyAqIGJvb3QtPkJ5dGVzUGVyU2VjKQogCSAgICAhPSBib290LT5GQVRzZWNz ICogYm9vdC0+Qnl0ZXNQZXJTZWMpIHsKIAkJcGVycm9yKCJVbmFibGUgdG8g cmVhZCBGQVQiKTsKIAkJZ290byBlcnI7CkBAIC0yMDEsMjQgKzE5NCwyNiBA QAogICogUmVhZCBhIEZBVCBhbmQgZGVjb2RlIGl0IGludG8gaW50ZXJuYWwg Zm9ybWF0CiAgKi8KIGludAotcmVhZGZhdChpbnQgZnMsIHN0cnVjdCBib290 YmxvY2sgKmJvb3QsIGludCBubywgc3RydWN0IGZhdEVudHJ5ICoqZnApCity ZWFkZmF0KGludCBmcywgc3RydWN0IGJvb3RibG9jayAqYm9vdCwgdV9pbnQg bm8sIHN0cnVjdCBmYXRFbnRyeSAqKmZwKQogewogCXN0cnVjdCBmYXRFbnRy eSAqZmF0OwogCXVfY2hhciAqYnVmZmVyLCAqcDsKIAljbF90IGNsOwogCWlu dCByZXQgPSBGU09LOworCXNpemVfdCBsZW47CiAKIAlib290LT5OdW1GcmVl ID0gYm9vdC0+TnVtQmFkID0gMDsKIAogCWlmICghX3JlYWRmYXQoZnMsIGJv b3QsIG5vLCAmYnVmZmVyKSkKIAkJcmV0dXJuIEZTRkFUQUw7CiAJCQotCWZh dCA9IGNhbGxvYyhib290LT5OdW1DbHVzdGVycywgc2l6ZW9mKHN0cnVjdCBm YXRFbnRyeSkpOworCWZhdCA9IG1hbGxvYyhsZW4gPSBib290LT5OdW1DbHVz dGVycyAqIHNpemVvZihzdHJ1Y3QgZmF0RW50cnkpKTsKIAlpZiAoZmF0ID09 IE5VTEwpIHsKIAkJcGVycm9yKCJObyBzcGFjZSBmb3IgRkFUIik7CiAJCWZy ZWUoYnVmZmVyKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQorCSh2b2lkKW1l bXNldChmYXQsIDAsIGxlbik7CiAKIAlpZiAoYnVmZmVyWzBdICE9IGJvb3Qt Pk1lZGlhCiAJICAgIHx8IGJ1ZmZlclsxXSAhPSAweGZmIHx8IGJ1ZmZlclsy XSAhPSAweGZmCkBAIC0zMTEsNyArMzA2LDExIEBACiAJfQogCiAJZnJlZShi dWZmZXIpOwotCSpmcCA9IGZhdDsKKwlpZiAocmV0ICYgRlNGQVRBTCkgewor CQlmcmVlKGZhdCk7CisJCSpmcCA9IE5VTEw7CisJfSBlbHNlCisJCSpmcCA9 IGZhdDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zMzEsNyArMzMwLDcgQEAK IH0KIAogc3RhdGljIGludAotY2x1c3RkaWZmZXIoY2xfdCBjbCwgY2xfdCAq Y3AxLCBjbF90ICpjcDIsIGludCBmYXRudW0pCitjbHVzdGRpZmZlcihjbF90 IGNsLCBjbF90ICpjcDEsIGNsX3QgKmNwMiwgdV9pbnQgZmF0bnVtKQogewog CWlmICgqY3AxID09IENMVVNUX0ZSRUUgfHwgKmNwMSA+PSBDTFVTVF9SU1JW RCkgewogCQlpZiAoKmNwMiA9PSBDTFVTVF9GUkVFIHx8ICpjcDIgPj0gQ0xV U1RfUlNSVkQpIHsKQEAgLTM0NiwxMyArMzQ1LDEzIEBACiAJCQkJfQogCQkJ CXJldHVybiBGU0ZBVEFMOwogCQkJfQotCQkJcHdhcm4oIkNsdXN0ZXIgJXUg aXMgbWFya2VkICVzIGluIEZBVCAwLCAlcyBpbiBGQVQgJWRcbiIsCisJCQlw d2FybigiQ2x1c3RlciAldSBpcyBtYXJrZWQgJXMgaW4gRkFUIDAsICVzIGlu IEZBVCAldVxuIiwKIAkJCSAgICAgIGNsLCByc3J2ZGNsdHlwZSgqY3AxKSwg cnNydmRjbHR5cGUoKmNwMiksIGZhdG51bSk7CiAJCQlpZiAoYXNrKDAsICJV c2UgRkFUIDAncyBlbnRyeSIpKSB7CiAJCQkJKmNwMiA9ICpjcDE7CiAJCQkJ cmV0dXJuIEZTRkFUTU9EOwogCQkJfQotCQkJaWYgKGFzaygwLCAiVXNlIEZB VCAlZCdzIGVudHJ5IiwgZmF0bnVtKSkgeworCQkJaWYgKGFzaygwLCAiVXNl IEZBVCAldSdzIGVudHJ5IiwgZmF0bnVtKSkgewogCQkJCSpjcDEgPSAqY3Ay OwogCQkJCXJldHVybiBGU0ZBVE1PRDsKIAkJCX0KQEAgLTM2MCw3ICszNTks NyBAQAogCQl9CiAJCXB3YXJuKCJDbHVzdGVyICV1IGlzIG1hcmtlZCAlcyBp biBGQVQgMCwgYnV0IGNvbnRpbnVlcyB3aXRoIGNsdXN0ZXIgJXUgaW4gRkFU ICVkXG4iLAogCQkgICAgICBjbCwgcnNydmRjbHR5cGUoKmNwMSksICpjcDIs IGZhdG51bSk7Ci0JCWlmIChhc2soMCwgIlVzZSBjb250aW51YXRpb24gZnJv bSBGQVQgJWQiLCBmYXRudW0pKSB7CisJCWlmIChhc2soMCwgIlVzZSBjb250 aW51YXRpb24gZnJvbSBGQVQgJXUiLCBmYXRudW0pKSB7CiAJCQkqY3AxID0g KmNwMjsKIAkJCXJldHVybiBGU0ZBVE1PRDsKIAkJfQpAQCAtMzcxLDcgKzM3 MCw3IEBACiAJCXJldHVybiBGU0ZBVEFMOwogCX0KIAlpZiAoKmNwMiA9PSBD TFVTVF9GUkVFIHx8ICpjcDIgPj0gQ0xVU1RfUlNSVkQpIHsKLQkJcHdhcm4o IkNsdXN0ZXIgJXUgY29udGludWVzIHdpdGggY2x1c3RlciAldSBpbiBGQVQg MCwgYnV0IGlzIG1hcmtlZCAlcyBpbiBGQVQgJWRcbiIsCisJCXB3YXJuKCJD bHVzdGVyICV1IGNvbnRpbnVlcyB3aXRoIGNsdXN0ZXIgJXUgaW4gRkFUIDAs IGJ1dCBpcyBtYXJrZWQgJXMgaW4gRkFUICV1XG4iLAogCQkgICAgICBjbCwg KmNwMSwgcnNydmRjbHR5cGUoKmNwMiksIGZhdG51bSk7CiAJCWlmIChhc2so MCwgIlVzZSBjb250aW51YXRpb24gZnJvbSBGQVQgMCIpKSB7CiAJCQkqY3Ay ID0gKmNwMTsKQEAgLTM4MywxMyArMzgyLDEzIEBACiAJCX0KIAkJcmV0dXJu IEZTRVJST1I7CiAJfQotCXB3YXJuKCJDbHVzdGVyICV1IGNvbnRpbnVlcyB3 aXRoIGNsdXN0ZXIgJXUgaW4gRkFUIDAsIGJ1dCB3aXRoIGNsdXN0ZXIgJXUg aW4gRkFUICVkXG4iLAorCXB3YXJuKCJDbHVzdGVyICV1IGNvbnRpbnVlcyB3 aXRoIGNsdXN0ZXIgJXUgaW4gRkFUIDAsIGJ1dCB3aXRoIGNsdXN0ZXIgJXUg aW4gRkFUICV1XG4iLAogCSAgICAgIGNsLCAqY3AxLCAqY3AyLCBmYXRudW0p OwogCWlmIChhc2soMCwgIlVzZSBjb250aW51YXRpb24gZnJvbSBGQVQgMCIp KSB7CiAJCSpjcDIgPSAqY3AxOwogCQlyZXR1cm4gRlNGQVRNT0Q7CiAJfQot CWlmIChhc2soMCwgIlVzZSBjb250aW51YXRpb24gZnJvbSBGQVQgJWQiLCBm YXRudW0pKSB7CisJaWYgKGFzaygwLCAiVXNlIGNvbnRpbnVhdGlvbiBmcm9t IEZBVCAldSIsIGZhdG51bSkpIHsKIAkJKmNwMSA9ICpjcDI7CiAJCXJldHVy biBGU0ZBVE1PRDsKIAl9CkBAIC00MDEsOCArNDAwLDggQEAKICAqIGludG8g dGhlIGZpcnN0IG9uZS4KICAqLwogaW50Ci1jb21wYXJlZmF0KHN0cnVjdCBi b290YmxvY2sgKmJvb3QsIHN0cnVjdCBmYXRFbnRyeSAqZmlyc3QsIAotICAg IHN0cnVjdCBmYXRFbnRyeSAqc2Vjb25kLCBpbnQgZmF0bnVtKQorY29tcGFy ZWZhdChzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBzdHJ1Y3QgZmF0RW50cnkg KmZpcnN0LAorICAgIHN0cnVjdCBmYXRFbnRyeSAqc2Vjb25kLCB1X2ludCBm YXRudW0pCiB7CiAJY2xfdCBjbDsKIAlpbnQgcmV0ID0gRlNPSzsKQEAgLTU0 Miw4ICs1NDEsOCBAQAogewogCXVfY2hhciAqYnVmZmVyLCAqcDsKIAljbF90 IGNsOwotCWludCBpOwotCXVfaW50MzJfdCBmYXRzejsKKwl1X2ludCBpOwor CXNpemVfdCBmYXRzejsKIAlvZmZfdCBvZmY7CiAJaW50IHJldCA9IEZTT0s7 CiAKQEAgLTYzMyw3ICs2MzIsNyBAQAogCQlvZmYgPSBib290LT5SZXNTZWN0 b3JzICsgaSAqIGJvb3QtPkZBVHNlY3M7CiAJCW9mZiAqPSBib290LT5CeXRl c1BlclNlYzsKIAkJaWYgKGxzZWVrKGZzLCBvZmYsIFNFRUtfU0VUKSAhPSBv ZmYKLQkJICAgIHx8IHdyaXRlKGZzLCBidWZmZXIsIGZhdHN6KSAhPSBmYXRz eikgeworCQkgICAgfHwgKHNpemVfdCl3cml0ZShmcywgYnVmZmVyLCBmYXRz eikgIT0gZmF0c3opIHsKIAkJCXBlcnJvcigiVW5hYmxlIHRvIHdyaXRlIEZB VCIpOwogCQkJcmV0ID0gRlNGQVRBTDsgLyogUmV0dXJuIGltbWVkaWF0ZWx5 PwkJWFhYICovCiAJCX0KQEAgLTY4MywxNyArNjgyLDYgQEAKIAkJCQlyZXQg PSAxOwogCQkJfQogCQl9Ci0JCWlmIChib290LT5OdW1GcmVlICYmIGZhdFti b290LT5GU05leHRdLm5leHQgIT0gQ0xVU1RfRlJFRSkgewotCQkJcHdhcm4o Ik5leHQgZnJlZSBjbHVzdGVyIGluIEZTSW5mbyBibG9jayAoJXUpIG5vdCBm cmVlXG4iLAotCQkJICAgICAgYm9vdC0+RlNOZXh0KTsKLQkJCWlmIChhc2so MSwgIkZpeCIpKQotCQkJCWZvciAoaGVhZCA9IENMVVNUX0ZJUlNUOyBoZWFk IDwgYm9vdC0+TnVtQ2x1c3RlcnM7IGhlYWQrKykKLQkJCQkJaWYgKGZhdFto ZWFkXS5uZXh0ID09IENMVVNUX0ZSRUUpIHsKLQkJCQkJCWJvb3QtPkZTTmV4 dCA9IGhlYWQ7Ci0JCQkJCQlyZXQgPSAxOwotCQkJCQkJYnJlYWs7Ci0JCQkJ CX0KLQkJfQogCQlpZiAocmV0KQogCQkJbW9kIHw9IHdyaXRlZnNpbmZvKGRv c2ZzLCBib290KTsKIAl9CmRpZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2Zz Y2tfbXNkb3Nmcy44IGZzY2tfbXNkb3Nmcy9mc2NrX21zZG9zZnMuOAotLS0g ZnNja19tc2Rvc2ZzLm9yaWcvZnNja19tc2Rvc2ZzLjgJMjAxMC0wMS0wNiAx MTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tfbXNkb3Nmcy9mc2Nr X21zZG9zZnMuOAkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCArMDAw MApAQCAtMTEsMTMgKzExLDYgQEAKIC5cIiAyLiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly aWdodAogLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKIC5cIiAgICBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLlwiIDMuIEFsbCBhZHZlcnRpc2lu ZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cyBzb2Z0d2FyZQotLlwiICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5n IGFja25vd2xlZGdlbWVudDoKLS5cIglUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotLlwiCWFu ZCBXb2xmZ2FuZyBTb2xmcmFuay4KLS5cIiA0LiBOZWl0aGVyIHRoZSBuYW1l IG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy aWJ1dG9ycwotLlwiICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotLlwi ICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u LgogLlwiCiAuXCIgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg QVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAuXCIgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU TywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpkaWZmIC1ydSBmc2NrX21zZG9z ZnMub3JpZy9tYWluLmMgZnNja19tc2Rvc2ZzL21haW4uYwotLS0gZnNja19t c2Rvc2ZzLm9yaWcvbWFpbi5jCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAw MDAwICswMDAwCisrKyBmc2NrX21zZG9zZnMvbWFpbi5jCTIwMTAtMDEtMDcg MjI6MDk6MTMuMDAwMDAwMDAwICswMDAwCkBAIC0xMCwxMyArMTAsNiBAQAog ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g KiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVh dHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAgIG11c3QgZGlz cGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqCVRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgTWFydGlu IEh1c2VtYW5uCi0gKglhbmQgV29sZmdhbmcgU29sZnJhbmsuCi0gKiA0LiBO ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFt ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8g ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ REVEIEJZIFRIRSBBVVRIT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg T1IKICAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKQEAgLTQwLDcg KzMzLDYgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0 cmluZy5oPgotI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8c3RkaW8u aD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxlcnJuby5oPgo= --0-768091124-1262982876=:77647--