From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 06 05:53:03 2014 Received: (at submit) by debbugs.gnu.org; 6 Apr 2014 09:53:03 +0000 Received: from localhost ([127.0.0.1]:37429 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WWjl8-0006m2-1l for submit@debbugs.gnu.org; Sun, 06 Apr 2014 05:53:03 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57086) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WWjl0-0006kp-4i for submit@debbugs.gnu.org; Sun, 06 Apr 2014 05:52:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WWjks-0006aM-B7 for submit@debbugs.gnu.org; Sun, 06 Apr 2014 05:52:53 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: ** X-Spam-Status: No, score=2.1 required=5.0 tests=BAYES_50, RCVD_IN_BL_SPAMCOP_NET autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:33898) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WWjks-0006aI-7S for submit@debbugs.gnu.org; Sun, 06 Apr 2014 05:52:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WWjkl-000801-PZ for bug-grep@gnu.org; Sun, 06 Apr 2014 05:52:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WWjkf-0006Yc-Bn for bug-grep@gnu.org; Sun, 06 Apr 2014 05:52:39 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:32944) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WWjke-0006Xt-DA for bug-grep@gnu.org; Sun, 06 Apr 2014 05:52:33 -0400 Received: from [10.120.1.62] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s369qG7l031493 for ; Sun, 6 Apr 2014 18:52:17 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Sun, 06 Apr 2014 18:52:17 +0900 From: Norihiro Tanaka To: bug-grep@gnu.org Subject: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand Message-Id: <20140406185213.BAA9.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_531AAC47000000000212_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -2.8 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) --------_531AAC47000000000212_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit If dfaexec() runs in non-UTF8 locales, length and wide character representation are checked for all characters of a line in a input string. However, if matched early in the line, results for remaining characters are wasted. This patch checks multibyte characters on demand. It enables to accomplish to speed-up for matched early and reduce required memories. Norihiro --------_531AAC47000000000212_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSA3NGM4ZTNkMThjYTE0ZWE1MDJkYTYzZjM0YmQ3Zjk3ZmNkNmZmZDY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBTYXQsIDI5IE1hciAyMDE0IDIwOjU5OjUzICswOTAwClN1YmplY3Q6IFtQQVRDSF0gZ3Jl cDogc3BlZWQtdXAgb2YgREZBIGJ5IGNoZWNraW5nIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIG9uCiBk ZW1hbmQKCklmIGRmYWV4ZWMoKSBydW5zIGluIG5vbi1VVEY4IGxvY2FsZXMsIGxlbmd0aCBhbmQg d2lkZSBjaGFyYWN0ZXIKcmVwcmVzZW50YXRpb24gYXJlIGNoZWNrZWQgZm9yIGFsbCBjaGFyYWN0 ZXJzIG9mIGEgbGluZSBpbiBhIGlucHV0CnN0cmluZy4gIEhvd2V2ZXIsIGlmIG1hdGNoZWQgZWFy bHkgaW4gdGhlIGxpbmUsIHJlc3VsdHMgZm9yIHJlbWFpbmluZwpjaGFyYWN0ZXJzIGFyZSB3YXN0 ZWQuCgpUaGlzIHBhdGNoIGNoZWNrcyBtdWx0aWJ5dGUgY2hhcmFjdGVycyBvbiBkZW1hbmQuICBJ dCBlbmFibGVzIHRvCmFjY29tcGxpc2ggdG8gc3BlZWQtdXAgZm9yIG1hdGNoZWQgZWFybHkgYW5k IHJlZHVjZSByZXF1aXJlZCBtZW1vcmllcy4KCiogc3JjL2RmYS5jIChzdHJ1Y3QgZGZhKTogUmVt b3ZlIG1lbWJlcnMuCihidWZfYmVnaW4sIGJ1Zl9lbmQpOiBObyBsb25nZXIgdGhleSBhcmUgdXNl ZC4gIFJlbW92ZSB0aGVtLgooU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RBVEUpOiBOb3cs IHRoZSBjb250ZW50IG9mIHRoZSBtYWNybyBpcwpleHRlbmRlZCBpbiBkZmFleGVjKCkuCih0cmFu c2l0X3N0YXRlX3NpbmdsZWJ5dGUpOiBzZW0gY2hlY2sgaXMgcmVtb3ZlZC4KKG1hdGNoX2FueWNo YXIpOiBEb2Vzbid0IHVzZSBgbWJsZW5fYnVmIGFuZCcgYGlucHV0d2NzJy4KKG1hdGNoX21iX2No YXJzZXQpOiBEb2Vzbid0IHVzZSBgbWJsZW5fYnVmIGFuZCcgYGlucHV0d2NzJy4KKGNoZWNrX21h dGNoaW5nX3dpdGhfbXVsdGlieXRlX29wcyk6IE1vZGlmeSBhcmd1bWVudHMuCih0cmFuc2l0X3N0 YXRlX2NvbnN1bWVfMWNoYXIpOiBNb2RpZnkgYXJndW1lbnRzLgoodHJhbnNpdF9zdGF0ZSk6IERv ZXNuJ3QgdXNlIGBtYmxlbl9idWYgYW5kJyBgaW5wdXR3Y3MnLgoocHJlcGFyZV93Y19idWYpOiBS ZW1vdmUgaXQuCihkZmFleGVjKTogRG9lc24ndCB1c2UgYG1ibGVuX2J1ZiBhbmQnIGBpbnB1dHdj cycuCi0tLQogc3JjL2RmYS5jIHwgMjA5ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0 aW9ucygrKSwgMTQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9kZmEuYyBiL3NyYy9k ZmEuYwppbmRleCBlZjVjOGE5Li5lYTk1NWJmIDEwMDY0NAotLS0gYS9zcmMvZGZhLmMKKysrIGIv c3JjL2RmYS5jCkBAIC00MjAsMjQgKzQyMCw2IEBAIHN0cnVjdCBkZmEKICAgc3RydWN0IGRmYW11 c3QgKm11c3RzOyAgICAgICAgLyogTGlzdCBvZiBzdHJpbmdzLCBhdCBsZWFzdCBvbmUgb2Ygd2hp Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMga25vd24gdG8gYXBwZWFy IGluIGFueSByLmUuIG1hdGNoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBkZmEuICAqLwotICB1bnNpZ25lZCBjaGFyICptYmxlbl9idWY7ICAgICAvKiBDb3JyZXNw b25kIHRvIHRoZSBpbnB1dCBidWZmZXIgaW4gZGZhZXhlYy4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRWFjaCBlbGVtZW50IHN0b3JlcyB0aGUgbnVtYmVyIG9mIHJlbWFpbmlu ZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyBvZiB0aGUgY29ycmVz cG9uZGluZyBtdWx0aWJ5dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh cmFjdGVyIGluIHRoZSBpbnB1dCBzdHJpbmcuICBBIGVsZW1lbnQncwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyAwIGlmIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJh Y3RlciBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUtYnl0ZS4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgaW5wdXQgOiAnYScsIDxt YigwKT4sIDxtYigxKT4sIDxtYigyKT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWJsZW5fYnVmICAgOiAgMCwgICAgICAgMywgICAgICAgMiwgICAgICAgMQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgc2l6ZV90IG5tYmxlbl9idWY7ICAgICAgICAg ICAgLyogQWxsb2NhdGVkIHNpemUgb2YgbWJsZW5fYnVmLiAgKi8KLSAgd2NoYXJfdCAqaW5wdXR3 Y3M7ICAgICAgICAgICAgLyogV2lkZSBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlu cHV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBpbiBkZmFleGVj LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoaXMg YXJyYXkgaXMgdGhlIHNhbWUgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlIGxlbmd0aCBvZiBpbnB1dCBzdHJpbmcgKGNoYXIgYXJyYXkpLgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnB1dHN0cmluZ1tpXSBpcyBhIHNpbmdsZS1ieXRlIGNoYXIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBmaXJzdCBieXRlIG9m IGEgbXVsdGlieXRlIGNoYXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu cHV0d2NzW2ldIGlzIHRoZSBjb2RlcG9pbnQuICAqLwotICBzaXplX3QgbmlucHV0d2NzOyAgICAg ICAgICAgICAvKiBBbGxvY2F0ZWQgbnVtYmVyIG9mIGlucHV0d2NzIGVsZW1lbnRzLiAgKi8KICAg cG9zaXRpb25fc2V0ICptYl9mb2xsb3dzOyAgICAgLyogRm9sbG93IHNldCBhZGRlZCBieSBBTllD SEFSIGFuZC9vciBNQkNTRVQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24g ZGVtYW5kLiAgKi8KICAgaW50ICptYl9tYXRjaF9sZW5zOyAgICAgICAgICAgLyogQXJyYXkgb2Yg bGVuZ3RoIHJlZHVjZWQgYnkgQU5ZQ0hBUiBhbmQvb3IKQEAgLTg3NCw4ICs4NTYsNiBAQCBzdGF0 aWMgaW50IGN1cl9tYl9sZW4gPSAxOyAgICAgIC8qIExlbmd0aCBvZiB0aGUgbXVsdGlieXRlIHJl cHJlc2VudGF0aW9uIG9mCiBzdGF0aWMgbWJzdGF0ZV90IG1iczsgICAgICAgICAgIC8qIG1ic3Rh dGUgZm9yIG1icnRvd2MuICAqLwogc3RhdGljIHdjaGFyX3Qgd2N0b2s7ICAgICAgICAgICAvKiBX aWRlIGNoYXJhY3RlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWJ5dGUgY2hhcmFjdGVyLiAgKi8KLXN0YXRpYyB1 bnNpZ25lZCBjaGFyIGNvbnN0ICpidWZfYmVnaW47ICAvKiByZWZlcmVuY2UgdG8gYmVnaW4gaW4g ZGZhZXhlYy4gICovCi1zdGF0aWMgdW5zaWduZWQgY2hhciBjb25zdCAqYnVmX2VuZDsgICAgLyog cmVmZXJlbmNlIHRvIGVuZCBpbiBkZmFleGVjLiAgKi8KIAogCiAvKiBOb3RlIHRoYXQgY2hhcmFj dGVycyBiZWNvbWUgdW5zaWduZWQgaGVyZS4gICovCkBAIC0yODk4LDI3ICsyODc4LDYgQEAgYnVp bGRfc3RhdGVfemVybyAoc3RydWN0IGRmYSAqZCkKIAogLyogTXVsdGlieXRlIGNoYXJhY3RlciBo YW5kbGluZyBzdWItcm91dGluZXMgZm9yIGRmYWV4ZWMuICAqLwogCi0vKiBUaGUgaW5pdGlhbCBz dGF0ZSBtYXkgZW5jb3VudGVyIGEgYnl0ZSB3aGljaCBpcyBub3QgYSBzaW5nbGUgYnl0ZSBjaGFy YWN0ZXIKLSAgIG5vciB0aGUgZmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIuICBC dXQgaXQgaXMgaW5jb3JyZWN0IGZvciB0aGUKLSAgIGluaXRpYWwgc3RhdGUgdG8gYWNjZXB0IHN1 Y2ggYSBieXRlLiAgRm9yIGV4YW1wbGUsIGluIFNoaWZ0IEpJUyB0aGUgcmVndWxhcgotICAgZXhw cmVzc2lvbiAiXFwiIGFjY2VwdHMgdGhlIGNvZGVwb2ludCAweDVjLCBidXQgc2hvdWxkIG5vdCBh Y2NlcHQgdGhlIHNlY29uZAotICAgYnl0ZSBvZiB0aGUgY29kZXBvaW50IDB4ODE1Yy4gIFRoZW4g dGhlIGluaXRpYWwgc3RhdGUgbXVzdCBza2lwIHRoZSBieXRlcwotICAgdGhhdCBhcmUgbm90IGEg c2luZ2xlIGJ5dGUgY2hhcmFjdGVyIG5vciB0aGUgZmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZQot ICAgY2hhcmFjdGVyLiAgKi8KLSNkZWZpbmUgU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RB VEUocywgcCkJCVwKLSAgaWYgKHMgPT0gMCkJCQkJCQlcCi0gICAgewkJCQkJCQlcCi0gICAgICB3 aGlsZSAoZC0+aW5wdXR3Y3NbcCAtIGJ1Zl9iZWdpbl0gPT0gMAkJXAotICAgICAgICAgICAgICYm IGQtPm1ibGVuX2J1ZltwIC0gYnVmX2JlZ2luXSAhPSAwCVwKLSAgICAgICAgICAgICAmJiAodW5z aWduZWQgY2hhciBjb25zdCAqKSBwIDwgYnVmX2VuZCkJXAotICAgICAgICArK3A7CQkJCQkJXAot ICAgICAgaWYgKChjaGFyICopIHAgPj0gZW5kKQkJCQlcCi0gICAgICAgIHsJCQkJCQlcCi0gICAg ICAgICAgKmVuZCA9IHNhdmVkX2VuZDsJCQkJXAotICAgICAgICAgIHJldHVybiBOVUxMOwkJCQkJ XAotICAgICAgICB9CQkJCQkJXAotICAgIH0KLQogc3RhdGljIHZvaWQKIHJlYWxsb2NfdHJhbnNf aWZfbmVjZXNzYXJ5IChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gbmV3X3N0YXRlKQogewpAQCAt Mjk3NSwxNCArMjkzNCw3IEBAIHRyYW5zaXRfc3RhdGVfc2luZ2xlYnl0ZSAoc3RydWN0IGRmYSAq ZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCiAgICAgICAgICAgICB3b3Jr cyA9IDA7CiAgICAgICAgIH0KICAgICAgIGVsc2UgaWYgKHdvcmtzIDwgMCkKLSAgICAgICAgewot ICAgICAgICAgIGlmIChwID09IGJ1Zl9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg IC8qIEF0IHRoZSBtb21lbnQsIGl0IG11c3Qgbm90IGhhcHBlbi4gICovCi0gICAgICAgICAgICAg IGFib3J0ICgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIHdvcmtzID0gMDsKLSAgICAgICAg fQorICAgICAgICB3b3JrcyA9IDA7CiAgICAgICBlbHNlIGlmIChkLT5mYWlsc1t3b3Jrc10pCiAg ICAgICAgIHsKICAgICAgICAgICB3b3JrcyA9IGQtPmZhaWxzW3dvcmtzXVsqcF07CkBAIC0yOTk3 LDE4ICsyOTQ5LDEzIEBAIHRyYW5zaXRfc3RhdGVfc2luZ2xlYnl0ZSAoc3RydWN0IGRmYSAqZCwg c3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCiAgIHJldHVybiBydmFsOwogfQog Ci0vKiBNYXRjaCBhICIuIiBhZ2FpbnN0IHRoZSBjdXJyZW50IGNvbnRleHQuICBidWZfYmVnaW5b SURYXSBpcyB0aGUKLSAgIGN1cnJlbnQgcG9zaXRpb24uICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0 aGUgbWF0Y2gsIGluIGJ5dGVzLgotICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgIi4iLiAg Ki8KKy8qIE1hdGNoIGEgIi4iIGFnYWluc3QgdGhlIGN1cnJlbnQgY29udGV4dC4gIFJldHVybiB0 aGUgbGVuZ3RoIG9mIHRoZQorICAgbWF0Y2gsIGluIGJ5dGVzLiAgUE9TIGlzIHRoZSBwb3NpdGlv biBvZiB0aGUgIi4iLiAgKi8KIHN0YXRpYyBpbnQKLW1hdGNoX2FueWNoYXIgKHN0cnVjdCBkZmEg KmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCittYXRjaF9hbnljaGFy IChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAorICAgICAgICAgICAg ICAgd2NoYXJfdCB3Yywgc2l6ZV90IG1iY2xlbikKIHsKICAgaW50IGNvbnRleHQ7Ci0gIHdjaGFy X3Qgd2M7Ci0gIGludCBtYmNsZW47Ci0KLSAgd2MgPSBkLT5pbnB1dHdjc1tpZHhdOwotICBtYmNs ZW4gPSBNQVggKDEsIGQtPm1ibGVuX2J1ZltpZHhdKTsKIAogICAvKiBDaGVjayBzeW50YXggYml0 cy4gICovCiAgIGlmICh3YyA9PSAod2NoYXJfdCkgZW9sYnl0ZSkKQEAgLTMwMzAsMTYgKzI5Nzcs MTQgQEAgbWF0Y2hfYW55Y2hhciAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHBvc2l0aW9u IHBvcywgc2l6ZV90IGlkeCkKIH0KIAogLyogTWF0Y2ggYSBicmFja2V0IGV4cHJlc3Npb24gYWdh aW5zdCB0aGUgY3VycmVudCBjb250ZXh0LgotICAgYnVmX2JlZ2luW0lEWF0gaXMgdGhlIGN1cnJl bnQgcG9zaXRpb24uCiAgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2gsIGluIGJ5dGVz LgogICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYnJhY2tldCBleHByZXNzaW9uLiAgKi8K IHN0YXRpYyBpbnQKLW1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBz LCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCittYXRjaF9tYl9jaGFyc2V0IChzdHJ1Y3QgZGZh ICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAorICAgICAgICAgICAgICAgICAgY2hhciBj b25zdCAqcCwgd2NoYXJfdCB3Yywgc2l6ZV90IG1hdGNoX2xlbikKIHsKICAgc2l6ZV90IGk7CiAg IGludCBtYXRjaDsgICAgICAgICAgICAgICAvKiBNYXRjaGluZyBzdWNjZWVkZWQuICAqLwotICBp bnQgbWF0Y2hfbGVuOyAgICAgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBjaGFyYWN0ZXIgKG9yIGNv bGxhdGluZyBlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB3aGlj aCB0aGlzIG9wZXJhdG9yIG1hdGNoZXMuICAqLwogICBpbnQgb3BfbGVuOyAgICAgICAgICAgICAg LyogTGVuZ3RoIG9mIHRoZSBvcGVyYXRvci4gICovCiAgIGNoYXIgYnVmZmVyWzEyOF07CiAKQEAg LTMwNDcsOSArMjk5Miw2IEBAIG1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRl X251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCiAgIHN0cnVjdCBtYl9jaGFyX2NsYXNz ZXMgKndvcmtfbWJjOwogCiAgIGludCBjb250ZXh0OwotICB3Y2hhcl90IHdjOyAgICAgICAgICAg ICAgICAgICAvKiBDdXJyZW50IHJlZmVycmluZyBjaGFyYWN0ZXIuICAqLwotCi0gIHdjID0gZC0+ aW5wdXR3Y3NbaWR4XTsKIAogICAvKiBDaGVjayBzeW50YXggYml0cy4gICovCiAgIGlmICh3YyA9 PSAod2NoYXJfdCkgZW9sYnl0ZSkKQEAgLTMwNzAsNyArMzAxMiw2IEBAIG1hdGNoX21iX2NoYXJz ZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgp CiAgIC8qIEFzc2lnbiB0aGUgY3VycmVudCByZWZlcnJpbmcgb3BlcmF0b3IgdG8gd29ya19tYmMu ICAqLwogICB3b3JrX21iYyA9ICYoZC0+bWJjc2V0c1soZC0+bXVsdGlieXRlX3Byb3BbcG9zLmlu ZGV4XSkgPj4gMl0pOwogICBtYXRjaCA9ICF3b3JrX21iYy0+aW52ZXJ0OwotICBtYXRjaF9sZW4g PSBNQVggKDEsIGQtPm1ibGVuX2J1ZltpZHhdKTsKIAogICAvKiBNYXRjaCBpbiByYW5nZSAwLTI1 NT8gICovCiAgIGlmICh3YyA8IE5PVENIQVIgJiYgd29ya19tYmMtPmNzZXQgIT0gLTEKQEAgLTMw ODQsMTQgKzMwMjUsMTQgQEAgbWF0Y2hfbWJfY2hhcnNldCAoc3RydWN0IGRmYSAqZCwgc3RhdGVf bnVtIHMsIHBvc2l0aW9uIHBvcywgc2l6ZV90IGlkeCkKICAgICAgICAgZ290byBjaGFyc2V0X21h dGNoZWQ7CiAgICAgfQogCi0gIHN0cm5jcHkgKGJ1ZmZlciwgKGNoYXIgY29uc3QgKikgYnVmX2Jl Z2luICsgaWR4LCBtYXRjaF9sZW4pOworICBzdHJuY3B5IChidWZmZXIsIHAsIG1hdGNoX2xlbik7 CiAgIGJ1ZmZlclttYXRjaF9sZW5dID0gJ1wwJzsKIAogICAvKiBtYXRjaCB3aXRoIGFuIGVxdWl2 YWxlbmNlIGNsYXNzPyAgKi8KICAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5uZXF1aXZzOyBp KyspCiAgICAgewogICAgICAgb3BfbGVuID0gc3RybGVuICh3b3JrX21iYy0+ZXF1aXZzW2ldKTsK LSAgICAgIHN0cm5jcHkgKGJ1ZmZlciwgKGNoYXIgY29uc3QgKikgYnVmX2JlZ2luICsgaWR4LCBv cF9sZW4pOworICAgICAgc3RybmNweSAoYnVmZmVyLCBwLCBvcF9sZW4pOwogICAgICAgYnVmZmVy W29wX2xlbl0gPSAnXDAnOwogICAgICAgaWYgKHN0cmNvbGwgKHdvcmtfbWJjLT5lcXVpdnNbaV0s IGJ1ZmZlcikgPT0gMCkKICAgICAgICAgewpAQCAtMzEwNCw3ICszMDQ1LDcgQEAgbWF0Y2hfbWJf Y2hhcnNldCAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHBvc2l0aW9uIHBvcywgc2l6ZV90 IGlkeCkKICAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5uY29sbF9lbGVtczsgaSsrKQogICAg IHsKICAgICAgIG9wX2xlbiA9IHN0cmxlbiAod29ya19tYmMtPmNvbGxfZWxlbXNbaV0pOwotICAg ICAgc3RybmNweSAoYnVmZmVyLCAoY2hhciBjb25zdCAqKSBidWZfYmVnaW4gKyBpZHgsIG9wX2xl bik7CisgICAgICBzdHJuY3B5IChidWZmZXIsIHAsIG9wX2xlbik7CiAgICAgICBidWZmZXJbb3Bf bGVuXSA9ICdcMCc7CiAKICAgICAgIGlmIChzdHJjb2xsICh3b3JrX21iYy0+Y29sbF9lbGVtc1tp XSwgYnVmZmVyKSA9PSAwKQpAQCAtMzEzOCwxMiArMzA3OSwxMCBAQCBjaGFyc2V0X21hdGNoZWQ6 CiAgICBhcnJheSB3aGljaCBjb3JyZXNwb25kcyB0byAnZC0+c3RhdGVzW3NdLm1icHMuZWxlbSc7 IGVhY2ggZWxlbWVudCBvZiB0aGUKICAgIGFycmF5IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgYnl0 ZXMgd2l0aCB3aGljaCB0aGUgZWxlbWVudCBjYW4gbWF0Y2guCiAKLSAgICdpZHgnIGlzIHRoZSBp bmRleCBmcm9tIGJ1Zl9iZWdpbiwgYW5kIGl0IGlzIHRoZSBjdXJyZW50IHBvc2l0aW9uCi0gICBp biB0aGUgYnVmZmVyLgotCiAgICBUaGUgY2FsbGVyIE1VU1QgZnJlZSB0aGUgYXJyYXkgd2hpY2gg dGhpcyBmdW5jdGlvbiByZXR1cm4uICAqLwogc3RhdGljIGludCAqCi1jaGVja19tYXRjaGluZ193 aXRoX211bHRpYnl0ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBzaXplX3QgaWR4 KQorY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChzdHJ1Y3QgZGZhICpkLCBzdGF0 ZV9udW0gcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAq cCwgd2NoYXJfdCB3Yywgc2l6ZV90IG1iY2xlbikKIHsKICAgc2l6ZV90IGk7CiAgIGludCAqcmFy cmF5OwpAQCAtMzE1NSwxMCArMzA5NCwxMCBAQCBjaGVja19tYXRjaGluZ193aXRoX211bHRpYnl0 ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBzaXplX3QgaWR4KQogICAgICAgc3dp dGNoIChkLT50b2tlbnNbcG9zLmluZGV4XSkKICAgICAgICAgewogICAgICAgICBjYXNlIEFOWUNI QVI6Ci0gICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfYW55Y2hhciAoZCwgcywgcG9zLCBpZHgp OworICAgICAgICAgIHJhcnJheVtpXSA9IG1hdGNoX2FueWNoYXIgKGQsIHMsIHBvcywgd2MsIG1i Y2xlbik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUJDU0VUOgotICAgICAgICAg IHJhcnJheVtpXSA9IG1hdGNoX21iX2NoYXJzZXQgKGQsIHMsIHBvcywgaWR4KTsKKyAgICAgICAg ICByYXJyYXlbaV0gPSBtYXRjaF9tYl9jaGFyc2V0IChkLCBzLCBwb3MsIHAsIHdjLCBtYmNsZW4p OwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgIGJyZWFrOyAg ICAgICAgICAgICAgICAvKiBjYW5ub3QgaGFwcGVuLiAgKi8KQEAgLTMxNzgsMjIgKzMxMTcsMjIg QEAgY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChzdHJ1Y3QgZGZhICpkLCBzdGF0 ZV9udW0gcywgc2l6ZV90IGlkeCkKIHN0YXRpYyBzdGF0dXNfdHJhbnNpdF9zdGF0ZQogdHJhbnNp dF9zdGF0ZV9jb25zdW1lXzFjaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm1hdGNoX2xlbnMsIGludCAqbWJjbGVuKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IHdjLCBzaXplX3QgbWJjbGVuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm1hdGNoX2xlbnMpCiB7CiAgIHNpemVfdCBp LCBqOwogICBpbnQgazsKICAgc3RhdGVfbnVtIHMxLCBzMjsKLSAgaW50ICp3b3JrX21ibHM7CiAg IHN0YXR1c190cmFuc2l0X3N0YXRlIHJzID0gVFJBTlNJVF9TVEFURV9ET05FOwogCi0gIC8qIENh bGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSAoc2luZ2xlL211bHRpIGJ5dGUpIGNoYXJhY3Rlcgot ICAgICB0byB3aGljaCBwIHBvaW50cy4gICovCi0gICptYmNsZW4gPSBNQVggKDEsIGQtPm1ibGVu X2J1ZlsqcHAgLSBidWZfYmVnaW5dKTsKKyAgLyogQ2hlY2sgKGlucHV0KSBtYXRjaF9sZW5zLCBh bmQgaW5pdGlhbGl6ZSBpZiBpdCBpcyBOVUxMLiAgKi8KKyAgaWYgKG1hdGNoX2xlbnMgPT0gTlVM TCAmJiBkLT5zdGF0ZXNbc10ubWJwcy5uZWxlbSAhPSAwKQorICAgIG1hdGNoX2xlbnMgPSBjaGVj a19tYXRjaGluZ193aXRoX211bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICopICpwcCwg d2MsIG1iY2xlbik7CiAKICAgLyogQ2FsY3VsYXRlIHRoZSBzdGF0ZSB3aGljaCBjYW4gYmUgcmVh Y2hlZCBmcm9tIHRoZSBzdGF0ZSAncycgYnkKLSAgICAgY29uc3VtaW5nICcqbWJjbGVuJyBzaW5n bGUgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLiAgKi8KKyAgICAgY29uc3VtaW5nICdtYmNsZW4nIHNp bmdsZSBieXRlcyBmcm9tIHRoZSBidWZmZXIuICAqLwogICBzMSA9IHM7Ci0gIGZvciAoayA9IDA7 IGsgPCAqbWJjbGVuOyBrKyspCisgIGZvciAoayA9IDA7IGsgPCBtYmNsZW47IGsrKykKICAgICB7 CiAgICAgICBzMiA9IHMxOwogICAgICAgcnMgPSB0cmFuc2l0X3N0YXRlX3NpbmdsZWJ5dGUgKGQs IHMyLCAoKnBwKSsrLCAmczEpOwpAQCAtMzIwMSwxNyArMzE0MCwxMSBAQCB0cmFuc2l0X3N0YXRl X2NvbnN1bWVfMWNoYXIgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLAogICAvKiBDb3B5IHRo ZSBwb3NpdGlvbnMgY29udGFpbmVkIGJ5ICdzMScgdG8gdGhlIHNldCAnZC0+bWJfZm9sbG93cycu ICAqLwogICBjb3B5ICgmKGQtPnN0YXRlc1tzMV0uZWxlbXMpLCBkLT5tYl9mb2xsb3dzKTsKIAot ICAvKiBDaGVjayAoaW5wdXQpIG1hdGNoX2xlbnMsIGFuZCBpbml0aWFsaXplIGlmIGl0IGlzIE5V TEwuICAqLwotICBpZiAobWF0Y2hfbGVucyA9PSBOVUxMICYmIGQtPnN0YXRlc1tzXS5tYnBzLm5l bGVtICE9IDApCi0gICAgd29ya19tYmxzID0gY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVf b3BzIChkLCBzLCAqcHAgLSBidWZfYmVnaW4pOwotICBlbHNlCi0gICAgd29ya19tYmxzID0gbWF0 Y2hfbGVuczsKLQogICAvKiBBZGQgYWxsIG9mIHRoZSBwb3NpdGlvbnMgd2hpY2ggY2FuIGJlIHJl YWNoZWQgZnJvbSAncycgYnkgY29uc3VtaW5nCiAgICAgIGEgc2luZ2xlIGNoYXJhY3Rlci4gICov CiAgIGZvciAoaSA9IDA7IGkgPCBkLT5zdGF0ZXNbc10ubWJwcy5uZWxlbTsgaSsrKQogICAgIHsK LSAgICAgIGlmICh3b3JrX21ibHNbaV0gPT0gKm1iY2xlbikKKyAgICAgIGlmIChtYXRjaF9sZW5z W2ldID09IG1iY2xlbikKICAgICAgICAgZm9yIChqID0gMDsgaiA8IGQtPmZvbGxvd3NbZC0+c3Rh dGVzW3NdLm1icHMuZWxlbXNbaV0uaW5kZXhdLm5lbGVtOwogICAgICAgICAgICAgIGorKykKICAg ICAgICAgICBpbnNlcnQgKGQtPmZvbGxvd3NbZC0+c3RhdGVzW3NdLm1icHMuZWxlbXNbaV0uaW5k ZXhdLmVsZW1zW2pdLApAQCAtMzIyNiw3ICszMTU5LDggQEAgdHJhbnNpdF9zdGF0ZV9jb25zdW1l XzFjaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywKICAgIGJ1ZmZlci4gIFRoaXMgZnVu Y3Rpb24gaXMgZm9yIHNvbWUgb3BlcmF0b3Igd2hpY2ggY2FuIG1hdGNoIHdpdGggYSBtdWx0aS0K ICAgIGJ5dGUgY2hhcmFjdGVyIG9yIGEgY29sbGF0aW5nIGVsZW1lbnQgKHdoaWNoIG1heSBiZSBt dWx0aSBjaGFyYWN0ZXJzKS4gICovCiBzdGF0aWMgc3RhdGVfbnVtCi10cmFuc2l0X3N0YXRlIChz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwKQordHJh bnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29u c3QgKipwcCwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29uc3QgKmVuZCkKIHsKICAg c3RhdGVfbnVtIHMxOwogICBpbnQgbWJjbGVuOyAgLyogVGhlIGxlbmd0aCBvZiBjdXJyZW50IGlu cHV0IG11bHRpYnl0ZSBjaGFyYWN0ZXIuICAqLwpAQCAtMzI0Miw3ICszMTc2LDggQEAgdHJhbnNp dF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3Qg KipwcCkKICAgICAgICBXZSBjaGVjayB3aGV0aGVyIGVhY2ggb2YgdGhlbSBjYW4gbWF0Y2ggb3Ig bm90LiAgKi8KICAgICB7CiAgICAgICAvKiBOb3RlOiBjYWxsZXIgbXVzdCBmcmVlIHRoZSByZXR1 cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4gICovCi0gICAgICBtYXRjaF9sZW5zID0gY2hlY2tf bWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChkLCBzLCAqcHAgLSBidWZfYmVnaW4pOworICAg ICAgbWJjbGVuID0gbWJzX3RvX3djaGFyIChkLCAmd2MsIChjaGFyIGNvbnN0ICopICpwcCwgZW5k IC0gKnBwLCAmbWJzKTsKKyAgICAgIG1hdGNoX2xlbnMgPSBjaGVja19tYXRjaGluZ193aXRoX211 bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICopICpwcCwgd2MsIG1iY2xlbik7CiAKICAg ICAgIGZvciAoaSA9IDA7IGkgPCBuZWxlbTsgaSsrKQogICAgICAgICAvKiBTZWFyY2ggdGhlIG9w ZXJhdG9yIHdoaWNoIG1hdGNoIHRoZSBsb25nZXN0IHN0cmluZywKQEAgLTMyNzQsMTUgKzMyMDks MTUgQEAgdHJhbnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVk IGNoYXIgY29uc3QgKipwcCkKICAgICAgbm90IGJlIGEgY2hhcmFjdGVyIGJ1dCBhIChtdWx0aSBj aGFyYWN0ZXIpIGNvbGxhdGluZyBlbGVtZW50LgogICAgICBXZSBlbnVtZXJhdGUgYWxsIG9mIHRo ZSBwb3NpdGlvbnMgd2hpY2ggJ3MnIGNhbiByZWFjaCBieSBjb25zdW1pbmcKICAgICAgJ21heGxl bicgYnl0ZXMuICAqLwotICB0cmFuc2l0X3N0YXRlX2NvbnN1bWVfMWNoYXIgKGQsIHMsIHBwLCBt YXRjaF9sZW5zLCAmbWJjbGVuKTsKKyAgdHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBz LCBwcCwgd2MsIG1iY2xlbiwgbWF0Y2hfbGVucyk7CiAKLSAgd2MgPSBkLT5pbnB1dHdjc1sqcHAg LSBtYmNsZW4gLSBidWZfYmVnaW5dOwogICBzMSA9IHN0YXRlX2luZGV4IChkLCBkLT5tYl9mb2xs b3dzLCB3Y2hhcl9jb250ZXh0ICh3YykpOwogICByZWFsbG9jX3RyYW5zX2lmX25lY2Vzc2FyeSAo ZCwgczEpOwogCiAgIHdoaWxlICgqcHAgLSBwMSA8IG1heGxlbikKICAgICB7Ci0gICAgICB0cmFu c2l0X3N0YXRlX2NvbnN1bWVfMWNoYXIgKGQsIHMxLCBwcCwgTlVMTCwgJm1iY2xlbik7CisgICAg ICBtYmNsZW4gPSBtYnNfdG9fd2NoYXIgKGQsICZ3YywgKGNoYXIgY29uc3QgKikgKnBwLCBlbmQg LSAqcHAsICZtYnMpOworICAgICAgdHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBzMSwg cHAsIHdjLCBtYmNsZW4sIE5VTEwpOwogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsZW07IGkr KykKICAgICAgICAgewpAQCAtMzI5Myw0NSArMzIyOCwxMiBAQCB0cmFuc2l0X3N0YXRlIChzdHJ1 Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwKQogICAgICAg ICAgICAgICAgICAgICAgIGQtPm1iX2ZvbGxvd3MpOwogICAgICAgICB9CiAKLSAgICAgIHdjID0g ZC0+aW5wdXR3Y3NbKnBwIC0gbWJjbGVuIC0gYnVmX2JlZ2luXTsKICAgICAgIHMxID0gc3RhdGVf aW5kZXggKGQsIGQtPm1iX2ZvbGxvd3MsIHdjaGFyX2NvbnRleHQgKHdjKSk7CiAgICAgICByZWFs bG9jX3RyYW5zX2lmX25lY2Vzc2FyeSAoZCwgczEpOwogICAgIH0KICAgcmV0dXJuIHMxOwogfQog Ci0KLS8qIEluaXRpYWxpemUgbWJsZW5fYnVmIGFuZCBpbnB1dHdjcyB3aXRoIGRhdGEgZnJvbSB0 aGUgbmV4dCBsaW5lLiAgKi8KLQotc3RhdGljIHZvaWQKLXByZXBhcmVfd2NfYnVmIChzdHJ1Y3Qg ZGZhICpkLCBjb25zdCBjaGFyICpiZWdpbiwgY29uc3QgY2hhciAqZW5kKQotewotICB1bnNpZ25l ZCBjaGFyIGVvbCA9IGVvbGJ5dGU7Ci0gIHNpemVfdCBpOwotICBzaXplX3QgaWxpbSA9IGVuZCAt IGJlZ2luICsgMTsKLQotICBidWZfYmVnaW4gPSAodW5zaWduZWQgY2hhciAqKSBiZWdpbjsKLQot ICBmb3IgKGkgPSAwOyBpIDwgaWxpbTsgaSsrKQotICAgIHsKLSAgICAgIHNpemVfdCBuYnl0ZXMg PSBtYnNfdG9fd2NoYXIgKGQsIGQtPmlucHV0d2NzICsgaSwgYmVnaW4gKyBpLCBpbGltIC0gaSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYnMpOwotICAgICAgZC0+bWJs ZW5fYnVmW2ldID0gbmJ5dGVzIC0gKG5ieXRlcyA9PSAxKTsKLSAgICAgIGlmIChiZWdpbltpXSA9 PSBlb2wpCi0gICAgICAgIGJyZWFrOwotICAgICAgd2hpbGUgKC0tbmJ5dGVzICE9IDApCi0gICAg ICAgIHsKLSAgICAgICAgICBpKys7Ci0gICAgICAgICAgZC0+bWJsZW5fYnVmW2ldID0gbmJ5dGVz OwotICAgICAgICAgIGQtPmlucHV0d2NzW2ldID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICBi dWZfZW5kID0gKHVuc2lnbmVkIGNoYXIgKikgKGJlZ2luICsgaSk7Ci0gIGQtPm1ibGVuX2J1Zltp XSA9IDA7Ci0gIGQtPmlucHV0d2NzW2ldID0gMDsgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICov Ci19Ci0KIC8qIFNlYXJjaCB0aHJvdWdoIGEgYnVmZmVyIGxvb2tpbmcgZm9yIGEgbWF0Y2ggdG8g dGhlIGdpdmVuIHN0cnVjdCBkZmEuCiAgICBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEg c3RyaW5nIG1hdGNoaW5nIHRoZSByZWdleHAgaW4gdGhlCiAgICBidWZmZXIsIGFuZCB0aGUgc2hv cnRlc3QgcG9zc2libGUgdmVyc2lvbiB0aGVyZW9mLiAgUmV0dXJuIGEgcG9pbnRlciB0bwpAQCAt MzM0OSw3ICszMjUxLDcgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVn aW4sIGNoYXIgKmVuZCwKICAgICAgICAgIGludCBhbGxvd19ubCwgc2l6ZV90ICpjb3VudCwgaW50 ICpiYWNrcmVmKQogewogICBzdGF0ZV9udW0gcywgczE7ICAgICAgICAgICAgICAvKiBDdXJyZW50 IHN0YXRlLiAgKi8KLSAgdW5zaWduZWQgY2hhciBjb25zdCAqcDsgICAgICAgLyogQ3VycmVudCBp bnB1dCBjaGFyYWN0ZXIuICAqLworICB1bnNpZ25lZCBjaGFyIGNvbnN0ICpwLCAqbWJwOyAvKiBD dXJyZW50IGlucHV0IGNoYXJhY3Rlci4gICovCiAgIHN0YXRlX251bSAqKnRyYW5zLCAqdDsgICAg ICAgIC8qIENvcHkgb2YgZC0+dHJhbnMgc28gaXQgY2FuIGJlIG9wdGltaXplZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGEgcmVnaXN0ZXIuICAqLwogICB1bnNpZ25l ZCBjaGFyIGVvbCA9IGVvbGJ5dGU7ICAvKiBMaWtld2lzZSBmb3IgZW9sYnl0ZS4gICovCkBAIC0z MzU5LDcgKzMyNjEsNyBAQCBkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdp biwgY2hhciAqZW5kLAogICAgIGJ1aWxkX3N0YXRlX3plcm8gKGQpOwogCiAgIHMgPSBzMSA9IDA7 Ci0gIHAgPSAodW5zaWduZWQgY2hhciBjb25zdCAqKSBiZWdpbjsKKyAgcCA9IG1icCA9ICh1bnNp Z25lZCBjaGFyIGNvbnN0ICopIGJlZ2luOwogICB0cmFucyA9IGQtPnRyYW5zOwogICBzYXZlZF9l bmQgPSAqKHVuc2lnbmVkIGNoYXIgKikgZW5kOwogICAqZW5kID0gZW9sOwpAQCAtMzM2NywxMCAr MzI2OSw3IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29uc3QgKmJlZ2luLCBjaGFy ICplbmQsCiAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkKICAgICB7CiAgICAgICBzdGF0aWMgYm9v bCBtYl9hbGxvYyA9IGZhbHNlOwotICAgICAgUkVBTExPQ19JRl9ORUNFU1NBUlkgKGQtPm1ibGVu X2J1ZiwgZC0+bm1ibGVuX2J1ZiwgZW5kIC0gYmVnaW4gKyAyKTsKLSAgICAgIFJFQUxMT0NfSUZf TkVDRVNTQVJZIChkLT5pbnB1dHdjcywgZC0+bmlucHV0d2NzLCBlbmQgLSBiZWdpbiArIDIpOwog ICAgICAgbWVtc2V0ICgmbWJzLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotICAgICAgcHJlcGFy ZV93Y19idWYgKGQsIChjb25zdCBjaGFyICopIHAsIGVuZCk7CiAgICAgICBpZiAoIW1iX2FsbG9j KQogICAgICAgICB7CiAgICAgICAgICAgTUFMTE9DIChkLT5tYl9tYXRjaF9sZW5zLCBkLT5ubGVh dmVzKTsKQEAgLTMzODYsMTAgKzMyODUsMzIgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hh ciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICAgICAgewogICAgICAgICAgIHdoaWxlICgo dCA9IHRyYW5zW3NdKSAhPSBOVUxMKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAo cCA+IGJ1Zl9lbmQpCi0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIHMxID0g czsKLSAgICAgICAgICAgICAgU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RBVEUgKHMsIHAp OworCisgICAgICAgICAgICAgIGlmIChzID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgLyogVGhlIGluaXRpYWwgc3RhdGUgbWF5IGVuY291bnRlciBhIGJ5dGUgd2hp Y2ggaXMgbm90CisgICAgICAgICAgICAgICAgICAgICBhIHNpbmdsZSBieXRlIGNoYXJhY3RlciBu b3IgdGhlIGZpcnN0IGJ5dGUgb2YgYQorICAgICAgICAgICAgICAgICAgICAgbXVsdGlieXRlIGNo YXJhY3Rlci4gIEJ1dCBpdCBpcyBpbmNvcnJlY3QgZm9yIHRoZQorICAgICAgICAgICAgICAgICAg ICAgaW5pdGlhbCBzdGF0ZSB0byBhY2NlcHQgc3VjaCBhIGJ5dGUuICBGb3IgZXhhbXBsZSwKKyAg ICAgICAgICAgICAgICAgICAgIGluIFNoaWZ0IEpJUyB0aGUgcmVndWxhciBleHByZXNzaW9uICJc XCIgYWNjZXB0cworICAgICAgICAgICAgICAgICAgICAgdGhlIGNvZGVwb2ludCAweDVjLCBidXQg c2hvdWxkIG5vdCBhY2NlcHQgdGhlIHNlY29uZAorICAgICAgICAgICAgICAgICAgICAgYnl0ZSBv ZiB0aGUgY29kZXBvaW50IDB4ODE1Yy4gIFRoZW4gdGhlIGluaXRpYWwKKyAgICAgICAgICAgICAg ICAgICAgIHN0YXRlIG11c3Qgc2tpcCB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90IGEgc2luZ2xlCisg ICAgICAgICAgICAgICAgICAgICBieXRlIGNoYXJhY3RlciBub3IgdGhlIGZpcnN0IGJ5dGUgb2Yg YSBtdWx0aWJ5dGUKKyAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlci4gICovCisgICAgICAg ICAgICAgICAgICB3Y2hhcl90IHdjOworICAgICAgICAgICAgICAgICAgd2hpbGUgKG1icCA8IHAp CisgICAgICAgICAgICAgICAgICAgIG1icCArPSBtYnNfdG9fd2NoYXIgKGQsICZ3YywgKGNoYXIg Y29uc3QgKikgbWJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bmQgLSAoY2hhciBjb25zdCAqKSBtYnAsICZtYnMpOworICAgICAgICAgICAgICAgICAgcCA9IG1i cDsKKworICAgICAgICAgICAgICAgICAgaWYgKChjaGFyICopIHAgPj0gZW5kKQorICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgKmVuZCA9IHNhdmVkX2VuZDsKKyAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICBpZiAoZC0+c3RhdGVzW3NdLm1icHMu bmVsZW0gPT0gMCkKICAgICAgICAgICAgICAgICB7CkBAIC0zNDEwLDcgKzMzMzEsOCBAQCBkZmFl eGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLAogCiAgICAg ICAgICAgICAgIC8qIENhbiBtYXRjaCB3aXRoIGEgbXVsdGlieXRlIGNoYXJhY3RlciAoYW5kIG11 bHRpIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICBjb2xsYXRpbmcgZWxlbWVudCkuICBUcmFu c2l0aW9uIHRhYmxlIG1pZ2h0IGJlIHVwZGF0ZWQuICAqLwotICAgICAgICAgICAgICBzID0gdHJh bnNpdF9zdGF0ZSAoZCwgcywgJnApOworICAgICAgICAgICAgICBzID0gdHJhbnNpdF9zdGF0ZSAo ZCwgcywgJnAsICh1bnNpZ25lZCBjaGFyICopIGVuZCk7CisgICAgICAgICAgICAgIG1icCA9IHA7 CiAgICAgICAgICAgICAgIHRyYW5zID0gZC0+dHJhbnM7CiAgICAgICAgICAgICB9CiAgICAgICAg IH0KQEAgLTM0NDUsNyArMzM2Nyw4IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29u c3QgKmJlZ2luLCBjaGFyICplbmQsCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIC8qIENh biBtYXRjaCB3aXRoIGEgbXVsdGlieXRlIGNoYXJhY3RlciAoYW5kIG11bHRpY2hhcmFjdGVyCiAg ICAgICAgICAgICAgICAgIGNvbGxhdGluZyBlbGVtZW50KS4gIFRyYW5zaXRpb24gdGFibGUgbWln aHQgYmUgdXBkYXRlZC4gICovCi0gICAgICAgICAgICAgIHMgPSB0cmFuc2l0X3N0YXRlIChkLCBz LCAmcCk7CisgICAgICAgICAgICAgIHMgPSB0cmFuc2l0X3N0YXRlIChkLCBzLCAmcCwgKHVuc2ln bmVkIGNoYXIgKikgZW5kKTsKKyAgICAgICAgICAgICAgbWJwID0gcDsKICAgICAgICAgICAgICAg dHJhbnMgPSBkLT50cmFuczsKICAgICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCkBAIC0zNDU0 LDE0ICszMzc3LDggQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4s IGNoYXIgKmVuZCwKICAgICAgICAgfQogCiAgICAgICAvKiBJZiB0aGUgcHJldmlvdXMgY2hhcmFj dGVyIHdhcyBhIG5ld2xpbmUsIGNvdW50IGl0LiAgKi8KLSAgICAgIGlmICgoY2hhciAqKSBwIDw9 IGVuZCAmJiBwWy0xXSA9PSBlb2wpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY291bnQpCi0g ICAgICAgICAgICArKypjb3VudDsKLQotICAgICAgICAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkK LSAgICAgICAgICAgIHByZXBhcmVfd2NfYnVmIChkLCAoY29uc3QgY2hhciAqKSBwLCBlbmQpOwot ICAgICAgICB9CisgICAgICBpZiAoKGNoYXIgKikgcCA8PSBlbmQgJiYgcFstMV0gPT0gZW9sICYm IGNvdW50KQorICAgICAgICArKypjb3VudDsKIAogICAgICAgLyogQ2hlY2sgaWYgd2UndmUgcnVu IG9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICAqLwogICAgICAgaWYgKChjaGFyICopIHAgPiBl bmQpCkBAIC0zNTE4LDggKzM0MzUsNiBAQCBmcmVlX21iZGF0YSAoc3RydWN0IGRmYSAqZCkKICAg ZC0+bWJjc2V0cyA9IE5VTEw7CiAgIGQtPm5tYmNzZXRzID0gMDsKIAotICBmcmVlIChkLT5tYmxl bl9idWYpOwotICBmcmVlIChkLT5pbnB1dHdjcyk7CiAgIGlmIChkLT5tYl9mb2xsb3dzKQogICAg IHsKICAgICAgIGZyZWUgKGQtPm1iX2ZvbGxvd3MtPmVsZW1zKTsKLS0gCjEuOS4xCgo= --------_531AAC47000000000212_MULTIPART_MIXED_-- From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 08 09:27:40 2014 Received: (at 17203) by debbugs.gnu.org; 8 Apr 2014 13:27:40 +0000 Received: from localhost ([127.0.0.1]:40416 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WXW3u-0008G2-Ia for submit@debbugs.gnu.org; Tue, 08 Apr 2014 09:27:39 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:25432) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WXW3l-0008Ff-HY for 17203@debbugs.gnu.org; Tue, 08 Apr 2014 09:27:33 -0400 Received: from [10.120.1.58] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s38DRBwj003717 for <17203@debbugs.gnu.org>; Tue, 8 Apr 2014 22:27:11 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Tue, 08 Apr 2014 22:27:13 +0900 From: Norihiro Tanaka To: 17203@debbugs.gnu.org Subject: bug#17203: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand In-Reply-To: <20140406185213.BAA9.27F6AC2D@kcn.ne.jp> References: <20140406185213.BAA9.27F6AC2D@kcn.ne.jp> Message-Id: <20140408222656.10D3.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_5343F8AF0000000010C4_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: 3.7 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Now, I rebased this patch. From e395071da13703e31efc4d624dac91acfae6dfb0 Mon Sep 17 00:00:00 2001 From: Norihiro Tanaka Date: Sat, 29 Mar 2014 20:59:53 +0900 Subject: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand [...] Content analysis details: (3.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] 2.7 RCVD_IN_PSBL RBL: Received via a relay in PSBL [202.248.238.71 listed in psbl.surriel.com] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.3 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain X-Debbugs-Envelope-To: 17203 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 3.7 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Now, I rebased this patch. From e395071da13703e31efc4d624dac91acfae6dfb0 Mon Sep 17 00:00:00 2001 From: Norihiro Tanaka Date: Sat, 29 Mar 2014 20:59:53 +0900 Subject: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand [...] Content analysis details: (3.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 2.7 RCVD_IN_PSBL RBL: Received via a relay in PSBL [202.248.238.71 listed in psbl.surriel.com] 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.3 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain --------_5343F8AF0000000010C4_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Now, I rebased this patch. --------_5343F8AF0000000010C4_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSBlMzk1MDcxZGExMzcwM2UzMWVmYzRkNjI0ZGFjOTFhY2ZhZTZkZmIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBTYXQsIDI5IE1hciAyMDE0IDIwOjU5OjUzICswOTAwClN1YmplY3Q6IFtQQVRDSF0gZ3Jl cDogc3BlZWQtdXAgb2YgREZBIGJ5IGNoZWNraW5nIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIG9uCiBk ZW1hbmQKCklmIGRmYWV4ZWMoKSBydW5zIGluIG5vbi1VVEY4IGxvY2FsZXMsIGxlbmd0aCBhbmQg d2lkZSBjaGFyYWN0ZXIKcmVwcmVzZW50YXRpb24gYXJlIGNoZWNrZWQgZm9yIGFsbCBjaGFyYWN0 ZXJzIG9mIGEgbGluZSBpbiBhIGlucHV0CnN0cmluZy4gIEhvd2V2ZXIsIGlmIG1hdGNoZWQgZWFy bHkgaW4gdGhlIGxpbmUsIHJlc3VsdHMgZm9yIHJlbWFpbmluZwpjaGFyYWN0ZXJzIGFyZSB3YXN0 ZWQuCgpUaGlzIHBhdGNoIGNoZWNrcyBtdWx0aWJ5dGUgY2hhcmFjdGVycyBvbiBkZW1hbmQuICBJ dCBlbmFibGVzIHRvCmFjY29tcGxpc2ggdG8gc3BlZWQtdXAgZm9yIG1hdGNoZWQgZWFybHkgYW5k IHJlZHVjZSByZXF1aXJlZCBtZW1vcmllcy4KCiogc3JjL2RmYS5jIChzdHJ1Y3QgZGZhKTogUmVt b3ZlIG1lbWJlcnMuCihidWZfYmVnaW4sIGJ1Zl9lbmQpOiBObyBsb25nZXIgdGhleSBhcmUgdXNl ZC4gIFJlbW92ZSB0aGVtLgooU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RBVEUpOiBOb3cs IHRoZSBjb250ZW50IG9mIHRoZSBtYWNybyBpcwpleHRlbmRlZCBpbiBkZmFleGVjKCkuCih0cmFu c2l0X3N0YXRlX3NpbmdsZWJ5dGUpOiBzZW0gY2hlY2sgaXMgcmVtb3ZlZC4KKG1hdGNoX2FueWNo YXIpOiBEb2Vzbid0IHVzZSBgbWJsZW5fYnVmIGFuZCcgYGlucHV0d2NzJy4KKG1hdGNoX21iX2No YXJzZXQpOiBEb2Vzbid0IHVzZSBgbWJsZW5fYnVmIGFuZCcgYGlucHV0d2NzJy4KKGNoZWNrX21h dGNoaW5nX3dpdGhfbXVsdGlieXRlX29wcyk6IE1vZGlmeSBhcmd1bWVudHMuCih0cmFuc2l0X3N0 YXRlX2NvbnN1bWVfMWNoYXIpOiBNb2RpZnkgYXJndW1lbnRzLgoodHJhbnNpdF9zdGF0ZSk6IERv ZXNuJ3QgdXNlIGBtYmxlbl9idWYgYW5kJyBgaW5wdXR3Y3MnLgoocHJlcGFyZV93Y19idWYpOiBS ZW1vdmUgaXQuCihkZmFleGVjKTogRG9lc24ndCB1c2UgYG1ibGVuX2J1ZiBhbmQnIGBpbnB1dHdj cycuCi0tLQogc3JjL2RmYS5jIHwgMjA5ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0 aW9ucygrKSwgMTQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9kZmEuYyBiL3NyYy9k ZmEuYwppbmRleCA3NmY3ZTc5Li44MWI1NTljIDEwMDY0NAotLS0gYS9zcmMvZGZhLmMKKysrIGIv c3JjL2RmYS5jCkBAIC00MzEsMjQgKzQzMSw2IEBAIHN0cnVjdCBkZmEKICAgc3RydWN0IGRmYW11 c3QgKm11c3RzOyAgICAgICAgLyogTGlzdCBvZiBzdHJpbmdzLCBhdCBsZWFzdCBvbmUgb2Ygd2hp Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMga25vd24gdG8gYXBwZWFy IGluIGFueSByLmUuIG1hdGNoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBkZmEuICAqLwotICB1bnNpZ25lZCBjaGFyICptYmxlbl9idWY7ICAgICAvKiBDb3JyZXNw b25kIHRvIHRoZSBpbnB1dCBidWZmZXIgaW4gZGZhZXhlYy4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRWFjaCBlbGVtZW50IHN0b3JlcyB0aGUgbnVtYmVyIG9mIHJlbWFpbmlu ZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyBvZiB0aGUgY29ycmVz cG9uZGluZyBtdWx0aWJ5dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh cmFjdGVyIGluIHRoZSBpbnB1dCBzdHJpbmcuICBBIGVsZW1lbnQncwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyAwIGlmIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJh Y3RlciBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUtYnl0ZS4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgaW5wdXQgOiAnYScsIDxt YigwKT4sIDxtYigxKT4sIDxtYigyKT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWJsZW5fYnVmICAgOiAgMCwgICAgICAgMywgICAgICAgMiwgICAgICAgMQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgc2l6ZV90IG5tYmxlbl9idWY7ICAgICAgICAg ICAgLyogQWxsb2NhdGVkIHNpemUgb2YgbWJsZW5fYnVmLiAgKi8KLSAgd2NoYXJfdCAqaW5wdXR3 Y3M7ICAgICAgICAgICAgLyogV2lkZSBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlu cHV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBpbiBkZmFleGVj LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoaXMg YXJyYXkgaXMgdGhlIHNhbWUgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlIGxlbmd0aCBvZiBpbnB1dCBzdHJpbmcgKGNoYXIgYXJyYXkpLgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnB1dHN0cmluZ1tpXSBpcyBhIHNpbmdsZS1ieXRlIGNoYXIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBmaXJzdCBieXRlIG9m IGEgbXVsdGlieXRlIGNoYXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu cHV0d2NzW2ldIGlzIHRoZSBjb2RlcG9pbnQuICAqLwotICBzaXplX3QgbmlucHV0d2NzOyAgICAg ICAgICAgICAvKiBBbGxvY2F0ZWQgbnVtYmVyIG9mIGlucHV0d2NzIGVsZW1lbnRzLiAgKi8KICAg cG9zaXRpb25fc2V0ICptYl9mb2xsb3dzOyAgICAgLyogRm9sbG93IHNldCBhZGRlZCBieSBBTllD SEFSIGFuZC9vciBNQkNTRVQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24g ZGVtYW5kLiAgKi8KICAgaW50ICptYl9tYXRjaF9sZW5zOyAgICAgICAgICAgLyogQXJyYXkgb2Yg bGVuZ3RoIHJlZHVjZWQgYnkgQU5ZQ0hBUiBhbmQvb3IKQEAgLTg4OCw4ICs4NzAsNiBAQCBzdGF0 aWMgaW50IGN1cl9tYl9sZW4gPSAxOyAgICAgIC8qIExlbmd0aCBvZiB0aGUgbXVsdGlieXRlIHJl cHJlc2VudGF0aW9uIG9mCiBzdGF0aWMgbWJzdGF0ZV90IG1iczsgICAgICAgICAgIC8qIG1ic3Rh dGUgZm9yIG1icnRvd2MuICAqLwogc3RhdGljIHdjaGFyX3Qgd2N0b2s7ICAgICAgICAgICAvKiBX aWRlIGNoYXJhY3RlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWJ5dGUgY2hhcmFjdGVyLiAgKi8KLXN0YXRpYyB1 bnNpZ25lZCBjaGFyIGNvbnN0ICpidWZfYmVnaW47ICAvKiByZWZlcmVuY2UgdG8gYmVnaW4gaW4g ZGZhZXhlYy4gICovCi1zdGF0aWMgdW5zaWduZWQgY2hhciBjb25zdCAqYnVmX2VuZDsgICAgLyog cmVmZXJlbmNlIHRvIGVuZCBpbiBkZmFleGVjLiAgKi8KIAogCiAvKiBOb3RlIHRoYXQgY2hhcmFj dGVycyBiZWNvbWUgdW5zaWduZWQgaGVyZS4gICovCkBAIC0yOTE5LDI3ICsyODk5LDYgQEAgYnVp bGRfc3RhdGVfemVybyAoc3RydWN0IGRmYSAqZCkKIAogLyogTXVsdGlieXRlIGNoYXJhY3RlciBo YW5kbGluZyBzdWItcm91dGluZXMgZm9yIGRmYWV4ZWMuICAqLwogCi0vKiBUaGUgaW5pdGlhbCBz dGF0ZSBtYXkgZW5jb3VudGVyIGEgYnl0ZSB3aGljaCBpcyBub3QgYSBzaW5nbGUgYnl0ZSBjaGFy YWN0ZXIKLSAgIG5vciB0aGUgZmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIuICBC dXQgaXQgaXMgaW5jb3JyZWN0IGZvciB0aGUKLSAgIGluaXRpYWwgc3RhdGUgdG8gYWNjZXB0IHN1 Y2ggYSBieXRlLiAgRm9yIGV4YW1wbGUsIGluIFNoaWZ0IEpJUyB0aGUgcmVndWxhcgotICAgZXhw cmVzc2lvbiAiXFwiIGFjY2VwdHMgdGhlIGNvZGVwb2ludCAweDVjLCBidXQgc2hvdWxkIG5vdCBh Y2NlcHQgdGhlIHNlY29uZAotICAgYnl0ZSBvZiB0aGUgY29kZXBvaW50IDB4ODE1Yy4gIFRoZW4g dGhlIGluaXRpYWwgc3RhdGUgbXVzdCBza2lwIHRoZSBieXRlcwotICAgdGhhdCBhcmUgbm90IGEg c2luZ2xlIGJ5dGUgY2hhcmFjdGVyIG5vciB0aGUgZmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZQot ICAgY2hhcmFjdGVyLiAgKi8KLSNkZWZpbmUgU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RB VEUocywgcCkJCVwKLSAgaWYgKHMgPT0gMCkJCQkJCQlcCi0gICAgewkJCQkJCQlcCi0gICAgICB3 aGlsZSAoZC0+aW5wdXR3Y3NbcCAtIGJ1Zl9iZWdpbl0gPT0gMAkJXAotICAgICAgICAgICAgICYm IGQtPm1ibGVuX2J1ZltwIC0gYnVmX2JlZ2luXSAhPSAwCVwKLSAgICAgICAgICAgICAmJiAodW5z aWduZWQgY2hhciBjb25zdCAqKSBwIDwgYnVmX2VuZCkJXAotICAgICAgICArK3A7CQkJCQkJXAot ICAgICAgaWYgKChjaGFyICopIHAgPj0gZW5kKQkJCQlcCi0gICAgICAgIHsJCQkJCQlcCi0gICAg ICAgICAgKmVuZCA9IHNhdmVkX2VuZDsJCQkJXAotICAgICAgICAgIHJldHVybiBOVUxMOwkJCQkJ XAotICAgICAgICB9CQkJCQkJXAotICAgIH0KLQogc3RhdGljIHZvaWQKIHJlYWxsb2NfdHJhbnNf aWZfbmVjZXNzYXJ5IChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gbmV3X3N0YXRlKQogewpAQCAt Mjk5NiwxNCArMjk1NSw3IEBAIHRyYW5zaXRfc3RhdGVfc2luZ2xlYnl0ZSAoc3RydWN0IGRmYSAq ZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCiAgICAgICAgICAgICB3b3Jr cyA9IDA7CiAgICAgICAgIH0KICAgICAgIGVsc2UgaWYgKHdvcmtzIDwgMCkKLSAgICAgICAgewot ICAgICAgICAgIGlmIChwID09IGJ1Zl9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg IC8qIEF0IHRoZSBtb21lbnQsIGl0IG11c3Qgbm90IGhhcHBlbi4gICovCi0gICAgICAgICAgICAg IGFib3J0ICgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIHdvcmtzID0gMDsKLSAgICAgICAg fQorICAgICAgICB3b3JrcyA9IDA7CiAgICAgICBlbHNlIGlmIChkLT5mYWlsc1t3b3Jrc10pCiAg ICAgICAgIHsKICAgICAgICAgICB3b3JrcyA9IGQtPmZhaWxzW3dvcmtzXVsqcF07CkBAIC0zMDE4 LDE4ICsyOTcwLDEzIEBAIHRyYW5zaXRfc3RhdGVfc2luZ2xlYnl0ZSAoc3RydWN0IGRmYSAqZCwg c3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCiAgIHJldHVybiBydmFsOwogfQog Ci0vKiBNYXRjaCBhICIuIiBhZ2FpbnN0IHRoZSBjdXJyZW50IGNvbnRleHQuICBidWZfYmVnaW5b SURYXSBpcyB0aGUKLSAgIGN1cnJlbnQgcG9zaXRpb24uICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0 aGUgbWF0Y2gsIGluIGJ5dGVzLgotICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgIi4iLiAg Ki8KKy8qIE1hdGNoIGEgIi4iIGFnYWluc3QgdGhlIGN1cnJlbnQgY29udGV4dC4gIFJldHVybiB0 aGUgbGVuZ3RoIG9mIHRoZQorICAgbWF0Y2gsIGluIGJ5dGVzLiAgUE9TIGlzIHRoZSBwb3NpdGlv biBvZiB0aGUgIi4iLiAgKi8KIHN0YXRpYyBpbnQKLW1hdGNoX2FueWNoYXIgKHN0cnVjdCBkZmEg KmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCittYXRjaF9hbnljaGFy IChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAorICAgICAgICAgICAg ICAgd2NoYXJfdCB3Yywgc2l6ZV90IG1iY2xlbikKIHsKICAgaW50IGNvbnRleHQ7Ci0gIHdjaGFy X3Qgd2M7Ci0gIGludCBtYmNsZW47Ci0KLSAgd2MgPSBkLT5pbnB1dHdjc1tpZHhdOwotICBtYmNs ZW4gPSBNQVggKDEsIGQtPm1ibGVuX2J1ZltpZHhdKTsKIAogICAvKiBDaGVjayBzeW50YXggYml0 cy4gICovCiAgIGlmICh3YyA9PSAod2NoYXJfdCkgZW9sYnl0ZSkKQEAgLTMwNTEsMTYgKzI5OTgs MTQgQEAgbWF0Y2hfYW55Y2hhciAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHBvc2l0aW9u IHBvcywgc2l6ZV90IGlkeCkKIH0KIAogLyogTWF0Y2ggYSBicmFja2V0IGV4cHJlc3Npb24gYWdh aW5zdCB0aGUgY3VycmVudCBjb250ZXh0LgotICAgYnVmX2JlZ2luW0lEWF0gaXMgdGhlIGN1cnJl bnQgcG9zaXRpb24uCiAgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2gsIGluIGJ5dGVz LgogICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYnJhY2tldCBleHByZXNzaW9uLiAgKi8K IHN0YXRpYyBpbnQKLW1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBz LCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCittYXRjaF9tYl9jaGFyc2V0IChzdHJ1Y3QgZGZh ICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAorICAgICAgICAgICAgICAgICAgY2hhciBj b25zdCAqcCwgd2NoYXJfdCB3Yywgc2l6ZV90IG1hdGNoX2xlbikKIHsKICAgc2l6ZV90IGk7CiAg IGJvb2wgbWF0Y2g7ICAgICAgICAgICAgICAvKiBNYXRjaGluZyBzdWNjZWVkZWQuICAqLwotICBp bnQgbWF0Y2hfbGVuOyAgICAgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBjaGFyYWN0ZXIgKG9yIGNv bGxhdGluZyBlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB3aGlj aCB0aGlzIG9wZXJhdG9yIG1hdGNoZXMuICAqLwogICBpbnQgb3BfbGVuOyAgICAgICAgICAgICAg LyogTGVuZ3RoIG9mIHRoZSBvcGVyYXRvci4gICovCiAgIGNoYXIgYnVmZmVyWzEyOF07CiAKQEAg LTMwNjgsOSArMzAxMyw2IEBAIG1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRl X251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCiAgIHN0cnVjdCBtYl9jaGFyX2NsYXNz ZXMgKndvcmtfbWJjOwogCiAgIGludCBjb250ZXh0OwotICB3Y2hhcl90IHdjOyAgICAgICAgICAg ICAgICAgICAvKiBDdXJyZW50IHJlZmVycmluZyBjaGFyYWN0ZXIuICAqLwotCi0gIHdjID0gZC0+ aW5wdXR3Y3NbaWR4XTsKIAogICAvKiBDaGVjayBzeW50YXggYml0cy4gICovCiAgIGlmICh3YyA9 PSAod2NoYXJfdCkgZW9sYnl0ZSkKQEAgLTMwOTEsNyArMzAzMyw2IEBAIG1hdGNoX21iX2NoYXJz ZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgp CiAgIC8qIEFzc2lnbiB0aGUgY3VycmVudCByZWZlcnJpbmcgb3BlcmF0b3IgdG8gd29ya19tYmMu ICAqLwogICB3b3JrX21iYyA9ICYoZC0+bWJjc2V0c1soZC0+bXVsdGlieXRlX3Byb3BbcG9zLmlu ZGV4XSkgPj4gMl0pOwogICBtYXRjaCA9ICF3b3JrX21iYy0+aW52ZXJ0OwotICBtYXRjaF9sZW4g PSBNQVggKDEsIGQtPm1ibGVuX2J1ZltpZHhdKTsKIAogICAvKiBNYXRjaCBpbiByYW5nZSAwLTI1 NT8gICovCiAgIGlmICh3YyA8IE5PVENIQVIgJiYgd29ya19tYmMtPmNzZXQgIT0gLTEKQEAgLTMx MDUsMTQgKzMwNDYsMTQgQEAgbWF0Y2hfbWJfY2hhcnNldCAoc3RydWN0IGRmYSAqZCwgc3RhdGVf bnVtIHMsIHBvc2l0aW9uIHBvcywgc2l6ZV90IGlkeCkKICAgICAgICAgZ290byBjaGFyc2V0X21h dGNoZWQ7CiAgICAgfQogCi0gIHN0cm5jcHkgKGJ1ZmZlciwgKGNoYXIgY29uc3QgKikgYnVmX2Jl Z2luICsgaWR4LCBtYXRjaF9sZW4pOworICBzdHJuY3B5IChidWZmZXIsIHAsIG1hdGNoX2xlbik7 CiAgIGJ1ZmZlclttYXRjaF9sZW5dID0gJ1wwJzsKIAogICAvKiBtYXRjaCB3aXRoIGFuIGVxdWl2 YWxlbmNlIGNsYXNzPyAgKi8KICAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5uZXF1aXZzOyBp KyspCiAgICAgewogICAgICAgb3BfbGVuID0gc3RybGVuICh3b3JrX21iYy0+ZXF1aXZzW2ldKTsK LSAgICAgIHN0cm5jcHkgKGJ1ZmZlciwgKGNoYXIgY29uc3QgKikgYnVmX2JlZ2luICsgaWR4LCBv cF9sZW4pOworICAgICAgc3RybmNweSAoYnVmZmVyLCBwLCBvcF9sZW4pOwogICAgICAgYnVmZmVy W29wX2xlbl0gPSAnXDAnOwogICAgICAgaWYgKHN0cmNvbGwgKHdvcmtfbWJjLT5lcXVpdnNbaV0s IGJ1ZmZlcikgPT0gMCkKICAgICAgICAgewpAQCAtMzEyNSw3ICszMDY2LDcgQEAgbWF0Y2hfbWJf Y2hhcnNldCAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHBvc2l0aW9uIHBvcywgc2l6ZV90 IGlkeCkKICAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5uY29sbF9lbGVtczsgaSsrKQogICAg IHsKICAgICAgIG9wX2xlbiA9IHN0cmxlbiAod29ya19tYmMtPmNvbGxfZWxlbXNbaV0pOwotICAg ICAgc3RybmNweSAoYnVmZmVyLCAoY2hhciBjb25zdCAqKSBidWZfYmVnaW4gKyBpZHgsIG9wX2xl bik7CisgICAgICBzdHJuY3B5IChidWZmZXIsIHAsIG9wX2xlbik7CiAgICAgICBidWZmZXJbb3Bf bGVuXSA9ICdcMCc7CiAKICAgICAgIGlmIChzdHJjb2xsICh3b3JrX21iYy0+Y29sbF9lbGVtc1tp XSwgYnVmZmVyKSA9PSAwKQpAQCAtMzE1OSwxMiArMzEwMCwxMCBAQCBjaGFyc2V0X21hdGNoZWQ6 CiAgICBhcnJheSB3aGljaCBjb3JyZXNwb25kcyB0byAnZC0+c3RhdGVzW3NdLm1icHMuZWxlbSc7 IGVhY2ggZWxlbWVudCBvZiB0aGUKICAgIGFycmF5IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgYnl0 ZXMgd2l0aCB3aGljaCB0aGUgZWxlbWVudCBjYW4gbWF0Y2guCiAKLSAgICdpZHgnIGlzIHRoZSBp bmRleCBmcm9tIGJ1Zl9iZWdpbiwgYW5kIGl0IGlzIHRoZSBjdXJyZW50IHBvc2l0aW9uCi0gICBp biB0aGUgYnVmZmVyLgotCiAgICBUaGUgY2FsbGVyIE1VU1QgZnJlZSB0aGUgYXJyYXkgd2hpY2gg dGhpcyBmdW5jdGlvbiByZXR1cm4uICAqLwogc3RhdGljIGludCAqCi1jaGVja19tYXRjaGluZ193 aXRoX211bHRpYnl0ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBzaXplX3QgaWR4 KQorY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChzdHJ1Y3QgZGZhICpkLCBzdGF0 ZV9udW0gcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAq cCwgd2NoYXJfdCB3Yywgc2l6ZV90IG1iY2xlbikKIHsKICAgc2l6ZV90IGk7CiAgIGludCAqcmFy cmF5OwpAQCAtMzE3NiwxMCArMzExNSwxMCBAQCBjaGVja19tYXRjaGluZ193aXRoX211bHRpYnl0 ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBzaXplX3QgaWR4KQogICAgICAgc3dp dGNoIChkLT50b2tlbnNbcG9zLmluZGV4XSkKICAgICAgICAgewogICAgICAgICBjYXNlIEFOWUNI QVI6Ci0gICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfYW55Y2hhciAoZCwgcywgcG9zLCBpZHgp OworICAgICAgICAgIHJhcnJheVtpXSA9IG1hdGNoX2FueWNoYXIgKGQsIHMsIHBvcywgd2MsIG1i Y2xlbik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUJDU0VUOgotICAgICAgICAg IHJhcnJheVtpXSA9IG1hdGNoX21iX2NoYXJzZXQgKGQsIHMsIHBvcywgaWR4KTsKKyAgICAgICAg ICByYXJyYXlbaV0gPSBtYXRjaF9tYl9jaGFyc2V0IChkLCBzLCBwb3MsIHAsIHdjLCBtYmNsZW4p OwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgIGJyZWFrOyAg ICAgICAgICAgICAgICAvKiBjYW5ub3QgaGFwcGVuLiAgKi8KQEAgLTMxOTksMjIgKzMxMzgsMjIg QEAgY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChzdHJ1Y3QgZGZhICpkLCBzdGF0 ZV9udW0gcywgc2l6ZV90IGlkeCkKIHN0YXRpYyBzdGF0dXNfdHJhbnNpdF9zdGF0ZQogdHJhbnNp dF9zdGF0ZV9jb25zdW1lXzFjaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm1hdGNoX2xlbnMsIGludCAqbWJjbGVuKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IHdjLCBzaXplX3QgbWJjbGVuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm1hdGNoX2xlbnMpCiB7CiAgIHNpemVfdCBp LCBqOwogICBpbnQgazsKICAgc3RhdGVfbnVtIHMxLCBzMjsKLSAgaW50ICp3b3JrX21ibHM7CiAg IHN0YXR1c190cmFuc2l0X3N0YXRlIHJzID0gVFJBTlNJVF9TVEFURV9ET05FOwogCi0gIC8qIENh bGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSAoc2luZ2xlL211bHRpIGJ5dGUpIGNoYXJhY3Rlcgot ICAgICB0byB3aGljaCBwIHBvaW50cy4gICovCi0gICptYmNsZW4gPSBNQVggKDEsIGQtPm1ibGVu X2J1ZlsqcHAgLSBidWZfYmVnaW5dKTsKKyAgLyogQ2hlY2sgKGlucHV0KSBtYXRjaF9sZW5zLCBh bmQgaW5pdGlhbGl6ZSBpZiBpdCBpcyBOVUxMLiAgKi8KKyAgaWYgKG1hdGNoX2xlbnMgPT0gTlVM TCAmJiBkLT5zdGF0ZXNbc10ubWJwcy5uZWxlbSAhPSAwKQorICAgIG1hdGNoX2xlbnMgPSBjaGVj a19tYXRjaGluZ193aXRoX211bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICopICpwcCwg d2MsIG1iY2xlbik7CiAKICAgLyogQ2FsY3VsYXRlIHRoZSBzdGF0ZSB3aGljaCBjYW4gYmUgcmVh Y2hlZCBmcm9tIHRoZSBzdGF0ZSAncycgYnkKLSAgICAgY29uc3VtaW5nICcqbWJjbGVuJyBzaW5n bGUgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLiAgKi8KKyAgICAgY29uc3VtaW5nICdtYmNsZW4nIHNp bmdsZSBieXRlcyBmcm9tIHRoZSBidWZmZXIuICAqLwogICBzMSA9IHM7Ci0gIGZvciAoayA9IDA7 IGsgPCAqbWJjbGVuOyBrKyspCisgIGZvciAoayA9IDA7IGsgPCBtYmNsZW47IGsrKykKICAgICB7 CiAgICAgICBzMiA9IHMxOwogICAgICAgcnMgPSB0cmFuc2l0X3N0YXRlX3NpbmdsZWJ5dGUgKGQs IHMyLCAoKnBwKSsrLCAmczEpOwpAQCAtMzIyMiwxNyArMzE2MSwxMSBAQCB0cmFuc2l0X3N0YXRl X2NvbnN1bWVfMWNoYXIgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLAogICAvKiBDb3B5IHRo ZSBwb3NpdGlvbnMgY29udGFpbmVkIGJ5ICdzMScgdG8gdGhlIHNldCAnZC0+bWJfZm9sbG93cycu ICAqLwogICBjb3B5ICgmKGQtPnN0YXRlc1tzMV0uZWxlbXMpLCBkLT5tYl9mb2xsb3dzKTsKIAot ICAvKiBDaGVjayAoaW5wdXQpIG1hdGNoX2xlbnMsIGFuZCBpbml0aWFsaXplIGlmIGl0IGlzIE5V TEwuICAqLwotICBpZiAobWF0Y2hfbGVucyA9PSBOVUxMICYmIGQtPnN0YXRlc1tzXS5tYnBzLm5l bGVtICE9IDApCi0gICAgd29ya19tYmxzID0gY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVf b3BzIChkLCBzLCAqcHAgLSBidWZfYmVnaW4pOwotICBlbHNlCi0gICAgd29ya19tYmxzID0gbWF0 Y2hfbGVuczsKLQogICAvKiBBZGQgYWxsIG9mIHRoZSBwb3NpdGlvbnMgd2hpY2ggY2FuIGJlIHJl YWNoZWQgZnJvbSAncycgYnkgY29uc3VtaW5nCiAgICAgIGEgc2luZ2xlIGNoYXJhY3Rlci4gICov CiAgIGZvciAoaSA9IDA7IGkgPCBkLT5zdGF0ZXNbc10ubWJwcy5uZWxlbTsgaSsrKQogICAgIHsK LSAgICAgIGlmICh3b3JrX21ibHNbaV0gPT0gKm1iY2xlbikKKyAgICAgIGlmIChtYXRjaF9sZW5z W2ldID09IG1iY2xlbikKICAgICAgICAgZm9yIChqID0gMDsgaiA8IGQtPmZvbGxvd3NbZC0+c3Rh dGVzW3NdLm1icHMuZWxlbXNbaV0uaW5kZXhdLm5lbGVtOwogICAgICAgICAgICAgIGorKykKICAg ICAgICAgICBpbnNlcnQgKGQtPmZvbGxvd3NbZC0+c3RhdGVzW3NdLm1icHMuZWxlbXNbaV0uaW5k ZXhdLmVsZW1zW2pdLApAQCAtMzI0Nyw3ICszMTgwLDggQEAgdHJhbnNpdF9zdGF0ZV9jb25zdW1l XzFjaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywKICAgIGJ1ZmZlci4gIFRoaXMgZnVu Y3Rpb24gaXMgZm9yIHNvbWUgb3BlcmF0b3Igd2hpY2ggY2FuIG1hdGNoIHdpdGggYSBtdWx0aS0K ICAgIGJ5dGUgY2hhcmFjdGVyIG9yIGEgY29sbGF0aW5nIGVsZW1lbnQgKHdoaWNoIG1heSBiZSBt dWx0aSBjaGFyYWN0ZXJzKS4gICovCiBzdGF0aWMgc3RhdGVfbnVtCi10cmFuc2l0X3N0YXRlIChz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwKQordHJh bnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29u c3QgKipwcCwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29uc3QgKmVuZCkKIHsKICAg c3RhdGVfbnVtIHMxOwogICBpbnQgbWJjbGVuOyAgLyogVGhlIGxlbmd0aCBvZiBjdXJyZW50IGlu cHV0IG11bHRpYnl0ZSBjaGFyYWN0ZXIuICAqLwpAQCAtMzI2Myw3ICszMTk3LDggQEAgdHJhbnNp dF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3Qg KipwcCkKICAgICAgICBXZSBjaGVjayB3aGV0aGVyIGVhY2ggb2YgdGhlbSBjYW4gbWF0Y2ggb3Ig bm90LiAgKi8KICAgICB7CiAgICAgICAvKiBOb3RlOiBjYWxsZXIgbXVzdCBmcmVlIHRoZSByZXR1 cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4gICovCi0gICAgICBtYXRjaF9sZW5zID0gY2hlY2tf bWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChkLCBzLCAqcHAgLSBidWZfYmVnaW4pOworICAg ICAgbWJjbGVuID0gbWJzX3RvX3djaGFyIChkLCAmd2MsIChjaGFyIGNvbnN0ICopICpwcCwgZW5k IC0gKnBwLCAmbWJzKTsKKyAgICAgIG1hdGNoX2xlbnMgPSBjaGVja19tYXRjaGluZ193aXRoX211 bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICopICpwcCwgd2MsIG1iY2xlbik7CiAKICAg ICAgIGZvciAoaSA9IDA7IGkgPCBuZWxlbTsgaSsrKQogICAgICAgICAvKiBTZWFyY2ggdGhlIG9w ZXJhdG9yIHdoaWNoIG1hdGNoIHRoZSBsb25nZXN0IHN0cmluZywKQEAgLTMyOTUsMTUgKzMyMzAs MTUgQEAgdHJhbnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVk IGNoYXIgY29uc3QgKipwcCkKICAgICAgbm90IGJlIGEgY2hhcmFjdGVyIGJ1dCBhIChtdWx0aSBj aGFyYWN0ZXIpIGNvbGxhdGluZyBlbGVtZW50LgogICAgICBXZSBlbnVtZXJhdGUgYWxsIG9mIHRo ZSBwb3NpdGlvbnMgd2hpY2ggJ3MnIGNhbiByZWFjaCBieSBjb25zdW1pbmcKICAgICAgJ21heGxl bicgYnl0ZXMuICAqLwotICB0cmFuc2l0X3N0YXRlX2NvbnN1bWVfMWNoYXIgKGQsIHMsIHBwLCBt YXRjaF9sZW5zLCAmbWJjbGVuKTsKKyAgdHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBz LCBwcCwgd2MsIG1iY2xlbiwgbWF0Y2hfbGVucyk7CiAKLSAgd2MgPSBkLT5pbnB1dHdjc1sqcHAg LSBtYmNsZW4gLSBidWZfYmVnaW5dOwogICBzMSA9IHN0YXRlX2luZGV4IChkLCBkLT5tYl9mb2xs b3dzLCB3Y2hhcl9jb250ZXh0ICh3YykpOwogICByZWFsbG9jX3RyYW5zX2lmX25lY2Vzc2FyeSAo ZCwgczEpOwogCiAgIHdoaWxlICgqcHAgLSBwMSA8IG1heGxlbikKICAgICB7Ci0gICAgICB0cmFu c2l0X3N0YXRlX2NvbnN1bWVfMWNoYXIgKGQsIHMxLCBwcCwgTlVMTCwgJm1iY2xlbik7CisgICAg ICBtYmNsZW4gPSBtYnNfdG9fd2NoYXIgKGQsICZ3YywgKGNoYXIgY29uc3QgKikgKnBwLCBlbmQg LSAqcHAsICZtYnMpOworICAgICAgdHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBzMSwg cHAsIHdjLCBtYmNsZW4sIE5VTEwpOwogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsZW07IGkr KykKICAgICAgICAgewpAQCAtMzMxNCw0NSArMzI0OSwxMiBAQCB0cmFuc2l0X3N0YXRlIChzdHJ1 Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwKQogICAgICAg ICAgICAgICAgICAgICAgIGQtPm1iX2ZvbGxvd3MpOwogICAgICAgICB9CiAKLSAgICAgIHdjID0g ZC0+aW5wdXR3Y3NbKnBwIC0gbWJjbGVuIC0gYnVmX2JlZ2luXTsKICAgICAgIHMxID0gc3RhdGVf aW5kZXggKGQsIGQtPm1iX2ZvbGxvd3MsIHdjaGFyX2NvbnRleHQgKHdjKSk7CiAgICAgICByZWFs bG9jX3RyYW5zX2lmX25lY2Vzc2FyeSAoZCwgczEpOwogICAgIH0KICAgcmV0dXJuIHMxOwogfQog Ci0KLS8qIEluaXRpYWxpemUgbWJsZW5fYnVmIGFuZCBpbnB1dHdjcyB3aXRoIGRhdGEgZnJvbSB0 aGUgbmV4dCBsaW5lLiAgKi8KLQotc3RhdGljIHZvaWQKLXByZXBhcmVfd2NfYnVmIChzdHJ1Y3Qg ZGZhICpkLCBjb25zdCBjaGFyICpiZWdpbiwgY29uc3QgY2hhciAqZW5kKQotewotICB1bnNpZ25l ZCBjaGFyIGVvbCA9IGVvbGJ5dGU7Ci0gIHNpemVfdCBpOwotICBzaXplX3QgaWxpbSA9IGVuZCAt IGJlZ2luICsgMTsKLQotICBidWZfYmVnaW4gPSAodW5zaWduZWQgY2hhciAqKSBiZWdpbjsKLQot ICBmb3IgKGkgPSAwOyBpIDwgaWxpbTsgaSsrKQotICAgIHsKLSAgICAgIHNpemVfdCBuYnl0ZXMg PSBtYnNfdG9fd2NoYXIgKGQsIGQtPmlucHV0d2NzICsgaSwgYmVnaW4gKyBpLCBpbGltIC0gaSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYnMpOwotICAgICAgZC0+bWJs ZW5fYnVmW2ldID0gbmJ5dGVzIC0gKG5ieXRlcyA9PSAxKTsKLSAgICAgIGlmIChiZWdpbltpXSA9 PSBlb2wpCi0gICAgICAgIGJyZWFrOwotICAgICAgd2hpbGUgKC0tbmJ5dGVzICE9IDApCi0gICAg ICAgIHsKLSAgICAgICAgICBpKys7Ci0gICAgICAgICAgZC0+bWJsZW5fYnVmW2ldID0gbmJ5dGVz OwotICAgICAgICAgIGQtPmlucHV0d2NzW2ldID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICBi dWZfZW5kID0gKHVuc2lnbmVkIGNoYXIgKikgKGJlZ2luICsgaSk7Ci0gIGQtPm1ibGVuX2J1Zltp XSA9IDA7Ci0gIGQtPmlucHV0d2NzW2ldID0gMDsgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICov Ci19Ci0KIC8qIFNlYXJjaCB0aHJvdWdoIGEgYnVmZmVyIGxvb2tpbmcgZm9yIGEgbWF0Y2ggdG8g dGhlIGdpdmVuIHN0cnVjdCBkZmEuCiAgICBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEg c3RyaW5nIG1hdGNoaW5nIHRoZSByZWdleHAgaW4gdGhlCiAgICBidWZmZXIsIGFuZCB0aGUgc2hv cnRlc3QgcG9zc2libGUgdmVyc2lvbiB0aGVyZW9mLiAgUmV0dXJuIGEgcG9pbnRlciB0bwpAQCAt MzM3MCw3ICszMjcyLDcgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVn aW4sIGNoYXIgKmVuZCwKICAgICAgICAgIGludCBhbGxvd19ubCwgc2l6ZV90ICpjb3VudCwgaW50 ICpiYWNrcmVmKQogewogICBzdGF0ZV9udW0gcywgczE7ICAgICAgICAgICAgICAvKiBDdXJyZW50 IHN0YXRlLiAgKi8KLSAgdW5zaWduZWQgY2hhciBjb25zdCAqcDsgICAgICAgLyogQ3VycmVudCBp bnB1dCBjaGFyYWN0ZXIuICAqLworICB1bnNpZ25lZCBjaGFyIGNvbnN0ICpwLCAqbWJwOyAvKiBD dXJyZW50IGlucHV0IGNoYXJhY3Rlci4gICovCiAgIHN0YXRlX251bSAqKnRyYW5zLCAqdDsgICAg ICAgIC8qIENvcHkgb2YgZC0+dHJhbnMgc28gaXQgY2FuIGJlIG9wdGltaXplZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGEgcmVnaXN0ZXIuICAqLwogICB1bnNpZ25l ZCBjaGFyIGVvbCA9IGVvbGJ5dGU7ICAvKiBMaWtld2lzZSBmb3IgZW9sYnl0ZS4gICovCkBAIC0z MzgwLDcgKzMyODIsNyBAQCBkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdp biwgY2hhciAqZW5kLAogICAgIGJ1aWxkX3N0YXRlX3plcm8gKGQpOwogCiAgIHMgPSBzMSA9IDA7 Ci0gIHAgPSAodW5zaWduZWQgY2hhciBjb25zdCAqKSBiZWdpbjsKKyAgcCA9IG1icCA9ICh1bnNp Z25lZCBjaGFyIGNvbnN0ICopIGJlZ2luOwogICB0cmFucyA9IGQtPnRyYW5zOwogICBzYXZlZF9l bmQgPSAqKHVuc2lnbmVkIGNoYXIgKikgZW5kOwogICAqZW5kID0gZW9sOwpAQCAtMzM4OCwxMCAr MzI5MCw3IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29uc3QgKmJlZ2luLCBjaGFy ICplbmQsCiAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkKICAgICB7CiAgICAgICBzdGF0aWMgYm9v bCBtYl9hbGxvYyA9IGZhbHNlOwotICAgICAgUkVBTExPQ19JRl9ORUNFU1NBUlkgKGQtPm1ibGVu X2J1ZiwgZC0+bm1ibGVuX2J1ZiwgZW5kIC0gYmVnaW4gKyAyKTsKLSAgICAgIFJFQUxMT0NfSUZf TkVDRVNTQVJZIChkLT5pbnB1dHdjcywgZC0+bmlucHV0d2NzLCBlbmQgLSBiZWdpbiArIDIpOwog ICAgICAgbWVtc2V0ICgmbWJzLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotICAgICAgcHJlcGFy ZV93Y19idWYgKGQsIChjb25zdCBjaGFyICopIHAsIGVuZCk7CiAgICAgICBpZiAoIW1iX2FsbG9j KQogICAgICAgICB7CiAgICAgICAgICAgTUFMTE9DIChkLT5tYl9tYXRjaF9sZW5zLCBkLT5ubGVh dmVzKTsKQEAgLTM0MDcsMTAgKzMzMDYsMzIgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hh ciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICAgICAgewogICAgICAgICAgIHdoaWxlICgo dCA9IHRyYW5zW3NdKSAhPSBOVUxMKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAo cCA+IGJ1Zl9lbmQpCi0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIHMxID0g czsKLSAgICAgICAgICAgICAgU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RBVEUgKHMsIHAp OworCisgICAgICAgICAgICAgIGlmIChzID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgLyogVGhlIGluaXRpYWwgc3RhdGUgbWF5IGVuY291bnRlciBhIGJ5dGUgd2hp Y2ggaXMgbm90CisgICAgICAgICAgICAgICAgICAgICBhIHNpbmdsZSBieXRlIGNoYXJhY3RlciBu b3IgdGhlIGZpcnN0IGJ5dGUgb2YgYQorICAgICAgICAgICAgICAgICAgICAgbXVsdGlieXRlIGNo YXJhY3Rlci4gIEJ1dCBpdCBpcyBpbmNvcnJlY3QgZm9yIHRoZQorICAgICAgICAgICAgICAgICAg ICAgaW5pdGlhbCBzdGF0ZSB0byBhY2NlcHQgc3VjaCBhIGJ5dGUuICBGb3IgZXhhbXBsZSwKKyAg ICAgICAgICAgICAgICAgICAgIGluIFNoaWZ0IEpJUyB0aGUgcmVndWxhciBleHByZXNzaW9uICJc XCIgYWNjZXB0cworICAgICAgICAgICAgICAgICAgICAgdGhlIGNvZGVwb2ludCAweDVjLCBidXQg c2hvdWxkIG5vdCBhY2NlcHQgdGhlIHNlY29uZAorICAgICAgICAgICAgICAgICAgICAgYnl0ZSBv ZiB0aGUgY29kZXBvaW50IDB4ODE1Yy4gIFRoZW4gdGhlIGluaXRpYWwKKyAgICAgICAgICAgICAg ICAgICAgIHN0YXRlIG11c3Qgc2tpcCB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90IGEgc2luZ2xlCisg ICAgICAgICAgICAgICAgICAgICBieXRlIGNoYXJhY3RlciBub3IgdGhlIGZpcnN0IGJ5dGUgb2Yg YSBtdWx0aWJ5dGUKKyAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlci4gICovCisgICAgICAg ICAgICAgICAgICB3Y2hhcl90IHdjOworICAgICAgICAgICAgICAgICAgd2hpbGUgKG1icCA8IHAp CisgICAgICAgICAgICAgICAgICAgIG1icCArPSBtYnNfdG9fd2NoYXIgKGQsICZ3YywgKGNoYXIg Y29uc3QgKikgbWJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bmQgLSAoY2hhciBjb25zdCAqKSBtYnAsICZtYnMpOworICAgICAgICAgICAgICAgICAgcCA9IG1i cDsKKworICAgICAgICAgICAgICAgICAgaWYgKChjaGFyICopIHAgPj0gZW5kKQorICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgKmVuZCA9IHNhdmVkX2VuZDsKKyAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICBpZiAoZC0+c3RhdGVzW3NdLm1icHMu bmVsZW0gPT0gMCkKICAgICAgICAgICAgICAgICB7CkBAIC0zNDMxLDcgKzMzNTIsOCBAQCBkZmFl eGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLAogCiAgICAg ICAgICAgICAgIC8qIENhbiBtYXRjaCB3aXRoIGEgbXVsdGlieXRlIGNoYXJhY3RlciAoYW5kIG11 bHRpIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICBjb2xsYXRpbmcgZWxlbWVudCkuICBUcmFu c2l0aW9uIHRhYmxlIG1pZ2h0IGJlIHVwZGF0ZWQuICAqLwotICAgICAgICAgICAgICBzID0gdHJh bnNpdF9zdGF0ZSAoZCwgcywgJnApOworICAgICAgICAgICAgICBzID0gdHJhbnNpdF9zdGF0ZSAo ZCwgcywgJnAsICh1bnNpZ25lZCBjaGFyICopIGVuZCk7CisgICAgICAgICAgICAgIG1icCA9IHA7 CiAgICAgICAgICAgICAgIHRyYW5zID0gZC0+dHJhbnM7CiAgICAgICAgICAgICB9CiAgICAgICAg IH0KQEAgLTM0NjYsNyArMzM4OCw4IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29u c3QgKmJlZ2luLCBjaGFyICplbmQsCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIC8qIENh biBtYXRjaCB3aXRoIGEgbXVsdGlieXRlIGNoYXJhY3RlciAoYW5kIG11bHRpY2hhcmFjdGVyCiAg ICAgICAgICAgICAgICAgIGNvbGxhdGluZyBlbGVtZW50KS4gIFRyYW5zaXRpb24gdGFibGUgbWln aHQgYmUgdXBkYXRlZC4gICovCi0gICAgICAgICAgICAgIHMgPSB0cmFuc2l0X3N0YXRlIChkLCBz LCAmcCk7CisgICAgICAgICAgICAgIHMgPSB0cmFuc2l0X3N0YXRlIChkLCBzLCAmcCwgKHVuc2ln bmVkIGNoYXIgKikgZW5kKTsKKyAgICAgICAgICAgICAgbWJwID0gcDsKICAgICAgICAgICAgICAg dHJhbnMgPSBkLT50cmFuczsKICAgICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCkBAIC0zNDc1 LDE0ICszMzk4LDggQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4s IGNoYXIgKmVuZCwKICAgICAgICAgfQogCiAgICAgICAvKiBJZiB0aGUgcHJldmlvdXMgY2hhcmFj dGVyIHdhcyBhIG5ld2xpbmUsIGNvdW50IGl0LiAgKi8KLSAgICAgIGlmICgoY2hhciAqKSBwIDw9 IGVuZCAmJiBwWy0xXSA9PSBlb2wpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY291bnQpCi0g ICAgICAgICAgICArKypjb3VudDsKLQotICAgICAgICAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkK LSAgICAgICAgICAgIHByZXBhcmVfd2NfYnVmIChkLCAoY29uc3QgY2hhciAqKSBwLCBlbmQpOwot ICAgICAgICB9CisgICAgICBpZiAoKGNoYXIgKikgcCA8PSBlbmQgJiYgcFstMV0gPT0gZW9sICYm IGNvdW50KQorICAgICAgICArKypjb3VudDsKIAogICAgICAgLyogQ2hlY2sgaWYgd2UndmUgcnVu IG9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICAqLwogICAgICAgaWYgKChjaGFyICopIHAgPiBl bmQpCkBAIC0zNTU5LDggKzM0NzYsNiBAQCBmcmVlX21iZGF0YSAoc3RydWN0IGRmYSAqZCkKICAg ZC0+bWJjc2V0cyA9IE5VTEw7CiAgIGQtPm5tYmNzZXRzID0gMDsKIAotICBmcmVlIChkLT5tYmxl bl9idWYpOwotICBmcmVlIChkLT5pbnB1dHdjcyk7CiAgIGlmIChkLT5tYl9mb2xsb3dzKQogICAg IHsKICAgICAgIGZyZWUgKGQtPm1iX2ZvbGxvd3MtPmVsZW1zKTsKLS0gCjEuOS4xCgo= --------_5343F8AF0000000010C4_MULTIPART_MIXED_-- From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 09 09:59:03 2014 Received: (at 17203) by debbugs.gnu.org; 9 Apr 2014 13:59:03 +0000 Received: from localhost ([127.0.0.1]:39138 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WXt1p-0002rP-Cz for submit@debbugs.gnu.org; Wed, 09 Apr 2014 09:59:02 -0400 Received: from pbsg500.nifty.com ([202.248.238.70]:48105) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WXt1i-0002rB-2K for 17203@debbugs.gnu.org; Wed, 09 Apr 2014 09:58:56 -0400 Received: from [10.120.1.47] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg500.nifty.com with ESMTP id s39DwW70018801 for <17203@debbugs.gnu.org>; Wed, 9 Apr 2014 22:58:33 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 09 Apr 2014 22:58:34 +0900 From: Norihiro Tanaka To: 17203@debbugs.gnu.org Subject: bug#17203: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand In-Reply-To: <20140406185213.BAA9.27F6AC2D@kcn.ne.jp> References: <20140406185213.BAA9.27F6AC2D@kcn.ne.jp> Message-Id: <20140409225830.786B.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_5343F8AF0000000010C4_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Now, I rebased this patch. From e395071da13703e31efc4d624dac91acfae6dfb0 Mon Sep 17 00:00:00 2001 From: Norihiro Tanaka Date: Sat, 29 Mar 2014 20:59:53 +0900 Subject: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 2.7 RCVD_IN_PSBL RBL: Received via a relay in PSBL [202.248.238.70 listed in psbl.surriel.com] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.3 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain X-Debbugs-Envelope-To: 17203 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Now, I rebased this patch. From e395071da13703e31efc4d624dac91acfae6dfb0 Mon Sep 17 00:00:00 2001 From: Norihiro Tanaka Date: Sat, 29 Mar 2014 20:59:53 +0900 Subject: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 2.7 RCVD_IN_PSBL RBL: Received via a relay in PSBL [202.248.238.70 listed in psbl.surriel.com] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.3 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain --------_5343F8AF0000000010C4_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Now, I rebased this patch. --------_5343F8AF0000000010C4_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSBlMzk1MDcxZGExMzcwM2UzMWVmYzRkNjI0ZGFjOTFhY2ZhZTZkZmIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBTYXQsIDI5IE1hciAyMDE0IDIwOjU5OjUzICswOTAwClN1YmplY3Q6IFtQQVRDSF0gZ3Jl cDogc3BlZWQtdXAgb2YgREZBIGJ5IGNoZWNraW5nIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIG9uCiBk ZW1hbmQKCklmIGRmYWV4ZWMoKSBydW5zIGluIG5vbi1VVEY4IGxvY2FsZXMsIGxlbmd0aCBhbmQg d2lkZSBjaGFyYWN0ZXIKcmVwcmVzZW50YXRpb24gYXJlIGNoZWNrZWQgZm9yIGFsbCBjaGFyYWN0 ZXJzIG9mIGEgbGluZSBpbiBhIGlucHV0CnN0cmluZy4gIEhvd2V2ZXIsIGlmIG1hdGNoZWQgZWFy bHkgaW4gdGhlIGxpbmUsIHJlc3VsdHMgZm9yIHJlbWFpbmluZwpjaGFyYWN0ZXJzIGFyZSB3YXN0 ZWQuCgpUaGlzIHBhdGNoIGNoZWNrcyBtdWx0aWJ5dGUgY2hhcmFjdGVycyBvbiBkZW1hbmQuICBJ dCBlbmFibGVzIHRvCmFjY29tcGxpc2ggdG8gc3BlZWQtdXAgZm9yIG1hdGNoZWQgZWFybHkgYW5k IHJlZHVjZSByZXF1aXJlZCBtZW1vcmllcy4KCiogc3JjL2RmYS5jIChzdHJ1Y3QgZGZhKTogUmVt b3ZlIG1lbWJlcnMuCihidWZfYmVnaW4sIGJ1Zl9lbmQpOiBObyBsb25nZXIgdGhleSBhcmUgdXNl ZC4gIFJlbW92ZSB0aGVtLgooU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RBVEUpOiBOb3cs IHRoZSBjb250ZW50IG9mIHRoZSBtYWNybyBpcwpleHRlbmRlZCBpbiBkZmFleGVjKCkuCih0cmFu c2l0X3N0YXRlX3NpbmdsZWJ5dGUpOiBzZW0gY2hlY2sgaXMgcmVtb3ZlZC4KKG1hdGNoX2FueWNo YXIpOiBEb2Vzbid0IHVzZSBgbWJsZW5fYnVmIGFuZCcgYGlucHV0d2NzJy4KKG1hdGNoX21iX2No YXJzZXQpOiBEb2Vzbid0IHVzZSBgbWJsZW5fYnVmIGFuZCcgYGlucHV0d2NzJy4KKGNoZWNrX21h dGNoaW5nX3dpdGhfbXVsdGlieXRlX29wcyk6IE1vZGlmeSBhcmd1bWVudHMuCih0cmFuc2l0X3N0 YXRlX2NvbnN1bWVfMWNoYXIpOiBNb2RpZnkgYXJndW1lbnRzLgoodHJhbnNpdF9zdGF0ZSk6IERv ZXNuJ3QgdXNlIGBtYmxlbl9idWYgYW5kJyBgaW5wdXR3Y3MnLgoocHJlcGFyZV93Y19idWYpOiBS ZW1vdmUgaXQuCihkZmFleGVjKTogRG9lc24ndCB1c2UgYG1ibGVuX2J1ZiBhbmQnIGBpbnB1dHdj cycuCi0tLQogc3JjL2RmYS5jIHwgMjA5ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0 aW9ucygrKSwgMTQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9kZmEuYyBiL3NyYy9k ZmEuYwppbmRleCA3NmY3ZTc5Li44MWI1NTljIDEwMDY0NAotLS0gYS9zcmMvZGZhLmMKKysrIGIv c3JjL2RmYS5jCkBAIC00MzEsMjQgKzQzMSw2IEBAIHN0cnVjdCBkZmEKICAgc3RydWN0IGRmYW11 c3QgKm11c3RzOyAgICAgICAgLyogTGlzdCBvZiBzdHJpbmdzLCBhdCBsZWFzdCBvbmUgb2Ygd2hp Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMga25vd24gdG8gYXBwZWFy IGluIGFueSByLmUuIG1hdGNoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBkZmEuICAqLwotICB1bnNpZ25lZCBjaGFyICptYmxlbl9idWY7ICAgICAvKiBDb3JyZXNw b25kIHRvIHRoZSBpbnB1dCBidWZmZXIgaW4gZGZhZXhlYy4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRWFjaCBlbGVtZW50IHN0b3JlcyB0aGUgbnVtYmVyIG9mIHJlbWFpbmlu ZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyBvZiB0aGUgY29ycmVz cG9uZGluZyBtdWx0aWJ5dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh cmFjdGVyIGluIHRoZSBpbnB1dCBzdHJpbmcuICBBIGVsZW1lbnQncwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyAwIGlmIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJh Y3RlciBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUtYnl0ZS4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgaW5wdXQgOiAnYScsIDxt YigwKT4sIDxtYigxKT4sIDxtYigyKT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWJsZW5fYnVmICAgOiAgMCwgICAgICAgMywgICAgICAgMiwgICAgICAgMQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgc2l6ZV90IG5tYmxlbl9idWY7ICAgICAgICAg ICAgLyogQWxsb2NhdGVkIHNpemUgb2YgbWJsZW5fYnVmLiAgKi8KLSAgd2NoYXJfdCAqaW5wdXR3 Y3M7ICAgICAgICAgICAgLyogV2lkZSBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlu cHV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBpbiBkZmFleGVj LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoaXMg YXJyYXkgaXMgdGhlIHNhbWUgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlIGxlbmd0aCBvZiBpbnB1dCBzdHJpbmcgKGNoYXIgYXJyYXkpLgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnB1dHN0cmluZ1tpXSBpcyBhIHNpbmdsZS1ieXRlIGNoYXIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBmaXJzdCBieXRlIG9m IGEgbXVsdGlieXRlIGNoYXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu cHV0d2NzW2ldIGlzIHRoZSBjb2RlcG9pbnQuICAqLwotICBzaXplX3QgbmlucHV0d2NzOyAgICAg ICAgICAgICAvKiBBbGxvY2F0ZWQgbnVtYmVyIG9mIGlucHV0d2NzIGVsZW1lbnRzLiAgKi8KICAg cG9zaXRpb25fc2V0ICptYl9mb2xsb3dzOyAgICAgLyogRm9sbG93IHNldCBhZGRlZCBieSBBTllD SEFSIGFuZC9vciBNQkNTRVQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24g ZGVtYW5kLiAgKi8KICAgaW50ICptYl9tYXRjaF9sZW5zOyAgICAgICAgICAgLyogQXJyYXkgb2Yg bGVuZ3RoIHJlZHVjZWQgYnkgQU5ZQ0hBUiBhbmQvb3IKQEAgLTg4OCw4ICs4NzAsNiBAQCBzdGF0 aWMgaW50IGN1cl9tYl9sZW4gPSAxOyAgICAgIC8qIExlbmd0aCBvZiB0aGUgbXVsdGlieXRlIHJl cHJlc2VudGF0aW9uIG9mCiBzdGF0aWMgbWJzdGF0ZV90IG1iczsgICAgICAgICAgIC8qIG1ic3Rh dGUgZm9yIG1icnRvd2MuICAqLwogc3RhdGljIHdjaGFyX3Qgd2N0b2s7ICAgICAgICAgICAvKiBX aWRlIGNoYXJhY3RlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWJ5dGUgY2hhcmFjdGVyLiAgKi8KLXN0YXRpYyB1 bnNpZ25lZCBjaGFyIGNvbnN0ICpidWZfYmVnaW47ICAvKiByZWZlcmVuY2UgdG8gYmVnaW4gaW4g ZGZhZXhlYy4gICovCi1zdGF0aWMgdW5zaWduZWQgY2hhciBjb25zdCAqYnVmX2VuZDsgICAgLyog cmVmZXJlbmNlIHRvIGVuZCBpbiBkZmFleGVjLiAgKi8KIAogCiAvKiBOb3RlIHRoYXQgY2hhcmFj dGVycyBiZWNvbWUgdW5zaWduZWQgaGVyZS4gICovCkBAIC0yOTE5LDI3ICsyODk5LDYgQEAgYnVp bGRfc3RhdGVfemVybyAoc3RydWN0IGRmYSAqZCkKIAogLyogTXVsdGlieXRlIGNoYXJhY3RlciBo YW5kbGluZyBzdWItcm91dGluZXMgZm9yIGRmYWV4ZWMuICAqLwogCi0vKiBUaGUgaW5pdGlhbCBz dGF0ZSBtYXkgZW5jb3VudGVyIGEgYnl0ZSB3aGljaCBpcyBub3QgYSBzaW5nbGUgYnl0ZSBjaGFy YWN0ZXIKLSAgIG5vciB0aGUgZmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIuICBC dXQgaXQgaXMgaW5jb3JyZWN0IGZvciB0aGUKLSAgIGluaXRpYWwgc3RhdGUgdG8gYWNjZXB0IHN1 Y2ggYSBieXRlLiAgRm9yIGV4YW1wbGUsIGluIFNoaWZ0IEpJUyB0aGUgcmVndWxhcgotICAgZXhw cmVzc2lvbiAiXFwiIGFjY2VwdHMgdGhlIGNvZGVwb2ludCAweDVjLCBidXQgc2hvdWxkIG5vdCBh Y2NlcHQgdGhlIHNlY29uZAotICAgYnl0ZSBvZiB0aGUgY29kZXBvaW50IDB4ODE1Yy4gIFRoZW4g dGhlIGluaXRpYWwgc3RhdGUgbXVzdCBza2lwIHRoZSBieXRlcwotICAgdGhhdCBhcmUgbm90IGEg c2luZ2xlIGJ5dGUgY2hhcmFjdGVyIG5vciB0aGUgZmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZQot ICAgY2hhcmFjdGVyLiAgKi8KLSNkZWZpbmUgU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RB VEUocywgcCkJCVwKLSAgaWYgKHMgPT0gMCkJCQkJCQlcCi0gICAgewkJCQkJCQlcCi0gICAgICB3 aGlsZSAoZC0+aW5wdXR3Y3NbcCAtIGJ1Zl9iZWdpbl0gPT0gMAkJXAotICAgICAgICAgICAgICYm IGQtPm1ibGVuX2J1ZltwIC0gYnVmX2JlZ2luXSAhPSAwCVwKLSAgICAgICAgICAgICAmJiAodW5z aWduZWQgY2hhciBjb25zdCAqKSBwIDwgYnVmX2VuZCkJXAotICAgICAgICArK3A7CQkJCQkJXAot ICAgICAgaWYgKChjaGFyICopIHAgPj0gZW5kKQkJCQlcCi0gICAgICAgIHsJCQkJCQlcCi0gICAg ICAgICAgKmVuZCA9IHNhdmVkX2VuZDsJCQkJXAotICAgICAgICAgIHJldHVybiBOVUxMOwkJCQkJ XAotICAgICAgICB9CQkJCQkJXAotICAgIH0KLQogc3RhdGljIHZvaWQKIHJlYWxsb2NfdHJhbnNf aWZfbmVjZXNzYXJ5IChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gbmV3X3N0YXRlKQogewpAQCAt Mjk5NiwxNCArMjk1NSw3IEBAIHRyYW5zaXRfc3RhdGVfc2luZ2xlYnl0ZSAoc3RydWN0IGRmYSAq ZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCiAgICAgICAgICAgICB3b3Jr cyA9IDA7CiAgICAgICAgIH0KICAgICAgIGVsc2UgaWYgKHdvcmtzIDwgMCkKLSAgICAgICAgewot ICAgICAgICAgIGlmIChwID09IGJ1Zl9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg IC8qIEF0IHRoZSBtb21lbnQsIGl0IG11c3Qgbm90IGhhcHBlbi4gICovCi0gICAgICAgICAgICAg IGFib3J0ICgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIHdvcmtzID0gMDsKLSAgICAgICAg fQorICAgICAgICB3b3JrcyA9IDA7CiAgICAgICBlbHNlIGlmIChkLT5mYWlsc1t3b3Jrc10pCiAg ICAgICAgIHsKICAgICAgICAgICB3b3JrcyA9IGQtPmZhaWxzW3dvcmtzXVsqcF07CkBAIC0zMDE4 LDE4ICsyOTcwLDEzIEBAIHRyYW5zaXRfc3RhdGVfc2luZ2xlYnl0ZSAoc3RydWN0IGRmYSAqZCwg c3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCiAgIHJldHVybiBydmFsOwogfQog Ci0vKiBNYXRjaCBhICIuIiBhZ2FpbnN0IHRoZSBjdXJyZW50IGNvbnRleHQuICBidWZfYmVnaW5b SURYXSBpcyB0aGUKLSAgIGN1cnJlbnQgcG9zaXRpb24uICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0 aGUgbWF0Y2gsIGluIGJ5dGVzLgotICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgIi4iLiAg Ki8KKy8qIE1hdGNoIGEgIi4iIGFnYWluc3QgdGhlIGN1cnJlbnQgY29udGV4dC4gIFJldHVybiB0 aGUgbGVuZ3RoIG9mIHRoZQorICAgbWF0Y2gsIGluIGJ5dGVzLiAgUE9TIGlzIHRoZSBwb3NpdGlv biBvZiB0aGUgIi4iLiAgKi8KIHN0YXRpYyBpbnQKLW1hdGNoX2FueWNoYXIgKHN0cnVjdCBkZmEg KmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCittYXRjaF9hbnljaGFy IChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAorICAgICAgICAgICAg ICAgd2NoYXJfdCB3Yywgc2l6ZV90IG1iY2xlbikKIHsKICAgaW50IGNvbnRleHQ7Ci0gIHdjaGFy X3Qgd2M7Ci0gIGludCBtYmNsZW47Ci0KLSAgd2MgPSBkLT5pbnB1dHdjc1tpZHhdOwotICBtYmNs ZW4gPSBNQVggKDEsIGQtPm1ibGVuX2J1ZltpZHhdKTsKIAogICAvKiBDaGVjayBzeW50YXggYml0 cy4gICovCiAgIGlmICh3YyA9PSAod2NoYXJfdCkgZW9sYnl0ZSkKQEAgLTMwNTEsMTYgKzI5OTgs MTQgQEAgbWF0Y2hfYW55Y2hhciAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHBvc2l0aW9u IHBvcywgc2l6ZV90IGlkeCkKIH0KIAogLyogTWF0Y2ggYSBicmFja2V0IGV4cHJlc3Npb24gYWdh aW5zdCB0aGUgY3VycmVudCBjb250ZXh0LgotICAgYnVmX2JlZ2luW0lEWF0gaXMgdGhlIGN1cnJl bnQgcG9zaXRpb24uCiAgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2gsIGluIGJ5dGVz LgogICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYnJhY2tldCBleHByZXNzaW9uLiAgKi8K IHN0YXRpYyBpbnQKLW1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBz LCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCittYXRjaF9tYl9jaGFyc2V0IChzdHJ1Y3QgZGZh ICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAorICAgICAgICAgICAgICAgICAgY2hhciBj b25zdCAqcCwgd2NoYXJfdCB3Yywgc2l6ZV90IG1hdGNoX2xlbikKIHsKICAgc2l6ZV90IGk7CiAg IGJvb2wgbWF0Y2g7ICAgICAgICAgICAgICAvKiBNYXRjaGluZyBzdWNjZWVkZWQuICAqLwotICBp bnQgbWF0Y2hfbGVuOyAgICAgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBjaGFyYWN0ZXIgKG9yIGNv bGxhdGluZyBlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB3aGlj aCB0aGlzIG9wZXJhdG9yIG1hdGNoZXMuICAqLwogICBpbnQgb3BfbGVuOyAgICAgICAgICAgICAg LyogTGVuZ3RoIG9mIHRoZSBvcGVyYXRvci4gICovCiAgIGNoYXIgYnVmZmVyWzEyOF07CiAKQEAg LTMwNjgsOSArMzAxMyw2IEBAIG1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRl X251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCiAgIHN0cnVjdCBtYl9jaGFyX2NsYXNz ZXMgKndvcmtfbWJjOwogCiAgIGludCBjb250ZXh0OwotICB3Y2hhcl90IHdjOyAgICAgICAgICAg ICAgICAgICAvKiBDdXJyZW50IHJlZmVycmluZyBjaGFyYWN0ZXIuICAqLwotCi0gIHdjID0gZC0+ aW5wdXR3Y3NbaWR4XTsKIAogICAvKiBDaGVjayBzeW50YXggYml0cy4gICovCiAgIGlmICh3YyA9 PSAod2NoYXJfdCkgZW9sYnl0ZSkKQEAgLTMwOTEsNyArMzAzMyw2IEBAIG1hdGNoX21iX2NoYXJz ZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgp CiAgIC8qIEFzc2lnbiB0aGUgY3VycmVudCByZWZlcnJpbmcgb3BlcmF0b3IgdG8gd29ya19tYmMu ICAqLwogICB3b3JrX21iYyA9ICYoZC0+bWJjc2V0c1soZC0+bXVsdGlieXRlX3Byb3BbcG9zLmlu ZGV4XSkgPj4gMl0pOwogICBtYXRjaCA9ICF3b3JrX21iYy0+aW52ZXJ0OwotICBtYXRjaF9sZW4g PSBNQVggKDEsIGQtPm1ibGVuX2J1ZltpZHhdKTsKIAogICAvKiBNYXRjaCBpbiByYW5nZSAwLTI1 NT8gICovCiAgIGlmICh3YyA8IE5PVENIQVIgJiYgd29ya19tYmMtPmNzZXQgIT0gLTEKQEAgLTMx MDUsMTQgKzMwNDYsMTQgQEAgbWF0Y2hfbWJfY2hhcnNldCAoc3RydWN0IGRmYSAqZCwgc3RhdGVf bnVtIHMsIHBvc2l0aW9uIHBvcywgc2l6ZV90IGlkeCkKICAgICAgICAgZ290byBjaGFyc2V0X21h dGNoZWQ7CiAgICAgfQogCi0gIHN0cm5jcHkgKGJ1ZmZlciwgKGNoYXIgY29uc3QgKikgYnVmX2Jl Z2luICsgaWR4LCBtYXRjaF9sZW4pOworICBzdHJuY3B5IChidWZmZXIsIHAsIG1hdGNoX2xlbik7 CiAgIGJ1ZmZlclttYXRjaF9sZW5dID0gJ1wwJzsKIAogICAvKiBtYXRjaCB3aXRoIGFuIGVxdWl2 YWxlbmNlIGNsYXNzPyAgKi8KICAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5uZXF1aXZzOyBp KyspCiAgICAgewogICAgICAgb3BfbGVuID0gc3RybGVuICh3b3JrX21iYy0+ZXF1aXZzW2ldKTsK LSAgICAgIHN0cm5jcHkgKGJ1ZmZlciwgKGNoYXIgY29uc3QgKikgYnVmX2JlZ2luICsgaWR4LCBv cF9sZW4pOworICAgICAgc3RybmNweSAoYnVmZmVyLCBwLCBvcF9sZW4pOwogICAgICAgYnVmZmVy W29wX2xlbl0gPSAnXDAnOwogICAgICAgaWYgKHN0cmNvbGwgKHdvcmtfbWJjLT5lcXVpdnNbaV0s IGJ1ZmZlcikgPT0gMCkKICAgICAgICAgewpAQCAtMzEyNSw3ICszMDY2LDcgQEAgbWF0Y2hfbWJf Y2hhcnNldCAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHBvc2l0aW9uIHBvcywgc2l6ZV90 IGlkeCkKICAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5uY29sbF9lbGVtczsgaSsrKQogICAg IHsKICAgICAgIG9wX2xlbiA9IHN0cmxlbiAod29ya19tYmMtPmNvbGxfZWxlbXNbaV0pOwotICAg ICAgc3RybmNweSAoYnVmZmVyLCAoY2hhciBjb25zdCAqKSBidWZfYmVnaW4gKyBpZHgsIG9wX2xl bik7CisgICAgICBzdHJuY3B5IChidWZmZXIsIHAsIG9wX2xlbik7CiAgICAgICBidWZmZXJbb3Bf bGVuXSA9ICdcMCc7CiAKICAgICAgIGlmIChzdHJjb2xsICh3b3JrX21iYy0+Y29sbF9lbGVtc1tp XSwgYnVmZmVyKSA9PSAwKQpAQCAtMzE1OSwxMiArMzEwMCwxMCBAQCBjaGFyc2V0X21hdGNoZWQ6 CiAgICBhcnJheSB3aGljaCBjb3JyZXNwb25kcyB0byAnZC0+c3RhdGVzW3NdLm1icHMuZWxlbSc7 IGVhY2ggZWxlbWVudCBvZiB0aGUKICAgIGFycmF5IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgYnl0 ZXMgd2l0aCB3aGljaCB0aGUgZWxlbWVudCBjYW4gbWF0Y2guCiAKLSAgICdpZHgnIGlzIHRoZSBp bmRleCBmcm9tIGJ1Zl9iZWdpbiwgYW5kIGl0IGlzIHRoZSBjdXJyZW50IHBvc2l0aW9uCi0gICBp biB0aGUgYnVmZmVyLgotCiAgICBUaGUgY2FsbGVyIE1VU1QgZnJlZSB0aGUgYXJyYXkgd2hpY2gg dGhpcyBmdW5jdGlvbiByZXR1cm4uICAqLwogc3RhdGljIGludCAqCi1jaGVja19tYXRjaGluZ193 aXRoX211bHRpYnl0ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBzaXplX3QgaWR4 KQorY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChzdHJ1Y3QgZGZhICpkLCBzdGF0 ZV9udW0gcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAq cCwgd2NoYXJfdCB3Yywgc2l6ZV90IG1iY2xlbikKIHsKICAgc2l6ZV90IGk7CiAgIGludCAqcmFy cmF5OwpAQCAtMzE3NiwxMCArMzExNSwxMCBAQCBjaGVja19tYXRjaGluZ193aXRoX211bHRpYnl0 ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBzaXplX3QgaWR4KQogICAgICAgc3dp dGNoIChkLT50b2tlbnNbcG9zLmluZGV4XSkKICAgICAgICAgewogICAgICAgICBjYXNlIEFOWUNI QVI6Ci0gICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfYW55Y2hhciAoZCwgcywgcG9zLCBpZHgp OworICAgICAgICAgIHJhcnJheVtpXSA9IG1hdGNoX2FueWNoYXIgKGQsIHMsIHBvcywgd2MsIG1i Y2xlbik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUJDU0VUOgotICAgICAgICAg IHJhcnJheVtpXSA9IG1hdGNoX21iX2NoYXJzZXQgKGQsIHMsIHBvcywgaWR4KTsKKyAgICAgICAg ICByYXJyYXlbaV0gPSBtYXRjaF9tYl9jaGFyc2V0IChkLCBzLCBwb3MsIHAsIHdjLCBtYmNsZW4p OwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgIGJyZWFrOyAg ICAgICAgICAgICAgICAvKiBjYW5ub3QgaGFwcGVuLiAgKi8KQEAgLTMxOTksMjIgKzMxMzgsMjIg QEAgY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChzdHJ1Y3QgZGZhICpkLCBzdGF0 ZV9udW0gcywgc2l6ZV90IGlkeCkKIHN0YXRpYyBzdGF0dXNfdHJhbnNpdF9zdGF0ZQogdHJhbnNp dF9zdGF0ZV9jb25zdW1lXzFjaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm1hdGNoX2xlbnMsIGludCAqbWJjbGVuKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IHdjLCBzaXplX3QgbWJjbGVuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm1hdGNoX2xlbnMpCiB7CiAgIHNpemVfdCBp LCBqOwogICBpbnQgazsKICAgc3RhdGVfbnVtIHMxLCBzMjsKLSAgaW50ICp3b3JrX21ibHM7CiAg IHN0YXR1c190cmFuc2l0X3N0YXRlIHJzID0gVFJBTlNJVF9TVEFURV9ET05FOwogCi0gIC8qIENh bGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSAoc2luZ2xlL211bHRpIGJ5dGUpIGNoYXJhY3Rlcgot ICAgICB0byB3aGljaCBwIHBvaW50cy4gICovCi0gICptYmNsZW4gPSBNQVggKDEsIGQtPm1ibGVu X2J1ZlsqcHAgLSBidWZfYmVnaW5dKTsKKyAgLyogQ2hlY2sgKGlucHV0KSBtYXRjaF9sZW5zLCBh bmQgaW5pdGlhbGl6ZSBpZiBpdCBpcyBOVUxMLiAgKi8KKyAgaWYgKG1hdGNoX2xlbnMgPT0gTlVM TCAmJiBkLT5zdGF0ZXNbc10ubWJwcy5uZWxlbSAhPSAwKQorICAgIG1hdGNoX2xlbnMgPSBjaGVj a19tYXRjaGluZ193aXRoX211bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICopICpwcCwg d2MsIG1iY2xlbik7CiAKICAgLyogQ2FsY3VsYXRlIHRoZSBzdGF0ZSB3aGljaCBjYW4gYmUgcmVh Y2hlZCBmcm9tIHRoZSBzdGF0ZSAncycgYnkKLSAgICAgY29uc3VtaW5nICcqbWJjbGVuJyBzaW5n bGUgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLiAgKi8KKyAgICAgY29uc3VtaW5nICdtYmNsZW4nIHNp bmdsZSBieXRlcyBmcm9tIHRoZSBidWZmZXIuICAqLwogICBzMSA9IHM7Ci0gIGZvciAoayA9IDA7 IGsgPCAqbWJjbGVuOyBrKyspCisgIGZvciAoayA9IDA7IGsgPCBtYmNsZW47IGsrKykKICAgICB7 CiAgICAgICBzMiA9IHMxOwogICAgICAgcnMgPSB0cmFuc2l0X3N0YXRlX3NpbmdsZWJ5dGUgKGQs IHMyLCAoKnBwKSsrLCAmczEpOwpAQCAtMzIyMiwxNyArMzE2MSwxMSBAQCB0cmFuc2l0X3N0YXRl X2NvbnN1bWVfMWNoYXIgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLAogICAvKiBDb3B5IHRo ZSBwb3NpdGlvbnMgY29udGFpbmVkIGJ5ICdzMScgdG8gdGhlIHNldCAnZC0+bWJfZm9sbG93cycu ICAqLwogICBjb3B5ICgmKGQtPnN0YXRlc1tzMV0uZWxlbXMpLCBkLT5tYl9mb2xsb3dzKTsKIAot ICAvKiBDaGVjayAoaW5wdXQpIG1hdGNoX2xlbnMsIGFuZCBpbml0aWFsaXplIGlmIGl0IGlzIE5V TEwuICAqLwotICBpZiAobWF0Y2hfbGVucyA9PSBOVUxMICYmIGQtPnN0YXRlc1tzXS5tYnBzLm5l bGVtICE9IDApCi0gICAgd29ya19tYmxzID0gY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVf b3BzIChkLCBzLCAqcHAgLSBidWZfYmVnaW4pOwotICBlbHNlCi0gICAgd29ya19tYmxzID0gbWF0 Y2hfbGVuczsKLQogICAvKiBBZGQgYWxsIG9mIHRoZSBwb3NpdGlvbnMgd2hpY2ggY2FuIGJlIHJl YWNoZWQgZnJvbSAncycgYnkgY29uc3VtaW5nCiAgICAgIGEgc2luZ2xlIGNoYXJhY3Rlci4gICov CiAgIGZvciAoaSA9IDA7IGkgPCBkLT5zdGF0ZXNbc10ubWJwcy5uZWxlbTsgaSsrKQogICAgIHsK LSAgICAgIGlmICh3b3JrX21ibHNbaV0gPT0gKm1iY2xlbikKKyAgICAgIGlmIChtYXRjaF9sZW5z W2ldID09IG1iY2xlbikKICAgICAgICAgZm9yIChqID0gMDsgaiA8IGQtPmZvbGxvd3NbZC0+c3Rh dGVzW3NdLm1icHMuZWxlbXNbaV0uaW5kZXhdLm5lbGVtOwogICAgICAgICAgICAgIGorKykKICAg ICAgICAgICBpbnNlcnQgKGQtPmZvbGxvd3NbZC0+c3RhdGVzW3NdLm1icHMuZWxlbXNbaV0uaW5k ZXhdLmVsZW1zW2pdLApAQCAtMzI0Nyw3ICszMTgwLDggQEAgdHJhbnNpdF9zdGF0ZV9jb25zdW1l XzFjaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywKICAgIGJ1ZmZlci4gIFRoaXMgZnVu Y3Rpb24gaXMgZm9yIHNvbWUgb3BlcmF0b3Igd2hpY2ggY2FuIG1hdGNoIHdpdGggYSBtdWx0aS0K ICAgIGJ5dGUgY2hhcmFjdGVyIG9yIGEgY29sbGF0aW5nIGVsZW1lbnQgKHdoaWNoIG1heSBiZSBt dWx0aSBjaGFyYWN0ZXJzKS4gICovCiBzdGF0aWMgc3RhdGVfbnVtCi10cmFuc2l0X3N0YXRlIChz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwKQordHJh bnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29u c3QgKipwcCwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29uc3QgKmVuZCkKIHsKICAg c3RhdGVfbnVtIHMxOwogICBpbnQgbWJjbGVuOyAgLyogVGhlIGxlbmd0aCBvZiBjdXJyZW50IGlu cHV0IG11bHRpYnl0ZSBjaGFyYWN0ZXIuICAqLwpAQCAtMzI2Myw3ICszMTk3LDggQEAgdHJhbnNp dF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3Qg KipwcCkKICAgICAgICBXZSBjaGVjayB3aGV0aGVyIGVhY2ggb2YgdGhlbSBjYW4gbWF0Y2ggb3Ig bm90LiAgKi8KICAgICB7CiAgICAgICAvKiBOb3RlOiBjYWxsZXIgbXVzdCBmcmVlIHRoZSByZXR1 cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4gICovCi0gICAgICBtYXRjaF9sZW5zID0gY2hlY2tf bWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChkLCBzLCAqcHAgLSBidWZfYmVnaW4pOworICAg ICAgbWJjbGVuID0gbWJzX3RvX3djaGFyIChkLCAmd2MsIChjaGFyIGNvbnN0ICopICpwcCwgZW5k IC0gKnBwLCAmbWJzKTsKKyAgICAgIG1hdGNoX2xlbnMgPSBjaGVja19tYXRjaGluZ193aXRoX211 bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICopICpwcCwgd2MsIG1iY2xlbik7CiAKICAg ICAgIGZvciAoaSA9IDA7IGkgPCBuZWxlbTsgaSsrKQogICAgICAgICAvKiBTZWFyY2ggdGhlIG9w ZXJhdG9yIHdoaWNoIG1hdGNoIHRoZSBsb25nZXN0IHN0cmluZywKQEAgLTMyOTUsMTUgKzMyMzAs MTUgQEAgdHJhbnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVk IGNoYXIgY29uc3QgKipwcCkKICAgICAgbm90IGJlIGEgY2hhcmFjdGVyIGJ1dCBhIChtdWx0aSBj aGFyYWN0ZXIpIGNvbGxhdGluZyBlbGVtZW50LgogICAgICBXZSBlbnVtZXJhdGUgYWxsIG9mIHRo ZSBwb3NpdGlvbnMgd2hpY2ggJ3MnIGNhbiByZWFjaCBieSBjb25zdW1pbmcKICAgICAgJ21heGxl bicgYnl0ZXMuICAqLwotICB0cmFuc2l0X3N0YXRlX2NvbnN1bWVfMWNoYXIgKGQsIHMsIHBwLCBt YXRjaF9sZW5zLCAmbWJjbGVuKTsKKyAgdHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBz LCBwcCwgd2MsIG1iY2xlbiwgbWF0Y2hfbGVucyk7CiAKLSAgd2MgPSBkLT5pbnB1dHdjc1sqcHAg LSBtYmNsZW4gLSBidWZfYmVnaW5dOwogICBzMSA9IHN0YXRlX2luZGV4IChkLCBkLT5tYl9mb2xs b3dzLCB3Y2hhcl9jb250ZXh0ICh3YykpOwogICByZWFsbG9jX3RyYW5zX2lmX25lY2Vzc2FyeSAo ZCwgczEpOwogCiAgIHdoaWxlICgqcHAgLSBwMSA8IG1heGxlbikKICAgICB7Ci0gICAgICB0cmFu c2l0X3N0YXRlX2NvbnN1bWVfMWNoYXIgKGQsIHMxLCBwcCwgTlVMTCwgJm1iY2xlbik7CisgICAg ICBtYmNsZW4gPSBtYnNfdG9fd2NoYXIgKGQsICZ3YywgKGNoYXIgY29uc3QgKikgKnBwLCBlbmQg LSAqcHAsICZtYnMpOworICAgICAgdHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBzMSwg cHAsIHdjLCBtYmNsZW4sIE5VTEwpOwogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsZW07IGkr KykKICAgICAgICAgewpAQCAtMzMxNCw0NSArMzI0OSwxMiBAQCB0cmFuc2l0X3N0YXRlIChzdHJ1 Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgdW5zaWduZWQgY2hhciBjb25zdCAqKnBwKQogICAgICAg ICAgICAgICAgICAgICAgIGQtPm1iX2ZvbGxvd3MpOwogICAgICAgICB9CiAKLSAgICAgIHdjID0g ZC0+aW5wdXR3Y3NbKnBwIC0gbWJjbGVuIC0gYnVmX2JlZ2luXTsKICAgICAgIHMxID0gc3RhdGVf aW5kZXggKGQsIGQtPm1iX2ZvbGxvd3MsIHdjaGFyX2NvbnRleHQgKHdjKSk7CiAgICAgICByZWFs bG9jX3RyYW5zX2lmX25lY2Vzc2FyeSAoZCwgczEpOwogICAgIH0KICAgcmV0dXJuIHMxOwogfQog Ci0KLS8qIEluaXRpYWxpemUgbWJsZW5fYnVmIGFuZCBpbnB1dHdjcyB3aXRoIGRhdGEgZnJvbSB0 aGUgbmV4dCBsaW5lLiAgKi8KLQotc3RhdGljIHZvaWQKLXByZXBhcmVfd2NfYnVmIChzdHJ1Y3Qg ZGZhICpkLCBjb25zdCBjaGFyICpiZWdpbiwgY29uc3QgY2hhciAqZW5kKQotewotICB1bnNpZ25l ZCBjaGFyIGVvbCA9IGVvbGJ5dGU7Ci0gIHNpemVfdCBpOwotICBzaXplX3QgaWxpbSA9IGVuZCAt IGJlZ2luICsgMTsKLQotICBidWZfYmVnaW4gPSAodW5zaWduZWQgY2hhciAqKSBiZWdpbjsKLQot ICBmb3IgKGkgPSAwOyBpIDwgaWxpbTsgaSsrKQotICAgIHsKLSAgICAgIHNpemVfdCBuYnl0ZXMg PSBtYnNfdG9fd2NoYXIgKGQsIGQtPmlucHV0d2NzICsgaSwgYmVnaW4gKyBpLCBpbGltIC0gaSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYnMpOwotICAgICAgZC0+bWJs ZW5fYnVmW2ldID0gbmJ5dGVzIC0gKG5ieXRlcyA9PSAxKTsKLSAgICAgIGlmIChiZWdpbltpXSA9 PSBlb2wpCi0gICAgICAgIGJyZWFrOwotICAgICAgd2hpbGUgKC0tbmJ5dGVzICE9IDApCi0gICAg ICAgIHsKLSAgICAgICAgICBpKys7Ci0gICAgICAgICAgZC0+bWJsZW5fYnVmW2ldID0gbmJ5dGVz OwotICAgICAgICAgIGQtPmlucHV0d2NzW2ldID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICBi dWZfZW5kID0gKHVuc2lnbmVkIGNoYXIgKikgKGJlZ2luICsgaSk7Ci0gIGQtPm1ibGVuX2J1Zltp XSA9IDA7Ci0gIGQtPmlucHV0d2NzW2ldID0gMDsgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICov Ci19Ci0KIC8qIFNlYXJjaCB0aHJvdWdoIGEgYnVmZmVyIGxvb2tpbmcgZm9yIGEgbWF0Y2ggdG8g dGhlIGdpdmVuIHN0cnVjdCBkZmEuCiAgICBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEg c3RyaW5nIG1hdGNoaW5nIHRoZSByZWdleHAgaW4gdGhlCiAgICBidWZmZXIsIGFuZCB0aGUgc2hv cnRlc3QgcG9zc2libGUgdmVyc2lvbiB0aGVyZW9mLiAgUmV0dXJuIGEgcG9pbnRlciB0bwpAQCAt MzM3MCw3ICszMjcyLDcgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVn aW4sIGNoYXIgKmVuZCwKICAgICAgICAgIGludCBhbGxvd19ubCwgc2l6ZV90ICpjb3VudCwgaW50 ICpiYWNrcmVmKQogewogICBzdGF0ZV9udW0gcywgczE7ICAgICAgICAgICAgICAvKiBDdXJyZW50 IHN0YXRlLiAgKi8KLSAgdW5zaWduZWQgY2hhciBjb25zdCAqcDsgICAgICAgLyogQ3VycmVudCBp bnB1dCBjaGFyYWN0ZXIuICAqLworICB1bnNpZ25lZCBjaGFyIGNvbnN0ICpwLCAqbWJwOyAvKiBD dXJyZW50IGlucHV0IGNoYXJhY3Rlci4gICovCiAgIHN0YXRlX251bSAqKnRyYW5zLCAqdDsgICAg ICAgIC8qIENvcHkgb2YgZC0+dHJhbnMgc28gaXQgY2FuIGJlIG9wdGltaXplZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGEgcmVnaXN0ZXIuICAqLwogICB1bnNpZ25l ZCBjaGFyIGVvbCA9IGVvbGJ5dGU7ICAvKiBMaWtld2lzZSBmb3IgZW9sYnl0ZS4gICovCkBAIC0z MzgwLDcgKzMyODIsNyBAQCBkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdp biwgY2hhciAqZW5kLAogICAgIGJ1aWxkX3N0YXRlX3plcm8gKGQpOwogCiAgIHMgPSBzMSA9IDA7 Ci0gIHAgPSAodW5zaWduZWQgY2hhciBjb25zdCAqKSBiZWdpbjsKKyAgcCA9IG1icCA9ICh1bnNp Z25lZCBjaGFyIGNvbnN0ICopIGJlZ2luOwogICB0cmFucyA9IGQtPnRyYW5zOwogICBzYXZlZF9l bmQgPSAqKHVuc2lnbmVkIGNoYXIgKikgZW5kOwogICAqZW5kID0gZW9sOwpAQCAtMzM4OCwxMCAr MzI5MCw3IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29uc3QgKmJlZ2luLCBjaGFy ICplbmQsCiAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkKICAgICB7CiAgICAgICBzdGF0aWMgYm9v bCBtYl9hbGxvYyA9IGZhbHNlOwotICAgICAgUkVBTExPQ19JRl9ORUNFU1NBUlkgKGQtPm1ibGVu X2J1ZiwgZC0+bm1ibGVuX2J1ZiwgZW5kIC0gYmVnaW4gKyAyKTsKLSAgICAgIFJFQUxMT0NfSUZf TkVDRVNTQVJZIChkLT5pbnB1dHdjcywgZC0+bmlucHV0d2NzLCBlbmQgLSBiZWdpbiArIDIpOwog ICAgICAgbWVtc2V0ICgmbWJzLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotICAgICAgcHJlcGFy ZV93Y19idWYgKGQsIChjb25zdCBjaGFyICopIHAsIGVuZCk7CiAgICAgICBpZiAoIW1iX2FsbG9j KQogICAgICAgICB7CiAgICAgICAgICAgTUFMTE9DIChkLT5tYl9tYXRjaF9sZW5zLCBkLT5ubGVh dmVzKTsKQEAgLTM0MDcsMTAgKzMzMDYsMzIgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hh ciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICAgICAgewogICAgICAgICAgIHdoaWxlICgo dCA9IHRyYW5zW3NdKSAhPSBOVUxMKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAo cCA+IGJ1Zl9lbmQpCi0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIHMxID0g czsKLSAgICAgICAgICAgICAgU0tJUF9SRU1BSU5TX01CX0lGX0lOSVRJQUxfU1RBVEUgKHMsIHAp OworCisgICAgICAgICAgICAgIGlmIChzID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgLyogVGhlIGluaXRpYWwgc3RhdGUgbWF5IGVuY291bnRlciBhIGJ5dGUgd2hp Y2ggaXMgbm90CisgICAgICAgICAgICAgICAgICAgICBhIHNpbmdsZSBieXRlIGNoYXJhY3RlciBu b3IgdGhlIGZpcnN0IGJ5dGUgb2YgYQorICAgICAgICAgICAgICAgICAgICAgbXVsdGlieXRlIGNo YXJhY3Rlci4gIEJ1dCBpdCBpcyBpbmNvcnJlY3QgZm9yIHRoZQorICAgICAgICAgICAgICAgICAg ICAgaW5pdGlhbCBzdGF0ZSB0byBhY2NlcHQgc3VjaCBhIGJ5dGUuICBGb3IgZXhhbXBsZSwKKyAg ICAgICAgICAgICAgICAgICAgIGluIFNoaWZ0IEpJUyB0aGUgcmVndWxhciBleHByZXNzaW9uICJc XCIgYWNjZXB0cworICAgICAgICAgICAgICAgICAgICAgdGhlIGNvZGVwb2ludCAweDVjLCBidXQg c2hvdWxkIG5vdCBhY2NlcHQgdGhlIHNlY29uZAorICAgICAgICAgICAgICAgICAgICAgYnl0ZSBv ZiB0aGUgY29kZXBvaW50IDB4ODE1Yy4gIFRoZW4gdGhlIGluaXRpYWwKKyAgICAgICAgICAgICAg ICAgICAgIHN0YXRlIG11c3Qgc2tpcCB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90IGEgc2luZ2xlCisg ICAgICAgICAgICAgICAgICAgICBieXRlIGNoYXJhY3RlciBub3IgdGhlIGZpcnN0IGJ5dGUgb2Yg YSBtdWx0aWJ5dGUKKyAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlci4gICovCisgICAgICAg ICAgICAgICAgICB3Y2hhcl90IHdjOworICAgICAgICAgICAgICAgICAgd2hpbGUgKG1icCA8IHAp CisgICAgICAgICAgICAgICAgICAgIG1icCArPSBtYnNfdG9fd2NoYXIgKGQsICZ3YywgKGNoYXIg Y29uc3QgKikgbWJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bmQgLSAoY2hhciBjb25zdCAqKSBtYnAsICZtYnMpOworICAgICAgICAgICAgICAgICAgcCA9IG1i cDsKKworICAgICAgICAgICAgICAgICAgaWYgKChjaGFyICopIHAgPj0gZW5kKQorICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgKmVuZCA9IHNhdmVkX2VuZDsKKyAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICBpZiAoZC0+c3RhdGVzW3NdLm1icHMu bmVsZW0gPT0gMCkKICAgICAgICAgICAgICAgICB7CkBAIC0zNDMxLDcgKzMzNTIsOCBAQCBkZmFl eGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLAogCiAgICAg ICAgICAgICAgIC8qIENhbiBtYXRjaCB3aXRoIGEgbXVsdGlieXRlIGNoYXJhY3RlciAoYW5kIG11 bHRpIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICBjb2xsYXRpbmcgZWxlbWVudCkuICBUcmFu c2l0aW9uIHRhYmxlIG1pZ2h0IGJlIHVwZGF0ZWQuICAqLwotICAgICAgICAgICAgICBzID0gdHJh bnNpdF9zdGF0ZSAoZCwgcywgJnApOworICAgICAgICAgICAgICBzID0gdHJhbnNpdF9zdGF0ZSAo ZCwgcywgJnAsICh1bnNpZ25lZCBjaGFyICopIGVuZCk7CisgICAgICAgICAgICAgIG1icCA9IHA7 CiAgICAgICAgICAgICAgIHRyYW5zID0gZC0+dHJhbnM7CiAgICAgICAgICAgICB9CiAgICAgICAg IH0KQEAgLTM0NjYsNyArMzM4OCw4IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29u c3QgKmJlZ2luLCBjaGFyICplbmQsCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIC8qIENh biBtYXRjaCB3aXRoIGEgbXVsdGlieXRlIGNoYXJhY3RlciAoYW5kIG11bHRpY2hhcmFjdGVyCiAg ICAgICAgICAgICAgICAgIGNvbGxhdGluZyBlbGVtZW50KS4gIFRyYW5zaXRpb24gdGFibGUgbWln aHQgYmUgdXBkYXRlZC4gICovCi0gICAgICAgICAgICAgIHMgPSB0cmFuc2l0X3N0YXRlIChkLCBz LCAmcCk7CisgICAgICAgICAgICAgIHMgPSB0cmFuc2l0X3N0YXRlIChkLCBzLCAmcCwgKHVuc2ln bmVkIGNoYXIgKikgZW5kKTsKKyAgICAgICAgICAgICAgbWJwID0gcDsKICAgICAgICAgICAgICAg dHJhbnMgPSBkLT50cmFuczsKICAgICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCkBAIC0zNDc1 LDE0ICszMzk4LDggQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4s IGNoYXIgKmVuZCwKICAgICAgICAgfQogCiAgICAgICAvKiBJZiB0aGUgcHJldmlvdXMgY2hhcmFj dGVyIHdhcyBhIG5ld2xpbmUsIGNvdW50IGl0LiAgKi8KLSAgICAgIGlmICgoY2hhciAqKSBwIDw9 IGVuZCAmJiBwWy0xXSA9PSBlb2wpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY291bnQpCi0g ICAgICAgICAgICArKypjb3VudDsKLQotICAgICAgICAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkK LSAgICAgICAgICAgIHByZXBhcmVfd2NfYnVmIChkLCAoY29uc3QgY2hhciAqKSBwLCBlbmQpOwot ICAgICAgICB9CisgICAgICBpZiAoKGNoYXIgKikgcCA8PSBlbmQgJiYgcFstMV0gPT0gZW9sICYm IGNvdW50KQorICAgICAgICArKypjb3VudDsKIAogICAgICAgLyogQ2hlY2sgaWYgd2UndmUgcnVu IG9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICAqLwogICAgICAgaWYgKChjaGFyICopIHAgPiBl bmQpCkBAIC0zNTU5LDggKzM0NzYsNiBAQCBmcmVlX21iZGF0YSAoc3RydWN0IGRmYSAqZCkKICAg ZC0+bWJjc2V0cyA9IE5VTEw7CiAgIGQtPm5tYmNzZXRzID0gMDsKIAotICBmcmVlIChkLT5tYmxl bl9idWYpOwotICBmcmVlIChkLT5pbnB1dHdjcyk7CiAgIGlmIChkLT5tYl9mb2xsb3dzKQogICAg IHsKICAgICAgIGZyZWUgKGQtPm1iX2ZvbGxvd3MtPmVsZW1zKTsKLS0gCjEuOS4xCgo= --------_5343F8AF0000000010C4_MULTIPART_MIXED_-- From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 18 02:30:45 2014 Received: (at 17203-done) by debbugs.gnu.org; 18 Apr 2014 06:30:45 +0000 Received: from localhost ([127.0.0.1]:51487 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wb2Jv-0001FG-1L for submit@debbugs.gnu.org; Fri, 18 Apr 2014 02:30:44 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:50611) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wb2Jk-0001Eg-KE for 17203-done@debbugs.gnu.org; Fri, 18 Apr 2014 02:30:36 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 9F09E39E807B; Thu, 17 Apr 2014 23:30:26 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cXm0yvGpKttp; Thu, 17 Apr 2014 23:30:21 -0700 (PDT) Received: from [192.168.1.9] (pool-108-0-233-62.lsanca.fios.verizon.net [108.0.233.62]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 79DE739E8020; Thu, 17 Apr 2014 23:30:21 -0700 (PDT) Message-ID: <5350C67D.8060204@cs.ucla.edu> Date: Thu, 17 Apr 2014 23:30:21 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Norihiro Tanaka , 17203-done@debbugs.gnu.org Subject: Re: bug#17203: [PATCH] grep: speed-up of DFA by checking multibyte characters on demand References: <20140406185213.BAA9.27F6AC2D@kcn.ne.jp> <20140409225830.786B.27F6AC2D@kcn.ne.jp> In-Reply-To: <20140409225830.786B.27F6AC2D@kcn.ne.jp> Content-Type: multipart/mixed; boundary="------------020401090601000404030600" X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 17203-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.0 (---) This is a multi-part message in MIME format. --------------020401090601000404030600 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Thanks. It's nice to see the code get smaller and simpler. I rebased that patch again and tweaked the commit message (attachment 1), and followed up with a minor fixup patch to remove a now-unused macro and reindent to fit into 80 columns (attachment 2.) --------------020401090601000404030600 Content-Type: text/plain; charset=UTF-8; name="0001-dfa-speed-up-by-checking-multibyte-characters-on-dem.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-dfa-speed-up-by-checking-multibyte-characters-on-dem.pa"; filename*1="tch" RnJvbSBiNzBkYTNmMzdlMmNlZTc1MTM4OWQzYTk2ZGU3ZWJjOTAyNTY1YTZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5l LmpwPgpEYXRlOiBTYXQsIDI5IE1hciAyMDE0IDIwOjU5OjUzICswOTAwClN1YmplY3Q6IFtQ QVRDSCAxLzJdIGRmYTogc3BlZWQgdXAgYnkgY2hlY2tpbmcgbXVsdGlieXRlIGNoYXJhY3Rl cnMgb24gZGVtYW5kCgpJZiBkZmFleGVjKCkgcnVucyBpbiBub24tVVRGOCBsb2NhbGVzLCBs ZW5ndGggYW5kIHdpZGUgY2hhcmFjdGVyCnJlcHJlc2VudGF0aW9uIGFyZSBjaGVja2VkIGZv ciBhbGwgY2hhcmFjdGVycyBvZiBhIGxpbmUgaW4gYSBpbnB1dApzdHJpbmcuICBIb3dldmVy LCBpZiBtYXRjaGVkIGVhcmx5IGluIHRoZSBsaW5lLCByZXN1bHRzIGZvciByZW1haW5pbmcK Y2hhcmFjdGVycyBhcmUgd2FzdGVkLgoKVGhpcyBwYXRjaCBjaGVja3MgbXVsdGlieXRlIGNo YXJhY3RlcnMgb24gZGVtYW5kLiAgSXQgc2hvdWxkIHdvcmsKZmFzdGVyIGZvciBlYXJseSBt YXRjaGVzLCBhbmQgcmVkdWNlcyBtZW1vcnkgcmVxdWlyZW1lbnRzLgoKKiBzcmMvZGZhLmMg KHN0cnVjdCBkZmEpOiBSZW1vdmUgbWVtYmVycyBtYmxlbl9idWYsIG5tYmxlbl9idWYsCmlu cHV0d2NzLCBuaW5wdXR3Y3MuICBBbGwgdXNlcyByZW1vdmVkLgooYnVmX2JlZ2luLCBidWZf ZW5kLCBwcmVwYXJlX3djX2J1Zik6IFJlbW92ZS4gIEFsbCB1c2VzIHJlbW92ZWQuCihTS0lQ X1JFTUFJTlNfTUJfSUZfSU5JVElBTF9TVEFURSk6IFJlbW92ZS4gIFRoaXMgaXMgbm93IGV4 cGFuZGVkCndoZW4gdXNlZC4KKG1hdGNoX2FueWNoYXIsIG1hdGNoX21iX2NoYXJzZXQsIGNo ZWNrX21hdGNoaW5nX3dpdGhfbXVsdGlieXRlX29wcyk6Ck5ldyBhcmcgd2MsIG1iY2xlbi4g IFJlbW92ZSBhcmcgaWR4LiAgQWxsIHVzZXMgY2hhbmdlZC4KKHRyYW5zaXRfc3RhdGVfY29u c3VtZV8xY2hhcik6IE5ldyBhcmcgd2MuICBBbGwgdXNlcyBjaGFuZ2VkLgoodHJhbnNpdF9z dGF0ZSk6IE5ldyBhcmcgJ2VuZCcuICBBbGwgdXNlcyBjaGFuZ2VkLgotLS0KIHNyYy9kZmEu YyB8IDIxMSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDE0 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9zcmMvZGZhLmMKaW5k ZXggMjQzNTVkOC4uYzUzZDEwOSAxMDA2NDQKLS0tIGEvc3JjL2RmYS5jCisrKyBiL3NyYy9k ZmEuYwpAQCAtNDIyLDI0ICs0MjIsNiBAQCBzdHJ1Y3QgZGZhCiAgIHN0cnVjdCBkZmFtdXN0 ICptdXN0czsgICAgICAgIC8qIExpc3Qgb2Ygc3RyaW5ncywgYXQgbGVhc3Qgb25lIG9mIHdo aWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGtub3duIHRvIGFw cGVhciBpbiBhbnkgci5lLiBtYXRjaGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGUgZGZhLiAgKi8KLSAgdW5zaWduZWQgY2hhciAqbWJsZW5fYnVmOyAgICAg LyogQ29ycmVzcG9uZCB0byB0aGUgaW5wdXQgYnVmZmVyIGluIGRmYWV4ZWMuCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVhY2ggZWxlbWVudCBzdG9yZXMgdGhlIG51 bWJlciBvZiByZW1haW5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ynl0ZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgbXVsdGlieXRlCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQgc3RyaW5nLiAgQSBl bGVtZW50J3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMg MCBpZiB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgaXMKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2luZ2xlLWJ5dGUuCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGUuZy4sIGlucHV0IDogJ2EnLCA8bWIoMCk+LCA8bWIoMSk+LCA8bWIo Mik+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ibGVuX2J1ZiAgIDog IDAsICAgICAgIDMsICAgICAgIDIsICAgICAgIDEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICovCi0gIHNpemVfdCBubWJsZW5fYnVmOyAgICAgICAgICAgIC8qIEFsbG9j YXRlZCBzaXplIG9mIG1ibGVuX2J1Zi4gICovCi0gIHdjaGFyX3QgKmlucHV0d2NzOyAgICAg ICAgICAgIC8qIFdpZGUgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgaW4gZGZhZXhlYy4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGlz IGFycmF5IGlzIHRoZSBzYW1lIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoZSBsZW5ndGggb2YgaW5wdXQgc3RyaW5nIChjaGFyIGFycmF5KS4KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzdHJpbmdbaV0gaXMgYSBzaW5nbGUt Ynl0ZSBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUg Zmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZSBjaGFyOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnB1dHdjc1tpXSBpcyB0aGUgY29kZXBvaW50LiAgKi8KLSAgc2l6 ZV90IG5pbnB1dHdjczsgICAgICAgICAgICAgLyogQWxsb2NhdGVkIG51bWJlciBvZiBpbnB1 dHdjcyBlbGVtZW50cy4gICovCiAgIHBvc2l0aW9uX3NldCAqbWJfZm9sbG93czsgICAgIC8q IEZvbGxvdyBzZXQgYWRkZWQgYnkgQU5ZQ0hBUiBhbmQvb3IgTUJDU0VUCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9uIGRlbWFuZC4gICovCiAgIGludCAqbWJfbWF0 Y2hfbGVuczsgICAgICAgICAgIC8qIEFycmF5IG9mIGxlbmd0aCByZWR1Y2VkIGJ5IEFOWUNI QVIgYW5kL29yCkBAIC04NTksOCArODQxLDYgQEAgc3RhdGljIGludCBjdXJfbWJfbGVuID0g MTsgICAgICAvKiBMZW5ndGggb2YgdGhlIG11bHRpYnl0ZSByZXByZXNlbnRhdGlvbiBvZgog c3RhdGljIG1ic3RhdGVfdCBtYnM7ICAgICAgICAgICAvKiBtYnN0YXRlIGZvciBtYnJ0b3dj LiAgKi8KIHN0YXRpYyB3Y2hhcl90IHdjdG9rOyAgICAgICAgICAgLyogV2lkZSBjaGFyYWN0 ZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbXVsdGlieXRlIGNoYXJhY3Rlci4gICovCi1zdGF0aWMgdW5zaWdu ZWQgY2hhciBjb25zdCAqYnVmX2JlZ2luOyAgLyogcmVmZXJlbmNlIHRvIGJlZ2luIGluIGRm YWV4ZWMuICAqLwotc3RhdGljIHVuc2lnbmVkIGNoYXIgY29uc3QgKmJ1Zl9lbmQ7ICAgIC8q IHJlZmVyZW5jZSB0byBlbmQgaW4gZGZhZXhlYy4gICovCiAKIAogLyogTm90ZSB0aGF0IGNo YXJhY3RlcnMgYmVjb21lIHVuc2lnbmVkIGhlcmUuICAqLwpAQCAtMjkwMCwyNyArMjg4MCw2 IEBAIGJ1aWxkX3N0YXRlX3plcm8gKHN0cnVjdCBkZmEgKmQpCiAKIC8qIE11bHRpYnl0ZSBj aGFyYWN0ZXIgaGFuZGxpbmcgc3ViLXJvdXRpbmVzIGZvciBkZmFleGVjLiAgKi8KIAotLyog VGhlIGluaXRpYWwgc3RhdGUgbWF5IGVuY291bnRlciBhIGJ5dGUgd2hpY2ggaXMgbm90IGEg c2luZ2xlIGJ5dGUgY2hhcmFjdGVyCi0gICBub3IgdGhlIGZpcnN0IGJ5dGUgb2YgYSBtdWx0 aWJ5dGUgY2hhcmFjdGVyLiAgQnV0IGl0IGlzIGluY29ycmVjdCBmb3IgdGhlCi0gICBpbml0 aWFsIHN0YXRlIHRvIGFjY2VwdCBzdWNoIGEgYnl0ZS4gIEZvciBleGFtcGxlLCBpbiBTaGlm dCBKSVMgdGhlIHJlZ3VsYXIKLSAgIGV4cHJlc3Npb24gIlxcIiBhY2NlcHRzIHRoZSBjb2Rl cG9pbnQgMHg1YywgYnV0IHNob3VsZCBub3QgYWNjZXB0IHRoZSBzZWNvbmQKLSAgIGJ5dGUg b2YgdGhlIGNvZGVwb2ludCAweDgxNWMuICBUaGVuIHRoZSBpbml0aWFsIHN0YXRlIG11c3Qg c2tpcCB0aGUgYnl0ZXMKLSAgIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBieXRlIGNoYXJhY3Rl ciBub3IgdGhlIGZpcnN0IGJ5dGUgb2YgYSBtdWx0aWJ5dGUKLSAgIGNoYXJhY3Rlci4gICov Ci0jZGVmaW5lIFNLSVBfUkVNQUlOU19NQl9JRl9JTklUSUFMX1NUQVRFKHMsIHApCQlcCi0g IGlmIChzID09IDApCQkJCQkJXAotICAgIHsJCQkJCQkJXAotICAgICAgd2hpbGUgKGQtPmlu cHV0d2NzW3AgLSBidWZfYmVnaW5dID09IDAJCVwKLSAgICAgICAgICAgICAmJiBkLT5tYmxl bl9idWZbcCAtIGJ1Zl9iZWdpbl0gIT0gMAlcCi0gICAgICAgICAgICAgJiYgKHVuc2lnbmVk IGNoYXIgY29uc3QgKikgcCA8IGJ1Zl9lbmQpCVwKLSAgICAgICAgKytwOwkJCQkJCVwKLSAg ICAgIGlmICgoY2hhciAqKSBwID49IGVuZCkJCQkJXAotICAgICAgICB7CQkJCQkJXAotICAg ICAgICAgICplbmQgPSBzYXZlZF9lbmQ7CQkJCVwKLSAgICAgICAgICByZXR1cm4gTlVMTDsJ CQkJCVwKLSAgICAgICAgfQkJCQkJCVwKLSAgICB9Ci0KIC8qIFJldHVybiB2YWx1ZXMgb2Yg dHJhbnNpdF9zdGF0ZV9zaW5nbGVieXRlLCBhbmQKICAgIHRyYW5zaXRfc3RhdGVfY29uc3Vt ZV8xY2hhci4gICovCiB0eXBlZGVmIGVudW0KQEAgLTI5NTMsMTQgKzI5MTIsNyBAQCB0cmFu c2l0X3N0YXRlX3NpbmdsZWJ5dGUgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCB1bnNp Z25lZCBjaGFyIGNvbnN0ICpwLAogICAgICAgICAgICAgd29ya3MgPSAwOwogICAgICAgICB9 CiAgICAgICBlbHNlIGlmICh3b3JrcyA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAo cCA9PSBidWZfZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvKiBBdCB0aGUg bW9tZW50LCBpdCBtdXN0IG5vdCBoYXBwZW4uICAqLwotICAgICAgICAgICAgICBhYm9ydCAo KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB3b3JrcyA9IDA7Ci0gICAgICAgIH0KKyAg ICAgICAgd29ya3MgPSAwOwogICAgICAgZWxzZSBpZiAoZC0+ZmFpbHNbd29ya3NdKQogICAg ICAgICB7CiAgICAgICAgICAgd29ya3MgPSBkLT5mYWlsc1t3b3Jrc11bKnBdOwpAQCAtMjk3 NSwxOCArMjkyNywxMyBAQCB0cmFuc2l0X3N0YXRlX3NpbmdsZWJ5dGUgKHN0cnVjdCBkZmEg KmQsIHN0YXRlX251bSBzLCB1bnNpZ25lZCBjaGFyIGNvbnN0ICpwLAogICByZXR1cm4gcnZh bDsKIH0KIAotLyogTWF0Y2ggYSAiLiIgYWdhaW5zdCB0aGUgY3VycmVudCBjb250ZXh0LiAg YnVmX2JlZ2luW0lEWF0gaXMgdGhlCi0gICBjdXJyZW50IHBvc2l0aW9uLiAgUmV0dXJuIHRo ZSBsZW5ndGggb2YgdGhlIG1hdGNoLCBpbiBieXRlcy4KLSAgIFBPUyBpcyB0aGUgcG9zaXRp b24gb2YgdGhlICIuIi4gICovCisvKiBNYXRjaCBhICIuIiBhZ2FpbnN0IHRoZSBjdXJyZW50 IGNvbnRleHQuICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUKKyAgIG1hdGNoLCBpbiBieXRl cy4gIFBPUyBpcyB0aGUgcG9zaXRpb24gb2YgdGhlICIuIi4gICovCiBzdGF0aWMgaW50Ci1t YXRjaF9hbnljaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9z LCBzaXplX3QgaWR4KQorbWF0Y2hfYW55Y2hhciAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVt IHMsIHBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgIHdjaGFyX3Qgd2MsIHNpemVfdCBt YmNsZW4pCiB7CiAgIGludCBjb250ZXh0OwotICB3Y2hhcl90IHdjOwotICBpbnQgbWJjbGVu OwotCi0gIHdjID0gZC0+aW5wdXR3Y3NbaWR4XTsKLSAgbWJjbGVuID0gTUFYICgxLCBkLT5t Ymxlbl9idWZbaWR4XSk7CiAKICAgLyogQ2hlY2sgc3ludGF4IGJpdHMuICAqLwogICBpZiAo d2MgPT0gKHdjaGFyX3QpIGVvbGJ5dGUpCkBAIC0zMDA4LDE2ICsyOTU1LDE0IEBAIG1hdGNo X2FueWNoYXIgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNp emVfdCBpZHgpCiB9CiAKIC8qIE1hdGNoIGEgYnJhY2tldCBleHByZXNzaW9uIGFnYWluc3Qg dGhlIGN1cnJlbnQgY29udGV4dC4KLSAgIGJ1Zl9iZWdpbltJRFhdIGlzIHRoZSBjdXJyZW50 IHBvc2l0aW9uLgogICAgUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoLCBpbiBieXRl cy4KICAgIFBPUyBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGJyYWNrZXQgZXhwcmVzc2lvbi4g ICovCiBzdGF0aWMgaW50Ci1tYXRjaF9tYl9jaGFyc2V0IChzdHJ1Y3QgZGZhICpkLCBzdGF0 ZV9udW0gcywgcG9zaXRpb24gcG9zLCBzaXplX3QgaWR4KQorbWF0Y2hfbWJfY2hhcnNldCAo c3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHBvc2l0aW9uIHBvcywKKyAgICAgICAgICAg ICAgICAgIGNoYXIgY29uc3QgKnAsIHdjaGFyX3Qgd2MsIHNpemVfdCBtYXRjaF9sZW4pCiB7 CiAgIHNpemVfdCBpOwogICBib29sIG1hdGNoOyAgICAgICAgICAgICAgLyogTWF0Y2hpbmcg c3VjY2VlZGVkLiAgKi8KLSAgaW50IG1hdGNoX2xlbjsgICAgICAgICAgIC8qIExlbmd0aCBv ZiB0aGUgY2hhcmFjdGVyIChvciBjb2xsYXRpbmcgZWxlbWVudCkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdpdGggd2hpY2ggdGhpcyBvcGVyYXRvciBtYXRjaGVzLiAgKi8K ICAgaW50IG9wX2xlbjsgICAgICAgICAgICAgIC8qIExlbmd0aCBvZiB0aGUgb3BlcmF0b3Iu ICAqLwogICBjaGFyIGJ1ZmZlclsxMjhdOwogCkBAIC0zMDI1LDkgKzI5NzAsNiBAQCBtYXRj aF9tYl9jaGFyc2V0IChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9z LCBzaXplX3QgaWR4KQogICBzdHJ1Y3QgbWJfY2hhcl9jbGFzc2VzICp3b3JrX21iYzsKIAog ICBpbnQgY29udGV4dDsKLSAgd2NoYXJfdCB3YzsgICAgICAgICAgICAgICAgICAgLyogQ3Vy cmVudCByZWZlcnJpbmcgY2hhcmFjdGVyLiAgKi8KLQotICB3YyA9IGQtPmlucHV0d2NzW2lk eF07CiAKICAgLyogQ2hlY2sgc3ludGF4IGJpdHMuICAqLwogICBpZiAod2MgPT0gKHdjaGFy X3QpIGVvbGJ5dGUpCkBAIC0zMDQ4LDcgKzI5OTAsNiBAQCBtYXRjaF9tYl9jaGFyc2V0IChz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLCBzaXplX3QgaWR4KQog ICAvKiBBc3NpZ24gdGhlIGN1cnJlbnQgcmVmZXJyaW5nIG9wZXJhdG9yIHRvIHdvcmtfbWJj LiAgKi8KICAgd29ya19tYmMgPSAmKGQtPm1iY3NldHNbKGQtPm11bHRpYnl0ZV9wcm9wW3Bv cy5pbmRleF0pID4+IDJdKTsKICAgbWF0Y2ggPSAhd29ya19tYmMtPmludmVydDsKLSAgbWF0 Y2hfbGVuID0gTUFYICgxLCBkLT5tYmxlbl9idWZbaWR4XSk7CiAKICAgLyogTWF0Y2ggaW4g cmFuZ2UgMC0yNTU/ICAqLwogICBpZiAod2MgPCBOT1RDSEFSICYmIHdvcmtfbWJjLT5jc2V0 ICE9IC0xCkBAIC0zMDYyLDE0ICszMDAzLDE0IEBAIG1hdGNoX21iX2NoYXJzZXQgKHN0cnVj dCBkZmEgKmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgpCiAgICAg ICAgIGdvdG8gY2hhcnNldF9tYXRjaGVkOwogICAgIH0KIAotICBzdHJuY3B5IChidWZmZXIs IChjaGFyIGNvbnN0ICopIGJ1Zl9iZWdpbiArIGlkeCwgbWF0Y2hfbGVuKTsKKyAgc3RybmNw eSAoYnVmZmVyLCBwLCBtYXRjaF9sZW4pOwogICBidWZmZXJbbWF0Y2hfbGVuXSA9ICdcMCc7 CiAKICAgLyogbWF0Y2ggd2l0aCBhbiBlcXVpdmFsZW5jZSBjbGFzcz8gICovCiAgIGZvciAo aSA9IDA7IGkgPCB3b3JrX21iYy0+bmVxdWl2czsgaSsrKQogICAgIHsKICAgICAgIG9wX2xl biA9IHN0cmxlbiAod29ya19tYmMtPmVxdWl2c1tpXSk7Ci0gICAgICBzdHJuY3B5IChidWZm ZXIsIChjaGFyIGNvbnN0ICopIGJ1Zl9iZWdpbiArIGlkeCwgb3BfbGVuKTsKKyAgICAgIHN0 cm5jcHkgKGJ1ZmZlciwgcCwgb3BfbGVuKTsKICAgICAgIGJ1ZmZlcltvcF9sZW5dID0gJ1ww JzsKICAgICAgIGlmIChzdHJjb2xsICh3b3JrX21iYy0+ZXF1aXZzW2ldLCBidWZmZXIpID09 IDApCiAgICAgICAgIHsKQEAgLTMwODIsNyArMzAyMyw3IEBAIG1hdGNoX21iX2NoYXJzZXQg KHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBwb3NpdGlvbiBwb3MsIHNpemVfdCBpZHgp CiAgIGZvciAoaSA9IDA7IGkgPCB3b3JrX21iYy0+bmNvbGxfZWxlbXM7IGkrKykKICAgICB7 CiAgICAgICBvcF9sZW4gPSBzdHJsZW4gKHdvcmtfbWJjLT5jb2xsX2VsZW1zW2ldKTsKLSAg ICAgIHN0cm5jcHkgKGJ1ZmZlciwgKGNoYXIgY29uc3QgKikgYnVmX2JlZ2luICsgaWR4LCBv cF9sZW4pOworICAgICAgc3RybmNweSAoYnVmZmVyLCBwLCBvcF9sZW4pOwogICAgICAgYnVm ZmVyW29wX2xlbl0gPSAnXDAnOwogCiAgICAgICBpZiAoc3RyY29sbCAod29ya19tYmMtPmNv bGxfZWxlbXNbaV0sIGJ1ZmZlcikgPT0gMCkKQEAgLTMxMTYsMTIgKzMwNTcsMTAgQEAgY2hh cnNldF9tYXRjaGVkOgogICAgYXJyYXkgd2hpY2ggY29ycmVzcG9uZHMgdG8gJ2QtPnN0YXRl c1tzXS5tYnBzLmVsZW0nOyBlYWNoIGVsZW1lbnQgb2YgdGhlCiAgICBhcnJheSBjb250YWlu cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdpdGggd2hpY2ggdGhlIGVsZW1lbnQgY2FuIG1hdGNo LgogCi0gICAnaWR4JyBpcyB0aGUgaW5kZXggZnJvbSBidWZfYmVnaW4sIGFuZCBpdCBpcyB0 aGUgY3VycmVudCBwb3NpdGlvbgotICAgaW4gdGhlIGJ1ZmZlci4KLQogICAgVGhlIGNhbGxl ciBNVVNUIGZyZWUgdGhlIGFycmF5IHdoaWNoIHRoaXMgZnVuY3Rpb24gcmV0dXJuLiAgKi8K IHN0YXRpYyBpbnQgKgotY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChzdHJ1 Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgc2l6ZV90IGlkeCkKK2NoZWNrX21hdGNoaW5nX3dp dGhfbXVsdGlieXRlX29wcyAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKnAsIHdjaGFyX3Qgd2Ms IHNpemVfdCBtYmNsZW4pCiB7CiAgIHNpemVfdCBpOwogICBpbnQgKnJhcnJheTsKQEAgLTMx MzMsMTAgKzMwNzIsMTAgQEAgY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgc2l6ZV90IGlkeCkKICAgICAgIHN3aXRjaCAo ZC0+dG9rZW5zW3Bvcy5pbmRleF0pCiAgICAgICAgIHsKICAgICAgICAgY2FzZSBBTllDSEFS OgotICAgICAgICAgIHJhcnJheVtpXSA9IG1hdGNoX2FueWNoYXIgKGQsIHMsIHBvcywgaWR4 KTsKKyAgICAgICAgICByYXJyYXlbaV0gPSBtYXRjaF9hbnljaGFyIChkLCBzLCBwb3MsIHdj LCBtYmNsZW4pOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1CQ1NFVDoKLSAg ICAgICAgICByYXJyYXlbaV0gPSBtYXRjaF9tYl9jaGFyc2V0IChkLCBzLCBwb3MsIGlkeCk7 CisgICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfbWJfY2hhcnNldCAoZCwgcywgcG9zLCBw LCB3YywgbWJjbGVuKTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg ICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgLyogY2Fubm90IGhhcHBlbi4gICovCkBA IC0zMTU2LDIyICszMDk1LDIyIEBAIGNoZWNrX21hdGNoaW5nX3dpdGhfbXVsdGlieXRlX29w cyAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHNpemVfdCBpZHgpCiBzdGF0aWMgc3Rh dHVzX3RyYW5zaXRfc3RhdGUKIHRyYW5zaXRfc3RhdGVfY29uc3VtZV8xY2hhciAoc3RydWN0 IGRmYSAqZCwgc3RhdGVfbnVtIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGNoYXIgY29uc3QgKipwcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICptYXRjaF9sZW5zLCBpbnQgKm1iY2xlbikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2NoYXJfdCB3Yywgc2l6ZV90IG1iY2xlbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50ICptYXRjaF9sZW5zKQogewogICBzaXplX3QgaSwgajsKICAgaW50IGs7 CiAgIHN0YXRlX251bSBzMSwgczI7Ci0gIGludCAqd29ya19tYmxzOwogICBzdGF0dXNfdHJh bnNpdF9zdGF0ZSBycyA9IFRSQU5TSVRfU1RBVEVfRE9ORTsKIAotICAvKiBDYWxjdWxhdGUg dGhlIGxlbmd0aCBvZiB0aGUgKHNpbmdsZS9tdWx0aSBieXRlKSBjaGFyYWN0ZXIKLSAgICAg dG8gd2hpY2ggcCBwb2ludHMuICAqLwotICAqbWJjbGVuID0gTUFYICgxLCBkLT5tYmxlbl9i dWZbKnBwIC0gYnVmX2JlZ2luXSk7CisgIC8qIENoZWNrIChpbnB1dCkgbWF0Y2hfbGVucywg YW5kIGluaXRpYWxpemUgaWYgaXQgaXMgTlVMTC4gICovCisgIGlmIChtYXRjaF9sZW5zID09 IE5VTEwgJiYgZC0+c3RhdGVzW3NdLm1icHMubmVsZW0gIT0gMCkKKyAgICBtYXRjaF9sZW5z ID0gY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChkLCBzLCAoY2hhciBjb25z dCAqKSAqcHAsIHdjLCBtYmNsZW4pOwogCiAgIC8qIENhbGN1bGF0ZSB0aGUgc3RhdGUgd2hp Y2ggY2FuIGJlIHJlYWNoZWQgZnJvbSB0aGUgc3RhdGUgJ3MnIGJ5Ci0gICAgIGNvbnN1bWlu ZyAnKm1iY2xlbicgc2luZ2xlIGJ5dGVzIGZyb20gdGhlIGJ1ZmZlci4gICovCisgICAgIGNv bnN1bWluZyAnbWJjbGVuJyBzaW5nbGUgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLiAgKi8KICAg czEgPSBzOwotICBmb3IgKGsgPSAwOyBrIDwgKm1iY2xlbjsgaysrKQorICBmb3IgKGsgPSAw OyBrIDwgbWJjbGVuOyBrKyspCiAgICAgewogICAgICAgczIgPSBzMTsKICAgICAgIHJzID0g dHJhbnNpdF9zdGF0ZV9zaW5nbGVieXRlIChkLCBzMiwgKCpwcCkrKywgJnMxKTsKQEAgLTMx NzksMTcgKzMxMTgsMTEgQEAgdHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChzdHJ1Y3Qg ZGZhICpkLCBzdGF0ZV9udW0gcywKICAgLyogQ29weSB0aGUgcG9zaXRpb25zIGNvbnRhaW5l ZCBieSAnczEnIHRvIHRoZSBzZXQgJ2QtPm1iX2ZvbGxvd3MnLiAgKi8KICAgY29weSAoJihk LT5zdGF0ZXNbczFdLmVsZW1zKSwgZC0+bWJfZm9sbG93cyk7CiAKLSAgLyogQ2hlY2sgKGlu cHV0KSBtYXRjaF9sZW5zLCBhbmQgaW5pdGlhbGl6ZSBpZiBpdCBpcyBOVUxMLiAgKi8KLSAg aWYgKG1hdGNoX2xlbnMgPT0gTlVMTCAmJiBkLT5zdGF0ZXNbc10ubWJwcy5uZWxlbSAhPSAw KQotICAgIHdvcmtfbWJscyA9IGNoZWNrX21hdGNoaW5nX3dpdGhfbXVsdGlieXRlX29wcyAo ZCwgcywgKnBwIC0gYnVmX2JlZ2luKTsKLSAgZWxzZQotICAgIHdvcmtfbWJscyA9IG1hdGNo X2xlbnM7Ci0KICAgLyogQWRkIGFsbCBvZiB0aGUgcG9zaXRpb25zIHdoaWNoIGNhbiBiZSBy ZWFjaGVkIGZyb20gJ3MnIGJ5IGNvbnN1bWluZwogICAgICBhIHNpbmdsZSBjaGFyYWN0ZXIu ICAqLwogICBmb3IgKGkgPSAwOyBpIDwgZC0+c3RhdGVzW3NdLm1icHMubmVsZW07IGkrKykK ICAgICB7Ci0gICAgICBpZiAod29ya19tYmxzW2ldID09ICptYmNsZW4pCisgICAgICBpZiAo bWF0Y2hfbGVuc1tpXSA9PSBtYmNsZW4pCiAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkLT5m b2xsb3dzW2QtPnN0YXRlc1tzXS5tYnBzLmVsZW1zW2ldLmluZGV4XS5uZWxlbTsKICAgICAg ICAgICAgICBqKyspCiAgICAgICAgICAgaW5zZXJ0IChkLT5mb2xsb3dzW2QtPnN0YXRlc1tz XS5tYnBzLmVsZW1zW2ldLmluZGV4XS5lbGVtc1tqXSwKQEAgLTMyMDQsNyArMzEzNyw4IEBA IHRyYW5zaXRfc3RhdGVfY29uc3VtZV8xY2hhciAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVt IHMsCiAgICBidWZmZXIuICBUaGlzIGZ1bmN0aW9uIGlzIGZvciBzb21lIG9wZXJhdG9yIHdo aWNoIGNhbiBtYXRjaCB3aXRoIGEgbXVsdGktCiAgICBieXRlIGNoYXJhY3RlciBvciBhIGNv bGxhdGluZyBlbGVtZW50ICh3aGljaCBtYXkgYmUgbXVsdGkgY2hhcmFjdGVycykuICAqLwog c3RhdGljIHN0YXRlX251bQotdHJhbnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVf bnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKipwcCkKK3RyYW5zaXRfc3RhdGUgKHN0cnVj dCBkZmEgKmQsIHN0YXRlX251bSBzLCB1bnNpZ25lZCBjaGFyIGNvbnN0ICoqcHAsCisgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbnN0ICplbmQpCiB7CiAgIHN0YXRlX251bSBz MTsKICAgaW50IG1iY2xlbjsgIC8qIFRoZSBsZW5ndGggb2YgY3VycmVudCBpbnB1dCBtdWx0 aWJ5dGUgY2hhcmFjdGVyLiAgKi8KQEAgLTMyMjAsNyArMzE1NCw4IEBAIHRyYW5zaXRfc3Rh dGUgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCB1bnNpZ25lZCBjaGFyIGNvbnN0ICoq cHApCiAgICAgICAgV2UgY2hlY2sgd2hldGhlciBlYWNoIG9mIHRoZW0gY2FuIG1hdGNoIG9y IG5vdC4gICovCiAgICAgewogICAgICAgLyogTm90ZTogY2FsbGVyIG11c3QgZnJlZSB0aGUg cmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24uICAqLwotICAgICAgbWF0Y2hfbGVucyA9 IGNoZWNrX21hdGNoaW5nX3dpdGhfbXVsdGlieXRlX29wcyAoZCwgcywgKnBwIC0gYnVmX2Jl Z2luKTsKKyAgICAgIG1iY2xlbiA9IG1ic190b193Y2hhciAoZCwgJndjLCAoY2hhciBjb25z dCAqKSAqcHAsIGVuZCAtICpwcCwgJm1icyk7CisgICAgICBtYXRjaF9sZW5zID0gY2hlY2tf bWF0Y2hpbmdfd2l0aF9tdWx0aWJ5dGVfb3BzIChkLCBzLCAoY2hhciBjb25zdCAqKSAqcHAs IHdjLCBtYmNsZW4pOwogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsZW07IGkrKykKICAg ICAgICAgLyogU2VhcmNoIHRoZSBvcGVyYXRvciB3aGljaCBtYXRjaCB0aGUgbG9uZ2VzdCBz dHJpbmcsCkBAIC0zMjUyLDE1ICszMTg3LDE1IEBAIHRyYW5zaXRfc3RhdGUgKHN0cnVjdCBk ZmEgKmQsIHN0YXRlX251bSBzLCB1bnNpZ25lZCBjaGFyIGNvbnN0ICoqcHApCiAgICAgIG5v dCBiZSBhIGNoYXJhY3RlciBidXQgYSAobXVsdGkgY2hhcmFjdGVyKSBjb2xsYXRpbmcgZWxl bWVudC4KICAgICAgV2UgZW51bWVyYXRlIGFsbCBvZiB0aGUgcG9zaXRpb25zIHdoaWNoICdz JyBjYW4gcmVhY2ggYnkgY29uc3VtaW5nCiAgICAgICdtYXhsZW4nIGJ5dGVzLiAgKi8KLSAg dHJhbnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBzLCBwcCwgbWF0Y2hfbGVucywgJm1i Y2xlbik7CisgIHRyYW5zaXRfc3RhdGVfY29uc3VtZV8xY2hhciAoZCwgcywgcHAsIHdjLCBt YmNsZW4sIG1hdGNoX2xlbnMpOwogCi0gIHdjID0gZC0+aW5wdXR3Y3NbKnBwIC0gbWJjbGVu IC0gYnVmX2JlZ2luXTsKICAgczEgPSBzdGF0ZV9pbmRleCAoZCwgZC0+bWJfZm9sbG93cywg d2NoYXJfY29udGV4dCAod2MpKTsKICAgcmVhbGxvY190cmFuc19pZl9uZWNlc3NhcnkgKGQs IHMxKTsKIAogICB3aGlsZSAoKnBwIC0gcDEgPCBtYXhsZW4pCiAgICAgewotICAgICAgdHJh bnNpdF9zdGF0ZV9jb25zdW1lXzFjaGFyIChkLCBzMSwgcHAsIE5VTEwsICZtYmNsZW4pOwor ICAgICAgbWJjbGVuID0gbWJzX3RvX3djaGFyIChkLCAmd2MsIChjaGFyIGNvbnN0ICopICpw cCwgZW5kIC0gKnBwLCAmbWJzKTsKKyAgICAgIHRyYW5zaXRfc3RhdGVfY29uc3VtZV8xY2hh ciAoZCwgczEsIHBwLCB3YywgbWJjbGVuLCBOVUxMKTsKIAogICAgICAgZm9yIChpID0gMDsg aSA8IG5lbGVtOyBpKyspCiAgICAgICAgIHsKQEAgLTMyNzEsNDUgKzMyMDYsMTIgQEAgdHJh bnNpdF9zdGF0ZSAoc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIg Y29uc3QgKipwcCkKICAgICAgICAgICAgICAgICAgICAgICBkLT5tYl9mb2xsb3dzKTsKICAg ICAgICAgfQogCi0gICAgICB3YyA9IGQtPmlucHV0d2NzWypwcCAtIG1iY2xlbiAtIGJ1Zl9i ZWdpbl07CiAgICAgICBzMSA9IHN0YXRlX2luZGV4IChkLCBkLT5tYl9mb2xsb3dzLCB3Y2hh cl9jb250ZXh0ICh3YykpOwogICAgICAgcmVhbGxvY190cmFuc19pZl9uZWNlc3NhcnkgKGQs IHMxKTsKICAgICB9CiAgIHJldHVybiBzMTsKIH0KIAotCi0vKiBJbml0aWFsaXplIG1ibGVu X2J1ZiBhbmQgaW5wdXR3Y3Mgd2l0aCBkYXRhIGZyb20gdGhlIG5leHQgbGluZS4gICovCi0K LXN0YXRpYyB2b2lkCi1wcmVwYXJlX3djX2J1ZiAoc3RydWN0IGRmYSAqZCwgY29uc3QgY2hh ciAqYmVnaW4sIGNvbnN0IGNoYXIgKmVuZCkKLXsKLSAgdW5zaWduZWQgY2hhciBlb2wgPSBl b2xieXRlOwotICBzaXplX3QgaTsKLSAgc2l6ZV90IGlsaW0gPSBlbmQgLSBiZWdpbiArIDE7 Ci0KLSAgYnVmX2JlZ2luID0gKHVuc2lnbmVkIGNoYXIgKikgYmVnaW47Ci0KLSAgZm9yIChp ID0gMDsgaSA8IGlsaW07IGkrKykKLSAgICB7Ci0gICAgICBzaXplX3QgbmJ5dGVzID0gbWJz X3RvX3djaGFyIChkLCBkLT5pbnB1dHdjcyArIGksIGJlZ2luICsgaSwgaWxpbSAtIGksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWJzKTsKLSAgICAgIGQtPm1i bGVuX2J1ZltpXSA9IG5ieXRlcyAtIChuYnl0ZXMgPT0gMSk7Ci0gICAgICBpZiAoYmVnaW5b aV0gPT0gZW9sKQotICAgICAgICBicmVhazsKLSAgICAgIHdoaWxlICgtLW5ieXRlcyAhPSAw KQotICAgICAgICB7Ci0gICAgICAgICAgaSsrOwotICAgICAgICAgIGQtPm1ibGVuX2J1Zltp XSA9IG5ieXRlczsKLSAgICAgICAgICBkLT5pbnB1dHdjc1tpXSA9IDA7Ci0gICAgICAgIH0K LSAgICB9Ci0KLSAgYnVmX2VuZCA9ICh1bnNpZ25lZCBjaGFyICopIChiZWdpbiArIGkpOwot ICBkLT5tYmxlbl9idWZbaV0gPSAwOwotICBkLT5pbnB1dHdjc1tpXSA9IDA7ICAgICAgICAg ICAgICAvKiBzZW50aW5lbCAqLwotfQotCiAvKiBTZWFyY2ggdGhyb3VnaCBhIGJ1ZmZlciBs b29raW5nIGZvciBhIG1hdGNoIHRvIHRoZSBnaXZlbiBzdHJ1Y3QgZGZhLgogICAgRmluZCB0 aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyBtYXRjaGluZyB0aGUgcmVnZXhwIGlu IHRoZQogICAgYnVmZmVyLCBhbmQgdGhlIHNob3J0ZXN0IHBvc3NpYmxlIHZlcnNpb24gdGhl cmVvZi4gIFJldHVybiBhIHBvaW50ZXIgdG8KQEAgLTMzMjcsNyArMzIyOSw3IEBAIGRmYWV4 ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29uc3QgKmJlZ2luLCBjaGFyICplbmQsCiAgICAg ICAgICBpbnQgYWxsb3dfbmwsIHNpemVfdCAqY291bnQsIGludCAqYmFja3JlZikKIHsKICAg c3RhdGVfbnVtIHMsIHMxOyAgICAgICAgICAgICAgLyogQ3VycmVudCBzdGF0ZS4gICovCi0g IHVuc2lnbmVkIGNoYXIgY29uc3QgKnA7ICAgICAgIC8qIEN1cnJlbnQgaW5wdXQgY2hhcmFj dGVyLiAgKi8KKyAgdW5zaWduZWQgY2hhciBjb25zdCAqcCwgKm1icDsgLyogQ3VycmVudCBp bnB1dCBjaGFyYWN0ZXIuICAqLwogICBzdGF0ZV9udW0gKip0cmFucywgKnQ7ICAgICAgICAv KiBDb3B5IG9mIGQtPnRyYW5zIHNvIGl0IGNhbiBiZSBvcHRpbWl6ZWQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50byBhIHJlZ2lzdGVyLiAgKi8KICAgdW5zaWdu ZWQgY2hhciBlb2wgPSBlb2xieXRlOyAgLyogTGlrZXdpc2UgZm9yIGVvbGJ5dGUuICAqLwpA QCAtMzMzNyw3ICszMjM5LDcgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25z dCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICBidWlsZF9zdGF0ZV96ZXJvIChkKTsKIAogICBz ID0gczEgPSAwOwotICBwID0gKHVuc2lnbmVkIGNoYXIgY29uc3QgKikgYmVnaW47CisgIHAg PSBtYnAgPSAodW5zaWduZWQgY2hhciBjb25zdCAqKSBiZWdpbjsKICAgdHJhbnMgPSBkLT50 cmFuczsKICAgc2F2ZWRfZW5kID0gKih1bnNpZ25lZCBjaGFyICopIGVuZDsKICAgKmVuZCA9 IGVvbDsKQEAgLTMzNDUsMTIgKzMyNDcsNyBAQCBkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBj aGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLAogICBpZiAoZC0+bWJfY3VyX21heCA+IDEp CiAgICAgewogICAgICAgc3RhdGljIGJvb2wgbWJfYWxsb2MgPSBmYWxzZTsKLSAgICAgIGQt Pm1ibGVuX2J1ZiA9IG1heWJlX3JlYWxsb2MgKGQtPm1ibGVuX2J1ZiwgZW5kIC0gYmVnaW4g KyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPm5tYmxlbl9i dWYsIHNpemVvZiAqZC0+bWJsZW5fYnVmKTsKLSAgICAgIGQtPmlucHV0d2NzID0gbWF5YmVf cmVhbGxvYyAoZC0+aW5wdXR3Y3MsIGVuZCAtIGJlZ2luICsgMiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmQtPm5pbnB1dHdjcywgc2l6ZW9mICpkLT5pbnB1dHdj cyk7CiAgICAgICBtZW1zZXQgKCZtYnMsIDAsIHNpemVvZiAobWJzdGF0ZV90KSk7Ci0gICAg ICBwcmVwYXJlX3djX2J1ZiAoZCwgKGNvbnN0IGNoYXIgKikgcCwgZW5kKTsKICAgICAgIGlm ICghbWJfYWxsb2MpCiAgICAgICAgIHsKICAgICAgICAgICBkLT5tYl9tYXRjaF9sZW5zID0g eG5tYWxsb2MgKGQtPm5sZWF2ZXMsIHNpemVvZiAqZC0+bWJfbWF0Y2hfbGVucyk7CkBAIC0z MzY2LDEwICszMjYzLDMyIEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29uc3Qg KmJlZ2luLCBjaGFyICplbmQsCiAgICAgICAgIHsKICAgICAgICAgICB3aGlsZSAoKHQgPSB0 cmFuc1tzXSkgIT0gTlVMTCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKHAg PiBidWZfZW5kKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBzMSA9 IHM7Ci0gICAgICAgICAgICAgIFNLSVBfUkVNQUlOU19NQl9JRl9JTklUSUFMX1NUQVRFIChz LCBwKTsKKworICAgICAgICAgICAgICBpZiAocyA9PSAwKQorICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgIC8qIFRoZSBpbml0aWFsIHN0YXRlIG1heSBlbmNvdW50ZXIg YSBieXRlIHdoaWNoIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgYSBzaW5nbGUgYnl0 ZSBjaGFyYWN0ZXIgbm9yIHRoZSBmaXJzdCBieXRlIG9mIGEKKyAgICAgICAgICAgICAgICAg ICAgIG11bHRpYnl0ZSBjaGFyYWN0ZXIuICBCdXQgaXQgaXMgaW5jb3JyZWN0IGZvciB0aGUK KyAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGUgdG8gYWNjZXB0IHN1Y2ggYSBi eXRlLiAgRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgICBpbiBTaGlmdCBKSVMg dGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiXFwiIGFjY2VwdHMKKyAgICAgICAgICAgICAgICAg ICAgIHRoZSBjb2RlcG9pbnQgMHg1YywgYnV0IHNob3VsZCBub3QgYWNjZXB0IHRoZSBzZWNv bmQKKyAgICAgICAgICAgICAgICAgICAgIGJ5dGUgb2YgdGhlIGNvZGVwb2ludCAweDgxNWMu ICBUaGVuIHRoZSBpbml0aWFsCisgICAgICAgICAgICAgICAgICAgICBzdGF0ZSBtdXN0IHNr aXAgdGhlIGJ5dGVzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZQorICAgICAgICAgICAgICAgICAg ICAgYnl0ZSBjaGFyYWN0ZXIgbm9yIHRoZSBmaXJzdCBieXRlIG9mIGEgbXVsdGlieXRlCisg ICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIuICAqLworICAgICAgICAgICAgICAgICAg d2NoYXJfdCB3YzsKKyAgICAgICAgICAgICAgICAgIHdoaWxlIChtYnAgPCBwKQorICAgICAg ICAgICAgICAgICAgICBtYnAgKz0gbWJzX3RvX3djaGFyIChkLCAmd2MsIChjaGFyIGNvbnN0 ICopIG1icCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5k IC0gKGNoYXIgY29uc3QgKikgbWJwLCAmbWJzKTsKKyAgICAgICAgICAgICAgICAgIHAgPSBt YnA7CisKKyAgICAgICAgICAgICAgICAgIGlmICgoY2hhciAqKSBwID49IGVuZCkKKyAgICAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICplbmQgPSBzYXZlZF9l bmQ7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgaWYgKGQtPnN0 YXRlc1tzXS5tYnBzLm5lbGVtID09IDApCiAgICAgICAgICAgICAgICAgewpAQCAtMzM5MCw3 ICszMzA5LDggQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4s IGNoYXIgKmVuZCwKIAogICAgICAgICAgICAgICAvKiBDYW4gbWF0Y2ggd2l0aCBhIG11bHRp Ynl0ZSBjaGFyYWN0ZXIgKGFuZCBtdWx0aSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAg Y29sbGF0aW5nIGVsZW1lbnQpLiAgVHJhbnNpdGlvbiB0YWJsZSBtaWdodCBiZSB1cGRhdGVk LiAgKi8KLSAgICAgICAgICAgICAgcyA9IHRyYW5zaXRfc3RhdGUgKGQsIHMsICZwKTsKKyAg ICAgICAgICAgICAgcyA9IHRyYW5zaXRfc3RhdGUgKGQsIHMsICZwLCAodW5zaWduZWQgY2hh ciAqKSBlbmQpOworICAgICAgICAgICAgICBtYnAgPSBwOwogICAgICAgICAgICAgICB0cmFu cyA9IGQtPnRyYW5zOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNDI1LDcgKzMz NDUsOCBAQCBkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hh ciAqZW5kLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAvKiBDYW4gbWF0Y2ggd2l0 aCBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIgKGFuZCBtdWx0aWNoYXJhY3RlcgogICAgICAgICAg ICAgICAgICBjb2xsYXRpbmcgZWxlbWVudCkuICBUcmFuc2l0aW9uIHRhYmxlIG1pZ2h0IGJl IHVwZGF0ZWQuICAqLwotICAgICAgICAgICAgICBzID0gdHJhbnNpdF9zdGF0ZSAoZCwgcywg JnApOworICAgICAgICAgICAgICBzID0gdHJhbnNpdF9zdGF0ZSAoZCwgcywgJnAsICh1bnNp Z25lZCBjaGFyICopIGVuZCk7CisgICAgICAgICAgICAgIG1icCA9IHA7CiAgICAgICAgICAg ICAgIHRyYW5zID0gZC0+dHJhbnM7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQpA QCAtMzQzNCwxNCArMzM1NSw4IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29u c3QgKmJlZ2luLCBjaGFyICplbmQsCiAgICAgICAgIH0KIAogICAgICAgLyogSWYgdGhlIHBy ZXZpb3VzIGNoYXJhY3RlciB3YXMgYSBuZXdsaW5lLCBjb3VudCBpdC4gICovCi0gICAgICBp ZiAoKGNoYXIgKikgcCA8PSBlbmQgJiYgcFstMV0gPT0gZW9sKQotICAgICAgICB7Ci0gICAg ICAgICAgaWYgKGNvdW50KQotICAgICAgICAgICAgKysqY291bnQ7Ci0KLSAgICAgICAgICBp ZiAoZC0+bWJfY3VyX21heCA+IDEpCi0gICAgICAgICAgICBwcmVwYXJlX3djX2J1ZiAoZCwg KGNvbnN0IGNoYXIgKikgcCwgZW5kKTsKLSAgICAgICAgfQorICAgICAgaWYgKChjaGFyICop IHAgPD0gZW5kICYmIHBbLTFdID09IGVvbCAmJiBjb3VudCkKKyAgICAgICAgKysqY291bnQ7 CiAKICAgICAgIC8qIENoZWNrIGlmIHdlJ3ZlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgYnVm ZmVyLiAgKi8KICAgICAgIGlmICgoY2hhciAqKSBwID4gZW5kKQpAQCAtMzUxNyw4ICszNDMy LDYgQEAgZnJlZV9tYmRhdGEgKHN0cnVjdCBkZmEgKmQpCiAgIGQtPm1iY3NldHMgPSBOVUxM OwogICBkLT5ubWJjc2V0cyA9IDA7CiAKLSAgZnJlZSAoZC0+bWJsZW5fYnVmKTsKLSAgZnJl ZSAoZC0+aW5wdXR3Y3MpOwogICBpZiAoZC0+bWJfZm9sbG93cykKICAgICB7CiAgICAgICBm cmVlIChkLT5tYl9mb2xsb3dzLT5lbGVtcyk7Ci0tIAoxLjkuMAoK --------------020401090601000404030600 Content-Type: text/plain; charset=UTF-8; name="0002-dfa-minor-cleanup.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-dfa-minor-cleanup.patch" RnJvbSA4NGYwZDA4N2ZmMmUwNmE1NzY0ZmEzNGQ1OWM3YWVhYmI5MGM3NzZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUaHUsIDE3IEFwciAyMDE0IDIzOjI2OjQ5IC0wNzAwClN1YmplY3Q6IFtQQVRD SCAyLzJdIGRmYTogbWlub3IgY2xlYW51cAoKKiBzcmMvZGZhLmMgKE1BWCk6IFJlbW92ZTsg bm8gbG9uZ2VyIHVzZWQuCi0tLQogc3JjL2RmYS5jIHwgMTIgKysrKystLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9kZmEuYyBiL3NyYy9kZmEuYwppbmRleCBjNTNkMTA5Li5lZWNhMjU3IDEwMDY0 NAotLS0gYS9zcmMvZGZhLmMKKysrIGIvc3JjL2RmYS5jCkBAIC04NjgsOSArODY4LDYgQEAg c3RhdGljIHdjaGFyX3Qgd2N0b2s7ICAgICAgICAgICAvKiBXaWRlIGNoYXJhY3RlciByZXBy ZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudAogI2lmbmRlZiBNSU4KICMgZGVmaW5lIE1JTihh LGIpICgoYSkgPCAoYikgPyAoYSkgOiAoYikpCiAjZW5kaWYKLSNpZm5kZWYgTUFYCi0jIGRl ZmluZSBNQVgoYSxiKSAoKGEpIDwgKGIpID8gKGIpIDogKGEpKQotI2VuZGlmCiAKIC8qIFRo ZSBzZXQgb2Ygd2NoYXJfdCB2YWx1ZXMgQyBzdWNoIHRoYXQgdGhlcmUncyBhIHVzZWZ1bCBs b2NhbGUKICAgIHNvbWV3aGVyZSB3aGVyZSBDICE9IHRvd3VwcGVyIChDKSAmJiBDICE9IHRv d2xvd2VyICh0b3d1cHBlciAoQykpLgpAQCAtMzEwMyw5ICszMTAwLDkgQEAgdHJhbnNpdF9z dGF0ZV9jb25zdW1lXzFjaGFyIChzdHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywKICAgc3Rh dGVfbnVtIHMxLCBzMjsKICAgc3RhdHVzX3RyYW5zaXRfc3RhdGUgcnMgPSBUUkFOU0lUX1NU QVRFX0RPTkU7CiAKLSAgLyogQ2hlY2sgKGlucHV0KSBtYXRjaF9sZW5zLCBhbmQgaW5pdGlh bGl6ZSBpZiBpdCBpcyBOVUxMLiAgKi8KLSAgaWYgKG1hdGNoX2xlbnMgPT0gTlVMTCAmJiBk LT5zdGF0ZXNbc10ubWJwcy5uZWxlbSAhPSAwKQotICAgIG1hdGNoX2xlbnMgPSBjaGVja19t YXRjaGluZ193aXRoX211bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICopICpwcCwg d2MsIG1iY2xlbik7CisgIGlmICghIG1hdGNoX2xlbnMgJiYgZC0+c3RhdGVzW3NdLm1icHMu bmVsZW0gIT0gMCkKKyAgICBtYXRjaF9sZW5zID0gY2hlY2tfbWF0Y2hpbmdfd2l0aF9tdWx0 aWJ5dGVfb3BzIChkLCBzLCAoY2hhciBjb25zdCAqKSAqcHAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2MsIG1iY2xlbik7CiAKICAg LyogQ2FsY3VsYXRlIHRoZSBzdGF0ZSB3aGljaCBjYW4gYmUgcmVhY2hlZCBmcm9tIHRoZSBz dGF0ZSAncycgYnkKICAgICAgY29uc3VtaW5nICdtYmNsZW4nIHNpbmdsZSBieXRlcyBmcm9t IHRoZSBidWZmZXIuICAqLwpAQCAtMzE1NSw3ICszMTUyLDggQEAgdHJhbnNpdF9zdGF0ZSAo c3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKipwcCwK ICAgICB7CiAgICAgICAvKiBOb3RlOiBjYWxsZXIgbXVzdCBmcmVlIHRoZSByZXR1cm4gdmFs dWUgb2YgdGhpcyBmdW5jdGlvbi4gICovCiAgICAgICBtYmNsZW4gPSBtYnNfdG9fd2NoYXIg KGQsICZ3YywgKGNoYXIgY29uc3QgKikgKnBwLCBlbmQgLSAqcHAsICZtYnMpOwotICAgICAg bWF0Y2hfbGVucyA9IGNoZWNrX21hdGNoaW5nX3dpdGhfbXVsdGlieXRlX29wcyAoZCwgcywg KGNoYXIgY29uc3QgKikgKnBwLCB3YywgbWJjbGVuKTsKKyAgICAgIG1hdGNoX2xlbnMgPSBj aGVja19tYXRjaGluZ193aXRoX211bHRpYnl0ZV9vcHMgKGQsIHMsIChjaGFyIGNvbnN0ICop ICpwcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdjLCBtYmNsZW4pOwogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsZW07IGkr KykKICAgICAgICAgLyogU2VhcmNoIHRoZSBvcGVyYXRvciB3aGljaCBtYXRjaCB0aGUgbG9u Z2VzdCBzdHJpbmcsCi0tIAoxLjkuMAoK --------------020401090601000404030600-- From unknown Sun Aug 17 10:23:05 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 16 May 2014 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator