From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KUoiq-0003WU-Kt for qemu-devel@nongnu.org; Sun, 17 Aug 2008 16:19:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KUoio-0003WF-Q7 for qemu-devel@nongnu.org; Sun, 17 Aug 2008 16:19:31 -0400 Received: from [199.232.76.173] (port=39310 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KUoio-0003WC-JC for qemu-devel@nongnu.org; Sun, 17 Aug 2008 16:19:30 -0400 Received: from wf-out-1314.google.com ([209.85.200.168]:52517) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KUoin-0001Ub-M2 for qemu-devel@nongnu.org; Sun, 17 Aug 2008 16:19:30 -0400 Received: by wf-out-1314.google.com with SMTP id 27so2688323wfd.4 for ; Sun, 17 Aug 2008 13:19:29 -0700 (PDT) Message-ID: Date: Sun, 17 Aug 2008 23:19:28 +0300 From: "Blue Swirl" In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_151893_29847273.1219004368976" References: Subject: [Qemu-devel] Re: [PATCH] Fix OpenBSD linker warnings Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel ------=_Part_151893_29847273.1219004368976 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 8/15/08, Blue Swirl wrote: > OpenBSD gcc issues warnings for some suspicious constructs, like: > slirp/tcp_subr.c:1077: warning: Array size (256) smaller than format > string size (257) (arg 3) > vl.o(.text+0x7bc0): In function `drive_init': > vl.c:5464: warning: strcpy() is almost always misused, please use strlcpy() > > This patch silences the warnings. Comments? Updated patch with more fixes attached. It's easy to make mistakes with these kind of changes, so review and comments are welcome. ------=_Part_151893_29847273.1219004368976 Content-Type: plain/text; name=fix_obsd_ld_warnings.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fk03pp4v Content-Disposition: attachment; filename=fix_obsd_ld_warnings.diff SW5kZXg6IHFlbXUvbW9uaXRvci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9tb25pdG9yLmMJ MjAwOC0wOC0xNyAxNDozMjo0NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbW9uaXRvci5jCTIw MDgtMDgtMTcgMTU6MDE6MTcuMDAwMDAwMDAwICswMDAwCkBAIC0yMjMzLDcgKzIyMzMsNyBAQAog ICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgIHN0ciA9IHFlbXVfbWFsbG9jKHN0cmxlbihidWYpICsgMSk7Ci0gICAgICAgICAg ICAgICAgc3RyY3B5KHN0ciwgYnVmKTsKKyAgICAgICAgICAgICAgICBwc3RyY3B5KHN0ciwgc2l6 ZW9mKGJ1ZiksIGJ1Zik7CiAgICAgICAgICAgICAgICAgc3RyX2FsbG9jYXRlZFtuYl9hcmdzXSA9 IHN0cjsKICAgICAgICAgICAgIGFkZF9zdHI6CiAgICAgICAgICAgICAgICAgaWYgKG5iX2FyZ3Mg Pj0gTUFYX0FSR1MpIHsKQEAgLTI0OTIsNyArMjQ5Miw3IEBACiAgICAgaWYgKCFwKSB7CiAgICAg ICAgIGlucHV0X3BhdGhfbGVuID0gMDsKICAgICAgICAgcHN0cmNweShmaWxlX3ByZWZpeCwgc2l6 ZW9mKGZpbGVfcHJlZml4KSwgaW5wdXQpOwotICAgICAgICBzdHJjcHkocGF0aCwgIi4iKTsKKyAg ICAgICAgcHN0cmNweShwYXRoLCBzaXplb2YocGF0aCksICIuIik7CiAgICAgfSBlbHNlIHsKICAg ICAgICAgaW5wdXRfcGF0aF9sZW4gPSBwIC0gaW5wdXQgKyAxOwogICAgICAgICBtZW1jcHkocGF0 aCwgaW5wdXQsIGlucHV0X3BhdGhfbGVuKTsKQEAgLTI1MTQsMTMgKzI1MTQsMTUgQEAKICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoc3Ryc3RhcnQoZC0+ZF9uYW1lLCBmaWxlX3ByZWZp eCwgTlVMTCkpIHsKICAgICAgICAgICAgIG1lbWNweShmaWxlLCBpbnB1dCwgaW5wdXRfcGF0aF9s ZW4pOwotICAgICAgICAgICAgc3RyY3B5KGZpbGUgKyBpbnB1dF9wYXRoX2xlbiwgZC0+ZF9uYW1l KTsKKyAgICAgICAgICAgIGlmIChpbnB1dF9wYXRoX2xlbiA8IHNpemVvZihmaWxlKSkKKyAgICAg ICAgICAgICAgICBwc3RyY3B5KGZpbGUgKyBpbnB1dF9wYXRoX2xlbiwgc2l6ZW9mKGZpbGUpIC0g aW5wdXRfcGF0aF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBkLT5kX25hbWUpOwogICAg ICAgICAgICAgLyogc3RhdCB0aGUgZmlsZSB0byBmaW5kIG91dCBpZiBpdCdzIGEgZGlyZWN0b3J5 LgogICAgICAgICAgICAgICogSW4gdGhhdCBjYXNlIGFkZCBhIHNsYXNoIHRvIHNwZWVkIHVwIHR5 cGluZyBsb25nIHBhdGhzCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHN0YXQoZmlsZSwg JnNiKTsKICAgICAgICAgICAgIGlmKFNfSVNESVIoc2Iuc3RfbW9kZSkpCi0gICAgICAgICAgICAg ICAgc3RyY2F0KGZpbGUsICIvIik7CisgICAgICAgICAgICAgICAgcHN0cmNhdChmaWxlLCBzaXpl b2YoZmlsZSksICIvIik7CiAgICAgICAgICAgICBhZGRfY29tcGxldGlvbihmaWxlKTsKICAgICAg ICAgfQogICAgIH0KSW5kZXg6IHFlbXUvdmwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwu YwkyMDA4LTA4LTE3IDE0OjMyOjQ0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5jCTIwMDgt MDgtMTcgMTU6MDE6MTcuMDAwMDAwMDAwICswMDAwCkBAIC0xOTE1LDExICsxOTE1LDEyIEBACiAg ICAgY2hhciBjYnVmWzUwXSA9ICJcblxyIjsKIAogICAgIGlmICh0ZXJtX2VzY2FwZV9jaGFyID4g MCAmJiB0ZXJtX2VzY2FwZV9jaGFyIDwgMjYpIHsKLSAgICAgICAgc3ByaW50ZihjYnVmLCJcblxy Iik7Ci0gICAgICAgIHNwcmludGYoZWJ1ZiwiQy0lYyIsIHRlcm1fZXNjYXBlX2NoYXIgLSAxICsg J2EnKTsKKyAgICAgICAgc25wcmludGYoY2J1Ziwgc2l6ZW9mKGNidWYpLCAiXG5cciIpOworICAg ICAgICBzbnByaW50ZihlYnVmLCBzaXplb2YoZWJ1ZiksICJDLSVjIiwgdGVybV9lc2NhcGVfY2hh ciAtIDEgKyAnYScpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNwcmludGYoY2J1ZiwiXG5cckVz Y2FwZS1DaGFyIHNldCB0byBBc2NpaTogMHglMDJ4XG5cclxuXHIiLAotICAgICAgICAgICAgdGVy bV9lc2NhcGVfY2hhcik7CisgICAgICAgIHNucHJpbnRmKGNidWYsIHNpemVvZihjYnVmKSwKKyAg ICAgICAgICAgICAgICAgIlxuXHJFc2NhcGUtQ2hhciBzZXQgdG8gQXNjaWk6IDB4JTAyeFxuXHJc blxyIiwKKyAgICAgICAgICAgICAgICAgdGVybV9lc2NhcGVfY2hhcik7CiAgICAgfQogICAgIGNo ci0+Y2hyX3dyaXRlKGNociwgKHVpbnQ4X3QgKiljYnVmLCBzdHJsZW4oY2J1ZikpOwogICAgIGZv ciAoaSA9IDA7IG11eF9oZWxwW2ldICE9IE5VTEw7IGkrKykgewpAQCAtNDM4NSw3ICs0Mzg2LDcg QEAKICAqIEFsbG9jYXRlIFRBUCBkZXZpY2UsIHJldHVybnMgb3BlbmVkIGZkLgogICogU3RvcmVz IGRldiBuYW1lIGluIHRoZSBmaXJzdCBhcmcobXVzdCBiZSBsYXJnZSBlbm91Z2gpLgogICovCi1p bnQgdGFwX2FsbG9jKGNoYXIgKmRldikKK2ludCB0YXBfYWxsb2MoY2hhciAqZGV2LCBzaXplX3Qg ZGV2X3NpemUpCiB7CiAgICAgaW50IHRhcF9mZCwgaWZfZmQsIHBwYSA9IC0xOwogICAgIHN0YXRp YyBpbnQgaXBfZmQgPSAwOwpAQCAtNDQ5OCw3ICs0NDk5LDcgQEAKICAgICAgIHN5c2xvZyAoTE9H X0VSUiwgIkNhbid0IHNldCBtdWx0aXBsZXhvciBpZCIpOwogICAgIH0KIAotICAgIHNwcmludGYo ZGV2LCAidGFwJWQiLCBwcGEpOworICAgIHNucHJpbnRmKGRldiwgZGV2X3NpemUsICJ0YXAlZCIs IHBwYSk7CiAgICAgcmV0dXJuIHRhcF9mZDsKIH0KIApAQCAtNDUwNiw3ICs0NTA3LDcgQEAKIHsK ICAgICBjaGFyICBkZXZbMTBdPSIiOwogICAgIGludCBmZDsKLSAgICBpZiggKGZkID0gdGFwX2Fs bG9jKGRldikpIDwgMCApeworICAgIGlmKCAoZmQgPSB0YXBfYWxsb2MoZGV2LCBzaXplb2YoZGV2 KSkpIDwgMCApewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGFsbG9jYXRlIFRBUCBk ZXZpY2VcbiIpOwogICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC01NDYxLDExICs1NDYyLDEx IEBACiAgICAgICAgICFzdHJjbXAobWFjaGluZS0+bmFtZSwgInZlcnNhdGlsZWFiIikpIHsKICAg ICAgICAgdHlwZSA9IElGX1NDU0k7CiAgICAgICAgIG1heF9kZXZzID0gTUFYX1NDU0lfREVWUzsK LSAgICAgICAgc3RyY3B5KGRldm5hbWUsICJzY3NpIik7CisgICAgICAgIHBzdHJjcHkoZGV2bmFt ZSwgc2l6ZW9mKGRldm5hbWUpLCAic2NzaSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHR5cGUg PSBJRl9JREU7CiAgICAgICAgIG1heF9kZXZzID0gTUFYX0lERV9ERVZTOwotICAgICAgICBzdHJj cHkoZGV2bmFtZSwgImlkZSIpOworICAgICAgICBwc3RyY3B5KGRldm5hbWUsIHNpemVvZihkZXZu YW1lKSwgImlkZSIpOwogICAgIH0KICAgICBtZWRpYSA9IE1FRElBX0RJU0s7CiAKSW5kZXg6IHFl bXUvZ2Ric3R1Yi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9nZGJzdHViLmMJMjAwOC0wOC0x NyAxNDozMjo0NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvZ2Ric3R1Yi5jCTIwMDgtMDgtMTcg MTU6MDE6MTcuMDAwMDAwMDAwICswMDAwCkBAIC0xMTczLDEwICsxMTczLDEwIEBACiAgICAgICAg IC8qIHBhcnNlIGFueSAncScgcGFja2V0cyBoZXJlICovCiAgICAgICAgIGlmICghc3RyY21wKHAs InFlbXUuc3N0ZXBiaXRzIikpIHsKICAgICAgICAgICAgIC8qIFF1ZXJ5IEJyZWFrcG9pbnQgYml0 IGRlZmluaXRpb25zICovCi0gICAgICAgICAgICBzcHJpbnRmKGJ1ZiwiRU5BQkxFPSV4LE5PSVJR PSV4LE5PVElNRVI9JXgiLAotICAgICAgICAgICAgICAgICAgICBTU1RFUF9FTkFCTEUsCi0gICAg ICAgICAgICAgICAgICAgIFNTVEVQX05PSVJRLAotICAgICAgICAgICAgICAgICAgICBTU1RFUF9O T1RJTUVSKTsKKyAgICAgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJFTkFCTEU9 JXgsTk9JUlE9JXgsTk9USU1FUj0leCIsCisgICAgICAgICAgICAgICAgICAgICBTU1RFUF9FTkFC TEUsCisgICAgICAgICAgICAgICAgICAgICBTU1RFUF9OT0lSUSwKKyAgICAgICAgICAgICAgICAg ICAgIFNTVEVQX05PVElNRVIpOwogICAgICAgICAgICAgcHV0X3BhY2tldChzLCBidWYpOwogICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RybmNtcChwLCJxZW11LnNzdGVw IiwxMCkgPT0gMCkgewpAQCAtMTE4NCw3ICsxMTg0LDcgQEAKICAgICAgICAgICAgIHAgKz0gMTA7 CiAgICAgICAgICAgICBpZiAoKnAgIT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgLyogRGlzcGxh eSBjdXJyZW50IHNldHRpbmcgKi8KLSAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZiwiMHgleCIs IHNzdGVwX2ZsYWdzKTsKKyAgICAgICAgICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYp LCAiMHgleCIsIHNzdGVwX2ZsYWdzKTsKICAgICAgICAgICAgICAgICBwdXRfcGFja2V0KHMsIGJ1 Zik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMTk4LDEyICsx MTk4LDEyIEBACiAgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAocCwgIk9mZnNldHMiLCA3KSA9PSAw KSB7CiAgICAgICAgICAgICBUYXNrU3RhdGUgKnRzID0gZW52LT5vcGFxdWU7CiAKLSAgICAgICAg ICAgIHNwcmludGYoYnVmLAotICAgICAgICAgICAgICAgICAgICAiVGV4dD0iIFRBUkdFVF9BQklf Rk1UX2x4ICI7RGF0YT0iIFRBUkdFVF9BQklfRk1UX2x4Ci0gICAgICAgICAgICAgICAgICAgICI7 QnNzPSIgVEFSR0VUX0FCSV9GTVRfbHgsCi0gICAgICAgICAgICAgICAgICAgIHRzLT5pbmZvLT5j b2RlX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgdHMtPmluZm8tPmRhdGFfb2Zmc2V0LAot ICAgICAgICAgICAgICAgICAgICB0cy0+aW5mby0+ZGF0YV9vZmZzZXQpOworICAgICAgICAgICAg c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICJUZXh0PSIg VEFSR0VUX0FCSV9GTVRfbHggIjtEYXRhPSIgVEFSR0VUX0FCSV9GTVRfbHgKKyAgICAgICAgICAg ICAgICAgICAgICI7QnNzPSIgVEFSR0VUX0FCSV9GTVRfbHgsCisgICAgICAgICAgICAgICAgICAg ICB0cy0+aW5mby0+Y29kZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICB0cy0+aW5mby0+ ZGF0YV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICB0cy0+aW5mby0+ZGF0YV9vZmZzZXQp OwogICAgICAgICAgICAgcHV0X3BhY2tldChzLCBidWYpOwogICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIH0KQEAgLTEyODYsMTcgKzEyODYsMTggQEAKICAgICAgICAgICAgIHN3aXRjaCAoKmZt dCsrKSB7CiAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICBhZGRyID0gdmFf YXJnKHZhLCB0YXJnZXRfdWxvbmcpOwotICAgICAgICAgICAgICAgIHAgKz0gc3ByaW50ZihwLCBU QVJHRVRfRk1UX2x4LCBhZGRyKTsKKyAgICAgICAgICAgICAgICBwICs9IHNucHJpbnRmKHAsICZi dWZbc2l6ZW9mKGJ1ZildIC0gcCwgVEFSR0VUX0ZNVF9seCwgYWRkcik7CiAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICdsJzoKICAgICAgICAgICAgICAgICBpZiAoKihm bXQrKykgIT0gJ3gnKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGJhZF9mb3JtYXQ7CiAgICAg ICAgICAgICAgICAgaTY0ID0gdmFfYXJnKHZhLCB1aW50NjRfdCk7Ci0gICAgICAgICAgICAgICAg cCArPSBzcHJpbnRmKHAsICIlIiBQUkl4NjQsIGk2NCk7CisgICAgICAgICAgICAgICAgcCArPSBz bnByaW50ZihwLCAmYnVmW3NpemVvZihidWYpXSAtIHAsICIlIiBQUkl4NjQsIGk2NCk7CiAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAg ICBhZGRyID0gdmFfYXJnKHZhLCB0YXJnZXRfdWxvbmcpOwotICAgICAgICAgICAgICAgIHAgKz0g c3ByaW50ZihwLCBUQVJHRVRfRk1UX2x4ICIvJXgiLCBhZGRyLCB2YV9hcmcodmEsIGludCkpOwor ICAgICAgICAgICAgICAgIHAgKz0gc25wcmludGYocCwgJmJ1ZltzaXplb2YoYnVmKV0gLSBwLCBU QVJHRVRfRk1UX2x4ICIvJXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwg dmFfYXJnKHZhLCBpbnQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRl ZmF1bHQ6CiAgICAgICAgICAgICBiYWRfZm9ybWF0OgpJbmRleDogcWVtdS9ody9zdW40bS5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9zdW40bS5jCTIwMDgtMDgtMTcgMTQ6MzI6NDQuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2h3L3N1bjRtLmMJMjAwOC0wOC0xNyAxNTowMToxNy4wMDAw MDAwMDAgKzAwMDAKQEAgLTE1OSw3ICsxNTksOCBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBzaXpl b2YoaW1hZ2UpOyBpKyspCiAgICAgICAgIGltYWdlW2ldID0gbTQ4dDU5X3JlYWQobnZyYW0sIGkp ICYgMHhmZjsKIAotICAgIHN0cmNweSgoY2hhciAqKWhlYWRlci0+Ym9vdF9kZXZpY2VzLCBib290 X2RldmljZSk7CisgICAgcHN0cmNweSgoY2hhciAqKWhlYWRlci0+Ym9vdF9kZXZpY2VzLCBzaXpl b2YoaGVhZGVyLT5ib290X2RldmljZXMpLAorICAgICAgICAgICAgYm9vdF9kZXZpY2UpOwogICAg IGhlYWRlci0+bmJvb3RfZGV2aWNlcyA9IHN0cmxlbihib290X2RldmljZSkgJiAweGZmOwogICAg IGhlYWRlci0+Y3JjID0gY3B1X3RvX2JlMTYoT0hXX2NvbXB1dGVfY3JjKGhlYWRlciwgMHgwMCwg MHhGOCkpOwogCkBAIC0xODcsMTcgKzE4OCwxOSBAQAogICAgIG1lbXNldChpbWFnZSwgJ1wwJywg c2l6ZW9mKGltYWdlKSk7CiAKICAgICAvLyBUcnkgdG8gbWF0Y2ggUFBDIE5WUkFNCi0gICAgc3Ry Y3B5KChjaGFyICopaGVhZGVyLT5zdHJ1Y3RfaWRlbnQsICJRRU1VX0JJT1MiKTsKKyAgICBwc3Ry Y3B5KChjaGFyICopaGVhZGVyLT5zdHJ1Y3RfaWRlbnQsIHNpemVvZihoZWFkZXItPnN0cnVjdF9p ZGVudCksCisgICAgICAgICAgICAiUUVNVV9CSU9TIik7CiAgICAgaGVhZGVyLT5zdHJ1Y3RfdmVy c2lvbiA9IGNwdV90b19iZTMyKDMpOyAvKiBzdHJ1Y3R1cmUgdjMgKi8KIAogICAgIGhlYWRlci0+ bnZyYW1fc2l6ZSA9IGNwdV90b19iZTE2KDB4MjAwMCk7CiAgICAgaGVhZGVyLT5udnJhbV9hcmNo X3B0ciA9IGNwdV90b19iZTE2KHNpemVvZihvaHdjZmdfdjNfdCkpOwogICAgIGhlYWRlci0+bnZy YW1fYXJjaF9zaXplID0gY3B1X3RvX2JlMTYoc2l6ZW9mKHN0cnVjdCBzcGFyY19hcmNoX2NmZykp OwotICAgIHN0cmNweSgoY2hhciAqKWhlYWRlci0+YXJjaCwgYXJjaCk7CisgICAgcHN0cmNweSgo Y2hhciAqKWhlYWRlci0+YXJjaCwgc2l6ZW9mKGhlYWRlci0+YXJjaCksIGFyY2gpOwogICAgIGhl YWRlci0+bmJfY3B1cyA9IHNtcF9jcHVzICYgMHhmZjsKICAgICBoZWFkZXItPlJBTTBfYmFzZSA9 IDA7CiAgICAgaGVhZGVyLT5SQU0wX3NpemUgPSBjcHVfdG9fYmU2NCgodWludDY0X3QpUkFNX3Np emUpOwotICAgIHN0cmNweSgoY2hhciAqKWhlYWRlci0+Ym9vdF9kZXZpY2VzLCBib290X2Rldmlj ZXMpOworICAgIHBzdHJjcHkoKGNoYXIgKiloZWFkZXItPmJvb3RfZGV2aWNlcywgc2l6ZW9mKGhl YWRlci0+Ym9vdF9kZXZpY2VzKSwKKyAgICAgICAgICAgIGJvb3RfZGV2aWNlcyk7CiAgICAgaGVh ZGVyLT5uYm9vdF9kZXZpY2VzID0gc3RybGVuKGJvb3RfZGV2aWNlcykgJiAweGZmOwogICAgIGhl YWRlci0+a2VybmVsX2ltYWdlID0gY3B1X3RvX2JlNjQoKHVpbnQ2NF90KUtFUk5FTF9MT0FEX0FE RFIpOwogICAgIGhlYWRlci0+a2VybmVsX3NpemUgPSBjcHVfdG9fYmU2NCgodWludDY0X3Qpa2Vy bmVsX3NpemUpOwpAQCAtMjI1LDcgKzIyOCw3IEBACiAgICAgLy8gVmFyaWFibGUgcGFydGl0aW9u CiAgICAgcGFydF9oZWFkZXIgPSAoc3RydWN0IE9wZW5CSU9TX252cGFydF92MSAqKSZpbWFnZVtz dGFydF07CiAgICAgcGFydF9oZWFkZXItPnNpZ25hdHVyZSA9IE9QRU5CSU9TX1BBUlRfU1lTVEVN OwotICAgIHN0cmNweShwYXJ0X2hlYWRlci0+bmFtZSwgInN5c3RlbSIpOworICAgIHBzdHJjcHko cGFydF9oZWFkZXItPm5hbWUsIHNpemVvZihwYXJ0X2hlYWRlci0+bmFtZSksICJzeXN0ZW0iKTsK IAogICAgIGVuZCA9IHN0YXJ0ICsgc2l6ZW9mKHN0cnVjdCBPcGVuQklPU19udnBhcnRfdjEpOwog ICAgIGZvciAoaSA9IDA7IGkgPCBuYl9wcm9tX2VudnM7IGkrKykKQEAgLTI0MSw3ICsyNDQsNyBA QAogICAgIHN0YXJ0ID0gZW5kOwogICAgIHBhcnRfaGVhZGVyID0gKHN0cnVjdCBPcGVuQklPU19u dnBhcnRfdjEgKikmaW1hZ2Vbc3RhcnRdOwogICAgIHBhcnRfaGVhZGVyLT5zaWduYXR1cmUgPSBP UEVOQklPU19QQVJUX0ZSRUU7Ci0gICAgc3RyY3B5KHBhcnRfaGVhZGVyLT5uYW1lLCAiZnJlZSIp OworICAgIHBzdHJjcHkocGFydF9oZWFkZXItPm5hbWUsIHNpemVvZihwYXJ0X2hlYWRlci0+bmFt ZSksICJmcmVlIik7CiAKICAgICBlbmQgPSAweDFmZDA7CiAgICAgT3BlbkJJT1NfZmluaXNoX3Bh cnRpdGlvbihwYXJ0X2hlYWRlciwgZW5kIC0gc3RhcnQpOwpJbmRleDogcWVtdS9zbGlycC9taXNj LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL21pc2MuYwkyMDA4LTA4LTE3IDE0OjMy OjQ0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9taXNjLmMJMjAwOC0wOC0xNyAxNTow MToxNy4wMDAwMDAwMDAgKzAwMDAKQEAgLTQxNyw4ICs0MTcsOSBAQAogCQkgIHsKIAkJCSAgY2hh ciBidWZmWzI1Nl07CiAKLQkJCSAgc3ByaW50ZihidWZmLCAiRXJyb3I6IGV4ZWN2cCBvZiAlcyBm YWlsZWQ6ICVzXG4iLAotCQkJCSAgYXJndlswXSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCSAgc25w cmludGYoYnVmZiwgc2l6ZW9mKGJ1ZmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiRXJyb3I6IGV4ZWN2cCBvZiAlcyBmYWlsZWQ6ICVzXG4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcmd2WzBdLCBzdHJlcnJvcihlcnJubykpOwogCQkJICB3cml0 ZSgyLCBidWZmLCBzdHJsZW4oYnVmZikrMSk7CiAJCSAgfQogCQljbG9zZSgwKTsgY2xvc2UoMSk7 IGNsb3NlKDIpOyAvKiBYWFggKi8KSW5kZXg6IHFlbXUvc2xpcnAvdGNwX3N1YnIuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvdGNwX3N1YnIuYwkyMDA4LTA4LTE3IDE0OjMyOjQ0LjAw MDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC90Y3Bfc3Vici5jCTIwMDgtMDgtMTcgMTU6MDE6 MTcuMDAwMDAwMDAwICswMDAwCkBAIC02MjksNyArNjI5LDcgQEAKIAlzdHJ1Y3QgbWJ1ZiAqbTsK IHsKIAl1X2ludCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42OwotCWNoYXIgYnVmZlsyNTZdOworICAg ICAgICBjaGFyIGJ1ZmZbMjU3XTsKIAl1X2ludDMyX3QgbGFkZHI7CiAJdV9pbnQgbHBvcnQ7CiAJ Y2hhciAqYnB0cjsKQEAgLTY3Myw3ICs2NzMsOSBAQAogCQkJCQkJfQogCQkJCQl9CiAJCQkJfQot CQkJCXNvX3Jjdi0+c2JfY2MgPSBzcHJpbnRmKHNvX3Jjdi0+c2JfZGF0YSwgIiVkLCVkXHJcbiIs IG4xLCBuMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvX3Jjdi0+c2JfY2Mg PSBzbnByaW50Zihzb19yY3YtPnNiX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb19yY3YtPnNiX2RhdGFsZW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQsJWRc clxuIiwgbjEsIG4yKTsKIAkJCQlzb19yY3YtPnNiX3JwdHIgPSBzb19yY3YtPnNiX2RhdGE7CiAJ CQkJc29fcmN2LT5zYl93cHRyID0gc29fcmN2LT5zYl9kYXRhICsgc29fcmN2LT5zYl9jYzsKIAkJ CX0KQEAgLTEwMDcsOCArMTAwOSw5IEBACiAJCQluNCA9ICAobGFkZHIgJiAweGZmKTsKIAogCQkJ bS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCi0JCQltLT5t X2xlbiArPSBzcHJpbnRmKGJwdHIsIk9SVCAlZCwlZCwlZCwlZCwlZCwlZFxyXG4lcyIsCi0JCQkJ CSAgICBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCB4PT03P2J1ZmY6IiIpOworICAgICAgICAgICAg ICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgbS0+bV9oZHIubWhfc2l6ZSAt IG0tPm1fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ik9SVCAlZCwlZCwlZCwlZCwlZCwlZFxyXG4lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCB4PT03P2J1ZmY6IiIp OwogCQkJcmV0dXJuIDE7CiAJCX0gZWxzZSBpZiAoKGJwdHIgPSAoY2hhciAqKXN0cnN0cihtLT5t X2RhdGEsICIyNyBFbnRlcmluZyIpKSAhPSBOVUxMKSB7CiAJCQkvKgpAQCAtMTAzOCw4ICsxMDQx LDkgQEAKIAkJCW40ID0gIChsYWRkciAmIDB4ZmYpOwogCiAJCQltLT5tX2xlbiA9IGJwdHIgLSBt LT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KLQkJCW0tPm1fbGVuICs9IHNwcmludGYoYnB0 ciwiMjcgRW50ZXJpbmcgUGFzc2l2ZSBNb2RlICglZCwlZCwlZCwlZCwlZCwlZClcclxuJXMiLAot CQkJCQkgICAgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgeD09Nz9idWZmOiIiKTsKKwkJCW0tPm1f bGVuICs9IHNucHJpbnRmKGJwdHIsIG0tPm1faGRyLm1oX3NpemUgLSBtLT5tX2xlbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyNyBFbnRlcmluZyBQYXNz aXZlIE1vZGUgKCVkLCVkLCVkLCVkLCVkLCVkKVxyXG4lcyIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCB4PT03P2J1 ZmY6IiIpOwogCiAJCQlyZXR1cm4gMTsKIAkJfQpAQCAtMTA2Miw3ICsxMDY2LDggQEAKIAkJfQog CQlpZiAobS0+bV9kYXRhW20tPm1fbGVuLTFdID09ICdcMCcgJiYgbHBvcnQgIT0gMCAmJgogCQkg ICAgKHNvID0gc29saXN0ZW4oMCwgc28tPnNvX2xhZGRyLnNfYWRkciwgaHRvbnMobHBvcnQpLCBT U19GQUNDRVBUT05DRSkpICE9IE5VTEwpCi0JCQltLT5tX2xlbiA9IHNwcmludGYobS0+bV9kYXRh LCAiJWQiLCBudG9ocyhzby0+c29fZnBvcnQpKSsxOworICAgICAgICAgICAgICAgICAgICBtLT5t X2xlbiA9IHNucHJpbnRmKG0tPm1fZGF0YSwgbS0+bV9oZHIubWhfc2l6ZSwgIiVkIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpKSAr IDE7CiAJCXJldHVybiAxOwogCiAJIGNhc2UgRU1VX0lSQzoKQEAgLTEwNzksMjUgKzEwODQsMjgg QEAKIAkJCQlyZXR1cm4gMTsKIAogCQkJbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBB ZGp1c3QgbGVuZ3RoICovCi0JCQltLT5tX2xlbiArPSBzcHJpbnRmKGJwdHIsICJEQ0MgQ0hBVCBj aGF0ICVsdSAldSVjXG4iLAotCQkJICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFk ZHIuc19hZGRyKSwKLQkJCSAgICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgMSk7CisgICAgICAgICAg ICAgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBtLT5tX2hkci5taF9zaXpl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRDQyBDSEFU IGNoYXQgJWx1ICV1JWNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFkZHIuc19hZGRyKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50b2hzKHNvLT5zb19mcG9y dCksIDEpOwogCQl9IGVsc2UgaWYgKHNzY2FuZihicHRyLCAiRENDIFNFTkQgJTI1NnMgJXUgJXUg JXUiLCBidWZmLCAmbGFkZHIsICZscG9ydCwgJm4xKSA9PSA0KSB7CiAJCQlpZiAoKHNvID0gc29s aXN0ZW4oMCwgaHRvbmwobGFkZHIpLCBodG9ucyhscG9ydCksIFNTX0ZBQ0NFUFRPTkNFKSkgPT0g TlVMTCkKIAkJCQlyZXR1cm4gMTsKIAogCQkJbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAv KiBBZGp1c3QgbGVuZ3RoICovCi0JCQltLT5tX2xlbiArPSBzcHJpbnRmKGJwdHIsICJEQ0MgU0VO RCAlcyAlbHUgJXUgJXUlY1xuIiwKLQkJCSAgICAgIGJ1ZmYsICh1bnNpZ25lZCBsb25nKW50b2hs KHNvLT5zb19mYWRkci5zX2FkZHIpLAotCQkJICAgICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgbjEs IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwg bS0+bV9oZHIubWhfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJEQ0MgU0VORCAlcyAlbHUgJXUgJXUlY1xuIiwgYnVmZiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5z b19mYWRkci5zX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgbjEsIDEpOwogCQl9IGVsc2UgaWYgKHNzY2FuZihi cHRyLCAiRENDIE1PVkUgJTI1NnMgJXUgJXUgJXUiLCBidWZmLCAmbGFkZHIsICZscG9ydCwgJm4x KSA9PSA0KSB7CiAJCQlpZiAoKHNvID0gc29saXN0ZW4oMCwgaHRvbmwobGFkZHIpLCBodG9ucyhs cG9ydCksIFNTX0ZBQ0NFUFRPTkNFKSkgPT0gTlVMTCkKIAkJCQlyZXR1cm4gMTsKIAogCQkJbS0+ bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCi0JCQltLT5tX2xl biArPSBzcHJpbnRmKGJwdHIsICJEQ0MgTU9WRSAlcyAlbHUgJXUgJXUlY1xuIiwKLQkJCSAgICAg IGJ1ZmYsICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5zb19mYWRkci5zX2FkZHIpLAotCQkJICAg ICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgbjEsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAg bS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgbS0+bV9oZHIubWhfc2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEQ0MgTU9WRSAlcyAlbHUgJXUgJXUl Y1xuIiwgYnVmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5zb19mYWRkci5zX2FkZHIpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgbjEs IDEpOwogCQl9CiAJCXJldHVybiAxOwogCkBAIC0xMjg1LDggKzEyOTMsOCBAQAogCiAJCS8qIEZB TExUSFJPVUdIICovCiAJY2FzZSBDVExfQUxJQVM6Ci0JICBzYi0+c2JfY2MgPSBzcHJpbnRmKHNi LT5zYl93cHRyLAotCQkJICAgICAgIkVycm9yOiBObyBhcHBsaWNhdGlvbiBjb25maWd1cmVkLlxy XG4iKTsKKyAgICAgICAgICBzYi0+c2JfY2MgPSBzbnByaW50ZihzYi0+c2Jfd3B0ciwgc2ItPnNi X2RhdGFsZW4gLSAoc2ItPnNiX3dwdHIgLSBzYi0+c2JfZGF0YSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkVycm9yOiBObyBhcHBsaWNhdGlvbiBjb25maWd1cmVkLlxyXG4iKTsK IAkgIHNiLT5zYl93cHRyICs9IHNiLT5zYl9jYzsKIAkgIHJldHVybigwKTsKIApJbmRleDogcWVt dS9ibG9jay12bWRrLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2Jsb2NrLXZtZGsuYwkyMDA4 LTA4LTE3IDE0OjMyOjQ0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ibG9jay12bWRrLmMJMjAw OC0wOC0xNyAxNTowMToxNy4wMDAwMDAwMDAgKzAwMDAKQEAgLTE1MywxMSArMTUzLDExIEBACiAg ICAgICAgIHJldHVybiAtMTsKIAogICAgIHRtcF9zdHIgPSBzdHJzdHIoZGVzYywicGFyZW50Q0lE Iik7Ci0gICAgc3RyY3B5KHRtcF9kZXNjLCB0bXBfc3RyKTsKKyAgICBwc3RyY3B5KHRtcF9kZXNj LCBzaXplb2YodG1wX2Rlc2MpLCB0bXBfc3RyKTsKICAgICBpZiAoKHBfbmFtZSA9IHN0cnN0cihk ZXNjLCJDSUQiKSkgIT0gMCkgewogICAgICAgICBwX25hbWUgKz0gc2l6ZW9mKCJDSUQiKTsKLSAg ICAgICAgc3ByaW50ZihwX25hbWUsIiV4XG4iLGNpZCk7Ci0gICAgICAgIHN0cmNhdChkZXNjLHRt cF9kZXNjKTsKKyAgICAgICAgc25wcmludGYocF9uYW1lLCBzaXplb2YoZGVzYykgLSAocF9uYW1l IC0gZGVzYyksICIleFxuIiwgY2lkKTsKKyAgICAgICAgcHN0cmNhdChkZXNjLCBzaXplb2YoZGVz YyksIHRtcF9kZXNjKTsKICAgICB9CiAKICAgICBpZiAoYmRydl9wd3JpdGUocy0+aGQsIDB4MjAw LCBkZXNjLCBERVNDX1NJWkUpICE9IERFU0NfU0laRSkKQEAgLTI1Miw4ICsyNTIsOCBAQAogICAg IGlmICgodGVtcF9zdHIgPSBzdHJyY2hyKHJlYWxfZmlsZW5hbWUsICc6JykpICE9IE5VTEwpCiAg ICAgICAgIHJlYWxfZmlsZW5hbWUgPSB0ZW1wX3N0ciArIDE7CiAKLSAgICBzcHJpbnRmKHNfZGVz YywgZGVzY190ZW1wbGF0ZSwgcF9jaWQsIHBfY2lkLCBiYWNraW5nX2ZpbGUKLSAgICAgICAgICAg ICwgKHVpbnQzMl90KWhlYWRlci5jYXBhY2l0eSwgcmVhbF9maWxlbmFtZSk7CisgICAgc25wcmlu dGYoc19kZXNjLCBzaXplb2Yoc19kZXNjKSwgZGVzY190ZW1wbGF0ZSwgcF9jaWQsIHBfY2lkLCBi YWNraW5nX2ZpbGUsCisgICAgICAgICAgICAgKHVpbnQzMl90KWhlYWRlci5jYXBhY2l0eSwgcmVh bF9maWxlbmFtZSk7CiAKICAgICAvKiB3cml0ZSB0aGUgZGVzY3JpcHRvciAqLwogICAgIGlmIChs c2VlayhzbnBfZmQsIDB4MjAwLCBTRUVLX1NFVCkgPT0gLTEpCkBAIC0zNDksNyArMzQ5LDggQEAK ICAgICAgICAgICAgIHBhdGhfY29tYmluZShwYXJlbnRfaW1nX25hbWUsIHNpemVvZihwYXJlbnRf aW1nX25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBzLT5oZC0+YmFj a2luZ19maWxlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0cmNweShwYXJlbnRf aW1nX25hbWUsIHMtPmhkLT5iYWNraW5nX2ZpbGUpOworICAgICAgICAgICAgcHN0cmNweShwYXJl bnRfaW1nX25hbWUsIHNpemVvZihwYXJlbnRfaW1nX25hbWUpLAorICAgICAgICAgICAgICAgICAg ICBzLT5oZC0+YmFja2luZ19maWxlKTsKICAgICAgICAgfQogCiAgICAgICAgIHMtPmhkLT5iYWNr aW5nX2hkID0gYmRydl9uZXcoIiIpOwpAQCAtNzkxLDggKzc5Miw4IEBACiAgICAgICAgIHJlYWxf ZmlsZW5hbWUgPSB0ZW1wX3N0ciArIDE7CiAgICAgaWYgKCh0ZW1wX3N0ciA9IHN0cnJjaHIocmVh bF9maWxlbmFtZSwgJzonKSkgIT0gTlVMTCkKICAgICAgICAgcmVhbF9maWxlbmFtZSA9IHRlbXBf c3RyICsgMTsKLSAgICBzcHJpbnRmKGRlc2MsIGRlc2NfdGVtcGxhdGUsIHRpbWUoTlVMTCksICh1 bnNpZ25lZCBsb25nKXRvdGFsX3NpemUsCi0gICAgICAgICAgICByZWFsX2ZpbGVuYW1lLCAoZmxh Z3MgJiBCTE9DS19GTEFHX0NPTVBBVDYgPyA2IDogNCksIHRvdGFsX3NpemUgLyAoNjMgKiAxNikp OworICAgIHNucHJpbnRmKGRlc2MsIHNpemVvZihkZXNjKSwgZGVzY190ZW1wbGF0ZSwgdGltZShO VUxMKSwgKHVuc2lnbmVkIGxvbmcpdG90YWxfc2l6ZSwKKyAgICAgICAgICAgICByZWFsX2ZpbGVu YW1lLCAoZmxhZ3MgJiBCTE9DS19GTEFHX0NPTVBBVDYgPyA2IDogNCksIHRvdGFsX3NpemUgLyAo NjMgKiAxNikpOwogCiAgICAgLyogd3JpdGUgdGhlIGRlc2NyaXB0b3IgKi8KICAgICBsc2Vlayhm ZCwgbGU2NF90b19jcHUoaGVhZGVyLmRlc2Nfb2Zmc2V0KSA8PCA5LCBTRUVLX1NFVCk7CkluZGV4 OiBxZW11L3FlbXUtbWFsbG9jLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3FlbXUtbWFsbG9j LmMJMjAwOC0wOC0xNyAxNDozMjo0NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvcWVtdS1tYWxs b2MuYwkyMDA4LTA4LTE3IDE1OjAxOjE3LjAwMDAwMDAwMCArMDAwMApAQCAtNTYsOSArNTYsMTAg QEAKIGNoYXIgKnFlbXVfc3RyZHVwKGNvbnN0IGNoYXIgKnN0cikKIHsKICAgICBjaGFyICpwdHI7 Ci0gICAgcHRyID0gcWVtdV9tYWxsb2Moc3RybGVuKHN0cikgKyAxKTsKKyAgICBzaXplX3QgbGVu ID0gc3RybGVuKHN0cik7CisgICAgcHRyID0gcWVtdV9tYWxsb2MobGVuICsgMSk7CiAgICAgaWYg KCFwdHIpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cmNweShwdHIsIHN0cik7CisgICAg cHN0cmNweShwdHIsIGxlbiwgc3RyKTsKICAgICByZXR1cm4gcHRyOwogfQpJbmRleDogcWVtdS9i bG9jay12dmZhdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ibG9jay12dmZhdC5jCTIwMDgt MDgtMTcgMTQ6MzI6NDQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2Jsb2NrLXZ2ZmF0LmMJMjAw OC0wOC0xNyAxNTowMToxOC4wMDAwMDAwMDAgKzAwMDAKQEAgLTE3MzMsNyArMTczMyw3IEBACiAg ICAgY2hhciBwYXRoMltQQVRIX01BWF07CiAKICAgICBhc3NlcnQocGF0aF9sZW4gPCBQQVRIX01B WCk7IC8qIGxlbiB3YXMgdGVzdGVkIGJlZm9yZSEgKi8KLSAgICBzdHJjcHkocGF0aDIsIHBhdGgp OworICAgIHBzdHJjcHkocGF0aDIsIHNpemVvZihwYXRoMiksIHBhdGgpOwogICAgIHBhdGgyW3Bh dGhfbGVuXSA9ICcvJzsKICAgICBwYXRoMltwYXRoX2xlbiArIDFdID0gJ1wwJzsKIApAQCAtMTgw Nyw3ICsxODA3LDggQEAKIAkJZnByaW50ZihzdGRlcnIsICJOYW1lIHRvbyBsb25nOiAlcy8lc1xu IiwgcGF0aCwgbGZuLm5hbWUpOwogCQlnb3RvIGZhaWw7CiAJICAgIH0KLQkgICAgc3RyY3B5KHBh dGgyICsgcGF0aF9sZW4gKyAxLCAoY2hhciopbGZuLm5hbWUpOworICAgICAgICAgICAgcHN0cmNw eShwYXRoMiArIHBhdGhfbGVuICsgMSwgc2l6ZW9mKHBhdGgyKSAtIHBhdGhfbGVuIC0gMSwKKyAg ICAgICAgICAgICAgICAgICAgKGNoYXIqKWxmbi5uYW1lKTsKIAogCSAgICBpZiAoaXNfZGlyZWN0 b3J5KGRpcmVudHJpZXMgKyBpKSkgewogCQlpZiAoYmVnaW5fb2ZfZGlyZW50cnkoZGlyZW50cmll cyArIGkpID09IDApIHsKQEAgLTIzNzIsOCArMjM3Myw5IEBACiAKIAkJCSAgICBhc3NlcnQoIXN0 cm5jbXAobS0+cGF0aCwgbWFwcGluZy0+cGF0aCwgbDIpKTsKIAotCQkJICAgIHN0cmNweShuZXdf cGF0aCwgbWFwcGluZy0+cGF0aCk7Ci0JCQkgICAgc3RyY3B5KG5ld19wYXRoICsgbDEsIG0tPnBh dGggKyBsMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN0cmNweShuZXdfcGF0aCwg bCArIGRpZmYgKyAxLCBtYXBwaW5nLT5wYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwc3RyY3B5KG5ld19wYXRoICsgbDEsIGwgKyBkaWZmICsgMSAtIGwxLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbS0+cGF0aCArIGwyKTsKIAogCQkJICAgIHNjaGVkdWxl X3JlbmFtZShzLCBtLT5iZWdpbiwgbmV3X3BhdGgpOwogCQkJfQpJbmRleDogcWVtdS9ody9zdW40 dS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9zdW40dS5jCTIwMDgtMDgtMTcgMTQ6MzI6 NDQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3N1bjR1LmMJMjAwOC0wOC0xNyAxNTowMTox OC4wMDAwMDAwMDAgKzAwMDAKQEAgLTgyLDcgKzgyLDggQEAKICAgICBmb3IgKGkgPSAwOyBpIDwg c2l6ZW9mKGltYWdlKTsgaSsrKQogICAgICAgICBpbWFnZVtpXSA9IG00OHQ1OV9yZWFkKG52cmFt LCBpKSAmIDB4ZmY7CiAKLSAgICBzdHJjcHkoKGNoYXIgKiloZWFkZXItPmJvb3RfZGV2aWNlcywg Ym9vdF9kZXZpY2UpOworICAgIHBzdHJjcHkoKGNoYXIgKiloZWFkZXItPmJvb3RfZGV2aWNlcywg c2l6ZW9mKGhlYWRlci0+Ym9vdF9kZXZpY2VzKSwKKyAgICAgICAgICAgIGJvb3RfZGV2aWNlKTsK ICAgICBoZWFkZXItPm5ib290X2RldmljZXMgPSBzdHJsZW4oYm9vdF9kZXZpY2UpICYgMHhmZjsK ICAgICBoZWFkZXItPmNyYyA9IGNwdV90b19iZTE2KE9IV19jb21wdXRlX2NyYyhoZWFkZXIsIDB4 MDAsIDB4RjgpKTsKIApAQCAtMTE1LDE3ICsxMTYsMTkgQEAKICAgICBtZW1zZXQoaW1hZ2UsICdc MCcsIHNpemVvZihpbWFnZSkpOwogCiAgICAgLy8gVHJ5IHRvIG1hdGNoIFBQQyBOVlJBTQotICAg IHN0cmNweSgoY2hhciAqKWhlYWRlci0+c3RydWN0X2lkZW50LCAiUUVNVV9CSU9TIik7CisgICAg cHN0cmNweSgoY2hhciAqKWhlYWRlci0+c3RydWN0X2lkZW50LCBzaXplb2YoaGVhZGVyLT5zdHJ1 Y3RfaWRlbnQpLAorICAgICAgICAgICAgIlFFTVVfQklPUyIpOwogICAgIGhlYWRlci0+c3RydWN0 X3ZlcnNpb24gPSBjcHVfdG9fYmUzMigzKTsgLyogc3RydWN0dXJlIHYzICovCiAKICAgICBoZWFk ZXItPm52cmFtX3NpemUgPSBjcHVfdG9fYmUxNihOVlJBTV9zaXplKTsKICAgICBoZWFkZXItPm52 cmFtX2FyY2hfcHRyID0gY3B1X3RvX2JlMTYoc2l6ZW9mKG9od2NmZ192M190KSk7CiAgICAgaGVh ZGVyLT5udnJhbV9hcmNoX3NpemUgPSBjcHVfdG9fYmUxNihzaXplb2Yoc3RydWN0IHNwYXJjX2Fy Y2hfY2ZnKSk7Ci0gICAgc3RyY3B5KChjaGFyICopaGVhZGVyLT5hcmNoLCBhcmNoKTsKKyAgICBw c3RyY3B5KChjaGFyICopaGVhZGVyLT5hcmNoLCBzaXplb2YoaGVhZGVyLT5hcmNoKSwgYXJjaCk7 CiAgICAgaGVhZGVyLT5uYl9jcHVzID0gc21wX2NwdXMgJiAweGZmOwogICAgIGhlYWRlci0+UkFN MF9iYXNlID0gMDsKICAgICBoZWFkZXItPlJBTTBfc2l6ZSA9IGNwdV90b19iZTY0KCh1aW50NjRf dClSQU1fc2l6ZSk7Ci0gICAgc3RyY3B5KChjaGFyICopaGVhZGVyLT5ib290X2RldmljZXMsIGJv b3RfZGV2aWNlcyk7CisgICAgcHN0cmNweSgoY2hhciAqKWhlYWRlci0+Ym9vdF9kZXZpY2VzLCBz aXplb2YoaGVhZGVyLT5ib290X2RldmljZXMpLAorICAgICAgICAgICAgYm9vdF9kZXZpY2VzKTsK ICAgICBoZWFkZXItPm5ib290X2RldmljZXMgPSBzdHJsZW4oYm9vdF9kZXZpY2VzKSAmIDB4ZmY7 CiAgICAgaGVhZGVyLT5rZXJuZWxfaW1hZ2UgPSBjcHVfdG9fYmU2NCgodWludDY0X3Qpa2VybmVs X2ltYWdlKTsKICAgICBoZWFkZXItPmtlcm5lbF9zaXplID0gY3B1X3RvX2JlNjQoKHVpbnQ2NF90 KWtlcm5lbF9zaXplKTsKQEAgLTE1Niw3ICsxNTksNyBAQAogICAgIC8vIFZhcmlhYmxlIHBhcnRp dGlvbgogICAgIHBhcnRfaGVhZGVyID0gKHN0cnVjdCBPcGVuQklPU19udnBhcnRfdjEgKikmaW1h Z2Vbc3RhcnRdOwogICAgIHBhcnRfaGVhZGVyLT5zaWduYXR1cmUgPSBPUEVOQklPU19QQVJUX1NZ U1RFTTsKLSAgICBzdHJjcHkocGFydF9oZWFkZXItPm5hbWUsICJzeXN0ZW0iKTsKKyAgICBwc3Ry Y3B5KHBhcnRfaGVhZGVyLT5uYW1lLCBzaXplb2YocGFydF9oZWFkZXItPm5hbWUpLCAic3lzdGVt Iik7CiAKICAgICBlbmQgPSBzdGFydCArIHNpemVvZihzdHJ1Y3QgT3BlbkJJT1NfbnZwYXJ0X3Yx KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfcHJvbV9lbnZzOyBpKyspCkBAIC0xNzIsNyArMTc1 LDcgQEAKICAgICBzdGFydCA9IGVuZDsKICAgICBwYXJ0X2hlYWRlciA9IChzdHJ1Y3QgT3BlbkJJ T1NfbnZwYXJ0X3YxICopJmltYWdlW3N0YXJ0XTsKICAgICBwYXJ0X2hlYWRlci0+c2lnbmF0dXJl ID0gT1BFTkJJT1NfUEFSVF9GUkVFOwotICAgIHN0cmNweShwYXJ0X2hlYWRlci0+bmFtZSwgImZy ZWUiKTsKKyAgICBwc3RyY3B5KHBhcnRfaGVhZGVyLT5uYW1lLCBzaXplb2YocGFydF9oZWFkZXIt Pm5hbWUpLCAiZnJlZSIpOwogCiAgICAgZW5kID0gMHgxZmQwOwogICAgIE9wZW5CSU9TX2Zpbmlz aF9wYXJ0aXRpb24ocGFydF9oZWFkZXIsIGVuZCAtIHN0YXJ0KTsKSW5kZXg6IHFlbXUvaHcvdXNi LW5ldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody91c2ItbmV0LmMJMjAwOC0wOC0xNyAx NDozMjo0NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvdXNiLW5ldC5jCTIwMDgtMDgtMTcg MTU6MDE6MTguMDAwMDAwMDAwICswMDAwCkBAIC02MjUsNyArNjI1LDggQEAKIH0gVVNCTmV0U3Rh dGU7CiAKIHN0YXRpYyBpbnQgbmRpc19xdWVyeShVU0JOZXRTdGF0ZSAqcywgdWludDMyX3Qgb2lk LAotICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmluYnVmLCB1bnNpZ25lZCBpbnQgaW5sZW4sIHVp bnQ4X3QgKm91dGJ1ZikKKyAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICppbmJ1ZiwgdW5z aWduZWQgaW50IGlubGVuLCB1aW50OF90ICpvdXRidWYsCisgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IG91dGxlbikKIHsKICAgICB1bnNpZ25lZCBpbnQgaSwgY291bnQ7CiAKQEAgLTY4MCw3 ICs2ODEsNyBAQAogCiAgICAgLyogbWFuZGF0b3J5ICovCiAgICAgY2FzZSBPSURfR0VOX1ZFTkRP Ul9ERVNDUklQVElPTjoKLSAgICAgICAgc3RyY3B5KG91dGJ1ZiwgIlFFTVUgVVNCIFJORElTIE5l dCIpOworICAgICAgICBwc3RyY3B5KG91dGJ1Ziwgb3V0bGVuLCAiUUVNVSBVU0IgUk5ESVMgTmV0 Iik7CiAgICAgICAgIHJldHVybiBzdHJsZW4ob3V0YnVmKSArIDE7CiAKICAgICBjYXNlIE9JRF9H RU5fVkVORE9SX0RSSVZFUl9WRVJTSU9OOgpAQCAtODgyLDcgKzg4Myw4IEBACiAgICAgICAgIHJl dHVybiBVU0JfUkVUX1NUQUxMOwogCiAgICAgaW5mb2J1ZmxlbiA9IG5kaXNfcXVlcnkocywgbGUz Ml90b19jcHUoYnVmLT5PSUQpLAotICAgICAgICAgICAgICAgICAgICBidWZvZmZzICsgKHVpbnQ4 X3QgKikgYnVmLCBidWZsZW4sIGluZm9idWYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJ1Zm9mZnMgKyAodWludDhfdCAqKSBidWYsIGJ1ZmxlbiwgaW5mb2J1ZiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2YoaW5mb2J1ZikpOwogICAgIHJlc3BsZW4gPSBzaXplb2Yo cm5kaXNfcXVlcnlfY21wbHRfdHlwZSkgKwogICAgICAgICAgICAgKChpbmZvYnVmbGVuIDwgMCkg PyAwIDogaW5mb2J1Zmxlbik7CiAgICAgcmVzcCA9IHJuZGlzX3F1ZXVlX3Jlc3BvbnNlKHMsIHJl c3BsZW4pOwpJbmRleDogcWVtdS9ody92Z2EuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcv dmdhLmMJMjAwOC0wOC0xNyAxNDozMjo0NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvdmdh LmMJMjAwOC0wOC0xNyAxNTowMToxOC4wMDAwMDAwMDAgKzAwMDAKQEAgLTE3MjYsNyArMTcyNiw4 IEBACiAgICAgICAgICAgICBpZiAoIWZ1bGxfdXBkYXRlKQogICAgICAgICAgICAgICAgIHJldHVy bjsKIAotICAgICAgICAgICAgc3ByaW50Zihtc2dfYnVmZmVyLCAiJWkgeCAlaSBUZXh0IG1vZGUi LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIHNucHJpbnRmKG1zZ19idWZmZXIsIHNpemVv Zihtc2dfYnVmZmVyKSwgIiVpIHggJWkgVGV4dCBtb2RlIiwKKyAgICAgICAgICAgICAgICAgICAg IHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTc5 OSwxNCArMTgwMCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHMtPmdldF9y ZXNvbHV0aW9uKHMsICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAgICAgIHNwcmludGYobXNnX2J1ZmZl ciwgIiVpIHggJWkgR3JhcGhpYyBtb2RlIiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHNucHJp bnRmKG1zZ19idWZmZXIsIHNpemVvZihtc2dfYnVmZmVyKSwgIiVpIHggJWkgR3JhcGhpYyBtb2Rl IiwKKyAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAg IGNhc2UgR01PREVfQkxBTks6CiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYgKCFmdWxsX3VwZGF0 ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzcHJpbnRmKG1zZ19idWZmZXIsICJW R0EgQmxhbmsgbW9kZSIpOworICAgICAgICBzbnByaW50Zihtc2dfYnVmZmVyLCBzaXplb2YobXNn X2J1ZmZlciksICJWR0EgQmxhbmsgbW9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5k ZXg6IHFlbXUvc2xpcnAvdGZ0cC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC90ZnRw LmMJMjAwOC0wOC0xNyAxNDozMjo0NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvc2xpcnAvdGZ0 cC5jCTIwMDgtMDgtMTcgMTU6MDE6MTguMDAwMDAwMDAwICswMDAwCkBAIC0yMyw2ICsyMyw3IEBA CiAgKi8KIAogI2luY2x1ZGUgPHNsaXJwLmg+CisjaW5jbHVkZSAicWVtdS1jb21tb24uaCIgLy8g Zm9yIHBzdHJjcHkKIAogc3RydWN0IHRmdHBfc2Vzc2lvbiB7CiAgICAgaW50IGluX3VzZTsKQEAg LTE0OCw4ICsxNDksOCBAQAogICAgIG0tPm1fZGF0YSArPSBzaXplb2Yoc3RydWN0IHVkcGlwaGRy KTsKIAogICAgIHRwLT50cF9vcCA9IGh0b25zKFRGVFBfT0FDSyk7Ci0gICAgbiArPSBzcHJpbnRm KHRwLT54LnRwX2J1ZiArIG4sICIlcyIsIGtleSkgKyAxOwotICAgIG4gKz0gc3ByaW50Zih0cC0+ eC50cF9idWYgKyBuLCAiJXUiLCB2YWx1ZSkgKyAxOworICAgIG4gKz0gc25wcmludGYodHAtPngu dHBfYnVmICsgbiwgc2l6ZW9mKHRwLT54LnRwX2J1ZikgLSBuLCAiJXMiLCBrZXkpICsgMTsKKyAg ICBuICs9IHNucHJpbnRmKHRwLT54LnRwX2J1ZiArIG4sIHNpemVvZih0cC0+eC50cF9idWYpIC0g biwgIiV1IiwgdmFsdWUpICsgMTsKIAogICAgIHNhZGRyLnNpbl9hZGRyID0gcmVjdl90cC0+aXAu aXBfZHN0OwogICAgIHNhZGRyLnNpbl9wb3J0ID0gcmVjdl90cC0+dWRwLnVoX2Rwb3J0OwpAQCAt MTg5LDcgKzE5MCw3IEBACiAKICAgdHAtPnRwX29wID0gaHRvbnMoVEZUUF9FUlJPUik7CiAgIHRw LT54LnRwX2Vycm9yLnRwX2Vycm9yX2NvZGUgPSBodG9ucyhlcnJvcmNvZGUpOwotICBzdHJjcHko dHAtPngudHBfZXJyb3IudHBfbXNnLCBtc2cpOworICBwc3RyY3B5KHRwLT54LnRwX2Vycm9yLnRw X21zZywgc2l6ZW9mKHRwLT54LnRwX2Vycm9yLnRwX21zZyksIG1zZyk7CiAKICAgc2FkZHIuc2lu X2FkZHIgPSByZWN2X3RwLT5pcC5pcF9kc3Q7CiAgIHNhZGRyLnNpbl9wb3J0ID0gcmVjdl90cC0+ dWRwLnVoX2Rwb3J0OwpJbmRleDogcWVtdS9pMzg2LWRpcy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy9pMzg2LWRpcy5jCTIwMDgtMDgtMTcgMTQ6MzI6NDQuMDAwMDAwMDAwICswMDAwCisrKyBx ZW11L2kzODYtZGlzLmMJMjAwOC0wOC0xNyAxNTowMToxOC4wMDAwMDAwMDAgKzAwMDAKQEAgLTM3 LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgImRpcy1hc20uaCIK KyNpbmNsdWRlICJxZW11LWNvbW1vbi5oIgogCiAjZGVmaW5lIE1BWExFTiAyMAogCkBAIC01OSw3 ICs2MCw4IEBACiBzdGF0aWMgdm9pZCBvYXBwZW5kIFBBUkFNUyAoKGNvbnN0IGNoYXIgKikpOwog c3RhdGljIHZvaWQgYXBwZW5kX3NlZyBQQVJBTVMgKCh2b2lkKSk7CiBzdGF0aWMgdm9pZCBPUF9p bmRpckUgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIHByaW50X29wZXJhbmRfdmFs dWUgUEFSQU1TICgoY2hhciAqLCBpbnQsIGJmZF92bWEpKTsKK3N0YXRpYyB2b2lkIHByaW50X29w ZXJhbmRfdmFsdWUgKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCBoZXgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiZmRfdm1hIGRpc3ApOwogc3RhdGljIHZvaWQgT1Bf RSBQQVJBTVMgKChpbnQsIGludCkpOwogc3RhdGljIHZvaWQgT1BfRyBQQVJBTVMgKChpbnQsIGlu dCkpOwogc3RhdGljIGJmZF92bWEgZ2V0NjQgUEFSQU1TICgodm9pZCkpOwpAQCAtMjUxMiw3ICsy NTE0LDcgQEAKIAogICAgICAgLyogSW5zdHJ1Y3Rpb24gZm5zdHN3IGlzIG9ubHkgb25lIHdpdGgg c3RyYW5nZSBhcmcuICAqLwogICAgICAgaWYgKGZsb2F0b3AgPT0gMHhkZiAmJiBjb2RlcFstMV0g PT0gMHhlMCkKLQlzdHJjcHkgKG9wMW91dCwgbmFtZXMxNlswXSk7CisgICAgICAgIHBzdHJjcHkg KG9wMW91dCwgc2l6ZW9mKG9wMW91dCksIG5hbWVzMTZbMF0pOwogICAgIH0KICAgZWxzZQogICAg IHsKQEAgLTI1NDAsNyArMjU0Miw3IEBACiAgICAgIGludCBieXRlbW9kZTsKICAgICAgaW50IHNp emVmbGFnOwogewotICBzcHJpbnRmIChzY3JhdGNoYnVmLCAiJSVzdCglZCkiLCBybSk7CisgIHNu cHJpbnRmIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJXN0KCVkKSIsIHJtKTsK ICAgb2FwcGVuZCAoc2NyYXRjaGJ1ZiArIGludGVsX3N5bnRheCk7CiB9CiAKQEAgLTI1NzMsNyAr MjU3NSw3IEBACiAJCSAgaWYgKCpwID09ICd9JykKIAkJICAgIHsKIAkJICAgICAgLyogQWx0ZXJu YXRpdmUgbm90IHZhbGlkLiAgKi8KLQkJICAgICAgc3RyY3B5IChvYnVmLCAiKGJhZCkiKTsKKyAg ICAgICAgICAgICAgICAgICAgICBwc3RyY3B5IChvYnVmLCBzaXplb2Yob2J1ZiksICIoYmFkKSIp OwogCQkgICAgICBvYnVmcCA9IG9idWYgKyA1OwogCQkgICAgICByZXR1cm4gMTsKIAkJICAgIH0K QEAgLTI4MjQsNyArMjgyNiw3IEBACiBvYXBwZW5kIChzKQogICAgICBjb25zdCBjaGFyICpzOwog ewotICBzdHJjcHkgKG9idWZwLCBzKTsKKyAgcHN0cmNweSAob2J1ZnAsIChzaXplX3QpKG9idWZw IC0gb2J1ZiksIHMpOwogICBvYnVmcCArPSBzdHJsZW4gKHMpOwogfQogCkBAIC0yODc0LDEwICsy ODc2LDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLXByaW50X29wZXJhbmRfdmFsdWUgKGJ1ZiwgaGV4 LCBkaXNwKQotICBjaGFyICpidWY7Ci0gIGludCBoZXg7Ci0gIGJmZF92bWEgZGlzcDsKK3ByaW50 X29wZXJhbmRfdmFsdWUgKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCBoZXgsIGJmZF92 bWEgZGlzcCkKIHsKICAgaWYgKG1vZGVfNjRiaXQpCiAgICAgewpAQCAtMjg4Nyw5ICsyODg2LDkg QEAKIAkgIGludCBpOwogCSAgYnVmWzBdID0gJzAnOwogCSAgYnVmWzFdID0gJ3gnOwotCSAgc3By aW50Zl92bWEgKHRtcCwgZGlzcCk7CisgICAgICAgICAgc25wcmludGZfdm1hICh0bXAsIHNpemVv Zih0bXApLCBkaXNwKTsKIAkgIGZvciAoaSA9IDA7IHRtcFtpXSA9PSAnMCcgJiYgdG1wW2kgKyAx XTsgaSsrKTsKLQkgIHN0cmNweSAoYnVmICsgMiwgdG1wICsgaSk7CisgICAgICAgICAgcHN0cmNw eSAoYnVmICsgMiwgYnVmc2l6ZSAtIDIsIHRtcCArIGkpOwogCX0KICAgICAgIGVsc2UKIAl7CkBA IC0yOTAzLDEzICsyOTAyLDEzIEBACiAJICAgICAgLyogQ2hlY2sgZm9yIHBvc3NpYmxlIG92ZXJm bG93IG9uIDB4ODAwMDAwMDAwMDAwMDAwMC4gICovCiAJICAgICAgaWYgKHYgPCAwKQogCQl7Ci0J CSAgc3RyY3B5IChidWYsICI5MjIzMzcyMDM2ODU0Nzc1ODA4Iik7CisgICAgICAgICAgICAgICAg ICBwc3RyY3B5IChidWYsIGJ1ZnNpemUsICI5MjIzMzcyMDM2ODU0Nzc1ODA4Iik7CiAJCSAgcmV0 dXJuOwogCQl9CiAJICAgIH0KIAkgIGlmICghdikKIAkgICAgewotCSAgICAgIHN0cmNweSAoYnVm LCAiMCIpOworICAgICAgICAgICAgICAgIHBzdHJjcHkgKGJ1ZiwgYnVmc2l6ZSwgIjAiKTsKIAkg ICAgICByZXR1cm47CiAJICAgIH0KIApAQCAtMjkyMSwxNSArMjkyMCwxNSBAQAogCSAgICAgIHYg Lz0gMTA7CiAJICAgICAgaSsrOwogCSAgICB9Ci0JICBzdHJjcHkgKGJ1ZiwgdG1wICsgMjkgLSBp KTsKKyAgICAgICAgICBwc3RyY3B5IChidWYsIGJ1ZnNpemUsIHRtcCArIDI5IC0gaSk7CiAJfQog ICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGlmIChoZXgpCi0Jc3ByaW50ZiAoYnVmLCAiMHgl eCIsICh1bnNpZ25lZCBpbnQpIGRpc3ApOworICAgICAgICBzbnByaW50ZiAoYnVmLCBidWZzaXpl LCAiMHgleCIsICh1bnNpZ25lZCBpbnQpIGRpc3ApOwogICAgICAgZWxzZQotCXNwcmludGYgKGJ1 ZiwgIiVkIiwgKGludCkgZGlzcCk7CisgICAgICAgIHNucHJpbnRmIChidWYsIGJ1ZnNpemUsICIl ZCIsIChpbnQpIGRpc3ApOwogICAgIH0KIH0KIApAQCAtMzA1NCw3ICszMDUzLDcgQEAKICAgICAg IGlmICghaW50ZWxfc3ludGF4KQogICAgICAgICBpZiAobW9kICE9IDAgfHwgKGJhc2UgJiA3KSA9 PSA1KQogICAgICAgICAgIHsKLQkgICAgcHJpbnRfb3BlcmFuZF92YWx1ZSAoc2NyYXRjaGJ1Ziwg IXJpcHJlbCwgZGlzcCk7CisgICAgICAgICAgICBwcmludF9vcGVyYW5kX3ZhbHVlIChzY3JhdGNo YnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICFyaXByZWwsIGRpc3ApOwogICAgICAgICAgICAgb2Fw cGVuZCAoc2NyYXRjaGJ1Zik7CiAJICAgIGlmIChyaXByZWwpCiAJICAgICAgewpAQCAtMzExNSwx NCArMzExNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAqb2J1ZnArKyA9IHNlcGFy YXRvcl9jaGFyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAqb2J1ZnAgPSAnXDAnOwogICAg ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYgKHNj cmF0Y2hidWYsICIlcyIsCi0JCQkgICAgICAgbW9kZV82NGJpdCAmJiAoc2l6ZWZsYWcgJiBBRkxB RykKLQkJCSAgICAgICA/IG5hbWVzNjRbaW5kZXhdIDogbmFtZXMzMltpbmRleF0pOworICAgICAg ICAgICAgICAgICAgICAgIHNucHJpbnRmIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1Ziks ICIlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVfNjRiaXQgJiYgKHNp emVmbGFnICYgQUZMQUcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmFtZXM2 NFtpbmRleF0gOiBuYW1lczMyW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgIGVsc2UKLQkJICAgIHNwcmludGYgKHNjcmF0Y2hidWYsICIsJXMiLAotCQkJ ICAgICBtb2RlXzY0Yml0ICYmIChzaXplZmxhZyAmIEFGTEFHKQotCQkJICAgICA/IG5hbWVzNjRb aW5kZXhdIDogbmFtZXMzMltpbmRleF0pOworICAgICAgICAgICAgICAgICAgICAgIHNucHJpbnRm IChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIsJXMiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtb2RlXzY0Yml0ICYmIChzaXplZmxhZyAmIEFGTEFHKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5hbWVzNjRbaW5kZXhdIDogbmFtZXMzMltpbmRl eF0pOwogCQkgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOwogCQl9CiAgICAgICAgICAgICAgIGlmICgh aW50ZWxfc3ludGF4CkBAIC0zMTMzLDcgKzMxMzIsNyBAQAogICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICpvYnVmcCsrID0gc2NhbGVfY2hhcjsKICAgICAgICAgICAgICAgICAg ICpvYnVmcCA9ICdcMCc7Ci0JICAgICAgICAgIHNwcmludGYgKHNjcmF0Y2hidWYsICIlZCIsIDEg PDwgc2NhbGUpOworICAgICAgICAgICAgICAgICAgc25wcmludGYgKHNjcmF0Y2hidWYsIHNpemVv ZihzY3JhdGNoYnVmKSwgIiVkIiwgMSA8PCBzY2FsZSk7CiAJICAgICAgICAgIG9hcHBlbmQgKHNj cmF0Y2hidWYpOwogICAgICAgICAgICAgICAgIH0KIAkgICAgfQpAQCAtMzE0OSw3ICszMTQ4LDgg QEAKIAkJCSpvYnVmcCA9ICdcMCc7CiAJCSAgICAgIH0KIAotCQkgICAgcHJpbnRfb3BlcmFuZF92 YWx1ZSAoc2NyYXRjaGJ1ZiwgMCwgZGlzcCk7CisgICAgICAgICAgICAgICAgICAgIHByaW50X29w ZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcCk7CiAgICAgICAgICAgICAgICAg ICAgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICB9CkBAIC0zMTY5LDcgKzMxNjksNyBAQAogCQkgIG9hcHBlbmQgKG5hbWVzX3NlZ1tkc19y ZWcgLSBlc19yZWddKTsKIAkJICBvYXBwZW5kICgiOiIpOwogCQl9Ci0JICAgICAgcHJpbnRfb3Bl cmFuZF92YWx1ZSAoc2NyYXRjaGJ1ZiwgMSwgZGlzcCk7CisgICAgICAgICAgICAgIHByaW50X29w ZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgMSwgZGlzcCk7CiAg ICAgICAgICAgICAgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOwogICAgICAgICAgICAgfQogICAgICAg ICB9CkBAIC0zMjAyLDcgKzMyMDIsNyBAQAogICAgICAgaWYgKCFpbnRlbF9zeW50YXgpCiAgICAg ICAgIGlmIChtb2QgIT0gMCB8fCAocm0gJiA3KSA9PSA2KQogICAgICAgICAgIHsKLQkgICAgcHJp bnRfb3BlcmFuZF92YWx1ZSAoc2NyYXRjaGJ1ZiwgMCwgZGlzcCk7CisgICAgICAgICAgICBwcmlu dF9vcGVyYW5kX3ZhbHVlIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksIDAsIGRpc3Ap OwogICAgICAgICAgICAgb2FwcGVuZCAoc2NyYXRjaGJ1Zik7CiAgICAgICAgICAgfQogCkBAIC0z NTA0LDcgKzM1MDQsNyBAQAogCiAgIG9wICY9IG1hc2s7CiAgIHNjcmF0Y2hidWZbMF0gPSAnJCc7 Ci0gIHByaW50X29wZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYgKyAxLCAxLCBvcCk7CisgIHByaW50 X29wZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYgKyAxLCBzaXplb2Yoc2NyYXRjaGJ1ZikgLSAxLCAx LCBvcCk7CiAgIG9hcHBlbmQgKHNjcmF0Y2hidWYgKyBpbnRlbF9zeW50YXgpOwogICBzY3JhdGNo YnVmWzBdID0gJ1wwJzsKIH0KQEAgLTM1NTcsNyArMzU1Nyw3IEBACiAKICAgb3AgJj0gbWFzazsK ICAgc2NyYXRjaGJ1ZlswXSA9ICckJzsKLSAgcHJpbnRfb3BlcmFuZF92YWx1ZSAoc2NyYXRjaGJ1 ZiArIDEsIDEsIG9wKTsKKyAgcHJpbnRfb3BlcmFuZF92YWx1ZSAoc2NyYXRjaGJ1ZiArIDEsIHNp emVvZihzY3JhdGNoYnVmKSAtIDEsIDEsIG9wKTsKICAgb2FwcGVuZCAoc2NyYXRjaGJ1ZiArIGlu dGVsX3N5bnRheCk7CiAgIHNjcmF0Y2hidWZbMF0gPSAnXDAnOwogfQpAQCAtMzYwOSw3ICszNjA5 LDcgQEAKICAgICB9CiAKICAgc2NyYXRjaGJ1ZlswXSA9ICckJzsKLSAgcHJpbnRfb3BlcmFuZF92 YWx1ZSAoc2NyYXRjaGJ1ZiArIDEsIDEsIG9wKTsKKyAgcHJpbnRfb3BlcmFuZF92YWx1ZSAoc2Ny YXRjaGJ1ZiArIDEsIHNpemVvZihzY3JhdGNoYnVmKSAtIDEsIDEsIG9wKTsKICAgb2FwcGVuZCAo c2NyYXRjaGJ1ZiArIGludGVsX3N5bnRheCk7CiB9CiAKQEAgLTM2NDcsNyArMzY0Nyw3IEBACiAg ICAgfQogICBkaXNwID0gKHN0YXJ0X3BjICsgY29kZXAgLSBzdGFydF9jb2RlcCArIGRpc3ApICYg bWFzazsKICAgc2V0X29wIChkaXNwLCAwKTsKLSAgcHJpbnRfb3BlcmFuZF92YWx1ZSAoc2NyYXRj aGJ1ZiwgMSwgZGlzcCk7CisgIHByaW50X29wZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIHNpemVv ZihzY3JhdGNoYnVmKSwgMSwgZGlzcCk7CiAgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOwogfQogCkBA IC0zNjc4LDkgKzM2NzgsOSBAQAogICAgIH0KICAgdXNlZF9wcmVmaXhlcyB8PSAocHJlZml4ZXMg JiBQUkVGSVhfREFUQSk7CiAgIGlmIChpbnRlbF9zeW50YXgpCi0gICAgc3ByaW50ZiAoc2NyYXRj aGJ1ZiwgIjB4JXgsMHgleCIsIHNlZywgb2Zmc2V0KTsKKyAgICBzbnByaW50ZiAoc2NyYXRjaGJ1 Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAiMHgleCwweCV4Iiwgc2VnLCBvZmZzZXQpOwogICBlbHNl Ci0gICAgc3ByaW50ZiAoc2NyYXRjaGJ1ZiwgIiQweCV4LCQweCV4Iiwgc2VnLCBvZmZzZXQpOwor ICAgIHNucHJpbnRmIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIkMHgleCwkMHgl eCIsIHNlZywgb2Zmc2V0KTsKICAgb2FwcGVuZCAoc2NyYXRjaGJ1Zik7CiB9CiAKQEAgLTM3MDcs NyArMzcwNyw3IEBACiAJICBvYXBwZW5kICgiOiIpOwogCX0KICAgICB9Ci0gIHByaW50X29wZXJh bmRfdmFsdWUgKHNjcmF0Y2hidWYsIDEsIG9mZik7CisgIHByaW50X29wZXJhbmRfdmFsdWUgKHNj cmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgMSwgb2ZmKTsKICAgb2FwcGVuZCAoc2NyYXRj aGJ1Zik7CiB9CiAKQEAgLTM3MzcsNyArMzczNyw3IEBACiAJICBvYXBwZW5kICgiOiIpOwogCX0K ICAgICB9Ci0gIHByaW50X29wZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIDEsIG9mZik7CisgIHBy aW50X29wZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgMSwgb2Zm KTsKICAgb2FwcGVuZCAoc2NyYXRjaGJ1Zik7CiB9CiAKQEAgLTM4MDYsNyArMzgwNiw3IEBACiAg IFVTRURfUkVYIChSRVhfRVhUWCk7CiAgIGlmIChyZXggJiBSRVhfRVhUWCkKICAgICBhZGQgPSA4 OwotICBzcHJpbnRmIChzY3JhdGNoYnVmLCAiJSVjciVkIiwgcmVnICsgYWRkKTsKKyAgc25wcmlu dGYgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgIiUlY3IlZCIsIHJlZyArIGFkZCk7 CiAgIG9hcHBlbmQgKHNjcmF0Y2hidWYgKyBpbnRlbF9zeW50YXgpOwogfQogCkBAIC0zODIwLDkg KzM4MjAsOSBAQAogICBpZiAocmV4ICYgUkVYX0VYVFgpCiAgICAgYWRkID0gODsKICAgaWYgKGlu dGVsX3N5bnRheCkKLSAgICBzcHJpbnRmIChzY3JhdGNoYnVmLCAiZGIlZCIsIHJlZyArIGFkZCk7 CisgICAgc25wcmludGYgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgImRiJWQiLCBy ZWcgKyBhZGQpOwogICBlbHNlCi0gICAgc3ByaW50ZiAoc2NyYXRjaGJ1ZiwgIiUlZGIlZCIsIHJl ZyArIGFkZCk7CisgICAgc25wcmludGYgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwg IiUlZGIlZCIsIHJlZyArIGFkZCk7CiAgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOwogfQogCkBAIC0z ODMxLDcgKzM4MzEsNyBAQAogICAgICBpbnQgZHVtbXk7CiAgICAgIGludCBzaXplZmxhZzsKIHsK LSAgc3ByaW50ZiAoc2NyYXRjaGJ1ZiwgIiUldHIlZCIsIHJlZyk7CisgIHNucHJpbnRmIChzY3Jh dGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJXRyJWQiLCByZWcpOwogICBvYXBwZW5kIChz Y3JhdGNoYnVmICsgaW50ZWxfc3ludGF4KTsKIH0KIApAQCAtMzg1Nyw5ICszODU3LDkgQEAKICAg ICBhZGQgPSA4OwogICB1c2VkX3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKTsK ICAgaWYgKHByZWZpeGVzICYgUFJFRklYX0RBVEEpCi0gICAgc3ByaW50ZiAoc2NyYXRjaGJ1Ziwg IiUleG1tJWQiLCByZWcgKyBhZGQpOworICAgIHNucHJpbnRmIChzY3JhdGNoYnVmLCBzaXplb2Yo c2NyYXRjaGJ1ZiksICIlJXhtbSVkIiwgcmVnICsgYWRkKTsKICAgZWxzZQotICAgIHNwcmludGYg KHNjcmF0Y2hidWYsICIlJW1tJWQiLCByZWcgKyBhZGQpOworICAgIHNucHJpbnRmIChzY3JhdGNo YnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJW1tJWQiLCByZWcgKyBhZGQpOwogICBvYXBwZW5k IChzY3JhdGNoYnVmICsgaW50ZWxfc3ludGF4KTsKIH0KIApAQCAtMzg3Miw3ICszODcyLDcgQEAK ICAgVVNFRF9SRVggKFJFWF9FWFRYKTsKICAgaWYgKHJleCAmIFJFWF9FWFRYKQogICAgIGFkZCA9 IDg7Ci0gIHNwcmludGYgKHNjcmF0Y2hidWYsICIlJXhtbSVkIiwgcmVnICsgYWRkKTsKKyAgc25w cmludGYgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgIiUleG1tJWQiLCByZWcgKyBh ZGQpOwogICBvYXBwZW5kIChzY3JhdGNoYnVmICsgaW50ZWxfc3ludGF4KTsKIH0KIApAQCAtMzg5 Niw5ICszODk2LDkgQEAKICAgY29kZXArKzsKICAgdXNlZF9wcmVmaXhlcyB8PSAocHJlZml4ZXMg JiBQUkVGSVhfREFUQSk7CiAgIGlmIChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKQotICAgIHNwcmlu dGYgKHNjcmF0Y2hidWYsICIlJXhtbSVkIiwgcm0gKyBhZGQpOworICAgIHNucHJpbnRmIChzY3Jh dGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJXhtbSVkIiwgcm0gKyBhZGQpOwogICBlbHNl Ci0gICAgc3ByaW50ZiAoc2NyYXRjaGJ1ZiwgIiUlbW0lZCIsIHJtICsgYWRkKTsKKyAgICBzbnBy aW50ZiAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAiJSVtbSVkIiwgcm0gKyBhZGQp OwogICBvYXBwZW5kIChzY3JhdGNoYnVmICsgaW50ZWxfc3ludGF4KTsKIH0KIApAQCAtMzkyMCw3 ICszOTIwLDcgQEAKICAgLyogU2tpcCBtb2Qvcm0gYnl0ZS4gICovCiAgIE1PRFJNX0NIRUNLOwog ICBjb2RlcCsrOwotICBzcHJpbnRmIChzY3JhdGNoYnVmLCAiJSV4bW0lZCIsIHJtICsgYWRkKTsK KyAgc25wcmludGYgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgIiUleG1tJWQiLCBy bSArIGFkZCk7CiAgIG9hcHBlbmQgKHNjcmF0Y2hidWYgKyBpbnRlbF9zeW50YXgpOwogfQogCkBA IC00MDc5LDggKzQwNzksOCBAQAogCQlzdWZmaXgxID0gJ3MnLCBzdWZmaXgyID0gJ2QnOwogCSAg ICB9CiAJfQotICAgICAgc3ByaW50ZiAoc2NyYXRjaGJ1ZiwgImNtcCVzJWMlYyIsCi0JICAgICAg IHNpbWRfY21wX29wW2NtcF90eXBlXSwgc3VmZml4MSwgc3VmZml4Mik7CisgICAgICBzbnByaW50 ZiAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAiY21wJXMlYyVjIiwKKyAgICAgICAg ICAgICAgICBzaW1kX2NtcF9vcFtjbXBfdHlwZV0sIHN1ZmZpeDEsIHN1ZmZpeDIpOwogICAgICAg dXNlZF9wcmVmaXhlcyB8PSAocHJlZml4ZXMgJiBQUkVGSVhfUkVQWik7CiAgICAgICBvYXBwZW5k IChzY3JhdGNoYnVmKTsKICAgICB9CkluZGV4OiBxZW11L2F1ZGlvL2F1ZGlvLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL2F1ZGlvL2F1ZGlvLmMJMjAwOC0wOC0xNyAxNDozMjo0NC4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvYXVkaW8vYXVkaW8uYwkyMDA4LTA4LTE3IDE1OjAxOjE4LjAwMDAw MDAwMCArMDAwMApAQCAtMjExLDggKzIxMSw4IEBACiAgICAgICAgIHNpemVfdCBpOwogICAgICAg ICBjaGFyICp1ID0gciArIHNpemVvZiAocWVtdV9wcmVmaXgpIC0gMTsKIAotICAgICAgICBzdHJj cHkgKHIsIHFlbXVfcHJlZml4KTsKLSAgICAgICAgc3RyY2F0IChyLCBzKTsKKyAgICAgICAgcHN0 cmNweSAociwgbGVuICsgc2l6ZW9mIChxZW11X3ByZWZpeCksIHFlbXVfcHJlZml4KTsKKyAgICAg ICAgcHN0cmNhdCAociwgbGVuLCBzKTsKIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyAr K2kpIHsKICAgICAgICAgICAgIHVbaV0gPSB0b3VwcGVyICh1W2ldKTsKQEAgLTQzMCw3ICs0MzAs NyBAQAogewogICAgIGNoYXIgKm9wdG5hbWU7CiAgICAgY29uc3QgY2hhciBxZW11X3ByZWZpeFtd ID0gIlFFTVVfIjsKLSAgICBzaXplX3QgcHJlZmxlbjsKKyAgICBzaXplX3QgcHJlZmxlbiwgb3B0 bGVuOwogCiAgICAgaWYgKGF1ZGlvX2J1ZyAoQVVESU9fRlVOQywgIXByZWZpeCkpIHsKICAgICAg ICAgZG9sb2cgKCJwcmVmaXggPSBOVUxMXG4iKTsKQEAgLTQ1OCwyMSArNDU4LDI1IEBACiAgICAg ICAgIC8qIGxlbiBvZiBvcHQtPm5hbWUgKyBsZW4gb2YgcHJlZml4ICsgc2l6ZSBvZiBxZW11X3By ZWZpeAogICAgICAgICAgKiAoaW5jbHVkZXMgdHJhaWxpbmcgemVybykgKyB6ZXJvICsgdW5kZXJz Y29yZSAob24gYmVoYWxmIG9mCiAgICAgICAgICAqIHNpemVvZikgKi8KLSAgICAgICAgb3B0bmFt ZSA9IHFlbXVfbWFsbG9jIChsZW4gKyBwcmVmbGVuICsgc2l6ZW9mIChxZW11X3ByZWZpeCkgKyAx KTsKKyAgICAgICAgb3B0bGVuID0gbGVuICsgcHJlZmxlbiArIHNpemVvZiAocWVtdV9wcmVmaXgp ICsgMTsKKyAgICAgICAgb3B0bmFtZSA9IHFlbXVfbWFsbG9jIChvcHRsZW4pOwogICAgICAgICBp ZiAoIW9wdG5hbWUpIHsKICAgICAgICAgICAgIGRvbG9nICgiQ291bGQgbm90IGFsbG9jYXRlIG1l bW9yeSBmb3Igb3B0aW9uIG5hbWUgYCVzJ1xuIiwKICAgICAgICAgICAgICAgICAgICBvcHQtPm5h bWUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzdHJjcHkg KG9wdG5hbWUsIHFlbXVfcHJlZml4KTsKKyAgICAgICAgcHN0cmNweSAob3B0bmFtZSwgb3B0bGVu LCBxZW11X3ByZWZpeCk7CisgICAgICAgIG9wdGxlbiAtPSBwcmVmbGVuOwogCiAgICAgICAgIC8q IGNvcHkgd2hpbGUgdXBwZXItY2FzaW5nLCBpbmNsdWRpbmcgdHJhaWxpbmcgemVybyAqLwogICAg ICAgICBmb3IgKGkgPSAwOyBpIDw9IHByZWZsZW47ICsraSkgewogICAgICAgICAgICAgb3B0bmFt ZVtpICsgc2l6ZW9mIChxZW11X3ByZWZpeCkgLSAxXSA9IHRvdXBwZXIgKHByZWZpeFtpXSk7CiAg ICAgICAgIH0KLSAgICAgICAgc3RyY2F0IChvcHRuYW1lLCAiXyIpOwotICAgICAgICBzdHJjYXQg KG9wdG5hbWUsIG9wdC0+bmFtZSk7CisgICAgICAgIHBzdHJjYXQgKG9wdG5hbWUsIG9wdGxlbiwg Il8iKTsKKyAgICAgICAgb3B0bGVuLS07CisgICAgICAgIHBzdHJjYXQgKG9wdG5hbWUsIG9wdGxl biwgb3B0LT5uYW1lKTsKKyAgICAgICAgb3B0bGVuIC09IGxlbjsKIAogICAgICAgICBkZWYgPSAx OwogICAgICAgICBzd2l0Y2ggKG9wdC0+dGFnKSB7CkluZGV4OiBxZW11L2Rpcy1hc20uaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvZGlzLWFzbS5oCTIwMDgtMDgtMTcgMTQ6MzI6NDQuMDAwMDAw MDAwICswMDAwCisrKyBxZW11L2Rpcy1hc20uaAkyMDA4LTA4LTE3IDE1OjAxOjE4LjAwMDAwMDAw MCArMDAwMApAQCAtMjAsNiArMjAsNyBAQAogdHlwZWRlZiBpbnQ2NF90IGJmZF9zaWduZWRfdm1h OwogdHlwZWRlZiB1aW50OF90IGJmZF9ieXRlOwogI2RlZmluZSBzcHJpbnRmX3ZtYShzLHgpIHNw cmludGYgKHMsICIlMCIgUFJJeDY0LCB4KQorI2RlZmluZSBzbnByaW50Zl92bWEocyxzcyx4KSBz bnByaW50ZiAocywgc3MsICIlMCIgUFJJeDY0LCB4KQogCiAjZGVmaW5lIEJGRDY0CiAKSW5kZXg6 IHFlbXUvc2xpcnAvc2xpcnAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvc2xpcnAu YwkyMDA4LTA4LTE3IDE0OjMyOjQ0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9zbGly cC5jCTIwMDgtMDgtMTcgMTU6MDE6MTguMDAwMDAwMDAwICswMDAwCkBAIC04NCw3ICs4NCw3IEBA CiBzdGF0aWMgaW50IGdldF9kbnNfYWRkcihzdHJ1Y3QgaW5fYWRkciAqcGRuc19hZGRyKQogewog ICAgIGNoYXIgYnVmZls1MTJdOwotICAgIGNoYXIgYnVmZjJbMjU2XTsKKyAgICBjaGFyIGJ1ZmYy WzI1N107CiAgICAgRklMRSAqZjsKICAgICBpbnQgZm91bmQgPSAwOwogICAgIHN0cnVjdCBpbl9h ZGRyIHRtcF9hZGRyOwo= ------=_Part_151893_29847273.1219004368976--