From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11661 invoked by alias); 28 Jun 2017 07:45:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 11509 invoked by uid 89); 28 Jun 2017 07:45:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=Hx-languages-length:1288, Andrews, andrews X-HELO: mail-yb0-f171.google.com Received: from mail-yb0-f171.google.com (HELO mail-yb0-f171.google.com) (209.85.213.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 28 Jun 2017 07:45:46 +0000 Received: by mail-yb0-f171.google.com with SMTP id e201so16546480ybb.1 for ; Wed, 28 Jun 2017 00:45:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=HcrJ3Kd8FDWx5sYQLHpVn+BNrKIRT68Apw7seBsMuqg=; b=T257TTfquz6NiHySlVQNYkXYAM7PfTLXcDjJoV4gfWzonTBZSH5NcPSw16WF5sRkqc SLbJjfEHTYUwRzf+sIbMvWyOiLnGlQJsWP2xmV6syFjO1bXQYLlSPIfvOSNQjJrFOZMV wB+vHFPSYo2h+ghShgQFCPTuOJPsi8qEyeoqugbMr4RFS7qz3DzlyLWKypl7kC+yw8Ck 7Qx/G2cQ6DGGMsgrCELHHWKFAFTpqtM9v9rkBiWaB4XPjZzvyrgfrEzyZBOEtUeA/yEL poYAuUA06rEgBoNxyHoK+q4GZjJRqjzTJ1jO6YdOo7PXyIeNwlv/06fX6gLuc0sWWP9f jaZA== X-Gm-Message-State: AKS2vOy4Yf6cW11irHZUfTys1zyuIfOECxSaYTWQoM3/KVWnpOC83WAy jjwJwRSpXfUXfErFrfZHAd121jwzBpty X-Received: by 10.37.115.200 with SMTP id o191mr7005278ybc.72.1498635944751; Wed, 28 Jun 2017 00:45:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.129.40.3 with HTTP; Wed, 28 Jun 2017 00:45:41 -0700 (PDT) From: Yuri Gribov Date: Wed, 28 Jun 2017 07:45:00 -0000 Message-ID: Subject: [RFC][PR 67336][PING^3] Verify pointers during stack unwind To: GCC Patches Cc: Ian Lance Taylor , Jakub Jelinek , Andrew Pinski Content-Type: multipart/mixed; boundary="94eb2c09778c22e6ea0553005f47" X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg02120.txt.bz2 --94eb2c09778c22e6ea0553005f47 Content-Type: text/plain; charset="UTF-8" Content-length: 191 Hi all, I've rebased the previous patch to trunk per Andrew's suggestion. Original patch description/motivation/questions are in https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01869.html -Y --94eb2c09778c22e6ea0553005f47 Content-Type: application/octet-stream; name="safe-unwind-2.patch" Content-Disposition: attachment; filename="safe-unwind-2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j4gp07702 Content-length: 32172 CUFkZGVkIHNhZmUgdmVyc2lvbiBvZiBzdGFjay11bndpbmRpbmcgcm91dGlu ZXMuCgoyMDE3LTA2LTI4ICBZdXJ5IEdyaWJvdiAgPHRldHJhMjAwNUBnbWFp bC5jb20+CgoJKiBjb25maWcvY3IxNi91bndpbmQtY3IxNi5jICh1d19zZXRf Y2hlY2tfcHRycyk6IE5ldyBmdW5jdGlvbi4KCSh1d191cGRhdGVfY29udGV4 dCwgdXdfdXBkYXRlX2NvbnRleHRfMSwgdXdfYWR2YW5jZV9jb250ZXh0KTog VXBkYXRlIHR5cGUuCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmMgKHV3 X3NldF9jaGVja19wdHJzKTogTmV3IGZ1bmN0aW9uLgoJKHV3X3VwZGF0ZV9j b250ZXh0LCB1d19hZHZhbmNlX2NvbnRleHQpOiBVcGRhdGUgdHlwZS4KCSog dW53aW5kLXNqbGouYyAodXdfc2V0X2NoZWNrX3B0cnMpOiBOZXcgZnVuY3Rp b24uCgkodXdfdXBkYXRlX2NvbnRleHQsIHV3X2FkdmFuY2VfY29udGV4dCk6 IFVwZGF0ZSB0eXBlLgoJKiBjb25maWcveHRlbnNhL3Vud2luZC1kdzIteHRl bnNhLmMgKHV3X3NldF9jaGVja19wdHJzKTogTmV3CglmdW5jdGlvbi4KCSh1 d191cGRhdGVfY29udGV4dCwgdXdfdXBkYXRlX2NvbnRleHRfMSwgdXdfYWR2 YW5jZV9jb250ZXh0KToKCVVwZGF0ZSB0eXBlLgoJKiBsaWJnY2Mtc3RkLnZl ci5pbiAoX1Vud2luZF9CYWNrdHJhY2VfQ2hlY2tlZCk6IE5ldyBmdW5jdGlv bi4KCSogdW53aW5kLWR3Mi5jICh1d19zZXRfY2hlY2tfcHRycywgaXNfdmFs aWRfbWVtb3J5X2FjY2VzcywKCWNoZWNrX21lbW9yeV9hY2Nlc3MsIF9Vbndp bmRfR2V0R1JfQ2hlY2tlZCwKCV9VbndpbmRfR2V0UHRyX0NoZWNrZWQsIF9V bndpbmRfU2V0R1JfQ2hlY2tlZCk6IE5ldyBmdW5jdGlvbi4KCShfVW53aW5k X0NvbnRleHQpOiBOZXcgZmxhZy4KCShfVW53aW5kX0dldEdSLCBfVW53aW5k X0dldFB0ciwgX1Vud2luZF9TZXRHUik6IENhbGwgaGVscGVyLgoJKGV4ZWN1 dGVfc3RhY2tfb3AsIHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBWZXJpZnkgbWVt b3J5CglhY2Nlc3Nlcy4KCSh1d191cGRhdGVfY29udGV4dCwgdXdfaW5pdF9j b250ZXh0XzEsIHV3X2luaXRfY29udGV4dCwKCXV3X2FkdmFuY2VfY29udGV4 dCk6IFVwZGF0ZSB0eXBlLgoJKiB1bndpbmRfZ2VuZXJpYy5oIChfVW53aW5k X0JhY2t0cmFjZV9DaGVja2VkKTogTmV3IGZ1bmN0aW9uLgoJKiB1bndpbmQu aW5jIChfVW53aW5kX0ZvcmNlZFVud2luZF9QaGFzZTIpOiBDaGVjayBtZW1v cnkKCWFjY2Vzc2VzLgoJKF9VbndpbmRfQmFja3RyYWNlXzEsIF9VbndpbmRf QmFja3RyYWNlX0NoZWNrZWQpOiBOZXcgZnVuY3Rpb24uCgkoX1Vud2luZF9C YWNrdHJhY2UpOiBDYWxsIGhlbHBlci4KCmRpZmYgLXJ1cE4gZ2NjLTctMjAx NzA2MjIvbGliZ2NjL2NvbmZpZy9jcjE2L3Vud2luZC1jcjE2LmMgZ2NjLTct MjAxNzA2MjItNjczMzYvbGliZ2NjL2NvbmZpZy9jcjE2L3Vud2luZC1jcjE2 LmMKLS0tIGdjYy03LTIwMTcwNjIyL2xpYmdjYy9jb25maWcvY3IxNi91bndp bmQtY3IxNi5jCTIwMTctMDEtMDEgMTM6MDc6NDMuMDAwMDAwMDAwICswMTAw CisrKyBnY2MtNy0yMDE3MDYyMi02NzMzNi9saWJnY2MvY29uZmlnL2NyMTYv dW53aW5kLWNyMTYuYwkyMDE3LTA2LTI3IDIyOjAwOjAxLjAwMDAwMDAwMCAr MDIwMApAQCAtMTM1LDcgKzEzNSw3IEBAIHVuaW9uIHVuYWxpZ25lZAogICBz aWduZWQgczggX19hdHRyaWJ1dGVfXyAoKG1vZGUgKERJKSkpOwogfSBfX2F0 dHJpYnV0ZV9fICgocGFja2VkKSk7CiAKLXN0YXRpYyB2b2lkIHV3X3VwZGF0 ZV9jb250ZXh0IChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICosIF9VbndpbmRf RnJhbWVTdGF0ZSAqKTsKK3N0YXRpYyBpbnQgdXdfdXBkYXRlX2NvbnRleHQg KHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgX1Vud2luZF9GcmFtZVN0YXRl ICopOwogc3RhdGljIF9VbndpbmRfUmVhc29uX0NvZGUgdXdfZnJhbWVfc3Rh dGVfZm9yIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICosCiAJCQkJCSAgICAg ICBfVW53aW5kX0ZyYW1lU3RhdGUgKik7CiAKQEAgLTEzMjAsNyArMTMyMCw3 IEBAIF9VbndpbmRfU2V0U3BDb2x1bW4gKHN0cnVjdCBfVW53aW5kX0NvbnQK ICAgX1Vud2luZF9TZXRHUlB0ciAoY29udGV4dCwgX19idWlsdGluX2R3YXJm X3NwX2NvbHVtbiAoKSwgdG1wX3NwKTsKIH0KIAotc3RhdGljIHZvaWQKK3N0 YXRpYyBpbnQKIHV3X3VwZGF0ZV9jb250ZXh0XzEgKHN0cnVjdCBfVW53aW5k X0NvbnRleHQgKmNvbnRleHQsIF9VbndpbmRfRnJhbWVTdGF0ZSAqZnMpCiB7 CiAgIHN0cnVjdCBfVW53aW5kX0NvbnRleHQgb3JpZ19jb250ZXh0ID0gKmNv bnRleHQ7CkBAIC0xNDM2LDYgKzE0MzYsOCBAQCB1d191cGRhdGVfY29udGV4 dF8xIChzdHJ1Y3QgX1Vud2luZF9Db250CiAjaWZkZWYgTURfRlJPQl9VUERB VEVfQ09OVEVYVAogICBNRF9GUk9CX1VQREFURV9DT05URVhUIChjb250ZXh0 LCBmcyk7CiAjZW5kaWYKKworICByZXR1cm4gMDsgIC8qIFRPRE8gKi8KIH0K IAogLyogQ09OVEVYVCBkZXNjcmliZXMgdGhlIHVud2luZCBzdGF0ZSBmb3Ig YSBmcmFtZSwgYW5kIEZTIGRlc2NyaWJlcyB0aGUgRkRFCkBAIC0xNDQzLDEw ICsxNDQ1LDExIEBAIHV3X3VwZGF0ZV9jb250ZXh0XzEgKHN0cnVjdCBfVW53 aW5kX0NvbnQKICAgIHRoYXQgdGhlIGFyZ3Nfc2l6ZSBhbmQgbHNkYSBtZW1i ZXJzIGFyZSBub3QgdXBkYXRlZCBoZXJlLCBidXQgbGF0ZXIgaW4KICAgIHV3 X2ZyYW1lX3N0YXRlX2Zvci4gICovCiAKLXN0YXRpYyB2b2lkCitzdGF0aWMg aW50CiB1d191cGRhdGVfY29udGV4dCAoc3RydWN0IF9VbndpbmRfQ29udGV4 dCAqY29udGV4dCwgX1Vud2luZF9GcmFtZVN0YXRlICpmcykKIHsKLSAgdXdf dXBkYXRlX2NvbnRleHRfMSAoY29udGV4dCwgZnMpOworICBpZiAoX19idWls dGluX2V4cGVjdCAodXdfdXBkYXRlX2NvbnRleHRfMSAoY29udGV4dCwgZnMp LCAwKSkKKyAgICByZXR1cm4gMTsKIAogICAvKiBJbiBnZW5lcmFsIHRoaXMg dW53aW5kZXIgZG9lc24ndCBtYWtlIGFueSBkaXN0aW5jdGlvbiBiZXR3ZWVu CiAgICAgIHVuZGVmaW5lZCBhbmQgc2FtZV92YWx1ZSBydWxlLiAgQ2FsbC1z YXZlZCByZWdpc3RlcnMgYXJlIGFzc3VtZWQKQEAgLTE0NjcsMTIgKzE0NzAs MTQgQEAgdXdfdXBkYXRlX2NvbnRleHQgKHN0cnVjdCBfVW53aW5kX0NvbnRl eAogI2lmIGRlZmluZWQoIF9fQ1IxNkNfXyApCiAgIGNvbnRleHQtPnJhID0g KHZvaWQqKSggKCAodW5zaWduZWQpY29udGV4dC0+cmEgKSA8PCAxICkgOwog I2VuZGlmCisKKyAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0 aWMgaW50CiB1d19hZHZhbmNlX2NvbnRleHQgKHN0cnVjdCBfVW53aW5kX0Nv bnRleHQgKmNvbnRleHQsIF9VbndpbmRfRnJhbWVTdGF0ZSAqZnMpCiB7Ci0g IHV3X3VwZGF0ZV9jb250ZXh0IChjb250ZXh0LCBmcyk7CisgIHJldHVybiB1 d191cGRhdGVfY29udGV4dCAoY29udGV4dCwgZnMpOwogfQogDAogLyogRmls bCBpbiBDT05URVhUIGZvciB0b3Atb2Ytc3RhY2suICBUaGUgb25seSB2YWxp ZCByZWdpc3RlcnMgYXQgdGhpcwpAQCAtMTQ5MCw2ICsxNDk1LDEyIEBAIHV3 X2FkdmFuY2VfY29udGV4dCAoc3RydWN0IF9VbndpbmRfQ29udGUKICAgd2hp bGUgKDApCiAKIHN0YXRpYyBpbmxpbmUgdm9pZAordXdfc2V0X2NoZWNrX3B0 cnMgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKmNvbnRleHQpCit7CisgIC8q IFRPRE8gKi8KK30KKworc3RhdGljIGlubGluZSB2b2lkCiBpbml0X2R3YXJm X3JlZ19zaXplX3RhYmxlICh2b2lkKQogewogICBfX2J1aWx0aW5faW5pdF9k d2FyZl9yZWdfc2l6ZV90YWJsZSAoZHdhcmZfcmVnX3NpemVfdGFibGUpOwpk aWZmIC1ydXBOIGdjYy03LTIwMTcwNjIyL2xpYmdjYy9jb25maWcvaWE2NC91 bndpbmQtaWE2NC5jIGdjYy03LTIwMTcwNjIyLTY3MzM2L2xpYmdjYy9jb25m aWcvaWE2NC91bndpbmQtaWE2NC5jCi0tLSBnY2MtNy0yMDE3MDYyMi9saWJn Y2MvY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYwkyMDE3LTAxLTAxIDEzOjA3 OjQzLjAwMDAwMDAwMCArMDEwMAorKysgZ2NjLTctMjAxNzA2MjItNjczMzYv bGliZ2NjL2NvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmMJMjAxNy0wNi0yNyAy MjowMDowMS4wMDAwMDAwMDAgKzAyMDAKQEAgLTIwNTEsNyArMjA1MSw3IEBA IHV3X3VwZGF0ZV9yZWdfYWRkcmVzcyAoc3RydWN0IF9VbndpbmRfQ28KICAg ICB9CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiB1d191cGRhdGVf Y29udGV4dCAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgX1Vu d2luZF9GcmFtZVN0YXRlICpmcykKIHsKICAgaW50IGk7CkBAIC0yMTAyLDEy ICsyMTAyLDE0IEBAIHV3X3VwZGF0ZV9jb250ZXh0IChzdHJ1Y3QgX1Vud2lu ZF9Db250ZXgKICAgICAgIGNvbnRleHQtPmJzcCA9ICh1bndfd29yZCkKIAlp YTY0X3JzZV9za2lwX3JlZ3MgKCh1bndfd29yZCAqKSBjb250ZXh0LT5ic3As IC1zb2wpOwogICAgIH0KKworICByZXR1cm4gMDsgIC8qIFRPRE8gKi8KIH0K IAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIHV3X2FkdmFuY2VfY29udGV4 dCAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgX1Vud2luZF9G cmFtZVN0YXRlICpmcykKIHsKLSAgdXdfdXBkYXRlX2NvbnRleHQgKGNvbnRl eHQsIGZzKTsKKyAgcmV0dXJuIHV3X3VwZGF0ZV9jb250ZXh0IChjb250ZXh0 LCBmcyk7CiB9CiAKIC8qIEZpbGwgaW4gQ09OVEVYVCBmb3IgdG9wLW9mLXN0 YWNrLiAgVGhlIG9ubHkgdmFsaWQgcmVnaXN0ZXJzIGF0IHRoaXMKQEAgLTIx NjEsNiArMjE2MywxMiBAQCB1d19pbml0X2NvbnRleHRfMSAoc3RydWN0IF9V bndpbmRfQ29udGV4CiAgIHV3X3VwZGF0ZV9jb250ZXh0IChjb250ZXh0LCAm ZnMpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQKK3V3X3NldF9jaGVja19w dHJzIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0KQoreworICAv KiBUT0RPICovCit9CisKIC8qIEluc3RhbGwgKGkuZS4gbG9uZ2ptcCB0bykg dGhlIGNvbnRlbnRzIG9mIFRBUkdFVC4gICovCiAKIHN0YXRpYyB2b2lkIF9f YXR0cmlidXRlX18oKG5vcmV0dXJuKSkKZGlmZiAtcnVwTiBnY2MtNy0yMDE3 MDYyMi9saWJnY2MvY29uZmlnL3h0ZW5zYS91bndpbmQtZHcyLXh0ZW5zYS5j IGdjYy03LTIwMTcwNjIyLTY3MzM2L2xpYmdjYy9jb25maWcveHRlbnNhL3Vu d2luZC1kdzIteHRlbnNhLmMKLS0tIGdjYy03LTIwMTcwNjIyL2xpYmdjYy9j b25maWcveHRlbnNhL3Vud2luZC1kdzIteHRlbnNhLmMJMjAxNy0wMS0wMSAx MzowNzo0My4wMDAwMDAwMDAgKzAxMDAKKysrIGdjYy03LTIwMTcwNjIyLTY3 MzM2L2xpYmdjYy9jb25maWcveHRlbnNhL3Vud2luZC1kdzIteHRlbnNhLmMJ MjAxNy0wNi0yNyAyMjowMDowMS4wMDAwMDAwMDAgKzAyMDAKQEAgLTkwLDcg KzkwLDcgQEAgdW5pb24gdW5hbGlnbmVkCiAgIHZvaWQgKnA7CiB9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQpKTsKIAotc3RhdGljIHZvaWQgdXdfdXBkYXRl X2NvbnRleHQgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgX1Vud2luZF9G cmFtZVN0YXRlICopOworc3RhdGljIGludCB1d191cGRhdGVfY29udGV4dCAo c3RydWN0IF9VbndpbmRfQ29udGV4dCAqLCBfVW53aW5kX0ZyYW1lU3RhdGUg Kik7CiBzdGF0aWMgX1Vud2luZF9SZWFzb25fQ29kZSB1d19mcmFtZV9zdGF0 ZV9mb3IgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwKIAkJCQkJICAgICAg IF9VbndpbmRfRnJhbWVTdGF0ZSAqKTsKIApAQCAtMzc4LDcgKzM3OCw3IEBA IHV3X2ZyYW1lX3N0YXRlX2ZvciAoc3RydWN0IF9VbndpbmRfQ29udGUKICAg cmV0dXJuIF9VUkNfTk9fUkVBU09OOwogfQogDAotc3RhdGljIHZvaWQKK3N0 YXRpYyBpbnQKIHV3X3VwZGF0ZV9jb250ZXh0XzEgKHN0cnVjdCBfVW53aW5k X0NvbnRleHQgKmNvbnRleHQsIF9VbndpbmRfRnJhbWVTdGF0ZSAqZnMpCiB7 CiAgIHN0cnVjdCBfVW53aW5kX0NvbnRleHQgb3JpZ19jb250ZXh0ID0gKmNv bnRleHQ7CkBAIC00MTcsNiArNDE3LDggQEAgdXdfdXBkYXRlX2NvbnRleHRf MSAoc3RydWN0IF9VbndpbmRfQ29udAogICBjb250ZXh0LT5jZmEgPSBuZXh0 X2NmYTsKIAogICBfVW53aW5kX1NldFNpZ25hbEZyYW1lIChjb250ZXh0LCBm cy0+c2lnbmFsX2ZyYW1lKTsKKworICByZXR1cm4gMDsgIC8qIFRPRE8gKi8K IH0KIAogLyogQ09OVEVYVCBkZXNjcmliZXMgdGhlIHVud2luZCBzdGF0ZSBm b3IgYSBmcmFtZSwgYW5kIEZTIGRlc2NyaWJlcyB0aGUgRkRFCkBAIC00MjQs MTAgKzQyNiwxMSBAQCB1d191cGRhdGVfY29udGV4dF8xIChzdHJ1Y3QgX1Vu d2luZF9Db250CiAgICB0aGF0IHRoZSBsc2RhIG1lbWJlciBpcyBub3QgdXBk YXRlZCBoZXJlLCBidXQgbGF0ZXIgaW4KICAgIHV3X2ZyYW1lX3N0YXRlX2Zv ci4gICovCiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiB1d191cGRhdGVf Y29udGV4dCAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgX1Vu d2luZF9GcmFtZVN0YXRlICpmcykKIHsKLSAgdXdfdXBkYXRlX2NvbnRleHRf MSAoY29udGV4dCwgZnMpOworICBpZiAoX19idWlsdGluX2V4cGVjdCAodXdf dXBkYXRlX2NvbnRleHRfMSAoY29udGV4dCwgZnMpLCAwKSkKKyAgICByZXR1 cm4gMTsKIAogICAvKiBDb21wdXRlIHRoZSByZXR1cm4gYWRkcmVzcyBub3cs IHNpbmNlIHRoZSByZXR1cm4gYWRkcmVzcyBjb2x1bW4KICAgICAgY2FuIGNo YW5nZSBmcm9tIGZyYW1lIHRvIGZyYW1lLiAgKi8KQEAgLTQzNiwxMiArNDM5 LDE0IEBAIHV3X3VwZGF0ZV9jb250ZXh0IChzdHJ1Y3QgX1Vud2luZF9Db250 ZXgKICAgZWxzZQogICAgIGNvbnRleHQtPnJhID0gKHZvaWQgKikgKChfVW53 aW5kX0dldEdSIChjb250ZXh0LCBmcy0+cmV0YWRkcl9jb2x1bW4pCiAJCQkg ICAgICYgWFRFTlNBX1JBX0ZJRUxEX01BU0spIHwgY29udGV4dC0+cmFfaGln aF9iaXRzKTsKKworICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKK3N0 YXRpYyBpbnQKIHV3X2FkdmFuY2VfY29udGV4dCAoc3RydWN0IF9VbndpbmRf Q29udGV4dCAqY29udGV4dCwgX1Vud2luZF9GcmFtZVN0YXRlICpmcykKIHsK LSAgdXdfdXBkYXRlX2NvbnRleHQgKGNvbnRleHQsIGZzKTsKKyAgcmV0dXJu IHV3X3VwZGF0ZV9jb250ZXh0IChjb250ZXh0LCBmcyk7CiB9CiAMCiAvKiBG aWxsIGluIENPTlRFWFQgZm9yIHRvcC1vZi1zdGFjay4gIFRoZSBvbmx5IHZh bGlkIHJlZ2lzdGVycyBhdCB0aGlzCkBAIC00NzgsNiArNDgzLDEyIEBAIHV3 X2luaXRfY29udGV4dF8xIChzdHJ1Y3QgX1Vud2luZF9Db250ZXgKICAgY29u dGV4dC0+cmEgPSBvdXRlcl9yYTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lk Cit1d19zZXRfY2hlY2tfcHRycyAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAq Y29udGV4dCkKK3sKKyAgLyogVE9ETyAqLworfQorCiAKIC8qIEluc3RhbGwg VEFSR0VUIGludG8gQ1VSUkVOVCBzbyB0aGF0IHdlIGNhbiByZXR1cm4gdG8g aXQuICBUaGlzIGlzIGEKICAgIG1hY3JvIGJlY2F1c2UgX19idWlsdGluX2Vo X3JldHVybiBtdXN0IGJlIGludm9rZWQgaW4gdGhlIGNvbnRleHQgb2YKZGlm ZiAtcnVwTiBnY2MtNy0yMDE3MDYyMi9saWJnY2MvbGliZ2NjLXN0ZC52ZXIu aW4gZ2NjLTctMjAxNzA2MjItNjczMzYvbGliZ2NjL2xpYmdjYy1zdGQudmVy LmluCi0tLSBnY2MtNy0yMDE3MDYyMi9saWJnY2MvbGliZ2NjLXN0ZC52ZXIu aW4JMjAxNy0wMS0wMSAxMzowNzo0My4wMDAwMDAwMDAgKzAxMDAKKysrIGdj Yy03LTIwMTcwNjIyLTY3MzM2L2xpYmdjYy9saWJnY2Mtc3RkLnZlci5pbgky MDE3LTA2LTI3IDIyOjIwOjU2LjAwMDAwMDAwMCArMDIwMApAQCAtMTk0NCwz ICsxOTQ0LDggQEAgR0NDXzcuMC4wIHsKICAgX19QRlhfX2Rpdm1vZGRpNAog ICBfX1BGWF9fZGl2bW9kdGk0CiB9CisKKyVpbmhlcml0IEdDQ184LjAuMCBH Q0NfNy4wLjAKK0dDQ184LjAuMCB7CisgIF9VbndpbmRfQmFja3RyYWNlX0No ZWNrZWQKK30KZGlmZiAtcnVwTiBnY2MtNy0yMDE3MDYyMi9saWJnY2MvdW53 aW5kLWR3Mi5jIGdjYy03LTIwMTcwNjIyLTY3MzM2L2xpYmdjYy91bndpbmQt ZHcyLmMKLS0tIGdjYy03LTIwMTcwNjIyL2xpYmdjYy91bndpbmQtZHcyLmMJ MjAxNy0wMS0yMCAyMjowMzo0MS4wMDAwMDAwMDAgKzAxMDAKKysrIGdjYy03 LTIwMTcwNjIyLTY3MzM2L2xpYmdjYy91bndpbmQtZHcyLmMJMjAxNy0wNi0y NyAyMjo1ODo1My4wMDAwMDAwMDAgKzAyMDAKQEAgLTQxLDYgKzQxLDkgQEAK ICNpbmNsdWRlIDxzeXMvc2R0Lmg+CiAjZW5kaWYKIAorLyogVE9ETzogY2hl Y2sgd2hldGhlciBtc3luYyBpcyBwcmVzZW50IGluIGNvbmZpZ3VyZT8gKi8K KyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorCiAjaWZuZGVmIF9fVVNJTkdfU0pM Sl9FWENFUFRJT05TX18KIAogI2lmbmRlZiBfX0xJQkdDQ19TVEFDS19HUk9X U19ET1dOV0FSRF9fCkBAIC0xMzIsMTcgKzEzNSwyMSBAQCBzdHJ1Y3QgX1Vu d2luZF9Db250ZXh0CiAgIHZvaWQgKnJhOwogICB2b2lkICpsc2RhOwogICBz dHJ1Y3QgZHdhcmZfZWhfYmFzZXMgYmFzZXM7CisjZGVmaW5lIE1TQl9NQVNL KGkpICgofihfVW53aW5kX1dvcmQpIDAgPj4gKGkgKyAxKSkgKyAxKQogICAv KiBTaWduYWwgZnJhbWUgY29udGV4dC4gICovCi0jZGVmaW5lIFNJR05BTF9G UkFNRV9CSVQgKCh+KF9VbndpbmRfV29yZCkgMCA+PiAxKSArIDEpCisjZGVm aW5lIFNJR05BTF9GUkFNRV9CSVQgTVNCX01BU0soMCkKICAgLyogQ29udGV4 dCB3aGljaCBoYXMgdmVyc2lvbi9hcmdzX3NpemUvYnlfdmFsdWUgZmllbGRz LiAgKi8KLSNkZWZpbmUgRVhURU5ERURfQ09OVEVYVF9CSVQgKCh+KF9Vbndp bmRfV29yZCkgMCA+PiAyKSArIDEpCisjZGVmaW5lIEVYVEVOREVEX0NPTlRF WFRfQklUIE1TQl9NQVNLKDEpCiAgIC8qIEJpdCByZXNlcnZlZCBvbiBBQXJj aDY0LCByZXR1cm4gYWRkcmVzcyBoYXMgYmVlbiBzaWduZWQgd2l0aCBBIGtl eS4gICovCi0jZGVmaW5lIFJBX0FfU0lHTkVEX0JJVCAoKH4oX1Vud2luZF9X b3JkKSAwID4+IDMpICsgMSkKKyNkZWZpbmUgUkFfQV9TSUdORURfQklUIE1T Ql9NQVNLKDIpCisgIC8qIENvbnRleHQgd2hpY2ggY2hlY2tzIHdoZXRoZXIg cG9pbnRlcnMgYXJlIHZhbGlkIHByaW9yIGNoYXNpbmcgdGhlbS4gICovCisj ZGVmaW5lIENIRUNLX1BUUlNfQklUIE1TQl9NQVNLKDMpCiAgIF9VbndpbmRf V29yZCBmbGFnczsKICAgLyogMCBmb3Igbm93LCBjYW4gYmUgaW5jcmVhc2Vk IHdoZW4gZnVydGhlciBmaWVsZHMgYXJlIGFkZGVkIHRvCiAgICAgIHN0cnVj dCBfVW53aW5kX0NvbnRleHQuICAqLwogICBfVW53aW5kX1dvcmQgdmVyc2lv bjsKICAgX1Vud2luZF9Xb3JkIGFyZ3Nfc2l6ZTsKKyAgX1Vud2luZF9QdHIg bGFzdF9jaGVja2VkX3BhZ2U7CiAgIGNoYXIgYnlfdmFsdWVbX19MSUJHQ0Nf RFdBUkZfRlJBTUVfUkVHSVNURVJTX18rMV07CiB9OwogCkBAIC0xNjMsNyAr MTcwLDcgQEAgdW5pb24gdW5hbGlnbmVkCiAgIHNpZ25lZCBzOCBfX2F0dHJp YnV0ZV9fICgobW9kZSAoREkpKSk7CiB9IF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKTsKIAotc3RhdGljIHZvaWQgdXdfdXBkYXRlX2NvbnRleHQgKHN0cnVj dCBfVW53aW5kX0NvbnRleHQgKiwgX1Vud2luZF9GcmFtZVN0YXRlICopOwor c3RhdGljIGludCB1d191cGRhdGVfY29udGV4dCAoc3RydWN0IF9VbndpbmRf Q29udGV4dCAqLCBfVW53aW5kX0ZyYW1lU3RhdGUgKik7CiBzdGF0aWMgX1Vu d2luZF9SZWFzb25fQ29kZSB1d19mcmFtZV9zdGF0ZV9mb3IgKHN0cnVjdCBf VW53aW5kX0NvbnRleHQgKiwKIAkJCQkJICAgICAgIF9VbndpbmRfRnJhbWVT dGF0ZSAqKTsKIApAQCAtMTk0LDYgKzIwMSwzMiBAQCByZWFkXzh1IChjb25z dCB2b2lkICpwKSB7IGNvbnN0IHVuaW9uIHVuCiBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcKIHJlYWRfOHMgKGNvbnN0IHZvaWQgKnApIHsgY29uc3Qg dW5pb24gdW5hbGlnbmVkICp1cCA9IHA7IHJldHVybiB1cC0+czg7IH0KIAwK K3N0YXRpYyBfVW53aW5kX1dvcmQKK2lzX3ZhbGlkX21lbW9yeV9hY2Nlc3Mg KHZvaWQgKnB0ciwgX1Vud2luZF9Xb3JkIHNpemUsIHN0cnVjdCBfVW53aW5k X0NvbnRleHQgKmNvbnRleHQpIHsKKyAgaWYgKF9fYnVpbHRpbl9leHBlY3Qg KCEoY29udGV4dC0+ZmxhZ3MgJiBDSEVDS19QVFJTX0JJVCksIDEpKQorICAg IHJldHVybiAxOworCisvKiBUT0RPOiB0aGlzIHNob3VsZCBjb21lIGZyb20g Y29uZmlnLmguICAqLworI2RlZmluZSBQQUdFX1NJWkUgNDA5NgorICBfVW53 aW5kX1B0ciBwYWdlID0gKF9VbndpbmRfUHRyKSBwdHIgJiB+KChfVW53aW5k X1B0cikgUEFHRV9TSVpFIC0gMSk7CisgIF9VbndpbmRfV29yZCBsZW4gPSAo X1Vud2luZF9QdHIpIHB0ciArIHNpemUgPCBwYWdlICsgUEFHRV9TSVpFID8g UEFHRV9TSVpFIDogMiAqIFBBR0VfU0laRTsKKyAgaWYgKF9fYnVpbHRpbl9l eHBlY3QgKGxlbiA9PSBQQUdFX1NJWkUgJiYgcGFnZSA9PSBjb250ZXh0LT5s YXN0X2NoZWNrZWRfcGFnZSwgMSkpCisgICAgcmV0dXJuIDE7CisKKyAgaWYg KF9fYnVpbHRpbl9leHBlY3QgKG1zeW5jICgodm9pZCAqKXBhZ2UsIGxlbiwg TVNfQVNZTkMpLCAwKSkKKyAgICByZXR1cm4gMDsKKworICAvKiBUT0RPOiBr ZWVwIG1vcmUgdGhhbiBvbmUgcGFnZSBpbiBjYWNoZT8gICovCisgIGNvbnRl eHQtPmxhc3RfY2hlY2tlZF9wYWdlID0gcGFnZTsKKworICByZXR1cm4gMTsK K30KKworI2RlZmluZSBjaGVja19tZW1vcnlfYWNjZXNzKHB0ciwgc2l6ZSwg c3RhdHVzLCBydiwgY3R4KSBkbyB7IFwKKyAgaWYgKF9fYnVpbHRpbl9leHBl Y3QgKCFpc192YWxpZF9tZW1vcnlfYWNjZXNzICgodm9pZCAqKSBwdHIsIHNp emUsIGN0eCksIDApKSBcCisgICAgcmV0dXJuIHN0YXR1cyA9IDEsIHJ2OyBc CisgIH0gd2hpbGUgKDApCisMCiBzdGF0aWMgaW5saW5lIF9VbndpbmRfV29y ZAogX1Vud2luZF9Jc1NpZ25hbEZyYW1lIChzdHJ1Y3QgX1Vud2luZF9Db250 ZXh0ICpjb250ZXh0KQogewpAQCAtMjE4LDEyICsyNTEsMTUgQEAgX1Vud2lu ZF9Jc0V4dGVuZGVkQ29udGV4dCAoc3RydWN0IF9VbndpbgogDAogLyogR2V0 IHRoZSB2YWx1ZSBvZiByZWdpc3RlciBJTkRFWCBhcyBzYXZlZCBpbiBDT05U RVhULiAgKi8KIAotaW5saW5lIF9VbndpbmRfV29yZAotX1Vud2luZF9HZXRH UiAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgaW50IGluZGV4 KQorc3RhdGljIF9VbndpbmRfV29yZAorX1Vud2luZF9HZXRHUl9DaGVja2Vk IChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0LCBpbnQgaW5kZXgs IGludCAqc3RhdHVzKQogewogICBpbnQgc2l6ZTsKICAgX1Vud2luZF9Db250 ZXh0X1JlZ19WYWwgdmFsOwogCisgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChz dGF0dXMgIT0gTlVMTCwgMCkpCisgICAgKnN0YXR1cyA9IDA7CisKICNpZmRl ZiBEV0FSRl9aRVJPX1JFRwogICBpZiAoaW5kZXggPT0gRFdBUkZfWkVST19S RUcpCiAgICAgcmV0dXJuIDA7CkBAIC0yMzcsNiArMjczLDkgQEAgX1Vud2lu ZF9HZXRHUiAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqYwogICBpZiAoX1Vu d2luZF9Jc0V4dGVuZGVkQ29udGV4dCAoY29udGV4dCkgJiYgY29udGV4dC0+ YnlfdmFsdWVbaW5kZXhdKQogICAgIHJldHVybiBfVW53aW5kX0dldF9Vbndp bmRfV29yZCAodmFsKTsKIAorICBpZiAoX19idWlsdGluX2V4cGVjdCAoc3Rh dHVzICE9IE5VTEwsIDApKQorICAgIGNoZWNrX21lbW9yeV9hY2Nlc3MgKHZh bCwgc2l6ZSwgKnN0YXR1cywgMCwgY29udGV4dCk7CisKICAgLyogVGhpcyB3 aWxsIHNlZ2ZhdWx0IGlmIHRoZSByZWdpc3RlciBoYXNuJ3QgYmVlbiBzYXZl ZC4gICovCiAgIGlmIChzaXplID09IHNpemVvZihfVW53aW5kX1B0cikpCiAg ICAgcmV0dXJuICogKF9VbndpbmRfUHRyICopIChfVW53aW5kX0ludGVybmFs X1B0cikgdmFsOwpAQCAtMjQ3LDEwICsyODYsMjIgQEAgX1Vud2luZF9HZXRH UiAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqYwogICAgIH0KIH0KIAorX1Vu d2luZF9Xb3JkCitfVW53aW5kX0dldEdSIChzdHJ1Y3QgX1Vud2luZF9Db250 ZXh0ICpjb250ZXh0LCBpbnQgaW5kZXgpCit7CisgIHJldHVybiBfVW53aW5k X0dldEdSX0NoZWNrZWQgKGNvbnRleHQsIGluZGV4LCAwKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkICoKK19VbndpbmRfR2V0UHRyX0NoZWNrZWQgKHN0 cnVjdCBfVW53aW5kX0NvbnRleHQgKmNvbnRleHQsIGludCBpbmRleCwgaW50 ICpzdGF0dXMpCit7CisgIHJldHVybiAodm9pZCAqKShfVW53aW5kX1B0cikg X1Vud2luZF9HZXRHUl9DaGVja2VkIChjb250ZXh0LCBpbmRleCwgc3RhdHVz KTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkICoKIF9VbndpbmRfR2V0UHRy IChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0LCBpbnQgaW5kZXgp CiB7Ci0gIHJldHVybiAodm9pZCAqKShfVW53aW5kX1B0cikgX1Vud2luZF9H ZXRHUiAoY29udGV4dCwgaW5kZXgpOworICByZXR1cm4gKHZvaWQgKikoX1Vu d2luZF9QdHIpIF9VbndpbmRfR2V0R1JfQ2hlY2tlZCAoY29udGV4dCwgaW5k ZXgsIDApOwogfQogCiAvKiBHZXQgdGhlIHZhbHVlIG9mIHRoZSBDRkEgYXMg c2F2ZWQgaW4gQ09OVEVYVC4gICovCkBAIC0yNjMsMTIgKzMxNCwxNSBAQCBf VW53aW5kX0dldENGQSAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqCiAKIC8q IE92ZXJ3cml0ZSB0aGUgc2F2ZWQgdmFsdWUgZm9yIHJlZ2lzdGVyIElOREVY IGluIENPTlRFWFQgd2l0aCBWQUwuICAqLwogCi1pbmxpbmUgdm9pZAotX1Vu d2luZF9TZXRHUiAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwg aW50IGluZGV4LCBfVW53aW5kX1dvcmQgdmFsKQorc3RhdGljIHZvaWQKK19V bndpbmRfU2V0R1JfQ2hlY2tlZCAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAq Y29udGV4dCwgaW50IGluZGV4LCBfVW53aW5kX1dvcmQgdmFsLCBpbnQgKnN0 YXR1cykKIHsKICAgaW50IHNpemU7CiAgIHZvaWQgKnB0cjsKIAorICBpZiAo X19idWlsdGluX2V4cGVjdCAoc3RhdHVzICE9IE5VTEwsIDApKQorICAgICpz dGF0dXMgPSAwOworCiAgIGluZGV4ID0gRFdBUkZfUkVHX1RPX1VOV0lORF9D T0xVTU4gKGluZGV4KTsKICAgZ2NjX2Fzc2VydCAoaW5kZXggPCAoaW50KSBz aXplb2YoZHdhcmZfcmVnX3NpemVfdGFibGUpKTsKICAgc2l6ZSA9IGR3YXJm X3JlZ19zaXplX3RhYmxlW2luZGV4XTsKQEAgLTI4MSw2ICszMzUsOSBAQCBf VW53aW5kX1NldEdSIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjCiAKICAg cHRyID0gKHZvaWQgKikgKF9VbndpbmRfSW50ZXJuYWxfUHRyKSBjb250ZXh0 LT5yZWdbaW5kZXhdOwogCisgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChzdGF0 dXMgIT0gTlVMTCwgMCkpCisgICAgY2hlY2tfbWVtb3J5X2FjY2VzcyAocHRy LCBzaXplLCAqc3RhdHVzLCAodm9pZCkgMCwgY29udGV4dCk7CisKICAgaWYg KHNpemUgPT0gc2l6ZW9mKF9VbndpbmRfUHRyKSkKICAgICAqIChfVW53aW5k X1B0ciAqKSBwdHIgPSB2YWw7CiAgIGVsc2UKQEAgLTI5MCw2ICszNDcsMTIg QEAgX1Vud2luZF9TZXRHUiAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqYwog ICAgIH0KIH0KIAordm9pZAorX1Vud2luZF9TZXRHUiAoc3RydWN0IF9Vbndp bmRfQ29udGV4dCAqY29udGV4dCwgaW50IGluZGV4LCBfVW53aW5kX1dvcmQg dmFsKQoreworICByZXR1cm4gX1Vud2luZF9TZXRHUl9DaGVja2VkIChjb250 ZXh0LCBpbmRleCwgdmFsLCAwKTsKK30KKwogLyogR2V0IHRoZSBwb2ludGVy IHRvIGEgcmVnaXN0ZXIgSU5ERVggYXMgc2F2ZWQgaW4gQ09OVEVYVC4gICov CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCAqCkBAIC01MTAsNyArNTczLDggQEAg ZXh0cmFjdF9jaWVfaW5mbyAoY29uc3Qgc3RydWN0IGR3YXJmX2NpZQogCiBz dGF0aWMgX1Vud2luZF9Xb3JkCiBleGVjdXRlX3N0YWNrX29wIChjb25zdCB1 bnNpZ25lZCBjaGFyICpvcF9wdHIsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9w X2VuZCwKLQkJICBzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0LCBf VW53aW5kX1dvcmQgaW5pdGlhbCkKKwkJICBzdHJ1Y3QgX1Vud2luZF9Db250 ZXh0ICpjb250ZXh0LCBfVW53aW5kX1dvcmQgaW5pdGlhbCwKKwkJICBpbnQg KnN0YXR1cykKIHsKICAgX1Vud2luZF9Xb3JkIHN0YWNrWzY0XTsJLyogPz8/ IEFzc3VtZSB0aGlzIGlzIGVub3VnaC4gICovCiAgIGludCBzdGFja19lbHQ7 CkBAIC01MTgsNiArNTgyLDggQEAgZXhlY3V0ZV9zdGFja19vcCAoY29uc3Qg dW5zaWduZWQgY2hhciAqbwogICBzdGFja1swXSA9IGluaXRpYWw7CiAgIHN0 YWNrX2VsdCA9IDE7CiAKKyAgKnN0YXR1cyA9IDA7CisKICAgd2hpbGUgKG9w X3B0ciA8IG9wX2VuZCkKICAgICB7CiAgICAgICBlbnVtIGR3YXJmX2xvY2F0 aW9uX2F0b20gb3AgPSAqb3BfcHRyKys7CkBAIC03NTgsNiArODI0LDcgQEAg ZXhlY3V0ZV9zdGFja19vcCAoY29uc3QgdW5zaWduZWQgY2hhciAqbwogCSAg ICBjYXNlIERXX09QX2RlcmVmOgogCSAgICAgIHsKIAkJdm9pZCAqcHRyID0g KHZvaWQgKikgKF9VbndpbmRfUHRyKSByZXN1bHQ7CisJCWNoZWNrX21lbW9y eV9hY2Nlc3MgKHB0ciwgc2l6ZW9mIChfVW53aW5kX1B0ciksICpzdGF0dXMs IDAsIGNvbnRleHQpOwogCQlyZXN1bHQgPSAoX1Vud2luZF9QdHIpIHJlYWRf cG9pbnRlciAocHRyKTsKIAkgICAgICB9CiAJICAgICAgYnJlYWs7CkBAIC03 NjgsMTUgKzgzNSwxOSBAQCBleGVjdXRlX3N0YWNrX29wIChjb25zdCB1bnNp Z25lZCBjaGFyICpvCiAJCXN3aXRjaCAoKm9wX3B0cisrKQogCQkgIHsKIAkJ ICBjYXNlIDE6CisJCSAgICBjaGVja19tZW1vcnlfYWNjZXNzIChwdHIsIDEs ICpzdGF0dXMsIDAsIGNvbnRleHQpOwogCQkgICAgcmVzdWx0ID0gcmVhZF8x dSAocHRyKTsKIAkJICAgIGJyZWFrOwogCQkgIGNhc2UgMjoKKwkJICAgIGNo ZWNrX21lbW9yeV9hY2Nlc3MgKHB0ciwgMiwgKnN0YXR1cywgMCwgY29udGV4 dCk7CiAJCSAgICByZXN1bHQgPSByZWFkXzJ1IChwdHIpOwogCQkgICAgYnJl YWs7CiAJCSAgY2FzZSA0OgorCQkgICAgY2hlY2tfbWVtb3J5X2FjY2VzcyAo cHRyLCA0LCAqc3RhdHVzLCAwLCBjb250ZXh0KTsKIAkJICAgIHJlc3VsdCA9 IHJlYWRfNHUgKHB0cik7CiAJCSAgICBicmVhazsKIAkJICBjYXNlIDg6CisJ CSAgICBjaGVja19tZW1vcnlfYWNjZXNzIChwdHIsIDgsICpzdGF0dXMsIDAs IGNvbnRleHQpOwogCQkgICAgcmVzdWx0ID0gcmVhZF84dSAocHRyKTsKIAkJ ICAgIGJyZWFrOwogCQkgIGRlZmF1bHQ6CkBAIC0xMjU0LDYgKzEzMjUsOSBA QCB1d19mcmFtZV9zdGF0ZV9mb3IgKHN0cnVjdCBfVW53aW5kX0NvbnRlCiAg ICAgICAvKiBDb3VsZG4ndCBmaW5kIGZyYW1lIHVud2luZCBpbmZvIGZvciB0 aGlzIGZ1bmN0aW9uLiAgVHJ5IGEKIAkgdGFyZ2V0LXNwZWNpZmljIGZhbGxi YWNrIG1lY2hhbmlzbS4gIFRoaXMgd2lsbCBuZWNlc3NhcmlseQogCSBub3Qg cHJvdmlkZSBhIHBlcnNvbmFsaXR5IHJvdXRpbmUgb3IgTFNEQS4gICovCisg ICAgICAvKiBUT0RPOiBzaG91bGQgdXNlIG1vcmUgcHJlY2lzZSBwbGF0Zm9y bS1zcGVjaWZpYyBjaGVja3MgaW5zaWRlIGZhbGxiYWNrIGNvZGUuICAqLwor ICAgICAgaW50IGR1bW15IF9fYXR0cmlidXRlX18oKHVudXNlZCkpOworICAg ICAgY2hlY2tfbWVtb3J5X2FjY2VzcyAoY29udGV4dC0+cmEsIHNpemVvZiAo dm9pZCAqKSwgZHVtbXksIF9VUkNfRkFUQUxfUEhBU0UxX0VSUk9SLCBjb250 ZXh0KTsKICAgICAgIHJldHVybiBNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9G T1IgKGNvbnRleHQsIGZzKTsKICNlbHNlCiAgICAgICByZXR1cm4gX1VSQ19F TkRfT0ZfU1RBQ0s7CkBAIC0xMzgxLDEyICsxNDU1LDEzIEBAIF9VbndpbmRf U2V0U3BDb2x1bW4gKHN0cnVjdCBfVW53aW5kX0NvbnQKICAgX1Vud2luZF9T ZXRHUlB0ciAoY29udGV4dCwgX19idWlsdGluX2R3YXJmX3NwX2NvbHVtbiAo KSwgdG1wX3NwKTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIHV3 X3VwZGF0ZV9jb250ZXh0XzEgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKmNv bnRleHQsIF9VbndpbmRfRnJhbWVTdGF0ZSAqZnMpCiB7CiAgIHN0cnVjdCBf VW53aW5kX0NvbnRleHQgb3JpZ19jb250ZXh0ID0gKmNvbnRleHQ7CiAgIHZv aWQgKmNmYTsKICAgbG9uZyBpOworICBpbnQgc3RhdHVzOwogCiAjaWZkZWYg X19MSUJHQ0NfRUhfUkVUVVJOX1NUQUNLQURKX1JUWF9fCiAgIC8qIFNwZWNp YWwgaGFuZGxpbmcgaGVyZTogTWFueSBtYWNoaW5lcyBkbyBub3QgdXNlIGEg ZnJhbWUgcG9pbnRlciwKQEAgLTE0MjYsNyArMTUwMSw5IEBAIHV3X3VwZGF0 ZV9jb250ZXh0XzEgKHN0cnVjdCBfVW53aW5kX0NvbnQKIAogCWV4cCA9IHJl YWRfdWxlYjEyOCAoZXhwLCAmbGVuKTsKIAljZmEgPSAodm9pZCAqKSAoX1Vu d2luZF9QdHIpCi0JICBleGVjdXRlX3N0YWNrX29wIChleHAsIGV4cCArIGxl biwgJm9yaWdfY29udGV4dCwgMCk7CisJICBleGVjdXRlX3N0YWNrX29wIChl eHAsIGV4cCArIGxlbiwgJm9yaWdfY29udGV4dCwgMCwgJnN0YXR1cyk7CisJ aWYgKF9fYnVpbHRpbl9leHBlY3QgKHN0YXR1cywgMCkpCisJICByZXR1cm4g c3RhdHVzOwogCWJyZWFrOwogICAgICAgfQogCkBAIC0xNDY3LDcgKzE1NDQs OSBAQCB1d191cGRhdGVfY29udGV4dF8xIChzdHJ1Y3QgX1Vud2luZF9Db250 CiAKIAkgIGV4cCA9IHJlYWRfdWxlYjEyOCAoZXhwLCAmbGVuKTsKIAkgIHZh bCA9IGV4ZWN1dGVfc3RhY2tfb3AgKGV4cCwgZXhwICsgbGVuLCAmb3JpZ19j b250ZXh0LAotCQkJCSAgKF9VbndpbmRfUHRyKSBjZmEpOworCQkJCSAgKF9V bndpbmRfUHRyKSBjZmEsICZzdGF0dXMpOworCSAgaWYgKF9fYnVpbHRpbl9l eHBlY3QgKHN0YXR1cywgMCkpCisJICAgIHJldHVybiBzdGF0dXM7CiAJICBf VW53aW5kX1NldEdSUHRyIChjb250ZXh0LCBpLCAodm9pZCAqKSB2YWwpOwog CX0KIAlicmVhazsKQEAgLTE0ODYsNyArMTU2NSw5IEBAIHV3X3VwZGF0ZV9j b250ZXh0XzEgKHN0cnVjdCBfVW53aW5kX0NvbnQKIAogCSAgZXhwID0gcmVh ZF91bGViMTI4IChleHAsICZsZW4pOwogCSAgdmFsID0gZXhlY3V0ZV9zdGFj a19vcCAoZXhwLCBleHAgKyBsZW4sICZvcmlnX2NvbnRleHQsCi0JCQkJICAo X1Vud2luZF9QdHIpIGNmYSk7CisJCQkJICAoX1Vud2luZF9QdHIpIGNmYSwg JnN0YXR1cyk7CisJICBpZiAoX19idWlsdGluX2V4cGVjdCAoc3RhdHVzLCAw KSkKKwkgICAgcmV0dXJuIHN0YXR1czsKIAkgIF9VbndpbmRfU2V0R1JWYWx1 ZSAoY29udGV4dCwgaSwgdmFsKTsKIAl9CiAJYnJlYWs7CkBAIC0xNDk3LDYg KzE1NzgsOCBAQCB1d191cGRhdGVfY29udGV4dF8xIChzdHJ1Y3QgX1Vud2lu ZF9Db250CiAjaWZkZWYgTURfRlJPQl9VUERBVEVfQ09OVEVYVAogICBNRF9G Uk9CX1VQREFURV9DT05URVhUIChjb250ZXh0LCBmcyk7CiAjZW5kaWYKKwor ICByZXR1cm4gMDsKIH0KIAogLyogQ09OVEVYVCBkZXNjcmliZXMgdGhlIHVu d2luZCBzdGF0ZSBmb3IgYSBmcmFtZSwgYW5kIEZTIGRlc2NyaWJlcyB0aGUg RkRFCkBAIC0xNTA0LDEwICsxNTg3LDExIEBAIHV3X3VwZGF0ZV9jb250ZXh0 XzEgKHN0cnVjdCBfVW53aW5kX0NvbnQKICAgIHRoYXQgdGhlIGFyZ3Nfc2l6 ZSBhbmQgbHNkYSBtZW1iZXJzIGFyZSBub3QgdXBkYXRlZCBoZXJlLCBidXQg bGF0ZXIgaW4KICAgIHV3X2ZyYW1lX3N0YXRlX2Zvci4gICovCiAKLXN0YXRp YyB2b2lkCitzdGF0aWMgaW50CiB1d191cGRhdGVfY29udGV4dCAoc3RydWN0 IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgX1Vud2luZF9GcmFtZVN0YXRl ICpmcykKIHsKLSAgdXdfdXBkYXRlX2NvbnRleHRfMSAoY29udGV4dCwgZnMp OworICBpZiAoX19idWlsdGluX2V4cGVjdCAodXdfdXBkYXRlX2NvbnRleHRf MSAoY29udGV4dCwgZnMpLCAwKSkKKyAgICByZXR1cm4gMTsKIAogICAvKiBJ biBnZW5lcmFsIHRoaXMgdW53aW5kZXIgZG9lc24ndCBtYWtlIGFueSBkaXN0 aW5jdGlvbiBiZXR3ZWVuCiAgICAgIHVuZGVmaW5lZCBhbmQgc2FtZV92YWx1 ZSBydWxlLiAgQ2FsbC1zYXZlZCByZWdpc3RlcnMgYXJlIGFzc3VtZWQKQEAg LTE1MzAsMTIgKzE2MTQsMTQgQEAgdXdfdXBkYXRlX2NvbnRleHQgKHN0cnVj dCBfVW53aW5kX0NvbnRleAogICAgICAgY29udGV4dC0+cmEgPSBNRF9QT1NU X0VYVFJBQ1RfRlJBTUVfQUREUiAoY29udGV4dCwgZnMsIGNvbnRleHQtPnJh KTsKICNlbmRpZgogICAgIH0KKworICByZXR1cm4gMDsKIH0KIAotc3RhdGlj IHZvaWQKK3N0YXRpYyBpbnQKIHV3X2FkdmFuY2VfY29udGV4dCAoc3RydWN0 IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgX1Vud2luZF9GcmFtZVN0YXRl ICpmcykKIHsKLSAgdXdfdXBkYXRlX2NvbnRleHQgKGNvbnRleHQsIGZzKTsK KyAgcmV0dXJuIHV3X3VwZGF0ZV9jb250ZXh0IChjb250ZXh0LCBmcyk7CiB9 CiAMCiAvKiBGaWxsIGluIENPTlRFWFQgZm9yIHRvcC1vZi1zdGFjay4gIFRo ZSBvbmx5IHZhbGlkIHJlZ2lzdGVycyBhdCB0aGlzCkBAIC0xNTU4LDcgKzE2 NDQsNyBAQCBpbml0X2R3YXJmX3JlZ19zaXplX3RhYmxlICh2b2lkKQogICBf X2J1aWx0aW5faW5pdF9kd2FyZl9yZWdfc2l6ZV90YWJsZSAoZHdhcmZfcmVn X3NpemVfdGFibGUpOwogfQogCi1zdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9f KChub2lubGluZSkpCitzdGF0aWMgaW50IF9fYXR0cmlidXRlX18oKG5vaW5s aW5lKSkKIHV3X2luaXRfY29udGV4dF8xIChzdHJ1Y3QgX1Vud2luZF9Db250 ZXh0ICpjb250ZXh0LAogCQkgICB2b2lkICpvdXRlcl9jZmEsIHZvaWQgKm91 dGVyX3JhKQogewpAQCAtMTU5Niw3ICsxNjgyLDggQEAgdXdfaW5pdF9jb250 ZXh0XzEgKHN0cnVjdCBfVW53aW5kX0NvbnRleAogICBmcy5yZWdzLmNmYV9y ZWcgPSBfX2J1aWx0aW5fZHdhcmZfc3BfY29sdW1uICgpOwogICBmcy5yZWdz LmNmYV9vZmZzZXQgPSAwOwogCi0gIHV3X3VwZGF0ZV9jb250ZXh0XzEgKGNv bnRleHQsICZmcyk7CisgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICh1d191cGRh dGVfY29udGV4dF8xIChjb250ZXh0LCAmZnMpLCAwKSkKKyAgICByZXR1cm4g MTsKIAogICAvKiBJZiB0aGUgcmV0dXJuIGFkZHJlc3MgY29sdW1uIHdhcyBz YXZlZCBpbiBhIHJlZ2lzdGVyIGluIHRoZQogICAgICBpbml0aWFsaXphdGlv biBjb250ZXh0LCB0aGVuIHdlIGNhbid0IHNlZSBpdCBpbiB0aGUgZ2l2ZW4K QEAgLTE2MDUsNiArMTY5MiwxNCBAQCB1d19pbml0X2NvbnRleHRfMSAoc3Ry dWN0IF9VbndpbmRfQ29udGV4CiAjaWZkZWYgTURfUE9TVF9FWFRSQUNUX1JP T1RfQUREUgogICBjb250ZXh0LT5yYSA9IE1EX1BPU1RfRVhUUkFDVF9ST09U X0FERFIgKGNvbnRleHQtPnJhKTsKICNlbmRpZgorCisgIHJldHVybiAwOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3V3X3NldF9jaGVja19wdHJzIChz dHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0KQoreworICBjb250ZXh0 LT5mbGFncyB8PSBDSEVDS19QVFJTX0JJVDsKIH0KIAogc3RhdGljIHZvaWQg X1Vud2luZF9EZWJ1Z0hvb2sgKHZvaWQgKiwgdm9pZCAqKQpkaWZmIC1ydXBO IGdjYy03LTIwMTcwNjIyL2xpYmdjYy91bndpbmQtZ2VuZXJpYy5oIGdjYy03 LTIwMTcwNjIyLTY3MzM2L2xpYmdjYy91bndpbmQtZ2VuZXJpYy5oCi0tLSBn Y2MtNy0yMDE3MDYyMi9saWJnY2MvdW53aW5kLWdlbmVyaWMuaAkyMDE3LTAx LTAxIDEzOjA3OjQzLjAwMDAwMDAwMCArMDEwMAorKysgZ2NjLTctMjAxNzA2 MjItNjczMzYvbGliZ2NjL3Vud2luZC1nZW5lcmljLmgJMjAxNy0wNi0yNyAy MjowMDowMS4wMDAwMDAwMDAgKzAyMDAKQEAgLTE2Miw2ICsxNjIsMTIgQEAg dHlwZWRlZiBfVW53aW5kX1JlYXNvbl9Db2RlICgqX1Vud2luZF9UcgogZXh0 ZXJuIF9VbndpbmRfUmVhc29uX0NvZGUgTElCR0NDMl9VTldJTkRfQVRUUklC VVRFCiBfVW53aW5kX0JhY2t0cmFjZSAoX1Vud2luZF9UcmFjZV9Gbiwgdm9p ZCAqKTsKIAorLyogQEBAIFNhbWUgYXMgX1Vud2luZF9CYWNrdHJhY2UgYnV0 IGNoZWNrcyBwb2ludGVycworICAgYmVmb3JlIGZvbGxvd2luZyB0aGVtLCBw b3RlbnRpYWxseSBhdm9pZGluZyBhY2Nlc3NlcyB0bworICAgaW52YWxpZCBt ZW1vcnkgd2hlbiB1bndpbmRpbmcgY29ycnVwdGVkIHN0YWNrcy4gICovCitl eHRlcm4gX1Vud2luZF9SZWFzb25fQ29kZSBMSUJHQ0MyX1VOV0lORF9BVFRS SUJVVEUKK19VbndpbmRfQmFja3RyYWNlX0NoZWNrZWQgKF9VbndpbmRfVHJh Y2VfRm4sIHZvaWQgKik7CisKIC8qIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNl ZCBmb3IgY29tbXVuaWNhdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdW53 aW5kCiAgICBjb250ZXh0IChpLmUuIHRoZSB1bndpbmQgZGVzY3JpcHRvcnMg YW5kIHRoZSB1c2VyIHJlZ2lzdGVyIHN0YXRlKSBiZXR3ZWVuCiAgICB0aGUg dW53aW5kIGxpYnJhcnkgYW5kIHRoZSBwZXJzb25hbGl0eSByb3V0aW5lIGFu ZCBsYW5kaW5nIHBhZC4gIE9ubHkKZGlmZiAtcnVwTiBnY2MtNy0yMDE3MDYy Mi9saWJnY2MvdW53aW5kLmluYyBnY2MtNy0yMDE3MDYyMi02NzMzNi9saWJn Y2MvdW53aW5kLmluYwotLS0gZ2NjLTctMjAxNzA2MjIvbGliZ2NjL3Vud2lu ZC5pbmMJMjAxNy0wMS0wMSAxMzowNzo0My4wMDAwMDAwMDAgKzAxMDAKKysr IGdjYy03LTIwMTcwNjIyLTY3MzM2L2xpYmdjYy91bndpbmQuaW5jCTIwMTct MDYtMjcgMjI6MDA6MDEuMDAwMDAwMDAwICswMjAwCkBAIC0xODIsNyArMTgy LDggQEAgX1Vud2luZF9Gb3JjZWRVbndpbmRfUGhhc2UyIChzdHJ1Y3QgX1Vu dwogCiAgICAgICAvKiBVcGRhdGUgY3VyX2NvbnRleHQgdG8gZGVzY3JpYmUg dGhlIHNhbWUgZnJhbWUgYXMgZnMsIGFuZCBkaXNjYXJkCiAJIHRoZSBwcmV2 aW91cyBjb250ZXh0IGlmIG5lY2Vzc2FyeS4gICovCi0gICAgICB1d19hZHZh bmNlX2NvbnRleHQgKGNvbnRleHQsICZmcyk7CisgICAgICBpZiAodXdfYWR2 YW5jZV9jb250ZXh0IChjb250ZXh0LCAmZnMpKQorCXJldHVybiBfVVJDX0ZB VEFMX1BIQVNFMl9FUlJPUjsKICAgICB9CiAKICAgcmV0dXJuIGNvZGU7CkBA IC0yNzIsMTYgKzI3MywyMCBAQCBfVW53aW5kX0RlbGV0ZUV4Y2VwdGlvbiAo c3RydWN0IF9VbndpbmRfCiB9CiAKIAotLyogUGVyZm9ybSBzdGFjayBiYWNr dHJhY2UgdGhyb3VnaCB1bndpbmQgZGF0YS4gICovCisvKiBDb21tb24gY29k ZSB0byBiYWNrdHJhY2UgdGhyb3VnaCB1bndpbmQgZGF0YS4gICovCiAKLV9V bndpbmRfUmVhc29uX0NvZGUgTElCR0NDMl9VTldJTkRfQVRUUklCVVRFCi1f VW53aW5kX0JhY2t0cmFjZShfVW53aW5kX1RyYWNlX0ZuIHRyYWNlLCB2b2lk ICogdHJhY2VfYXJndW1lbnQpCitzdGF0aWMgX1Vud2luZF9SZWFzb25fQ29k ZQorX1Vud2luZF9CYWNrdHJhY2VfMSAoX1Vud2luZF9UcmFjZV9GbiB0cmFj ZSwgdm9pZCAqIHRyYWNlX2FyZ3VtZW50LCBpbnQgY2hlY2tfcHRycykKIHsK ICAgc3RydWN0IF9VbndpbmRfQ29udGV4dCBjb250ZXh0OwogICBfVW53aW5k X1JlYXNvbl9Db2RlIGNvZGU7CiAKKyAgLyogVE9ETzogY2hlY2sgc3RhdHVz IG9mIHV3X2luaXRfY29udGV4dC4gICovCiAgIHV3X2luaXRfY29udGV4dCAo JmNvbnRleHQpOwogCisgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChjaGVja19w dHJzLCAwKSkKKyAgICB1d19zZXRfY2hlY2tfcHRycyAoJmNvbnRleHQpOwor CiAgIHdoaWxlICgxKQogICAgIHsKICAgICAgIF9VbndpbmRfRnJhbWVTdGF0 ZSBmczsKQEAgLTMwMCw4ICszMDUsMjYgQEAgX1Vud2luZF9CYWNrdHJhY2Uo X1Vud2luZF9UcmFjZV9GbiB0cmFjZQogCWJyZWFrOwogCiAgICAgICAvKiBV cGRhdGUgY29udGV4dCB0byBkZXNjcmliZSB0aGUgc2FtZSBmcmFtZSBhcyBm cy4gICovCi0gICAgICB1d191cGRhdGVfY29udGV4dCAoJmNvbnRleHQsICZm cyk7CisgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAodXdfdXBkYXRlX2Nv bnRleHQgKCZjb250ZXh0LCAmZnMpLCAwKSkKKwlyZXR1cm4gX1VSQ19GQVRB TF9QSEFTRTFfRVJST1I7CiAgICAgfQogCiAgIHJldHVybiBjb2RlOwogfQor CisvKiBQZXJmb3JtIHN0YWNrIGJhY2t0cmFjZSB0aHJvdWdoIHVud2luZCBk YXRhLiAgKi8KKworX1Vud2luZF9SZWFzb25fQ29kZSBMSUJHQ0MyX1VOV0lO RF9BVFRSSUJVVEUKK19VbndpbmRfQmFja3RyYWNlIChfVW53aW5kX1RyYWNl X0ZuIHRyYWNlLCB2b2lkICogdHJhY2VfYXJndW1lbnQpCit7CisgIHJldHVy biBfVW53aW5kX0JhY2t0cmFjZV8xICh0cmFjZSwgdHJhY2VfYXJndW1lbnQs IDApOworfQorCisvKiBQZXJmb3JtIHN0YWNrIGJhY2t0cmFjZSB0aHJvdWdo IHVud2luZCBkYXRhCisgICBidXQgd2F0Y2ggb3V0IGZvciB1bnNhZmUgcG9p bnRlcnMgaW4gdGhlIHdheS4gICovCisKK19VbndpbmRfUmVhc29uX0NvZGUg TElCR0NDMl9VTldJTkRfQVRUUklCVVRFCitfVW53aW5kX0JhY2t0cmFjZV9D aGVja2VkIChfVW53aW5kX1RyYWNlX0ZuIHRyYWNlLCB2b2lkICogdHJhY2Vf YXJndW1lbnQpCit7CisgIHJldHVybiBfVW53aW5kX0JhY2t0cmFjZV8xICh0 cmFjZSwgdHJhY2VfYXJndW1lbnQsIDEpOworfQpkaWZmIC1ydXBOIGdjYy03 LTIwMTcwNjIyL2xpYmdjYy91bndpbmQtc2psai5jIGdjYy03LTIwMTcwNjIy LTY3MzM2L2xpYmdjYy91bndpbmQtc2psai5jCi0tLSBnY2MtNy0yMDE3MDYy Mi9saWJnY2MvdW53aW5kLXNqbGouYwkyMDE3LTAxLTAxIDEzOjA3OjQzLjAw MDAwMDAwMCArMDEwMAorKysgZ2NjLTctMjAxNzA2MjItNjczMzYvbGliZ2Nj L3Vud2luZC1zamxqLmMJMjAxNy0wNi0yNyAyMjowMDowMS4wMDAwMDAwMDAg KzAyMDAKQEAgLTI3OCwxOCArMjc4LDE5IEBAIHV3X2ZyYW1lX3N0YXRlX2Zv ciAoc3RydWN0IF9VbndpbmRfQ29udGUKICAgICB9CiB9CiAKLXN0YXRpYyBp bmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBpbnQKIHV3X3VwZGF0ZV9jb250 ZXh0IChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0LAogCQkgICBf VW53aW5kX0ZyYW1lU3RhdGUgKmZzIF9fYXR0cmlidXRlX18oKHVudXNlZCkp ICkKIHsKICAgY29udGV4dC0+ZmMgPSBjb250ZXh0LT5mYy0+cHJldjsKKyAg cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiB1d19h ZHZhbmNlX2NvbnRleHQgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKmNvbnRl eHQsIF9VbndpbmRfRnJhbWVTdGF0ZSAqZnMpCiB7CiAgIF9VbndpbmRfU2pM al9VbnJlZ2lzdGVyIChjb250ZXh0LT5mYyk7Ci0gIHV3X3VwZGF0ZV9jb250 ZXh0IChjb250ZXh0LCBmcyk7CisgIHJldHVybiB1d191cGRhdGVfY29udGV4 dCAoY29udGV4dCwgZnMsIDApOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQK QEAgLTI5OCw2ICsyOTksMTIgQEAgdXdfaW5pdF9jb250ZXh0IChzdHJ1Y3Qg X1Vud2luZF9Db250ZXh0IAogICBjb250ZXh0LT5mYyA9IF9VbndpbmRfU2pM al9HZXRDb250ZXh0ICgpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQKK3V3 X3NldF9jaGVja19wdHJzIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250 ZXh0KQoreworICAvKiBUT0RPICovCit9CisKIHN0YXRpYyB2b2lkIF9fYXR0 cmlidXRlX18oKG5vcmV0dXJuKSkKIHV3X2luc3RhbGxfY29udGV4dCAoc3Ry dWN0IF9VbndpbmRfQ29udGV4dCAqY3VycmVudCBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9VbndpbmRf Q29udGV4dCAqdGFyZ2V0KQo= --94eb2c09778c22e6ea0553005f47 Content-Type: text/x-csrc; charset="US-ASCII"; name="repro.c" Content-Disposition: attachment; filename="repro.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j4gp0d611 Content-length: 1448 I2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCnN0cnVj dCBfVW53aW5kX0NvbnRleHQ7Cgp0eXBlZGVmIGludCAoKl9VbndpbmRfVHJh Y2VfRm4pKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgdm9pZCAqdmRhdGEp OwoKZXh0ZXJuIGludCBfVW53aW5kX0JhY2t0cmFjZShfVW53aW5kX1RyYWNl X0ZuIHRyYWNlLCB2b2lkICogdHJhY2VfYXJndW1lbnQpOwpleHRlcm4gaW50 IF9VbndpbmRfQmFja3RyYWNlX0NoZWNrZWQoX1Vud2luZF9UcmFjZV9GbiB0 cmFjZSwgdm9pZCAqIHRyYWNlX2FyZ3VtZW50KTsKCiNpZmRlZiBDSEVDS19V TldJTkQKI2RlZmluZSBfVW53aW5kX0JhY2t0cmFjZSBfVW53aW5kX0JhY2t0 cmFjZV9DaGVja2VkCiNlbmRpZgoKZXh0ZXJuIHZvaWQgKl9VbndpbmRfR2V0 SVAgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKmNvbnRleHQpOwoKaW50IHNp bXBsZV91bndpbmQgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKmNvbnRleHQs IHZvaWQgKnZkYXRhKSB7CiAgcHJpbnRmKCJOZXh0IGZyYW1lOiAiKTsKICB2 b2lkICpwYyA9IF9VbndpbmRfR2V0SVAoY29udGV4dCk7CiAgcHJpbnRmKCIl cFxuIiwgcGMpOwogIHJldHVybiAwOwp9CgojZGVmaW5lIG5vaW5saW5lIF9f YXR0cmlidXRlX18oKG5vaW5saW5lKSkKCm5vaW5saW5lIGludCBmb28oKSB7 CiAgLy8gQ2xvYmJlciBzdGFjayB0byBwcm92b2tlIGVycm9ycyBpbiB1bndp bmRlcgogIGludCB4OwogIHZvaWQgKnAgPSAmeDsKICBhc20oIiIgOjogInIi KHApKTsKICBtZW1zZXQocCwgMHhhLCAxMjgpOwoKICBwcmludGYoIkFmdGVy IGNsb2JiZXJpbmcgc3RhY2tcbiIpOwoKICBpbnQgcmV0ID0gX1Vud2luZF9C YWNrdHJhY2Uoc2ltcGxlX3Vud2luZCwgMCk7CiAgcHJpbnRmKCJBZnRlciB1 bndpbmQ6ICVkXG4iLCByZXQpOwogIHByaW50ZigiV2UncmUgZ29pbmcgdG8g ZmFpbCBub3dcbiIpOwoKICByZXR1cm4gMDsKfQoKbm9pbmxpbmUgaW50IGJh cigpIHsKICBpbnQgeCA9IGZvbygpOwogIHJldHVybiB4ICsgMTsKfQoKaW50 IG1haW4oKSB7CiAgYmFyKCk7CiAgcmV0dXJuIDA7Cn0K --94eb2c09778c22e6ea0553005f47--