From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16430 invoked by alias); 17 Jun 2013 18:59:51 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 16421 invoked by uid 89); 17 Jun 2013 18:59:51 -0000 X-Spam-SWARE-Status: No, score=-3.5 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD,SPF_PASS,TW_BJ,TW_FN,TW_JF,TW_RG autolearn=ham version=3.3.1 Received: from mail-ee0-f48.google.com (HELO mail-ee0-f48.google.com) (74.125.83.48) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Mon, 17 Jun 2013 18:59:46 +0000 Received: by mail-ee0-f48.google.com with SMTP id b47so2001993eek.7 for ; Mon, 17 Jun 2013 11:59:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=IUSPDJhQZ8tv/gYFaNvJ71KBcbE24A1ugrUBhLgzuUs=; b=ksUbsbm0MmqkSnTKV3/CBEW6WgTlX62JgzoygvAVVXFhqC8hpA3+sdy1TrLHW/D6pl SEXxbf36mnIYsl70GJ9Yj5q5aK2MWvao1ogDIZRqp840RBdJlbsuxLWOTjALRfCsedwG z8HM1UzvdhgXRHxNv17YuSmLZ9529q/xXnoIj9g5iUHD4rLVxoiqjwfVRC8y2Gf1aU8z 5pGdoIICXysTbinLWymgvMGJ8gv2hl9Jr5e5BpjbwZS1m9kr/UgpML/h/DpcVAIBR729 2kHAEw05KcTVxQmEMylwkhUDn+EtkCxjp1c987645khlNYrwCa521C6CZ3Yu/RN41+3W zGig== MIME-Version: 1.0 X-Received: by 10.14.241.136 with SMTP id g8mr18461261eer.104.1371495584108; Mon, 17 Jun 2013 11:59:44 -0700 (PDT) Received: by 10.15.109.203 with HTTP; Mon, 17 Jun 2013 11:59:44 -0700 (PDT) In-Reply-To: <871u995pbt.fsf@fleche.redhat.com> References: <87r4hefx59.fsf@fleche.redhat.com> <871u995pbt.fsf@fleche.redhat.com> Date: Mon, 17 Jun 2013 19:10:00 -0000 Message-ID: Subject: Re: [RFC] Debug Methods in GDB Python From: Siva Chandra To: Tom Tromey Cc: gdb-patches Content-Type: multipart/mixed; boundary=001a1132ecb61a4dcc04df5e33c8 X-Gm-Message-State: ALoCoQn1jJapZC9PJ/WKhZq5aXuh91CdRXd9Wsyzq3chjA/SWIUai3J59V1e1GQwcXLv/m6yLqmu5FUoG+hPvHI+85WgNSzKAR+X6gKZ7Y4dvtHPbQNeXH85hXpPO1FCkOBlWxDJzBega9ONCppMAvrAbkPQyFborE7Pojnr2CwlCcgCnDDajWrU0I0XFQdSAPazoe5vbCSNAqcecWHxE541mtr9VjTduA== X-Virus-Found: No X-SW-Source: 2013-06/txt/msg00398.txt.bz2 --001a1132ecb61a4dcc04df5e33c8 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1589 Hi all, Took me longer than I had expected I but could spend some time last couple of weeks and address all of Tom's comments from last time. Like before, I do not have docs or tests as the Python side API is largely un-reviewed I guess. However, I have put in code comments in the latest version. The patch is attached and the ChangeLog is as below: 2013-06-17 Siva Chandra Reddy * Makefile.in: Add entries for new files * data-directory/Makefile.in: Add entery for new Python file * eval.c: Use new 'find_overload_match' signature. * ext-function.c: Support for working with functions/methods defined in an extension language. * ext-function.h: Support for working with functions/methods defined in an extension language. * python/lib/gdb/debugmethods.py: Python side of the support for debug methods in Python. * python/py-debugmethods.c: C side of the support for debug methods in Python. * python/py-objfile.c: Add 'debug_methods' attribute to gdb.Objfile. * python/python-internal.h: Add new function gdb.enable_debug_methods to the Python module 'gdb'. * python/python.c: Add new function gdb.enable_debug_methods to the Python module 'gdb'. * python/python.h: Add declarations of new functions. * valarith.c: Use methods defined in extension languages. * valops.c: Use methods defined in extension languages. * value.h: New signature for 'find_overload_match'. Thanks, Siva Chandra --001a1132ecb61a4dcc04df5e33c8 Content-Type: text/plain; charset=US-ASCII; name="dm_patch_v4.txt" Content-Disposition: attachment; filename="dm_patch_v4.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hi211otc0 Content-length: 84864 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCBhNjMzNmEyLi4wYjY0M2U3IDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0yODIsNiArMjgy LDcgQEAgU1VCRElSX1BZVEhPTl9PQlMgPSBcCiAJcHktYnJlYWtwb2ludC5v IFwKIAlweS1jbWQubyBcCiAJcHktY29udGludWVldmVudC5vIFwKKwlweS1k ZWJ1Z21ldGhvZHMubyBcCiAJcHktZXZlbnQubyBcCiAJcHktZXZ0cmVnaXN0 cnkubyBcCiAJcHktZXZ0cy5vIFwKQEAgLTMxNyw2ICszMTgsNyBAQCBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBc CiAJcHl0aG9uL3B5LWNtZC5jIFwKIAlweXRob24vcHktY29udGludWVldmVu dC5jIFwKKwlweXRob24vcHktZGVidWdtZXRob2RzLmMgXAogCXB5dGhvbi9w eS1ldmVudC5jIFwKIAlweXRob24vcHktZXZ0cmVnaXN0cnkuYyBcCiAJcHl0 aG9uL3B5LWV2dHMuYyBcCkBAIC03MjUsNyArNzI3LDcgQEAgU0ZJTEVTID0g YWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxw cmludC5jIGFkYS10YXNrcy5jIFwKIAlkd2FyZjJleHByLmMgZHdhcmYybG9j LmMgZHdhcmYycmVhZC5jIGR3YXJmMi1mcmFtZS5jIFwKIAlkd2FyZjItZnJh bWUtdGFpbGNhbGwuYyBcCiAJZWxmcmVhZC5jIGVudmlyb24uYyBldmFsLmMg ZXZlbnQtbG9vcC5jIGV2ZW50LXRvcC5jIFwKLQlleGNlcHRpb25zLmMgZXhw cHJpbnQuYyBcCisJZXhjZXB0aW9ucy5jIGV4cHByaW50LmMgZXh0LWZ1bmN0 aW9uLmMgXAogCWYtZXhwLnkgZi1sYW5nLmMgZi10eXBlcHJpbnQuYyBmLXZh bHByaW50LmMgZmlsZXN5c3RlbS5jIFwKIAlmaW5kY21kLmMgZmluZHZhci5j IGZyYW1lLmMgZnJhbWUtYmFzZS5jIGZyYW1lLXVud2luZC5jIFwKIAlnZGJh cmNoLmMgYXJjaC11dGlscy5jIGdkYl9iZmQuYyBnZGJfb2JzdGFjay5jIFwK QEAgLTgyNSw3ICs4MjcsNyBAQCByczYwMDAtdGRlcC5oIHJzNjAwMC1haXgt dGRlcC5oIFwKIGNvbW1vbi9nZGJfbG9jYWxlLmggY29tbW9uL2dkYl9kaXJl bnQuaCBhcmNoLXV0aWxzLmggdHJhZC1mcmFtZS5oIGdudS1uYXQuaCBcCiBs YW5ndWFnZS5oIG5ic2QtdGRlcC5oIHNvbGliLXN2cjQuaCBcCiBtYWNyb2V4 cC5oIHVpLWZpbGUuaCByZWdjYWNoZS5oIHRyYWNlcG9pbnQuaCBpMzg2LXRk ZXAuaCBcCi1pbmYtY2hpbGQuaCBwLWxhbmcuaCBldmVudC10b3AuaCBnZGJ0 eXBlcy5oIHVzZXItcmVncy5oIFwKK2luZi1jaGlsZC5oIHAtbGFuZy5oIGV2 ZW50LXRvcC5oIGV4dC1mdW5jdGlvbi5oIGdkYnR5cGVzLmggdXNlci1yZWdz LmggXAogcmVnZm9ybWF0cy9yZWdkZWYuaCBjb25maWcvYWxwaGEvbm0tb3Nm My5oICBjb25maWcvaTM4Ni9ubS1pMzg2Z251LmggXAogY29uZmlnL2kzODYv bm0tZmJzZC5oIFwKIGNvbmZpZy9ubS1udG8uaCBjb25maWcvc3BhcmMvbm0t c29sMi5oIGNvbmZpZy9ubS1saW51eC5oIFwKQEAgLTk0NCw3ICs5NDYsNyBA QCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZ T0JKKSBcCiAJaW5mZXJpb3IubyBvc2RhdGEubyBnZGJfdXNsZWVwLm8gcmVj b3JkLm8gcmVjb3JkLWZ1bGwubyBnY29yZS5vIFwKIAlnZGJfdmVjcy5vIGpp dC5vIHByb2dzcGFjZS5vIHNraXAubyBwcm9iZS5vIFwKIAljb21tb24tdXRp bHMubyBidWZmZXIubyBwdGlkLm8gZ2RiLWRsZmNuLm8gY29tbW9uLWFnZW50 Lm8gXAotCWZvcm1hdC5vIHJlZ2lzdHJ5Lm8gYnRyYWNlLm8gcmVjb3JkLWJ0 cmFjZS5vCisJZm9ybWF0Lm8gcmVnaXN0cnkubyBidHJhY2UubyByZWNvcmQt YnRyYWNlLm8gZXh0LWZ1bmN0aW9uLm8KIAogVFNPQlMgPSBpbmZsb3cubwog CkBAIC0yMTI0LDYgKzIxMjYsMTAgQEAgcHktY29udGludWVldmVudC5vOiAk KHNyY2RpcikvcHl0aG9uL3B5LWNvbnRpbnVlZXZlbnQuYwogCSQoQ09NUElM RSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWNvbnRp bnVlZXZlbnQuYwogCSQoUE9TVENPTVBJTEUpCiAKK3B5LWRlYnVnbWV0aG9k cy5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5jCisJJChD T01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHkt ZGVidWdtZXRob2RzLmMKKwkkKFBPU1RDT01QSUxFKQorCiBweS1ldmVudC5v OiAkKHNyY2RpcikvcHl0aG9uL3B5LWV2ZW50LmMKIAkkKENPTVBJTEUpICQo UFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1ldmVudC5jCiAJ JChQT1NUQ09NUElMRSkKZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9y eS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p bgppbmRleCBkZWM2MjA3Li4yMTJiOTU3IDEwMDY0NAotLS0gYS9nZGIvZGF0 YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KKysrIGIvZ2RiL2RhdGEtZGlyZWN0 b3J5L01ha2VmaWxlLmluCkBAIC02MCw2ICs2MCw3IEBAIFBZVEhPTl9GSUxF UyA9IFwKIAlnZGIvdHlwZXMucHkgXAogCWdkYi9wcmludGluZy5weSBcCiAJ Z2RiL3Byb21wdC5weSBcCisJZ2RiL2RlYnVnbWV0aG9kcy5weSBcCiAJZ2Ri L2NvbW1hbmQvX19pbml0X18ucHkgXAogCWdkYi9jb21tYW5kL2ZyYW1lX2Zp bHRlcnMucHkgXAogCWdkYi9jb21tYW5kL3R5cGVfcHJpbnRlcnMucHkgXApk aWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKaW5kZXggNTM5 NDg5Zi4uMDQ0NDMxMSAxMDA2NDQKLS0tIGEvZ2RiL2V2YWwuYworKysgYi9n ZGIvZXZhbC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAic3ltdGFi LmgiCiAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKICNpbmNsdWRlICJ2YWx1ZS5o IgorI2luY2x1ZGUgImV4dC1mdW5jdGlvbi5oIgogI2luY2x1ZGUgImV4cHJl c3Npb24uaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKICNpbmNsdWRlICJmcmFt ZS5oIgpAQCAtMTU5Miw3ICsxNTkzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTk9OX01FVEhPRCwgLyogbm90IG1ldGhv ZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5V TEwsIC8qIHBhc3MgTlVMTCBzeW1ib2wgc2luY2UKIAkJCQkJICAgICAgc3lt Ym9sIGlzIHVua25vd24gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCAmc3ltcCwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCwgJnN5bXAsIE5VTEwsIE5VTEwsIDApOwog CiAgICAgICAgICAgLyogTm93IGZpeCB0aGUgZXhwcmVzc2lvbiBiZWluZyBl dmFsdWF0ZWQuICAqLwogICAgICAgICAgIGV4cC0+ZWx0c1tzYXZlX3BvczEg KyAyXS5zeW1ib2wgPSBzeW1wOwpAQCAtMTYyMiwxMSArMTYyMywxMiBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKIAkgICAgICAvKiBMYW5ndWFnZSBpcyBDKyssIGRvIHNvbWUgb3Zl cmxvYWQgcmVzb2x1dGlvbiBiZWZvcmUKIAkJIGV2YWx1YXRpb24uICAqLwog CSAgICAgIHN0cnVjdCB2YWx1ZSAqdmFscCA9IE5VTEw7CisgICAgICAgICAg ICAgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZucCA9IE5VTEw7 CiAKIAkgICAgICAodm9pZCkgZmluZF9vdmVybG9hZF9tYXRjaCAoJmFyZ3Zl Y1sxXSwgbmFyZ3MsIHRzdHIsCiAJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1FVEhPRCwgLyogbWV0aG9kICovCiAJCQkJCSAgJmFyZzIs ICAvKiB0aGUgb2JqZWN0ICovCi0JCQkJCSAgTlVMTCwgJnZhbHAsIE5VTEws CisJCQkJCSAgTlVMTCwgJnZhbHAsIE5VTEwsICZleHRfZm5wLAogCQkJCQkg ICZzdGF0aWNfbWVtZnVuY3AsIDApOwogCiAJICAgICAgaWYgKG9wID09IE9Q X1NDT1BFICYmICFzdGF0aWNfbWVtZnVuY3ApCkBAIC0xNjM2LDkgKzE2Mzgs MjYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCiAJCQkgICAiYHRoaXMnIHBvaW50ZXIiKSwKIAkJCSBm dW5jdGlvbl9uYW1lKTsKIAkJfQotCSAgICAgIGFyZ3ZlY1sxXSA9IGFyZzI7 CS8qIHRoZSBgYHRoaXMnJyBwb2ludGVyICovCi0JICAgICAgYXJndmVjWzBd ID0gdmFscDsJLyogVXNlIHRoZSBtZXRob2QgZm91bmQgYWZ0ZXIgb3Zlcmxv YWQKLQkJCQkgICByZXNvbHV0aW9uLiAgKi8KKworICAgICAgICAgICAgICBp ZiAoZXh0X2ZucCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICBpZiAoZXh0X2ZuX2lzX21ldGhvZCAoZXh0X2ZucCkpCisgICAgICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg dmFsdWUgKnJldF92YWw7CisKKyAgICAgICAgICAgICAgICAgICAgICByZXRf dmFsID0gZXh0X2ZuX2ludm9rZV9tZXRob2QgKGV4dF9mbnAsIGFyZzIsIGFy Z3ZlYyArIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYXJncyAtIDEpOworICAgICAgICAgICAg ICAgICAgICAgIGlmIChyZXRfdmFsID09IE5VTEwpCisgICAgICAgICAgICAg ICAgICAgICAgICBlcnJvciAoXygiRXJyb3IgaW52b2tpbmcgZGVidWcgbWV0 aG9kIGZvciBtZXRob2QgJXMuIiksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHN0cik7CisKKyAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0X3ZhbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgICBhcmd2ZWNbMV0gPSBhcmcyOyAg ICAgLyogdGhlIGBgdGhpcycnIHBvaW50ZXIgKi8KKyAgICAgICAgICAgICAg YXJndmVjWzBdID0gdmFscDsgICAgIC8qIFVzZSB0aGUgbWV0aG9kIGZvdW5k IGFmdGVyIG92ZXJsb2FkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNvbHV0aW9uLiAgKi8KIAkgICAgfQogCSAgZWxzZQog CSAgICAvKiBOb24tQysrIGNhc2UgLS0gb3Igbm8gb3ZlcmxvYWQgcmVzb2x1 dGlvbi4gICovCkBAIC0xNjk3LDcgKzE3MTYsNyBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKIAkJCQkJ ICBOVUxMLCAgICAgICAgLyogbm8gbmVlZCBmb3IgbmFtZSAqLwogCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05fTUVUSE9ELCAgLyog bm90IG1ldGhvZCAqLwogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCBmdW5jdGlvbiwgLyogdGhlIGZ1bmN0aW9uICovCi0JCQkJ CSAgTlVMTCwgJnN5bXAsIE5VTEwsIG5vX2FkbCk7CisJCQkJCSAgTlVMTCwg JnN5bXAsIE5VTEwsIE5VTEwsIG5vX2FkbCk7CiAKIAkgICAgICBpZiAob3Ag PT0gT1BfVkFSX1ZBTFVFKQogCQl7CmRpZmYgLS1naXQgYS9nZGIvZXh0LWZ1 bmN0aW9uLmMgYi9nZGIvZXh0LWZ1bmN0aW9uLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzMDc5OAotLS0gL2Rldi9udWxsCisr KyBiL2dkYi9leHQtZnVuY3Rpb24uYwpAQCAtMCwwICsxLDE3MiBAQAorLyog U3VwcG9ydCBmb3IgZnVuY3Rpb25zIGRlZmluZWQgaW4gZXh0ZW5zaW9uIGxh bmd1YWdlcy4KKworICAgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNs dWRlICJkZWZzLmgiCisjaW5jbHVkZSAiY2xlYW51cHMuaCIKKyNpbmNsdWRl ICJleHQtZnVuY3Rpb24uaCIKKworI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIK KyNpbmNsdWRlICJ2ZWMuaCIKKworc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9y CisgIHsKKyAgICBzdHJ1Y3QgZXh0X2xhbmcgKmxhbmc7CisKKyAgICBpbnQg aXNfbWV0aG9kOworCisgICAgdm9pZCAqZXh0X29iamVjdDsKKyAgfTsKKwor dHlwZWRlZiBzdHJ1Y3QgZXh0X2xhbmcgKmV4dF9sYW5nX3A7CitERUZfVkVD X1AgKGV4dF9sYW5nX3ApOworc3RhdGljIFZFQyAoZXh0X2xhbmdfcCkgKmV4 dF9sYW5nX3ZlYyA9IE5VTEw7CisKKy8qIFJlZ2lzdGVycyBhbiBleHRlbnNp b24gbGFuZ3VhZ2Ugd2l0aCBHREIuICAqLworCit2b2lkCityZWdpc3Rlcl9l eHRfbGFuZyAoc3RydWN0IGV4dF9sYW5nICpsYW5nKQoreworICBpZiAoZXh0 X2xhbmdfdmVjID09IE5VTEwpCisgICAgZXh0X2xhbmdfdmVjID0gVkVDX2Fs bG9jIChleHRfbGFuZ19wLCAxKTsKKyAgICAgIAorICBWRUNfc2FmZV9wdXNo IChleHRfbGFuZ19wLCBleHRfbGFuZ192ZWMsIGxhbmcpOworfQorCisvKiBS ZXR1cm5zIGEgbmV3IGV4dF9mbl9kZXNjcmlwdG9yIG9iamVjdC4gIExBTkcg aXMgdGhlIGV4dGVudGlvbiBsYW5ndWFnZSB0aGUKKyAgIG5ldyBleHRlbnNp b24gZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaW4uICBJU19NRVRIT0QgaW5k aWNhdGVzIHdoZXRoZXIgdGhlCisgICBuZXcgZXh0ZW5zaW9uIGZ1bmN0aW9u IGlzIGEgbWV0aG9kLiAgRVhUX09CSiBpcyB0aGUgZXh0ZW5zaW9uIGxhbmd1 YWdlCisgICBzcGVjaWZpYyBkYXRhIHRvIGJlIGVuY2Fwc3VsYXRlZCBpbiB0 aGUgZXh0X2ZuX2Rlc2NyaXB0b3IuICAqLworCitzdHJ1Y3QgZXh0X2ZuX2Rl c2NyaXB0b3IgKgorbmV3X2V4dF9mdW5jdGlvbiAoc3RydWN0IGV4dF9sYW5n ICpsYW5nLCBpbnQgaXNfbWV0aG9kLCB2b2lkICpleHRfb2JqKQoreworICBz dHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiA9IFhDTkVXIChzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IpOworCisgIGV4dF9mbi0+aXNfbWV0aG9k ID0gaXNfbWV0aG9kOworICBleHRfZm4tPmxhbmcgPSBsYW5nOworICBleHRf Zm4tPmV4dF9vYmplY3QgPSBleHRfb2JqOworCisgIHJldHVybiBleHRfZm47 Cit9CisKKy8qIENsb25lcyBFWFRfRk4gYW5kIHJldHVybnMgYSBuZXcgYnV0 IGlkZW50aWNhbCBleHRfZm5fZGVzY3JpcHRvci4gICovCisKK3N0cnVjdCBl eHRfZm5fZGVzY3JpcHRvciAqCitleHRfZm5fY2xvbmUgKHN0cnVjdCBleHRf Zm5fZGVzY3JpcHRvciAqZXh0X2ZuKQoreworICBzdHJ1Y3QgZXh0X2ZuX2Rl c2NyaXB0b3IgKm5ld19leHRfZm47CisgIHN0cnVjdCBleHRfbGFuZyAqbGFu ZyA9IGV4dF9mbi0+bGFuZzsKKworICBuZXdfZXh0X2ZuID0gbmV3X2V4dF9m dW5jdGlvbiAobGFuZywgZXh0X2ZuLT5pc19tZXRob2QsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsYW5nLT5jbG9uZV9leHRfb2JqZWN0 IChleHRfZm4tPmV4dF9vYmplY3QpKTsKKworICByZXR1cm4gbmV3X2V4dF9m bjsKK30KKworLyogSWYgYSBtZXRob2Qgb2YgbmFtZSBNRVRIT0QgaXMgdG8g YmUgaW52b2tlZCBvbiBhbiBvYmplY3Qgb2YgdHlwZSBUWVBFLCB0aGVuCisg ICBhbGwgZW50ZW5zaW9uIGxhbmd1YWdlcyBhcmUgc2VhcmNoZWQgZm9yIGlt cGxlbWVudGF0aW9ucyBvZiBtZXRob2RzIHdpdGggCisgICBuYW1lIE1FVEhP RCBpbiB0aGUgZXh0ZW5zaW9uIGxhbmd1YWdlcy4gIEFsbCBtYXRjaGVzIGZv dW5kIGFyZSByZXR1cm5lZCBhcworICAgYSB2ZWN0b3IgJ3N0cnVjdCBlbnRf Zm5fZGVzY3JpcHRvcicgb2JqZWN0cy4gIElmIG5vIG1hdGNoaW5nIG1ldGhv ZHMgYXJlCisgICBmb3VuZCwgTlVMTCBpcyByZXR1cm5lZC4gICovCisKK1ZF QyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKgorZ2V0X21hdGNoaW5nX2V4dF9t ZXRob2RzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbWV0aG9k KQoreworICBWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3ApICpleHRfbWV0aG9k cyA9IE5VTEw7CisgIGV4dF9sYW5nX3AgbGFuZzsKKyAgaW50IGk7CisKKyAg Zm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGV4dF9sYW5nX3AsIGV4dF9sYW5n X3ZlYywgaSwgbGFuZyk7IGkrKykKKyAgICB7CisgICAgICBWRUMgKGV4dF9m bl9kZXNjcmlwdG9yX3ApICpsYW5nX21ldGhvZHMsICpuZXdfdmVjOworCisg ICAgICBsYW5nX21ldGhvZHMgPSBsYW5nLT5nZXRfbWF0Y2hpbmdfZXh0X21l dGhvZHMgKHR5cGUsIG1ldGhvZCk7CisgICAgICBuZXdfdmVjID0gVkVDX21l cmdlIChleHRfZm5fZGVzY3JpcHRvcl9wLCBleHRfbWV0aG9kcywgbGFuZ19t ZXRob2RzKTsKKworICAgICAgVkVDX2ZyZWUgKGV4dF9mbl9kZXNjcmlwdG9y X3AsIGV4dF9tZXRob2RzKTsKKyAgICAgIFZFQ19mcmVlIChleHRfZm5fZGVz Y3JpcHRvcl9wLCBsYW5nX21ldGhvZHMpOworICAgICAgZXh0X21ldGhvZHMg PSBuZXdfdmVjOworICAgIH0KKworICByZXR1cm4gZXh0X21ldGhvZHM7Cit9 CisKKy8qIEdpdmVuIGFuIGZ1bmN0aW9uIEVYVF9GTiBpbXBsZW1lbnRlZCBp biBhbiBleHRlbnNpb24gbGFuZ3VhZ2UsIHJldHVybnMgYW4KKyAgIGFycmF5 IG9mIHR5cGVzIG9mIHRoZSBhcmd1bWVudHMgdGhlIGZ1bmN0aW9uIGFjY2Vw dHMuICBUaGUgbGVuZ3RoIG9mIHRoZQorICAgYXJyYXkgaXMgcmV0dXJuZWQg aW4gTkFSR1MuICBUaGUgdHlwZSBvZiB0aGUgJ3RoaXMnIG9iamVjdCBpcyBy ZXR1cm5lZCBhcworICAgdGhlIGZpcnN0IGFyZ3VtZW50IGlmIEVYVF9GTiBp cyBhIG1ldGhvZC4gIElmIEVYVF9GTiBkb2VzIG5vdCB0YWtlIGFueQorICAg YXJndW1lbnRzLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQgd2l0aCAwIGluIE5B UkdTLiAgKi8KKworc3RydWN0IHR5cGUgKioKK2V4dF9mbl9nZXRfYXJndHlw ZXMgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZuLCBpbnQgKm5h cmdzKQoreworICBnZGJfYXNzZXJ0IChleHRfZm4gJiYgZXh0X2ZuLT5sYW5n ICYmIGV4dF9mbi0+bGFuZy0+Z2V0X2V4dF9mbl9hcmd0eXBlcyk7CisKKyAg cmV0dXJuIGV4dF9mbi0+bGFuZy0+Z2V0X2V4dF9mbl9hcmd0eXBlcyAoZXh0 X2ZuLT5leHRfb2JqZWN0LCBuYXJncyk7Cit9CisKKy8qIElmIEVYVF9GTiBp cyBhIG1ldGhvZCBpbXBsZW1lbnRlZCBpbiBhbiBleHRlbnNpb24gbGFuZ3Vh Z2UsIGludm9rZXMgIGl0IGFuZAorICAgcmV0dXJucyB0aGUgcmVzdWx0aW5n IHZhbHVlLiAgVGhlIG1ldGhvZCBpcyBpbnZva2VkIG9uIE9CSiB3aXRoIGFy Z3VtZW50cworICAgQVJHUy4gIE5BUkdTIGlzIHRoZSBsZW5ndGggb2YgdGhl IEFSR1MgYXJyYXkuICAqLworCitzdHJ1Y3QgdmFsdWUgKgorZXh0X2ZuX2lu dm9rZV9tZXRob2QgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2Zu LCBzdHJ1Y3QgdmFsdWUgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MpCit7CisgIGdkYl9hc3Nl cnQgKGV4dF9mbiAmJiBleHRfZm4tPmlzX21ldGhvZCAmJiBleHRfZm4tPmxh bmcKKyAgICAgICAgICAgICAgJiYgZXh0X2ZuLT5sYW5nLT5pbnZva2VfbWV0 aG9kKTsKKworICByZXR1cm4gZXh0X2ZuLT5sYW5nLT5pbnZva2VfbWV0aG9k IChleHRfZm4tPmV4dF9vYmplY3QsIG9iaiwgYXJncywgbmFyZ3MpOworfQor CisvKiBSZXR1cm5zIHRydWUgaWYgRVhUX0ZOIGlzIGEgbWV0aG9kLCAwIG90 aGVyd2lzZS4gICovCisKK2ludAorZXh0X2ZuX2lzX21ldGhvZCAoc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm4pCit7CisgIGlmIChleHRfZm4g IT0gTlVMTCkKKyAgICByZXR1cm4gZXh0X2ZuLT5pc19tZXRob2Q7CisKKyAg cmV0dXJuIDA7Cit9CisKKy8qIEZyZWVzIGEgdmVjdG9yIG9mIGV4dF9mbl9k ZXNjcmlwdG9ycyBWRUMuICAqLworCitzdGF0aWMgdm9pZAorZXh0X2ZuX3Zl Y19mcmVlICh2b2lkICp2ZWMpCit7CisgIGludCBpOworICBzdHJ1Y3QgZXh0 X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbjsKKyAgVkVDIChleHRfZm5fZGVzY3Jp cHRvcl9wKSAqdiA9IChWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3ApICopIHZl YzsKKworICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoZXh0X2ZuX2Rlc2Ny aXB0b3JfcCwgdiwgaSwgZXh0X2ZuKTsgaSsrKQorICAgIHsKKyAgICAgIGV4 dF9mbi0+bGFuZy0+ZnJlZV9leHRfb2JqIChleHRfZm4tPmV4dF9vYmplY3Qp OworICAgICAgeGZyZWUgKGV4dF9mbik7CisgICAgfQorfQorCisvKiBSZXR1 cm4gYSBjbGVhbnVwIG9iamVjdCB0byBmcmVlIGEgdmVjdG9yIFZFQyBvZiBl eHRlbnNpb24gZnVuY3Rpb24KKyAgIGRlc2NyaXB0b3JzLiAgKi8KKworc3Ry dWN0IGNsZWFudXAgKgorbWFrZV9leHRfZm5fdmVjX2NsZWFudXAgKFZFQyAo ZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKnZlYykKK3sKKyAgcmV0dXJuIG1ha2Vf Y2xlYW51cCAoZXh0X2ZuX3ZlY19mcmVlLCAodm9pZCAqKSB2ZWMpOworfQpk aWZmIC0tZ2l0IGEvZ2RiL2V4dC1mdW5jdGlvbi5oIGIvZ2RiL2V4dC1mdW5j dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQy Y2RhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvZXh0LWZ1bmN0aW9uLmgK QEAgLTAsMCArMSw3NiBAQAorLyogU3VwcG9ydCBmb3IgZnVuY3Rpb25zIGRl ZmluZWQgaW4gZXh0ZW5zaW9uIGxhbmd1YWdlcy4KKworICAgQ29weXJpZ2h0 IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisKKyNpZiAhZGVmaW5lZCAoRVhUX0ZVTkNUSU9OX0gp CisjZGVmaW5lIEVYVF9GVU5DVElPTl9ICisKKyNpbmNsdWRlICJ2ZWMuaCIK Kworc3RydWN0IGNsZWFudXA7CitzdHJ1Y3QgdmFsdWU7CitzdHJ1Y3QgdHlw ZTsKK3N0cnVjdCBleHRfZm5fZGVzY3JpcHRvcjsKKwordHlwZWRlZiBzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbl9kZXNjcmlwdG9yX3A7CitE RUZfVkVDX1AgKGV4dF9mbl9kZXNjcmlwdG9yX3ApOwordHlwZWRlZiBWRUMg KGV4dF9mbl9kZXNjcmlwdG9yX3ApIGV4dF9mbl92ZWM7CisKK3R5cGVkZWYg c3RydWN0IHZhbHVlKiAoaW52b2tlX21ldGhvZF9mdHlwZSkgKHZvaWQgKmV4 dF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgdmFsdWUgKiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKiwgaW50 IG5hcmdzKTsKKwordHlwZWRlZiB2b2lkICogKGNsb25lX2V4dF9vYmpfZnR5 cGUpICh2b2lkICpleHRfb2JqKTsKKwordHlwZWRlZiB2b2lkIChmcmVlX2V4 dF9vYmpfZnR5cGUpICh2b2lkICpleHRfb2JqKTsKKwordHlwZWRlZiBleHRf Zm5fdmVjICooZ2V0X21hdGNoaW5nX2V4dF9tZXRob2RzX2Z0eXBlKSAoc3Ry dWN0IHR5cGUgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2Qp OworCit0eXBlZGVmIHN0cnVjdCB0eXBlKiogKGdldF9leHRfZm5fYXJndHlw ZXNfZnR5cGUpICh2b2lkICpleHRfb2JqLCBpbnQgKm5hcmdzKTsKKworc3Ry dWN0IGV4dF9sYW5nCisgIHsKKyAgICBjbG9uZV9leHRfb2JqX2Z0eXBlICpj bG9uZV9leHRfb2JqZWN0OworICAgIGZyZWVfZXh0X29ial9mdHlwZSAqZnJl ZV9leHRfb2JqOworICAgIGdldF9tYXRjaGluZ19leHRfbWV0aG9kc19mdHlw ZSAqZ2V0X21hdGNoaW5nX2V4dF9tZXRob2RzOworICAgIGdldF9leHRfZm5f YXJndHlwZXNfZnR5cGUgKmdldF9leHRfZm5fYXJndHlwZXM7CisgICAgaW52 b2tlX21ldGhvZF9mdHlwZSAqaW52b2tlX21ldGhvZDsKKyAgfTsKKworZXh0 ZXJuIHZvaWQgcmVnaXN0ZXJfZXh0X2xhbmcgKHN0cnVjdCBleHRfbGFuZyAq bGFuZyk7CisKK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKmV4dF9mbl9pbnZva2Vf bWV0aG9kIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFs dWUgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgdmFsdWUgKiosIGludCBuYXJncyk7CisKK2V4dGVybiBz dHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbl9jbG9uZSAoc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICopOworCitleHRlcm4gc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICpuZXdfZXh0X2Z1bmN0aW9uIChzdHJ1Y3QgZXh0X2xh bmcgKmxhbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgaXNfbWV0aG9kLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq ZXh0X29iaik7CisKK2V4dGVybiBleHRfZm5fdmVjICpnZXRfbWF0Y2hpbmdf ZXh0X21ldGhvZHMgKHN0cnVjdCB0eXBlICosIGNvbnN0IGNoYXIgKik7CisK K2V4dGVybiBzdHJ1Y3QgdHlwZSAqKmV4dF9mbl9nZXRfYXJndHlwZXMgKHN0 cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqLCBpbnQgKik7CisKK2V4dGVybiBp bnQgZXh0X2ZuX2lzX21ldGhvZCAoc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9y ICopOworCitleHRlcm4gc3RydWN0IGNsZWFudXAqIG1ha2VfZXh0X2ZuX3Zl Y19jbGVhbnVwIChWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3ApICp2ZWMpOwor CisjZW5kaWYgLyogRVhUX0ZVTkNUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vbGliL2dkYi9kZWJ1Z21ldGhvZHMucHkgYi9nZGIvcHl0aG9u L2xpYi9nZGIvZGVidWdtZXRob2RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjdkMGE4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvZGVidWdtZXRob2RzLnB5CkBAIC0wLDAgKzEs MTE4IEBACisjIFB5dGhvbiBzaWRlIG9mIHRoZSBzdXBwb3J0IGZvciBkZWJ1 ZyBtZXRob2RzLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyIiIlV0 aWxpdGllcyBmb3IgZGVmaW5pbmcgZGVidWcgbWV0aG9kcyIiIgorCitpbXBv cnQgZ2RiCitpbXBvcnQgcmUKKworREVGQVVMVF9ERUJVR19NRVRIT0RfR1JP VVAgPSAnREVGQVVMVF9ERUJVR19NRVRIT0RfR1JPVVAnCisKKworY2xhc3Mg RGVidWdNZXRob2Qob2JqZWN0KToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBh bGwgZGVidWcgbWV0aG9kcyBkZWZpbmVkIGluIFB5dGhvbi4KKworICAgIEEg ZGVidWcgbWV0aG9kIGRlZmluZWQgaW4gUHl0aG9uIHNob3VsZCBiZSBkZXJp dmVkIGZyb20gdGhpcyBjbGFzcy4gIFRoZQorICAgIGRlcml2ZWQgY2xhc3Nl cyBzaG91bGQgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgJ21hdGNoJywgJ2dldF9h cmd0eXBlcycgYW5kCisgICAgJ2ludm9rZScuCisKKyAgICBJbnRlcm5hbGx5 LCBHREIgZmlyc3QgaW52b2tlcyB0aGUgJ21hdGNoJyBtZXRob2QgdG8gbWF0 Y2ggdGhlIGNsYXNzIHR5cGUKKyAgICBhbmQgdGhlIG1ldGhvZCBuYW1lLiAg SXQgbmV4dCBnZXQgdGhlIGFyZ3VtZW50IHR5cGVzIG9mIHRoZXNlIG1ldGhv ZHMgdmlhCisgICAgdGhlICdnZXRfYXJndHlwZXMnIG1ldGhvZCB0byBwZXJm b3JtIG92ZXJsb2FkIHJlc29sdXRpb24uCisgICAgIiIiCisKKyAgICBkZWYg X19pbml0X18oc2VsZiwgbmFtZSwgZ3JvdXA9REVGQVVMVF9ERUJVR19NRVRI T0RfR1JPVVApOgorICAgICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIG5hbWU6IEFuIGlkZW50aWZ5aW5nIG5hbWUgZm9yIHRoZSBkZWJ1 ZyBtZXRob2QuCisgICAgICAgICAgICBncm91cDogVGhlIGdyb3VwIG5hbWUg b2YgdGhlIGdyb3VwIHRvIHdoaWNoIHRoZSBkZWJ1ZyBtZXRob2QKKyAgICAg ICAgICAgICAgICAgICBiZWxvbmdzIHRvLgorICAgICAgICAiIiIKKyAgICAg ICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmdyb3VwID0gZ3Jv dXAKKyAgICAgICAgc2VsZi5lbmFibGVkID0gVHJ1ZQorCisgICAgZGVmIG1h dGNoKHNlbGYsIGNsYXNzX3R5cGUsIG1ldGhvZF9uYW1lKToKKyAgICAgICAg IiIiTWF0Y2ggY2xhc3MgdHlwZSBhbmQgbWV0aG9kIG5hbWUuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGNsYXNzX3R5cGU6IFRoZSBjbGFzcyB0 eXBlIHRvIG1hdGNoCisgICAgICAgICAgICBtZXRob2RfbmFtZTogVGhlIG5h bWUgb2YgdGhlIG1ldGhvZCB0byBtYXRjaC4KKyAgICAgICAgIiIiCisgICAg ICAgIGdkYi5HZGJFcnJvcignRVJST1I6IEludm9raW5nIGFic3RyYWN0IG1l dGhvZCBcJ21hdGNoXCcuJykKKworICAgIGRlZiBnZXRfYXJndHlwZXMoc2Vs ZiwgY2xhc3NfdHlwZSwgbWV0aG9kX25hbWUpOgorICAgICAgICAiIiJSZXR1 cm4gYSBsaXN0IG9mIHR5cGVzLCBhcyBnZGIuVHlwZSBvYmplY3RzLCBvZiB0 aGUgYXJndW1lbnRzIG9mCisgICAgICAgICAgIHRoZSBkZWJ1ZyBtZXRob2Qu CisKKyAgICAgICAgQXJnczogCisgICAgICAgICAgICBjbGFzc190eXBlOiBU aGUgZ2RiLlR5cGUgdmFsdWUgb2YgdGhlIGNsYXNzIG9uIHdoaWNoIHRoZSBt ZXRob2QKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGRlZmluZWQuCisg ICAgICAgICAgICBtZXRob2RfbmFtZTogVGhlIG5hbWUgb2YgdGhlIG1ldGhv ZCB3aG9zZSBhcmd1bWVudCB0eXBlcyBhcmUgdG8KKyAgICAgICAgICAgICAg ICAgICAgICAgICBiZSByZXR1cm5lZC4KKyAgICAgICAgIiIiCisgICAgICAg IGdkYi5HZGJFcnJvcignRVJST1I6IEludm9raW5nIGFic3RyYWN0IG1ldGhv ZCBcJ2dldF9hcmd0eXBlc1wnLicpCisKKyAgICBkZWYgaW52b2tlKHNlbGYs IG9iaiwgYXJncyk6CisgICAgICAgICIiIkludm9rZSB0aGUgZGVidWcgbWV0 aG9kLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvYmo6IFRoZSBn ZGIuVmFsdWUgb2YgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kIGlz IHRvIGJlCisgICAgICAgICAgICAgICAgIGludm9rZWQuCisgICAgICAgICAg ICBhcmdzOiBUaGUgdHVwbGUgb2YgYXJndW1lbnRzIHRvIHRoZSBtZXRob2Qu CisgICAgICAgICIiIgorICAgICAgICBnZGIuR2RiRXJyb3IoJ0VSUk9SOiBJ bnZva2luZyBhYnN0cmFjdCBtZXRob2QgXCdpbnZva2VcJy4nKQorCisKK2Ns YXNzIFNpbXBsZURlYnVnTWV0aG9kKERlYnVnTWV0aG9kKToKKyAgICAiIiJU aGlzIGlzIGEgdXRpbGl0eSBjbGFzcyB3aGljaCBkb2VzIG5hbWUgbWF0Y2gg YnkgY2xhc3MgbmFtZSBvZiB0aGUKKyAgICBvYmplY3RzIG9uIHdoaWNoIHRo ZSBkZWJ1ZyBtZXRob2RzIGFyZSBkZWZpbmVkLgorICAgICIiIgorICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBncm91cCwgbWV0aG9kX2Z1bmN0aW9u LCBjbGFzc19tYXRjaGVyLAorICAgICAgICAgICAgICAgICBtZXRob2RfbWF0 Y2hlciwgKmFyZ3R5cGVzKToKKyAgICAgICAgRGVidWdNZXRob2QuX19pbml0 X18oc2VsZiwgbmFtZSwgZ3JvdXApCisgICAgICAgIHNlbGYuX21ldGhvZF9m dW5jdGlvbiA9IG1ldGhvZF9mdW5jdGlvbgorICAgICAgICBzZWxmLl9jbGFz c19tYXRjaGVyID0gY2xhc3NfbWF0Y2hlcgorICAgICAgICBzZWxmLl9tZXRo b2RfbWF0Y2hlciA9IG1ldGhvZF9tYXRjaGVyCisgICAgICAgIHNlbGYuX2Fy Z3R5cGVzID0gYXJndHlwZXMKKworICAgIGRlZiBtYXRjaChzZWxmLCBjbGFz c190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgICAgIGNtID0gcmUubWF0Y2go c2VsZi5fY2xhc3NfbWF0Y2hlciwgc3RyKGNsYXNzX3R5cGUudW5xdWFsaWZp ZWQoKS50YWcpKQorICAgICAgICBtbSA9IHJlLm1hdGNoKHNlbGYuX21ldGhv ZF9tYXRjaGVyLCBtZXRob2RfbmFtZSkKKyAgICAgICAgaWYgY20gYW5kIG1t OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGdldF9hcmd0eXBl cyhzZWxmLCBjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgICAgIHJl dHVybiBzZWxmLl9hcmd0eXBlcworCisgICAgZGVmIGludm9rZShzZWxmLCBv YmosIGFyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWV0aG9kX2Z1bmN0 aW9uKG9iaiwgKmFyZ3MpCisKKworZGVmIHJlZ2lzdGVyX2RlYnVnX21ldGhv ZHMob2JqZmlsZSwgZGVidWdfbWV0aG9kcyk6CisgICAgZXhpc3RpbmdfbWV0 aG9kX2xpc3QgPSBbXQorICAgIGZvciBuZXdfbWV0aG9kIGluIGRlYnVnX21l dGhvZHM6CisgICAgICAgIGZvciBvbGRfbWV0aG9kIGluIG9iamZpbGUuZGVi dWdfbWV0aG9kczoKKyAgICAgICAgICAgIGlmIChuZXdfbWV0aG9kLmdyb3Vw ID09IG9sZF9tZXRob2QuZ3JvdXAgYW5kCisgICAgICAgICAgICAgICAgbmV3 X21ldGhvZC5uYW1lID09IG9sZF9tZXRob2QubmFtZSk6CisgICAgICAgICAg ICAgICAgcHJpbnQgKCdXQVJOSU5HOiBSZXBsYWNpbmcgZGVidWcgbWV0aG9k IHdpdGggbmFtZSAiJXMiIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAg J2dyb3VwICIlcyIuJyAlIChvbGRfbWV0aG9kLm5hbWUsIG9sZF9tZXRob2Qu Z3JvdXApKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nX21ldGhvZF9saXN0 LmFwcGVuZChvbGRfbWV0aG9kKQorICAgIGZvciBvbGRfbWV0aG9kIGluIGV4 aXN0aW5nX21ldGhvZF9saXN0OgorICAgICAgICBvYmpmaWxlLmRlYnVnX21l dGhvZHMucmVtb3ZlKG9sZF9tZXRob2QpCisgICAgb2JqZmlsZS5kZWJ1Z19t ZXRob2RzLmV4dGVuZChkZWJ1Z19tZXRob2RzKQpkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9weS1kZWJ1Z21ldGhvZHMuYyBiL2dkYi9weXRob24vcHktZGVi dWdtZXRob2RzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMzhjMWI2OQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9weXRob24vcHkt ZGVidWdtZXRob2RzLmMKQEAgLTAsMCArMSw1MDggQEAKKy8qIFN1cHBvcnQg Zm9yIGRlYnVnIG1ldGhvZHMgaW4gUHl0aG9uLgorCisgICBDb3B5cmlnaHQg KEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJh cmNoLXV0aWxzLmgiCisjaW5jbHVkZSAiZXh0LWZ1bmN0aW9uLmgiCisjaW5j bHVkZSAib2JqZmlsZXMuaCIKKyNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1 ZGUgImxhbmd1YWdlLmgiCisjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgi CisjaW5jbHVkZSAicHl0aG9uLmgiCisKK3N0cnVjdCBweV9leHRfb2JqZWN0 Cit7CisgIC8qIEhvbGRzIGFuIGluc3RhbmNlIG9mIHRoZSBEZWJ1Z01ldGhv ZCBjbGFzcy4gICovCisgIFB5T2JqZWN0ICpvYmplY3Q7CisKKyAgLyogSG9s ZHMgdGhlIHR5cGUgb2YgdGhlICd0aGlzJyBvYmplY3QuICAqLworICBQeU9i amVjdCAqbWF0Y2hfcHlfb2JqX3R5cGU7CisKKyAgLyogSG9sZHMgdGhlIG1h dGNoaW5nIG1ldGhvZCBuYW1lLiAgKi8KKyAgY29uc3QgY2hhciAqbWF0Y2hf bWV0aG9kOworfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmVuYWJsZWRfZmll bGRfbmFtZSA9ICJlbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyICptYXRj aF9tZXRob2RfbmFtZSA9ICJtYXRjaCI7CitzdGF0aWMgY29uc3QgY2hhciAq Z2V0X2FyZ3R5cGVzX21ldGhvZF9uYW1lID0gImdldF9hcmd0eXBlcyI7Citz dGF0aWMgY29uc3QgY2hhciAqaW52b2tlX21ldGhvZF9uYW1lID0gImludm9r ZSI7CisKK3N0YXRpYyBQeU9iamVjdCAqbWF0Y2hfbWV0aG9kX3B5c3RyaW5n ID0gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqZ2V0X2FyZ3R5cGVzX21ldGhv ZF9weXN0cmluZyA9IE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKmludm9rZV9t ZXRob2RfcHlzdHJpbmcgPSBOVUxMOworCitzdGF0aWMgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICpuZXdfcHl0aG9uX2V4dF9tZXRob2QgKFB5T2JqZWN0 ICppdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHlfb2JqX3R5cGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZCk7CisKKy8qIEltcGxlbWVu dGF0aW9uIG9mIGZyZWVfZXh0X29ial9mdHlwZS4gICovCisKK3N0YXRpYyB2 b2lkCitweV9mcmVlX2V4dF9vYmplY3QgKHZvaWQgKmV4dF9vYmplY3QpCit7 CisgIHN0cnVjdCBweV9leHRfb2JqZWN0ICpvID0gKHN0cnVjdCBweV9leHRf b2JqZWN0ICopIGV4dF9vYmplY3Q7CisKKyAgUHlfWERFQ1JFRiAoby0+b2Jq ZWN0KTsKKyAgUHlfWERFQ1JFRiAoby0+bWF0Y2hfcHlfb2JqX3R5cGUpOwor ICB4ZnJlZSAobyk7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIGNsb25l X2V4dF9vYmpfZnR5cGUuICAqLworCitzdGF0aWMgdm9pZCAqCitweV9jbG9u ZV9leHRfb2JqZWN0ICh2b2lkICpvYmopCit7CisgIHN0cnVjdCBweV9leHRf b2JqZWN0ICpuZXdfb2JqLCAqb2xkX29iajsKKworICBvbGRfb2JqID0gKHN0 cnVjdCBweV9leHRfb2JqZWN0ICopIG9iajsKKworICBuZXdfb2JqID0gWENO RVcgKHN0cnVjdCBweV9leHRfb2JqZWN0KTsKKyAgbmV3X29iai0+b2JqZWN0 ID0gb2xkX29iai0+b2JqZWN0OworICBuZXdfb2JqLT5tYXRjaF9weV9vYmpf dHlwZSA9IG9sZF9vYmotPm1hdGNoX3B5X29ial90eXBlOworICBuZXdfb2Jq LT5tYXRjaF9tZXRob2QgPSBvbGRfb2JqLT5tYXRjaF9tZXRob2Q7CisKKyAg UHlfWElOQ1JFRiAobmV3X29iai0+b2JqZWN0KTsKKyAgUHlfWElOQ1JFRiAo bmV3X29iai0+bWF0Y2hfcHlfb2JqX3R5cGUpOworCisgIHJldHVybiAodm9p ZCAqKSBuZXdfb2JqOworfQorCisvKiBSZXR1cm5zIHRydWUgaWYgZ2RiLlR5 cGUgb2JqZWN0IFBZX09CSl9UWVBFIGhhcyBhIG1ldGhvZCBkZWZpbmVkIGlu IFB5dGhvbgorICAgd2l0aCBuYW1lIE1FVEhPRF9OQU1FLiAgKi8KKworc3Rh dGljIGludAoraXNfbWF0Y2hpbmdfZGVidWdfbWV0aG9kIChQeU9iamVjdCAq ZG1fb2JqLCBQeU9iamVjdCAqcHlfb2JqX3R5cGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZF9uYW1lKQoreworICBQ eU9iamVjdCAqbWV0aG9kX25hbWVfcHlzdHJpbmc7CisgIFB5T2JqZWN0ICpt YXRjaF9tZXRob2QsICplbmFibGVkX2ZpZWxkLCAqbWF0Y2hfcmVzdWx0Owor ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7CisgIGludCBlbmFibGVkLCBt YXRjaDsKKworICBpZiAobWV0aG9kX25hbWUgPT0gTlVMTCkKKyAgICByZXR1 cm4gMDsKKworICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVh bnVwLCBOVUxMKTsKKworICBlbmFibGVkX2ZpZWxkID0gUHlPYmplY3RfR2V0 QXR0clN0cmluZyAoZG1fb2JqLCBlbmFibGVkX2ZpZWxkX25hbWUpOworICBp ZiAoZW5hYmxlZF9maWVsZCA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5 X3ByaW50X3N0YWNrICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorICBtYWtlX2NsZWFudXBf cHlfZGVjcmVmIChlbmFibGVkX2ZpZWxkKTsKKworICBlbmFibGVkID0gUHlP YmplY3RfSXNUcnVlIChlbmFibGVkX2ZpZWxkKTsKKyAgaWYgKGVuYWJsZWQg PT0gLTEpCisgICAgeworICAgICAgUHlFcnJfQ2xlYXIgKCk7CisgICAgICBk b19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gMDsKKyAg ICB9CisgIGlmIChlbmFibGVkID09IDApCisgICAgeworICAgICAgZG9fY2xl YW51cHMgKGNsZWFudXBzKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKwor ICBtYXRjaF9tZXRob2QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nIChkbV9v YmosIG1hdGNoX21ldGhvZF9uYW1lKTsKKyAgaWYgKG1hdGNoX21ldGhvZCA9 PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwor ICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAgcmV0dXJu IDA7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChtYXRjaF9t ZXRob2QpOworICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2sgKG1hdGNoX21ldGhv ZCkpCisgICAgeworICAgICAgd2FybmluZyAoXygiQXR0cmlidXRlICclcycg b2YgYSByZWdpc3RlcmVkIFB5dGhvbiBkZWJ1ZyBtZXRob2QgaXMgbm90ICIK KyAgICAgICAgICAgICAgICAgImNhbGxhYmxlLiAgSWdub3JlZCEiKSwgbWF0 Y2hfbWV0aG9kX25hbWUpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIG1ldGhvZF9uYW1l X3B5c3RyaW5nID0gUHlTdHJpbmdfRnJvbVN0cmluZyAobWV0aG9kX25hbWUp OworICBpZiAobWV0aG9kX25hbWVfcHlzdHJpbmcgPT0gTlVMTCkKKyAgICB7 CisgICAgICBQeUVycl9DbGVhciAoKTsKKyAgICAgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7CisKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgbWFrZV9j bGVhbnVwX3B5X2RlY3JlZiAobWV0aG9kX25hbWVfcHlzdHJpbmcpOworCisg IG1hdGNoX3Jlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzIChk bV9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXRjaF9tZXRob2RfcHlzdHJpbmcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweV9vYmpfdHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1ldGhvZF9uYW1lX3B5c3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIGlmIChtYXRjaF9y ZXN1bHQgPT0gTlVMTCkKKyAgICB7CisgICAgICBnZGJweV9wcmludF9zdGFj ayAoKTsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgICAg IHJldHVybiAwOworICAgIH0KKyAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAo bWF0Y2hfcmVzdWx0KTsKKworICBtYXRjaCA9IFB5T2JqZWN0X0lzVHJ1ZSAo bWF0Y2hfcmVzdWx0KTsKKyAgaWYgKG1hdGNoID09IC0xKQorICAgIHsKKyAg ICAgIFB5RXJyX0NsZWFyICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFu dXBzKTsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7CisKKyAgcmV0dXJuIG1hdGNoOworfQorCisvKiBJ bXBsZW1lbnRhdGlvbiBvZiBnZXRfbWF0Y2hpbmdfZXh0X21ldGhvZHNfZnR5 cGUuCisgICBSZXR1cm4gYSBvZiB2ZWN0b3IgbWV0aG9kcyB3aXRoIG5hbWUg TUVUSE9EX05BTUUgZGVmaW5lZCBpbiBQeXRob24gZm9yCisgICBvYmplY3Rz IG9mIHR5cGUgT0JKX1RZUEUuICBSZXR1cm5zIE5VTEwgaWYgbm8gbWF0Y2hl cyBhcmUgZm91bmQuICAqLworCitzdGF0aWMgVkVDIChleHRfZm5fZGVzY3Jp cHRvcl9wKSAqCitweV9kZWJ1Z21ldGhvZF9uYW1lX21hdGNoIChzdHJ1Y3Qg dHlwZSAqb2JqX3R5cGUsIGNvbnN0IGNoYXIgKm1ldGhvZF9uYW1lKQorewor ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7CisgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlOworICBWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3ApICptZXRo b2RfdmVjID0gTlVMTDsKKyAgUHlPYmplY3QgKnB5X3R5cGU7CisKKyAgaWYg KG9ial90eXBlID09IE5VTEwgfHwgbWV0aG9kX25hbWUgPT0gTlVMTCkKKyAg ICByZXR1cm4gbWV0aG9kX3ZlYzsKKworICBweV90eXBlID0gdHlwZV90b190 eXBlX29iamVjdCAob2JqX3R5cGUpOworICBpZiAocHlfdHlwZSA9PSBOVUxM KQorICAgIHJldHVybiBtZXRob2RfdmVjOworCisgIGNsZWFudXBzID0gZW5z dXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRf bGFuZ3VhZ2UpOworCisgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICB7 CisgICAgICBQeU9iamVjdCAqcHlfZGVidWdtZXRob2RfbGlzdCA9IE5VTEws ICpsaXN0X2l0ZXIsICppdGVtOworICAgICAgUHlPYmplY3QgKnB5X29iamZp bGUgPSBvYmpmaWxlX3RvX29iamZpbGVfb2JqZWN0IChvYmpmaWxlKTsKKwor ICAgICAgaWYgKHB5X29iamZpbGUgPT0gTlVMTCkKKyAgICAgICAgeworICAg ICAgICAgIFB5RXJyX0NsZWFyICgpOworICAgICAgICAgIGNvbnRpbnVlOwor ICAgICAgICB9CisKKyAgICAgIHB5X2RlYnVnbWV0aG9kX2xpc3QgPSBvYmpm cHlfZ2V0X2RlYnVnX21ldGhvZHMgKHB5X29iamZpbGUsIE5VTEwpOworICAg ICAgbGlzdF9pdGVyID0gUHlPYmplY3RfR2V0SXRlciAocHlfZGVidWdtZXRo b2RfbGlzdCk7CisgICAgICBpZiAobGlzdF9pdGVyID09IE5VTEwpCisgICAg ICAgIHsKKyAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgIFB5 X0RFQ1JFRiAocHlfZGVidWdtZXRob2RfbGlzdCk7CisgICAgICAgICAgY29u dGludWU7CisgICAgICAgIH0KKworICAgICAgd2hpbGUgKChpdGVtID0gUHlJ dGVyX05leHQgKGxpc3RfaXRlcikpKQorICAgICAgICB7CisgICAgICAgICAg aWYgKGlzX21hdGNoaW5nX2RlYnVnX21ldGhvZCAoaXRlbSwgcHlfdHlwZSwg bWV0aG9kX25hbWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBz dHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbjsKKworICAgICAgICAg ICAgICBleHRfZm4gPSBuZXdfcHl0aG9uX2V4dF9tZXRob2QgKGl0ZW0sIHB5 X3R5cGUsIG1ldGhvZF9uYW1lKTsKKyAgICAgICAgICAgICAgaWYgKG1ldGhv ZF92ZWMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBtZXRob2RfdmVjID0g VkVDX2FsbG9jIChleHRfZm5fZGVzY3JpcHRvcl9wLCAxKTsKKyAgICAgICAg ICAgICAgVkVDX3NhZmVfcHVzaCAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCwgbWV0 aG9kX3ZlYywgZXh0X2ZuKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg IFB5X0RFQ1JFRiAoaXRlbSk7CisgICAgICAgIH0KKyAgICAgIFB5X0RFQ1JF RiAobGlzdF9pdGVyKTsKKyAgICAgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkK KyAgICAgICAgUHlFcnJfQ2xlYXIgKCk7ICAvKiBJZ25vcmUgaXRlcmF0aW9u IGVycm9ycyBzaWxlbnRseS4gICovCisKKyAgICAgIFB5X0RFQ1JFRiAocHlf ZGVidWdtZXRob2RfbGlzdCk7CisgICAgfQorCisgIFB5X0RFQ1JFRiAocHlf dHlwZSk7CisgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgcmV0dXJu IG1ldGhvZF92ZWM7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIGdldF9l eHRfZm5fYXJndHlwZXNfZnR5cGUuCisgICBSZXR1cm4gYW4gYXJyeSBvZiBh cmd1bWVudCB0eXBlcyBmb3IgZXh0ZW5zaW9uIGVuY2Fwc3VsYXRlZCBpbiBF WFRfT0JKLgorICAgTkFSR1MgY29udGFpbnMgdGhlIGxlbmd0aCBvZiB0aGUg YXJyYXkuICAqLworCitzdGF0aWMgc3RydWN0IHR5cGUgKioKK3B5X2V4dF9m bl9nZXRfYXJndHlwZXMgKHZvaWQgKmV4dF9vYmosIGludCAqbmFyZ3MpCit7 CisgIHN0cnVjdCBweV9leHRfb2JqZWN0ICpleHRfb2JqZWN0ID0gKHN0cnVj dCBweV9leHRfb2JqZWN0ICopIGV4dF9vYmo7CisgIFB5T2JqZWN0ICpkZWJ1 Z19tZXRob2Rfb2JqID0gZXh0X29iamVjdC0+b2JqZWN0OworICBQeU9iamVj dCAqZ2V0X2FyZ3R5cGVzX21ldGhvZDsKKyAgUHlPYmplY3QgKnB5X2FyZ3R5 cGVfbGlzdCwgKmxpc3RfaXRlciwgKml0ZW07CisgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwczsKKyAgc3RydWN0IHR5cGUgKip0eXBlX2FycmF5LCAqb2Jq X3R5cGU7CisgIGludCBpID0gMTsKKworICAvKiBTZXQgbmFyZ3MgdG8gMCBz byB0aGF0IGFueSBwcmVtYXR1cmUgcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlv biByZXR1cm5zCisgICAgIDAgYXJnIHR5cGVzLiAgKi8KKyAgKm5hcmdzID0g MDsKKworICBjbGVhbnVwcyA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3Vy cmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKKworICBnZXRfYXJn dHlwZXNfbWV0aG9kID0gIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGRlYnVn X21ldGhvZF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2V0X2FyZ3R5cGVzX21ldGhvZF9uYW1lKTsK KyAgaWYgKGdldF9hcmd0eXBlc19tZXRob2QgPT0gTlVMTCkKKyAgICB7Cisg ICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAgICAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7CisKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg bWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoZ2V0X2FyZ3R5cGVzX21ldGhvZCk7 CisKKyAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrIChnZXRfYXJndHlwZXNfbWV0 aG9kKSkKKyAgICB7CisgICAgICB3YXJuaW5nIChfKCJBdHRyaWJ1dGUgJyVz JyBvZiBhIHJlZ2lzdGVyZWQgUHl0aG9uIGRlYnVnIG1ldGhvZCBpcyBub3Qg IgorICAgICAgICAgICAgICAgICAiY2FsbGFibGUuICBJZ25vcmVkISIpLCBn ZXRfYXJndHlwZXNfbWV0aG9kX25hbWUpOworICAgICAgZG9fY2xlYW51cHMg KGNsZWFudXBzKTsKKworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisg IHB5X2FyZ3R5cGVfbGlzdCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdz IChkZWJ1Z19tZXRob2Rfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2FyZ3R5cGVzX21ldGhvZF9w eXN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4dF9vYmplY3QtPm1hdGNoX3B5X29ial90eXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXh0X29iamVjdC0+bWF0Y2hfbWV0aG9kLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIGlm IChweV9hcmd0eXBlX2xpc3QgPT0gTlVMTCkKKyAgICB7CisgICAgICBnZGJw eV9wcmludF9zdGFjayAoKTsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVw cyk7CisKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgbWFrZV9jbGVh bnVwX3B5X2RlY3JlZiAocHlfYXJndHlwZV9saXN0KTsKKworICBsaXN0X2l0 ZXIgPSBQeU9iamVjdF9HZXRJdGVyIChweV9hcmd0eXBlX2xpc3QpOworICBp ZiAobGlzdF9pdGVyID09IE5VTEwpCisgICAgeworICAgICAgUHlFcnJfQ2xl YXIgKCk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAg ICByZXR1cm4gTlVMTDsKKyAgICB9CisgIG1ha2VfY2xlYW51cF9weV9kZWNy ZWYgKGxpc3RfaXRlcik7CisKKyAgLyogSW5jbHVkZSB0aGUgJ3RoaXMnIGFy Z3VtZW50IGluIHRoZSBzaXplLiAgKi8KKyAgdHlwZV9hcnJheSA9IFhDTkVX VkVDIChzdHJ1Y3QgdHlwZSAqLCBQeUxpc3RfR0VUX1NJWkUgKHB5X2FyZ3R5 cGVfbGlzdCkgKyAxKTsKKyAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQg KGxpc3RfaXRlcikpKQorICAgIHsKKyAgICAgIHN0cnVjdCB0eXBlICphcmdf dHlwZSA9IHR5cGVfb2JqZWN0X3RvX3R5cGUgKGl0ZW0pOworCisgICAgICBQ eV9ERUNSRUYgKGl0ZW0pOworCisgICAgICBpZiAoYXJnX3R5cGUgPT0gTlVM TCkKKyAgICAgICAgeworICAgICAgICAgIGkgPSAtMTsKKyAgICAgICAgICBi cmVhazsKKyAgICAgICAgfQorCisgICAgICB0eXBlX2FycmF5W2ldID0gYXJn X3R5cGU7CisgICAgICBpKys7CisgICAgfQorICBpZiAoUHlFcnJfT2NjdXJy ZWQgKCkgfHwgaSA9PSAtMSkKKyAgICB7CisgICAgICBQeUVycl9DbGVhciAo KTsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisgICAgICB4ZnJl ZSAodHlwZV9hcnJheSk7CisKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0K KworICAvKiBBZGQgdGhlIHR5cGUgb2YgJ3RoaXMnIGFzIHRoZSBmaXJzdCBh cmd1bWVudC4gICovCisgIG9ial90eXBlID0gdHlwZV9vYmplY3RfdG9fdHlw ZSAoZXh0X29iamVjdC0+bWF0Y2hfcHlfb2JqX3R5cGUpOworICB0eXBlX2Fy cmF5WzBdID0gbWFrZV9jdl90eXBlICgxLCAwLCBsb29rdXBfcG9pbnRlcl90 eXBlIChvYmpfdHlwZSksIE5VTEwpOworICAqbmFyZ3MgPSBpOworCisgIGRv X2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgcmV0dXJuIHR5cGVfYXJyYXk7 Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIGludm9rZV9tZXRob2RfZnR5 cGUuCisgICBJbnZva2VzIGEgbWV0aG9kIGRlZmluZWQgaW4gUHl0aG9uLiAg VGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBtZXRob2QgaXMKKyAgIHJldHVy bmVkLiAgTlVMTCBpcyByZXR1cm5lZCBpbiBjYXNlIG9mIGVycm9ycy4gICov CisKK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorcHlfZXh0X2ZuX2ludm9rZV9t ZXRob2QgKHZvaWQgKmV4dF9vYmosIHN0cnVjdCB2YWx1ZSAqb2JqLCBzdHJ1 Y3QgdmFsdWUgKiphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBuYXJncykKK3sKKyAgaW50IGk7CisgIHN0cnVjdCBjbGVhbnVwICpjbGVh bnVwczsKKyAgUHlPYmplY3QgKnB5X3ZhbHVlX29iaiwgKnB5X2FyZ190dXBs ZSwgKnB5X3Jlc3VsdCwgKmRlYnVnX21ldGhvZF9vYmo7CisgIFB5T2JqZWN0 ICppbnZva2VfbWV0aG9kOworICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdCA9IE5V TEw7CisKKyAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1 cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisKKyAgZGVidWdf bWV0aG9kX29iaiA9ICgoc3RydWN0IHB5X2V4dF9vYmplY3QgKikgZXh0X29i aiktPm9iamVjdDsKKworICBpbnZva2VfbWV0aG9kID0gIFB5T2JqZWN0X0dl dEF0dHJTdHJpbmcgKGRlYnVnX21ldGhvZF9vYmosCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX21ldGhvZF9u YW1lKTsKKyAgaWYgKGludm9rZV9tZXRob2QgPT0gTlVMTCkKKyAgICB7Cisg ICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAgICAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7CisKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg bWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoaW52b2tlX21ldGhvZCk7CisKKyAg aWYgKCFQeUNhbGxhYmxlX0NoZWNrIChpbnZva2VfbWV0aG9kKSkKKyAgICB7 CisgICAgICB3YXJuaW5nIChfKCJBdHRyaWJ1dGUgJyVzJyBvZiBhIHJlZ2lz dGVyZWQgUHl0aG9uIGRlYnVnIG1ldGhvZCBpcyBub3QgIgorICAgICAgICAg ICAgICAgICAiY2FsbGFibGUuICBJZ25vcmVkISIpLCBpbnZva2VfbWV0aG9k X25hbWUpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAg ICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIHB5X3ZhbHVlX29iaiA9IHZh bHVlX3RvX3ZhbHVlX29iamVjdCAob2JqKTsKKyAgaWYgKHB5X3ZhbHVlX29i aiA9PSBOVUxMKQorICAgIHsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVw cyk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIG1ha2VfY2xlYW51 cF9weV9kZWNyZWYgKHB5X3ZhbHVlX29iaik7CisKKyAgcHlfYXJnX3R1cGxl ID0gUHlUdXBsZV9OZXcgKG5hcmdzKTsKKyAgaWYgKHB5X2FyZ190dXBsZSA9 PSBOVUxMKQorICAgIHsKKyAgICAgIFB5RXJyX0NsZWFyICgpOworICAgICAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAgcmV0dXJuIE5VTEw7 CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChweV9hcmdfdHVw bGUpOworCisgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQorICAgIHsK KyAgICAgIFB5T2JqZWN0ICpweV92YWx1ZV9hcmcgPSB2YWx1ZV90b192YWx1 ZV9vYmplY3QgKGFyZ3NbaV0pOworCisgICAgICBpZiAocHlfdmFsdWVfYXJn ID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICBQeUVycl9DbGVhciAo KTsKKyAgICAgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworICAgICAg ICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgIGlmIChQeVR1 cGxlX1NldEl0ZW0gKHB5X2FyZ190dXBsZSwgaSwgcHlfdmFsdWVfYXJnKSkK KyAgICAgICAgeworICAgICAgICAgIFB5RXJyX0NsZWFyICgpOworICAgICAg ICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgICAgICAgICByZXR1 cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICBweV9yZXN1bHQgPSBQ eU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyAoZGVidWdfbWV0aG9kX29iaiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dm9rZV9tZXRob2RfcHlzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBweV92YWx1ZV9vYmosIHB5X2FyZ190dXBs ZSwgTlVMTCk7CisgIGlmIChweV9yZXN1bHQgPT0gTlVMTCkKKyAgICB7Cisg ICAgICBnZGJweV9wcmludF9zdGFjayAoKTsgCisgICAgICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cisg IG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5X3Jlc3VsdCk7CisKKyAgLyog Q2hlY2sgdGhhdCBhIGRlYnVnIG1ldGhvZCBkaWQgbm90IHJldHVybiBOb25l LiAgKi8KKyAgaWYgKHB5X3Jlc3VsdCAhPSBQeV9Ob25lKQorICAgIHsKKyAg ICAgIHJlc3VsdCA9IGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24gKHB5X3Jl c3VsdCk7CisgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHsK KyAgICAgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAgICAgICAgfQor ICAgIH0KKyAgZWxzZQorICAgIHJlc3VsdCA9IGFsbG9jYXRlX3ZhbHVlIChs b29rdXBfdHlwZW5hbWUgKHB5dGhvbl9sYW5ndWFnZSwgcHl0aG9uX2dkYmFy Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInZvaWQiLCBOVUxMLCAwKSk7CisKKyAgZG9fY2xlYW51cHMgKGNs ZWFudXBzKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgc3Ry dWN0IGV4dF9sYW5nIHB5dGhvbl9leHRfbGFuZyA9IHsKKyAgcHlfY2xvbmVf ZXh0X29iamVjdCwKKyAgcHlfZnJlZV9leHRfb2JqZWN0LAorICBweV9kZWJ1 Z21ldGhvZF9uYW1lX21hdGNoLAorICBweV9leHRfZm5fZ2V0X2FyZ3R5cGVz LAorICBweV9leHRfZm5faW52b2tlX21ldGhvZAorfTsKKworLyogQ3JlYXRl cyBhIG5ldyBweXRob24gZXh0X2Z1bmN0aW9uX2Rlc2NyaXB0b3IuICBERUJV R19NRVRIT0QgaXMgdGhlCisgICBkZWJ1ZyBtZXRob2Qgb2JqZWN0LiAgUFlf T0JKX1RZUEUgaXMgYSBnZGIuVHlwZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRv IHRoZQorICAgdHlwZSBvZiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBkZWJ1 ZyBtZXRob2Qgd2l0aCBuYW1lIE1FVEhPRCB3aWxsIGJlCisgICBpbnZva2Vk LiAgKi8KKworc3RhdGljIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqCitu ZXdfcHl0aG9uX2V4dF9tZXRob2QgKFB5T2JqZWN0ICpkZWJ1Z19tZXRob2Qs IFB5T2JqZWN0ICpweV9vYmpfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbWV0aG9kKQoreworICBzdHJ1Y3QgcHlfZXh0X29i amVjdCAqZXh0X29iamVjdDsKKworICBleHRfb2JqZWN0ID0gWENORVcgKHN0 cnVjdCBweV9leHRfb2JqZWN0KTsKKyAgZXh0X29iamVjdC0+b2JqZWN0ID0g ZGVidWdfbWV0aG9kOworICBleHRfb2JqZWN0LT5tYXRjaF9weV9vYmpfdHlw ZSA9IHB5X29ial90eXBlOworICBleHRfb2JqZWN0LT5tYXRjaF9tZXRob2Qg PSBtZXRob2Q7CisKKyAgUHlfWElOQ1JFRiAoZXh0X29iamVjdC0+b2JqZWN0 KTsKKyAgUHlfWElOQ1JFRiAoZXh0X29iamVjdC0+bWF0Y2hfcHlfb2JqX3R5 cGUpOworCisgIHJldHVybiBuZXdfZXh0X2Z1bmN0aW9uICgmcHl0aG9uX2V4 dF9sYW5nLCAxLCBleHRfb2JqZWN0KTsKK30KKworLyogSW5pdGlhbGl6ZXMg dGhlIFB5dGhvbiBkZWJ1ZyBtZXRob2Qgc3VwcG9ydC4gICovCisKK2ludAor Z2RicHlfaW5pdGlhbGl6ZV9kZWJ1Z21ldGhvZHMgKHZvaWQpCit7CisgIHJl Z2lzdGVyX2V4dF9sYW5nICgmcHl0aG9uX2V4dF9sYW5nKTsKKworICBtYXRj aF9tZXRob2RfcHlzdHJpbmcgPSBQeVN0cmluZ19Gcm9tU3RyaW5nIChtYXRj aF9tZXRob2RfbmFtZSk7CisgIGlmIChtYXRjaF9tZXRob2RfcHlzdHJpbmcg PT0gTlVMTCkKKyAgICByZXR1cm4gLTE7CisKKyAgaW52b2tlX21ldGhvZF9w eXN0cmluZyA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKGludm9rZV9tZXRob2Rf bmFtZSk7CisgIGlmIChpbnZva2VfbWV0aG9kX3B5c3RyaW5nID09IE5VTEwp CisgICAgcmV0dXJuIC0xOworCisgIGdldF9hcmd0eXBlc19tZXRob2RfcHlz dHJpbmcgPSBQeVN0cmluZ19Gcm9tU3RyaW5nIChnZXRfYXJndHlwZXNfbWV0 aG9kX25hbWUpOworICBpZiAoZ2V0X2FyZ3R5cGVzX21ldGhvZF9weXN0cmlu ZyA9PSBOVUxMKQorICAgIHJldHVybiAtMTsKKworICByZXR1cm4gMTsKK30K ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktb2JqZmlsZS5jIGIvZ2RiL3B5 dGhvbi9weS1vYmpmaWxlLmMKaW5kZXggYTk1NGM5ZC4uMTZkM2Y5OCAxMDA2 NDQKLS0tIGEvZ2RiL3B5dGhvbi9weS1vYmpmaWxlLmMKKysrIGIvZ2RiL3B5 dGhvbi9weS1vYmpmaWxlLmMKQEAgLTM3LDYgKzM3LDkgQEAgdHlwZWRlZiBz dHJ1Y3QKICAgUHlPYmplY3QgKmZyYW1lX2ZpbHRlcnM7CiAgIC8qIFRoZSB0 eXBlLXByaW50ZXIgbGlzdC4gICovCiAgIFB5T2JqZWN0ICp0eXBlX3ByaW50 ZXJzOworCisgIC8qIFRoZSBkZWJ1ZyBtZXRob2QgbGlzdC4gICovCisgIFB5 T2JqZWN0ICpkZWJ1Z19tZXRob2RzOwogfSBvYmpmaWxlX29iamVjdDsKIAog c3RhdGljIFB5VHlwZU9iamVjdCBvYmpmaWxlX29iamVjdF90eXBlCkBAIC02 Niw2ICs2OSw3IEBAIG9iamZweV9kZWFsbG9jIChQeU9iamVjdCAqbykKICAg UHlfWERFQ1JFRiAoc2VsZi0+cHJpbnRlcnMpOwogICBQeV9YREVDUkVGIChz ZWxmLT5mcmFtZV9maWx0ZXJzKTsKICAgUHlfWERFQ1JFRiAoc2VsZi0+dHlw ZV9wcmludGVycyk7CisgIFB5X1hERUNSRUYgKHNlbGYtPmRlYnVnX21ldGhv ZHMpOwogICBQeV9UWVBFIChzZWxmKS0+dHBfZnJlZSAoc2VsZik7CiB9CiAK QEAgLTk4LDYgKzEwMiwxMyBAQCBvYmpmcHlfbmV3IChQeVR5cGVPYmplY3Qg KnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMpCiAJ ICBQeV9ERUNSRUYgKHNlbGYpOwogCSAgcmV0dXJuIE5VTEw7CiAJfQorCisg ICAgICBzZWxmLT5kZWJ1Z19tZXRob2RzID0gUHlMaXN0X05ldyAoMCk7Cisg ICAgICBpZiAoIXNlbGYtPmRlYnVnX21ldGhvZHMpCisJeworCSAgUHlfREVD UkVGIChzZWxmKTsKKwkgIHJldHVybiBOVUxMOworCX0KICAgICB9CiAgIHJl dHVybiAoUHlPYmplY3QgKikgc2VsZjsKIH0KQEAgLTE5Miw2ICsyMDMsMTcg QEAgb2JqZnB5X2dldF90eXBlX3ByaW50ZXJzIChQeU9iamVjdCAqbywgdm9p ZCAqaWdub3JlKQogICByZXR1cm4gc2VsZi0+dHlwZV9wcmludGVyczsKIH0K IAorLyogR2V0IHRoZSAnZGVidWdfbWV0aG9kcycgYXR0cmlidXRlLiAgKi8K KworUHlPYmplY3QgKgorb2JqZnB5X2dldF9kZWJ1Z19tZXRob2RzIChQeU9i amVjdCAqbywgdm9pZCAqaWdub3JlKQoreworICBvYmpmaWxlX29iamVjdCAq c2VsZiA9IChvYmpmaWxlX29iamVjdCAqKSBvOworCisgIFB5X0lOQ1JFRiAo c2VsZi0+ZGVidWdfbWV0aG9kcyk7CisgIHJldHVybiBzZWxmLT5kZWJ1Z19t ZXRob2RzOworfQorCiAvKiBTZXQgdGhlICd0eXBlX3ByaW50ZXJzJyBhdHRy aWJ1dGUuICAqLwogCiBzdGF0aWMgaW50CkBAIC0yOTEsNiArMzEzLDEzIEBA IG9iamZpbGVfdG9fb2JqZmlsZV9vYmplY3QgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKQogCSAgICAgIHJldHVybiBOVUxMOwogCSAgICB9CiAKKwkgIG9i amVjdC0+ZGVidWdfbWV0aG9kcyA9IFB5TGlzdF9OZXcgKDApOworCSAgaWYg KCFvYmplY3QtPmRlYnVnX21ldGhvZHMpCisJICAgIHsKKwkgICAgICBQeV9E RUNSRUYgKG9iamVjdCk7CisJICAgICAgcmV0dXJuIE5VTEw7CisJICAgIH0K KwogCSAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgb2JqZnB5X29iamZp bGVfZGF0YV9rZXksIG9iamVjdCk7CiAJfQogICAgIH0KQEAgLTMzMiw2ICsz NjEsOCBAQCBzdGF0aWMgUHlHZXRTZXREZWYgb2JqZmlsZV9nZXRzZXRbXSA9 CiAgICAgb2JqZnB5X3NldF9mcmFtZV9maWx0ZXJzLCAiRnJhbWUgRmlsdGVy cy4iLCBOVUxMIH0sCiAgIHsgInR5cGVfcHJpbnRlcnMiLCBvYmpmcHlfZ2V0 X3R5cGVfcHJpbnRlcnMsIG9iamZweV9zZXRfdHlwZV9wcmludGVycywKICAg ICAiVHlwZSBwcmludGVycy4iLCBOVUxMIH0sCisgIHsgImRlYnVnX21ldGhv ZHMiLCBvYmpmcHlfZ2V0X2RlYnVnX21ldGhvZHMsIE5VTEwsCisgICAgIkRl YnVnIG1ldGhvZHMuIiwgTlVMTCB9LAogICB7IE5VTEwgfQogfTsKIApkaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaCBiL2dkYi9w eXRob24vcHl0aG9uLWludGVybmFsLmgKaW5kZXggZDk0N2JlNi4uMjYyNzA2 OSAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAor KysgYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCkBAIC0zMjEsNiAr MzIxLDcgQEAgUHlPYmplY3QgKm9iamZpbGVfdG9fb2JqZmlsZV9vYmplY3Qg KHN0cnVjdCBvYmpmaWxlICopCiAgICAgQ1BZQ0hFQ0tFUl9SRVRVUk5TX0JP UlJPV0VEX1JFRjsKIFB5T2JqZWN0ICpvYmpmcHlfZ2V0X3ByaW50ZXJzIChQ eU9iamVjdCAqLCB2b2lkICopOwogUHlPYmplY3QgKm9iamZweV9nZXRfZnJh bWVfZmlsdGVycyAoUHlPYmplY3QgKiwgdm9pZCAqKTsKK1B5T2JqZWN0ICpv YmpmcHlfZ2V0X2RlYnVnX21ldGhvZHMgKFB5T2JqZWN0ICosIHZvaWQgKik7 CiAKIFB5T2JqZWN0ICpnZGJhcmNoX3RvX2FyY2hfb2JqZWN0IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCk7CiAKQEAgLTM5OSw2ICs0MDAsOCBAQCBpbnQg Z2RicHlfaW5pdGlhbGl6ZV9uZXdfb2JqZmlsZV9ldmVudCAodm9pZCkKICAg Q1BZQ0hFQ0tFUl9ORUdBVElWRV9SRVNVTFRfU0VUU19FWENFUFRJT047CiBp bnQgZ2RicHlfaW5pdGlhbGl6ZV9hcmNoICh2b2lkKQogICBDUFlDSEVDS0VS X05FR0FUSVZFX1JFU1VMVF9TRVRTX0VYQ0VQVElPTjsKK2ludCBnZGJweV9p bml0aWFsaXplX2RlYnVnbWV0aG9kcyAodm9pZCkKKyAgQ1BZQ0hFQ0tFUl9O RUdBVElWRV9SRVNVTFRfU0VUU19FWENFUFRJT047CiAKIHN0cnVjdCBjbGVh bnVwICptYWtlX2NsZWFudXBfcHlfZGVjcmVmIChQeU9iamVjdCAqcHkpOwog c3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9weV94ZGVjcmVmIChQeU9i amVjdCAqcHkpOwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBi L2dkYi9weXRob24vcHl0aG9uLmMKaW5kZXggYzk0MTk4ZS4uNGY0YjQ2YiAx MDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYworKysgYi9nZGIvcHl0 aG9uL3B5dGhvbi5jCkBAIC0xNjg2LDcgKzE2ODYsOCBAQCBtZXNzYWdlID09 IGFuIGVycm9yIG1lc3NhZ2Ugd2l0aG91dCBhIHN0YWNrIHdpbGwgYmUgcHJp bnRlZC4iKSwKICAgICAgIHx8IGdkYnB5X2luaXRpYWxpemVfZXhpdGVkX2V2 ZW50ICgpIDwgMAogICAgICAgfHwgZ2RicHlfaW5pdGlhbGl6ZV90aHJlYWRf ZXZlbnQgKCkgPCAwCiAgICAgICB8fCBnZGJweV9pbml0aWFsaXplX25ld19v YmpmaWxlX2V2ZW50ICgpICA8IDAKLSAgICAgIHx8IGdkYnB5X2luaXRpYWxp emVfYXJjaCAoKSA8IDApCisgICAgICB8fCBnZGJweV9pbml0aWFsaXplX2Fy Y2ggKCkgPCAwCisgICAgICB8fCBnZGJweV9pbml0aWFsaXplX2RlYnVnbWV0 aG9kcyAoKSA8IDApCiAgICAgZ290byBmYWlsOwogCiAgIG9ic2VydmVyX2F0 dGFjaF9iZWZvcmVfcHJvbXB0IChiZWZvcmVfcHJvbXB0X2hvb2spOwpkaWZm IC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYwppbmRl eCAxOGMxNGZjLi5mMTA1MjAwIDEwMDY0NAotLS0gYS9nZGIvdmFsYXJpdGgu YworKysgYi9nZGIvdmFsYXJpdGguYwpAQCAtMzAsNiArMzAsNyBAQAogI2lu Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlICJpbmZjYWxsLmgiCiAjaW5jbHVk ZSAiZXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgImV4dC1mdW5jdGlvbi5oIgog CiAvKiBEZWZpbmUgd2hldGhlciBvciBub3QgdGhlIEMgb3BlcmF0b3IgJy8n IHRydW5jYXRlcyB0b3dhcmRzIHplcm8gZm9yCiAgICBkaWZmZXJlbnRseSBz aWduZWQgb3BlcmFuZHMgKHRydW5jYXRpb24gZGlyZWN0aW9uIGlzIHVuZGVm aW5lZCBpbiBDKS4gICovCkBAIC0yODUsMjEgKzI4NiwyNyBAQCB1bm9wX3Vz ZXJfZGVmaW5lZF9wIChlbnVtIGV4cF9vcGNvZGUgb3AsIHN0cnVjdCB2YWx1 ZSAqYXJnMSkKICAgIGV4cGxpY2l0bHksIGFuZCBwZXJmb3JtIGNvcnJlY3Qg b3ZlcmxvYWQgcmVzb2x1dGlvbiBpbiBhbGwgb2YgdGhlIGFib3ZlCiAgICBz aXR1YXRpb25zIG9yIGNvbWJpbmF0aW9ucyB0aGVyZW9mLiAgKi8KIAotc3Rh dGljIHN0cnVjdCB2YWx1ZSAqCitzdGF0aWMgdm9pZAogdmFsdWVfdXNlcl9k ZWZpbmVkX2NwcF9vcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdz LCBjaGFyICpvcGVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB2YWx1ZSAqKnNyY19mbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqKmV4dF9mbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3RhdGljX21lbWZ1bmNw KQogewogCiAgIHN0cnVjdCBzeW1ib2wgKnN5bXAgPSBOVUxMOwogICBzdHJ1 Y3QgdmFsdWUgKnZhbHAgPSBOVUxMOworICBzdHJ1Y3QgZXh0X2ZuX2Rlc2Ny aXB0b3IgKmV4dF9mbnAgPSBOVUxMOwogCiAgIGZpbmRfb3ZlcmxvYWRfbWF0 Y2ggKGFyZ3MsIG5hcmdzLCBvcGVyYXRvciwgQk9USCAvKiBjb3VsZCBiZSBt ZXRob2QgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICZhcmdzWzBdIC8q IG9ianAgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgLyogcGFz cyBOVUxMIHN5bWJvbCBzaW5jZSBzeW1ib2wgaXMgdW5rbm93biAqLywKLSAg ICAgICAgICAgICAgICAgICAgICAgJnZhbHAsICZzeW1wLCBzdGF0aWNfbWVt ZnVuY3AsIDApOworICAgICAgICAgICAgICAgICAgICAgICAmdmFscCwgJnN5 bXAsICZleHRfZm5wLCBzdGF0aWNfbWVtZnVuY3AsIDApOwogCiAgIGlmICh2 YWxwKQotICAgIHJldHVybiB2YWxwOworICAgIHsKKyAgICAgICpzcmNfZm4g PSB2YWxwOworICAgICAgcmV0dXJuOworICAgIH0KIAogICBpZiAoc3ltcCkK ICAgICB7CkBAIC0zMDcsNyArMzE0LDE0IEBAIHZhbHVlX3VzZXJfZGVmaW5l ZF9jcHBfb3AgKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywgY2hh ciAqb3BlcmF0b3IsCiAgICAgICAgICBleHBlY3QgYSByZWZlcmVuY2UgYXMg aXRzIGZpcnN0IGFyZ3VtZW50CiAgICAgICAgICByYXRoZXIgdGhlIGV4cGxp Y2l0IHN0cnVjdHVyZS4gICovCiAgICAgICBhcmdzWzBdID0gdmFsdWVfaW5k IChhcmdzWzBdKTsKLSAgICAgIHJldHVybiB2YWx1ZV9vZl92YXJpYWJsZSAo c3ltcCwgMCk7CisgICAgICAqc3JjX2ZuID0gdmFsdWVfb2ZfdmFyaWFibGUg KHN5bXAsIDApOworICAgICAgcmV0dXJuOworICAgIH0KKworICBpZiAoZXh0 X2ZucCkKKyAgICB7CisgICAgICAqZXh0X2ZuID0gZXh0X2ZucDsKKyAgICAg IHJldHVybjsKICAgICB9CiAKICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBmaW5k ICVzLiIpLCBvcGVyYXRvcik7CkBAIC0zMTYsMTkgKzMzMCwyMiBAQCB2YWx1 ZV91c2VyX2RlZmluZWRfY3BwX29wIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBp bnQgbmFyZ3MsIGNoYXIgKm9wZXJhdG9yLAogLyogTG9va3VwIHVzZXIgZGVm aW5lZCBvcGVyYXRvciBOQU1FLiAgUmV0dXJuIGEgdmFsdWUgcmVwcmVzZW50 aW5nIHRoZQogICAgZnVuY3Rpb24sIG90aGVyd2lzZSByZXR1cm4gTlVMTC4g ICovCiAKLXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorc3RhdGljIHZvaWQKIHZh bHVlX3VzZXJfZGVmaW5lZF9vcCAoc3RydWN0IHZhbHVlICoqYXJncCwgc3Ry dWN0IHZhbHVlICoqYXJncywgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgaW50ICpzdGF0aWNfbWVtZnVuY3AsIGludCBuYXJncykKKyAg ICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0aWNfbWVtZnVuY3AsIGlu dCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhbHVl ICoqc3JjX2ZuLCBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKipleHRfZm4p CiB7CiAgIHN0cnVjdCB2YWx1ZSAqcmVzdWx0ID0gTlVMTDsKIAogICBpZiAo Y3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3Bs dXMpCi0gICAgcmVzdWx0ID0gdmFsdWVfdXNlcl9kZWZpbmVkX2NwcF9vcCAo YXJncywgbmFyZ3MsIG5hbWUsIHN0YXRpY19tZW1mdW5jcCk7CisgICAgdmFs dWVfdXNlcl9kZWZpbmVkX2NwcF9vcCAoYXJncywgbmFyZ3MsIG5hbWUsIHNy Y19mbiwgZXh0X2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXRpY19tZW1mdW5jcCk7CiAgIGVsc2UKLSAgICByZXN1bHQgPSB2YWx1 ZV9zdHJ1Y3RfZWx0IChhcmdwLCBhcmdzLCBuYW1lLCBzdGF0aWNfbWVtZnVu Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVy ZSIpOwotCi0gIHJldHVybiByZXN1bHQ7CisgICAgeworICAgICAgcmVzdWx0 ID0gdmFsdWVfc3RydWN0X2VsdCAoYXJncCwgYXJncywgbmFtZSwgc3RhdGlj X21lbWZ1bmNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InN0cnVjdHVyZSIpOworICAgICAgKnNyY19mbiA9IHJlc3VsdDsKKyAgICB9 CiB9CiAKIC8qIFdlIGtub3cgZWl0aGVyIGFyZzEgb3IgYXJnMiBpcyBhIHN0 cnVjdHVyZSwgc28gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0CkBAIC0zNDUsNiAr MzYyLDcgQEAgdmFsdWVfeF9iaW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBz dHJ1Y3QgdmFsdWUgKmFyZzIsIGVudW0gZXhwX29wY29kZSBvcCwKIAkgICAg ICAgZW51bSBleHBfb3Bjb2RlIG90aGVyb3AsIGVudW0gbm9zaWRlIG5vc2lk ZSkKIHsKICAgc3RydWN0IHZhbHVlICoqYXJndmVjOworICBzdHJ1Y3QgZXh0 X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiA9IE5VTEw7CiAgIGNoYXIgKnB0cjsK ICAgY2hhciB0c3RyWzEzXTsKICAgaW50IHN0YXRpY19tZW1mdW5jcDsKQEAg LTM1OSw2ICszNzcsNyBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUg KmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMiwgZW51bSBleHBfb3Bjb2RlIG9w LAogICAgIGVycm9yIChfKCJDYW4ndCBkbyB0aGF0IGJpbmFyeSBvcCBvbiB0 aGF0IHR5cGUiKSk7CS8qIEZJWE1FIGJlIGV4cGxpY2l0ICovCiAKICAgYXJn dmVjID0gKHN0cnVjdCB2YWx1ZSAqKikgYWxsb2NhIChzaXplb2YgKHN0cnVj dCB2YWx1ZSAqKSAqIDQpOworICBhcmd2ZWNbMF0gPSBOVUxMOwogICBhcmd2 ZWNbMV0gPSB2YWx1ZV9hZGRyIChhcmcxKTsKICAgYXJndmVjWzJdID0gYXJn MjsKICAgYXJndmVjWzNdID0gMDsKQEAgLTQ3MSw4ICs0OTAsOCBAQCB2YWx1 ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAq YXJnMiwgZW51bSBleHBfb3Bjb2RlIG9wLAogICAgICAgZXJyb3IgKF8oIklu dmFsaWQgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpZWQuIikpOwogICAgIH0K IAotICBhcmd2ZWNbMF0gPSB2YWx1ZV91c2VyX2RlZmluZWRfb3AgKCZhcmcx LCBhcmd2ZWMgKyAxLCB0c3RyLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZzdGF0aWNfbWVtZnVuY3AsIDIpOworICB2YWx1ZV91 c2VyX2RlZmluZWRfb3AgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3RyLCAmc3Rh dGljX21lbWZ1bmNwLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICZh cmd2ZWNbMF0sICZleHRfZm4pOwogCiAgIGlmIChhcmd2ZWNbMF0pCiAgICAg ewpAQCAtNDkyLDYgKzUxMSwxOSBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3Qg dmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMiwgZW51bSBleHBfb3Bj b2RlIG9wLAogICAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAo YXJndmVjWzBdLCAyIC0gc3RhdGljX21lbWZ1bmNwLAogCQkJCSAgICBhcmd2 ZWMgKyAxKTsKICAgICB9CisgIGlmIChleHRfZm4pCisgICAgeworICAgICAg aWYgKGV4dF9mbl9pc19tZXRob2QgKGV4dF9mbikpCisgICAgICAgIHsKKyAg ICAgICAgICBzdHJ1Y3QgdmFsdWUgKnJldF92YWwgPSBleHRfZm5faW52b2tl X21ldGhvZCAoZXh0X2ZuLCBhcmcxLCAmYXJnMiwgMSk7CisKKyAgICAgICAg ICBpZiAocmV0X3ZhbCA9PSBOVUxMKQorICAgICAgICAgICAgICBlcnJvciAo XygiRXJyb3IgaW52b2tpbmcgZGVidWcgbWV0aG9kIGltcGxlbWVudGF0aW9u IGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgJXMiKSwg dHN0cik7CisKKyAgICAgICAgICByZXR1cm4gcmV0X3ZhbDsKKyAgICAgICAg fQorICAgIH0KICAgdGhyb3dfZXJyb3IgKE5PVF9GT1VORF9FUlJPUiwKICAg ICAgICAgICAgICAgIF8oIm1lbWJlciBmdW5jdGlvbiAlcyBub3QgZm91bmQi KSwgdHN0cik7CiAjaWZkZWYgbGludApAQCAtNTEwLDYgKzU0Miw3IEBAIHZh bHVlX3hfdW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBlbnVtIGV4cF9vcGNv ZGUgb3AsIGVudW0gbm9zaWRlIG5vc2lkZSkKIHsKICAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh2YWx1ZV90eXBlIChhcmcx KSk7CiAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3ZlYzsKKyAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICpleHRfZm47CiAgIGNoYXIgKnB0cjsKICAgY2hhciB0 c3RyWzEzXSwgbWFuZ2xlX3RzdHJbMTNdOwogICBpbnQgc3RhdGljX21lbWZ1 bmNwLCBuYXJnczsKQEAgLTUyMyw2ICs1NTYsNyBAQCB2YWx1ZV94X3Vub3Ag KHN0cnVjdCB2YWx1ZSAqYXJnMSwgZW51bSBleHBfb3Bjb2RlIG9wLCBlbnVt IG5vc2lkZSBub3NpZGUpCiAgICAgZXJyb3IgKF8oIkNhbid0IGRvIHRoYXQg dW5hcnkgb3Agb24gdGhhdCB0eXBlIikpOwkvKiBGSVhNRSBiZSBleHBsaWNp dCAqLwogCiAgIGFyZ3ZlYyA9IChzdHJ1Y3QgdmFsdWUgKiopIGFsbG9jYSAo c2l6ZW9mIChzdHJ1Y3QgdmFsdWUgKikgKiA0KTsKKyAgYXJndmVjWzBdID0g TlVMTDsKICAgYXJndmVjWzFdID0gdmFsdWVfYWRkciAoYXJnMSk7CiAgIGFy Z3ZlY1syXSA9IDA7CiAKQEAgLTU3NCw4ICs2MDgsOCBAQCB2YWx1ZV94X3Vu b3AgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgZW51bSBleHBfb3Bjb2RlIG9wLCBl bnVtIG5vc2lkZSBub3NpZGUpCiAgICAgICBlcnJvciAoXygiSW52YWxpZCB1 bmFyeSBvcGVyYXRpb24gc3BlY2lmaWVkLiIpKTsKICAgICB9CiAKLSAgYXJn dmVjWzBdID0gdmFsdWVfdXNlcl9kZWZpbmVkX29wICgmYXJnMSwgYXJndmVj ICsgMSwgdHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmc3RhdGljX21lbWZ1bmNwLCBuYXJncyk7CisgIHZhbHVlX3VzZXJf ZGVmaW5lZF9vcCAoJmFyZzEsIGFyZ3ZlYyArIDEsIHRzdHIsICZzdGF0aWNf bWVtZnVuY3AsIG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICZh cmd2ZWNbMF0sICZleHRfZm4pOwogCiAgIGlmIChhcmd2ZWNbMF0pCiAgICAg ewpAQCAtNTk0LDYgKzYyOCwxOSBAQCB2YWx1ZV94X3Vub3AgKHN0cnVjdCB2 YWx1ZSAqYXJnMSwgZW51bSBleHBfb3Bjb2RlIG9wLCBlbnVtIG5vc2lkZSBu b3NpZGUpCiAJICByZXR1cm4gdmFsdWVfemVybyAocmV0dXJuX3R5cGUsIFZB TFVFX0xWQUwgKGFyZzEpKTsKIAl9CiAgICAgICByZXR1cm4gY2FsbF9mdW5j dGlvbl9ieV9oYW5kIChhcmd2ZWNbMF0sIG5hcmdzLCBhcmd2ZWMgKyAxKTsK KyAgICB9IAorICBpZiAoZXh0X2ZuKQorICAgIHsKKyAgICAgIGlmIChleHRf Zm5faXNfbWV0aG9kIChleHRfZm4pKQorICAgICAgICB7CisgICAgICAgICAg c3RydWN0IHZhbHVlICpyZXRfdmFsID0gZXh0X2ZuX2ludm9rZV9tZXRob2Qg KGV4dF9mbiwgYXJnMSwgTlVMTCwgMCk7CisKKyAgICAgICAgICBpZiAocmV0 X3ZhbCA9PSBOVUxMKQorICAgICAgICAgICAgICBlcnJvciAoXygiRXJyb3Ig aW52b2tpbmcgZGVidWcgbWV0aG9kIGltcGxlbWVudGF0aW9uIGZvciAiCisg ICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgJXMiKSwgdHN0cik7CisK KyAgICAgICAgICByZXR1cm4gcmV0X3ZhbDsKKyAgICAgICAgfQogICAgIH0K ICAgdGhyb3dfZXJyb3IgKE5PVF9GT1VORF9FUlJPUiwKICAgICAgICAgICAg ICAgIF8oIm1lbWJlciBmdW5jdGlvbiAlcyBub3QgZm91bmQiKSwgdHN0cik7 CmRpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3BzLmMKaW5k ZXggOTNjMDlkOC4uMWQwY2I4MCAxMDA2NDQKLS0tIGEvZ2RiL3ZhbG9wcy5j CisrKyBiL2dkYi92YWxvcHMuYwpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1 ZGUgIm9iamZpbGVzLmgiCiAjaW5jbHVkZSAic3ltdGFiLmgiCiAjaW5jbHVk ZSAiZXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgImV4dC1mdW5jdGlvbi5oIgog CiBleHRlcm4gdW5zaWduZWQgaW50IG92ZXJsb2FkX2RlYnVnOwogLyogTG9j YWwgZnVuY3Rpb25zLiAgKi8KQEAgLTczLDggKzc0LDggQEAgaW50IGZpbmRf b2xvYWRfY2hhbXBfbmFtZXNwYWNlX2xvb3AgKHN0cnVjdCB2YWx1ZSAqKiwg aW50LAogCQkJCSAgICAgY29uc3QgaW50IG5vX2FkbCk7CiAKIHN0YXRpYyBp bnQgZmluZF9vbG9hZF9jaGFtcCAoc3RydWN0IHZhbHVlICoqLCBpbnQsIGlu dCwgaW50LAotCQkJICAgICBzdHJ1Y3QgZm5fZmllbGQgKiwgc3RydWN0IHN5 bWJvbCAqKiwKLQkJCSAgICAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICoqKTsK KwkJCSAgICAgc3RydWN0IGZuX2ZpZWxkICosIFZFQyAoZXh0X2ZuX2Rlc2Ny aXB0b3JfcCkgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHN5bWJvbCAqKiwgc3RydWN0IGJhZG5lc3NfdmVjdG9yICoqKTsKIAog c3RhdGljIGludCBvbG9hZF9tZXRob2Rfc3RhdGljIChpbnQsIHN0cnVjdCBm bl9maWVsZCAqLCBpbnQpOwogCkBAIC0xMDEsOSArMTAyLDEwIEBAIHN0YXRp YyBDT1JFX0FERFIgYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGludCk7 CiAKIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmNhc3RfaW50b19jb21wbGV4IChz dHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKik7CiAKLXN0YXRpYyBzdHJ1 Y3QgZm5fZmllbGQgKmZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAq KiwgY29uc3QgY2hhciAqLAotCQkJCQkgIGludCwgc3RydWN0IHR5cGUgKiwg aW50ICosCi0JCQkJCSAgc3RydWN0IHR5cGUgKiosIGludCAqKTsKK3N0YXRp YyB2b2lkIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKiwgY29u c3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 LCBzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgZm5fZmllbGQgKiosIGludCAqLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVDIChleHRfZm5fZGVz Y3JpcHRvcl9wKSAqKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB0eXBlICoqLCBpbnQgKik7CiAKIHZvaWQgX2luaXRpYWxpemVf dmFsb3BzICh2b2lkKTsKIApAQCAtMjQzMiw0MCArMjQzNCw1OCBAQCB2YWx1 ZV9zdHJ1Y3RfZWx0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBzdHJ1Y3QgdmFs dWUgKiphcmdzLAogICAgICAgbWV0aG9kIGlzIGZvdW5kLgogICAgQk9GRlNF VCBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBiYXNlIHN1Ym9iamVjdCB3aGVyZSB0 aGUgbWV0aG9kIGlzIGZvdW5kLiAgKi8KIAotc3RhdGljIHN0cnVjdCBmbl9m aWVsZCAqCitzdGF0aWMgdm9pZAogZmluZF9tZXRob2RfbGlzdCAoc3RydWN0 IHZhbHVlICoqYXJncCwgY29uc3QgY2hhciAqbWV0aG9kLAotCQkgIGludCBv ZmZzZXQsIHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgKm51bV9mbnMsCisJCSAg aW50IG9mZnNldCwgc3RydWN0IHR5cGUgKnR5cGUsCisgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZm5fZmllbGQgKipmbl9saXN0LCBpbnQgKm51bV9mbnMs CisgICAgICAgICAgICAgICAgICBWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3Ap ICoqZXh0X2ZuX3ZlYywKIAkJICBzdHJ1Y3QgdHlwZSAqKmJhc2V0eXBlLCBp bnQgKmJvZmZzZXQpCiB7CiAgIGludCBpOwotICBzdHJ1Y3QgZm5fZmllbGQg KmY7Ci0gIENIRUNLX1RZUEVERUYgKHR5cGUpOworICBzdHJ1Y3QgZm5fZmll bGQgKmYgPSBOVUxMOwogCi0gICpudW1fZm5zID0gMDsKKyAgQ0hFQ0tfVFlQ RURFRiAodHlwZSk7CiAKICAgLyogRmlyc3QgY2hlY2sgaW4gb2JqZWN0IGl0 c2VsZi4gICovCi0gIGZvciAoaSA9IFRZUEVfTkZOX0ZJRUxEUyAodHlwZSkg LSAxOyBpID49IDA7IGktLSkKLSAgICB7Ci0gICAgICAvKiBwYWk6IEZJWE1F IFdoYXQgYWJvdXQgb3BlcmF0b3JzIGFuZCB0eXBlIGNvbnZlcnNpb25zPyAg Ki8KLSAgICAgIGNvbnN0IGNoYXIgKmZuX2ZpZWxkX25hbWUgPSBUWVBFX0ZO X0ZJRUxETElTVF9OQU1FICh0eXBlLCBpKTsKIAotICAgICAgaWYgKGZuX2Zp ZWxkX25hbWUgJiYgKHN0cmNtcF9pdyAoZm5fZmllbGRfbmFtZSwgbWV0aG9k KSA9PSAwKSkKLQl7Ci0JICBpbnQgbGVuID0gVFlQRV9GTl9GSUVMRExJU1Rf TEVOR1RIICh0eXBlLCBpKTsKLQkgIHN0cnVjdCBmbl9maWVsZCAqZiA9IFRZ UEVfRk5fRklFTERMSVNUMSAodHlwZSwgaSk7CisgIGlmIChmbl9saXN0ICYm ICEoKmZuX2xpc3QpKQorICAgIGZvciAoaSA9IFRZUEVfTkZOX0ZJRUxEUyAo dHlwZSkgLSAxOyBpID49IDA7IGktLSkKKyAgICAgIHsKKyAgICAgICAgLyog cGFpOiBGSVhNRSBXaGF0IGFib3V0IG9wZXJhdG9ycyBhbmQgdHlwZSBjb252 ZXJzaW9ucz8gICovCisgICAgICAgIGNvbnN0IGNoYXIgKmZuX2ZpZWxkX25h bWUgPSBUWVBFX0ZOX0ZJRUxETElTVF9OQU1FICh0eXBlLCBpKTsKKyAgCisg ICAgICAgIGlmIChmbl9maWVsZF9uYW1lICYmIChzdHJjbXBfaXcgKGZuX2Zp ZWxkX25hbWUsIG1ldGhvZCkgPT0gMCkpCisgIAl7CisgIAkgIGludCBsZW4g PSBUWVBFX0ZOX0ZJRUxETElTVF9MRU5HVEggKHR5cGUsIGkpOworICAJICBm ID0gVFlQRV9GTl9GSUVMRExJU1QxICh0eXBlLCBpKTsKKyAgICAgICAgICAq Zm5fbGlzdCA9IGY7CisgIAorICAJICAqbnVtX2ZucyA9IGxlbjsKKyAgCSAg KmJhc2V0eXBlID0gdHlwZTsKKyAgCSAgKmJvZmZzZXQgPSBvZmZzZXQ7Cisg IAorICAJICAvKiBSZXNvbHZlIGFueSBzdHViIG1ldGhvZHMuICAqLworICAJ ICBjaGVja19zdHViX21ldGhvZF9ncm91cCAodHlwZSwgaSk7CisgIAorICAg ICAgICAgIGJyZWFrOworICAJfQorICAgICAgfQogCi0JICAqbnVtX2ZucyA9 IGxlbjsKLQkgICpiYXNldHlwZSA9IHR5cGU7Ci0JICAqYm9mZnNldCA9IG9m ZnNldDsKKyAgaWYgKGV4dF9mbl92ZWMpCisgICAgeworICAgICAgVkVDIChl eHRfZm5fZGVzY3JpcHRvcl9wKSAqZWZfdmVjID0gTlVMTCwgKm5ld192ZWMg PSBOVUxMOwogCi0JICAvKiBSZXNvbHZlIGFueSBzdHViIG1ldGhvZHMuICAq LwotCSAgY2hlY2tfc3R1Yl9tZXRob2RfZ3JvdXAgKHR5cGUsIGkpOworICAg ICAgZWZfdmVjID0gZ2V0X21hdGNoaW5nX2V4dF9tZXRob2RzICh0eXBlLCBt ZXRob2QpOworICAgICAgbmV3X3ZlYyA9IFZFQ19tZXJnZSAoZXh0X2ZuX2Rl c2NyaXB0b3JfcCwgKmV4dF9mbl92ZWMsIGVmX3ZlYyk7CiAKLQkgIHJldHVy biBmOwotCX0KKyAgICAgIFZFQ19mcmVlIChleHRfZm5fZGVzY3JpcHRvcl9w LCAqZXh0X2ZuX3ZlYyk7CisgICAgICBWRUNfZnJlZSAoZXh0X2ZuX2Rlc2Ny aXB0b3JfcCwgZWZfdmVjKTsKKyAgICAgICpleHRfZm5fdmVjID0gbmV3X3Zl YzsKICAgICB9CiAKLSAgLyogTm90IGZvdW5kIGluIG9iamVjdCwgY2hlY2sg aW4gYmFzZSBzdWJvYmplY3RzLiAgKi8KKyAgLyogSWYgc291cmNlIG1ldGhv ZHMgYXJlIG5vdCBmb3VuZCBpbiBjdXJyZW50IGNsYXNzLCBsb29rIGZvciB0 aGVtIGluIHRoZQorICAgICBiYXNlIGNsYXNzZXMuICBXZSBoYXZlIHRvIGdv IHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyB0byBnYXRoZXIgZXh0ZW5zaW9u CisgICAgIG1ldGhvZHMgYW55d2F5LiAgKi8KICAgZm9yIChpID0gVFlQRV9O X0JBU0VDTEFTU0VTICh0eXBlKSAtIDE7IGkgPj0gMDsgaS0tKQogICAgIHsK ICAgICAgIGludCBiYXNlX29mZnNldDsKQEAgLTI0ODIsMTMgKzI1MDIsMTEg QEAgZmluZF9tZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoqYXJncCwgY29u c3QgY2hhciAqbWV0aG9kLAogCXsKIAkgIGJhc2Vfb2Zmc2V0ID0gVFlQRV9C QVNFQ0xBU1NfQklUUE9TICh0eXBlLCBpKSAvIDg7CiAJfQotICAgICAgZiA9 IGZpbmRfbWV0aG9kX2xpc3QgKGFyZ3AsIG1ldGhvZCwgYmFzZV9vZmZzZXQg KyBvZmZzZXQsCi0JCQkgICAgVFlQRV9CQVNFQ0xBU1MgKHR5cGUsIGkpLCBu dW1fZm5zLCAKLQkJCSAgICBiYXNldHlwZSwgYm9mZnNldCk7Ci0gICAgICBp ZiAoZikKLQlyZXR1cm4gZjsKKyAgICAgIAorICAgICAgZmluZF9tZXRob2Rf bGlzdCAoYXJncCwgbWV0aG9kLCBiYXNlX29mZnNldCArIG9mZnNldCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIFRZUEVfQkFTRUNMQVNTICh0eXBlLCBp KSwgZm5fbGlzdCwgbnVtX2ZucywKKyAgICAgICAgICAgICAgICAgICAgICAg IGV4dF9mbl92ZWMsIGJhc2V0eXBlLCBib2Zmc2V0KTsKICAgICB9Ci0gIHJl dHVybiBOVUxMOwogfQogCiAvKiBSZXR1cm4gdGhlIGxpc3Qgb2Ygb3Zlcmxv YWRlZCBtZXRob2RzIG9mIGEgc3BlY2lmaWVkIG5hbWUuCkBAIC0yNTAxLDkg KzI1MTksMTEgQEAgZmluZF9tZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoq YXJncCwgY29uc3QgY2hhciAqbWV0aG9kLAogICAgICAgbWV0aG9kLgogICAg Qk9GRlNFVCBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBiYXNlIHN1Ym9iamVjdCB3 aGljaCBkZWZpbmVzIHRoZSBtZXRob2QuICAqLwogCi1zdGF0aWMgc3RydWN0 IGZuX2ZpZWxkICoKK3N0YXRpYyB2b2lkCiB2YWx1ZV9maW5kX29sb2FkX21l dGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25zdCBjaGFyICpt ZXRob2QsCi0JCQkgICAgICBpbnQgb2Zmc2V0LCBpbnQgKm51bV9mbnMsIAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwgc3Ry dWN0IGZuX2ZpZWxkICoqZm5fbGlzdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAqbnVtX2ZucywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKipleHRfZm5f dmVjLAogCQkJICAgICAgc3RydWN0IHR5cGUgKipiYXNldHlwZSwgaW50ICpi b2Zmc2V0KQogewogICBzdHJ1Y3QgdHlwZSAqdDsKQEAgLTI1MjUsOCArMjU0 NSwzMiBAQCB2YWx1ZV9maW5kX29sb2FkX21ldGhvZF9saXN0IChzdHJ1Y3Qg dmFsdWUgKiphcmdwLCBjb25zdCBjaGFyICptZXRob2QsCiAgICAgZXJyb3Ig KF8oIkF0dGVtcHQgdG8gZXh0cmFjdCBhIGNvbXBvbmVudCBvZiBhICIKIAkg ICAgICJ2YWx1ZSB0aGF0IGlzIG5vdCBhIHN0cnVjdCBvciB1bmlvbiIpKTsK IAotICByZXR1cm4gZmluZF9tZXRob2RfbGlzdCAoYXJncCwgbWV0aG9kLCAw LCB0LCBudW1fZm5zLCAKLQkJCSAgIGJhc2V0eXBlLCBib2Zmc2V0KTsKKyAg LyogQ2xlYXIgdGhlIGxpc3RzLiAgKi8KKyAgaWYgKGZuX2xpc3QpCisgICAg eworICAgICAgKmZuX2xpc3QgPSBOVUxMOworICAgICAgKm51bV9mbnMgPSAw OworICAgIH0KKyAgaWYgKGV4dF9mbl92ZWMpCisgICAgKmV4dF9mbl92ZWMg PSBWRUNfYWxsb2MgKGV4dF9mbl9kZXNjcmlwdG9yX3AsIDEpOworCisgIGZp bmRfbWV0aG9kX2xpc3QgKGFyZ3AsIG1ldGhvZCwgMCwgdCwgZm5fbGlzdCwg bnVtX2ZucywgZXh0X2ZuX3ZlYywKKyAgICAgICAgICAgICAgICAgICAgYmFz ZXR5cGUsIGJvZmZzZXQpOworfQorCitzdGF0aWMgc3RydWN0IHR5cGUgKgor dmFsdWVfaGFzX2luZGlyZWN0X2R5bmFtaWNfdHlwZSAoc3RydWN0IHZhbHVl ICpvYmopCit7CisgIHN0cnVjdCB0eXBlICpzdHlwZSwgKmR0eXBlLCAqZHR5 cGVfaW5kOworCisgIHN0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJH RVRfVFlQRSAodmFsdWVfdHlwZSAob2JqKSkpOworICBkdHlwZV9pbmQgPSB2 YWx1ZV9ydHRpX2luZGlyZWN0X3R5cGUgKG9iaiwgTlVMTCwgTlVMTCwgTlVM TCk7CisgIGR0eXBlID0gZHR5cGVfaW5kID8gY2hlY2tfdHlwZWRlZiAoVFlQ RV9UQVJHRVRfVFlQRSAoZHR5cGVfaW5kKSkgOiBzdHlwZTsKKworICBpZiAo Y2xhc3NfdHlwZXNfc2FtZV9wIChzdHlwZSwgZHR5cGUpKQorICAgIHJldHVy biBOVUxMOworICBlbHNlCisgICAgcmV0dXJuIGR0eXBlX2luZDsKIH0KIAog LyogR2l2ZW4gYW4gYXJyYXkgb2YgYXJndW1lbnRzIChBUkdTKSAod2hpY2gg aW5jbHVkZXMgYW4KQEAgLTI1NzQsNiArMjYxOCw3IEBAIGZpbmRfb3Zlcmxv YWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKIAkJ ICAgICBjb25zdCBjaGFyICpuYW1lLCBlbnVtIG9sb2FkX3NlYXJjaF90eXBl IG1ldGhvZCwKIAkJICAgICBzdHJ1Y3QgdmFsdWUgKipvYmpwLCBzdHJ1Y3Qg c3ltYm9sICpmc3ltLAogCQkgICAgIHN0cnVjdCB2YWx1ZSAqKnZhbHAsIHN0 cnVjdCBzeW1ib2wgKipzeW1wLCAKKyAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqKmV4dF9mbiwKIAkJICAgICBpbnQg KnN0YXRpY3AsIGNvbnN0IGludCBub19hZGwpCiB7CiAgIHN0cnVjdCB2YWx1 ZSAqb2JqID0gKG9ianAgPyAqb2JqcCA6IE5VTEwpOwpAQCAtMjU4MSwxNiAr MjYyNiwyNCBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUg KiphcmdzLCBpbnQgbmFyZ3MsCiAgIC8qIEluZGV4IG9mIGJlc3Qgb3Zlcmxv YWRlZCBmdW5jdGlvbi4gICovCiAgIGludCBmdW5jX29sb2FkX2NoYW1wID0g LTE7CiAgIGludCBtZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgaW50IHNy Y19tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgaW50IHNyY19tZXRob2Rf b2xvYWRfY2hhbXBfYmtwID0gLTE7CisgIGludCBleHRfbWV0aG9kX29sb2Fk X2NoYW1wID0gLTE7CisgIGludCBzcmNfYW5kX2V4dF9lcXVhbCA9IDA7CiAK ICAgLyogVGhlIG1lYXN1cmUgZm9yIHRoZSBjdXJyZW50IGJlc3QgbWF0Y2gu ICAqLwogICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKm1ldGhvZF9iYWRuZXNz ID0gTlVMTDsKICAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICpmdW5jX2JhZG5l c3MgPSBOVUxMOworICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKmV4dF9tZXRo b2RfYmFkbmVzcyA9IE5VTEw7CisgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAq c3JjX21ldGhvZF9iYWRuZXNzID0gTlVMTDsKIAogICBzdHJ1Y3QgdmFsdWUg KnRlbXAgPSBvYmo7CiAgIC8qIEZvciBtZXRob2RzLCB0aGUgbGlzdCBvZiBv dmVybG9hZGVkIG1ldGhvZHMuICAqLwogICBzdHJ1Y3QgZm5fZmllbGQgKmZu c19wdHIgPSBOVUxMOwogICAvKiBGb3Igbm9uLW1ldGhvZHMsIHRoZSBsaXN0 IG9mIG92ZXJsb2FkZWQgZnVuY3Rpb24gc3ltYm9scy4gICovCiAgIHN0cnVj dCBzeW1ib2wgKipvbG9hZF9zeW1zID0gTlVMTDsKKyAgLyogRm9yIGV4dGVu c2lvbiBmdW5jdGlvbnMsIHRoZSBWRUMgb2YgZXh0ZW5zaW9uIGZ1bmN0aW9u IGRlc2NyaXB0b3JzLiAgKi8KKyAgVkVDIChleHRfZm5fZGVzY3JpcHRvcl9w KSAqZXh0X2ZuX3ZlYyA9IE5VTEw7CiAgIC8qIE51bWJlciBvZiBvdmVybG9h ZGVkIGluc3RhbmNlcyBiZWluZyBjb25zaWRlcmVkLiAgKi8KICAgaW50IG51 bV9mbnMgPSAwOwogICBzdHJ1Y3QgdHlwZSAqYmFzZXR5cGUgPSBOVUxMOwpA QCAtMjYwMiw2ICsyNjU1LDggQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3Ry dWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogICBjb25zdCBjaGFyICpm dW5jX25hbWUgPSBOVUxMOwogICBlbnVtIG9sb2FkX2NsYXNzaWZpY2F0aW9u IG1hdGNoX3F1YWxpdHk7CiAgIGVudW0gb2xvYWRfY2xhc3NpZmljYXRpb24g bWV0aG9kX21hdGNoX3F1YWxpdHkgPSBJTkNPTVBBVElCTEU7CisgIGVudW0g b2xvYWRfY2xhc3NpZmljYXRpb24gc3JjX21ldGhvZF9tYXRjaF9xdWFsaXR5 ID0gSU5DT01QQVRJQkxFOworICBlbnVtIG9sb2FkX2NsYXNzaWZpY2F0aW9u IGV4dF9tZXRob2RfbWF0Y2hfcXVhbGl0eSA9IElOQ09NUEFUSUJMRTsKICAg ZW51bSBvbG9hZF9jbGFzc2lmaWNhdGlvbiBmdW5jX21hdGNoX3F1YWxpdHkg PSBJTkNPTVBBVElCTEU7CiAKICAgLyogR2V0IHRoZSBsaXN0IG9mIG92ZXJs b2FkZWQgbWV0aG9kcyBvciBmdW5jdGlvbnMuICAqLwpAQCAtMjYzMCwxMiAr MjY4NSwxMiBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUg KiphcmdzLCBpbnQgbmFyZ3MsCiAJfQogCiAgICAgICAvKiBSZXRyaWV2ZSB0 aGUgbGlzdCBvZiBtZXRob2RzIHdpdGggdGhlIG5hbWUgTkFNRS4gICovCi0g ICAgICBmbnNfcHRyID0gdmFsdWVfZmluZF9vbG9hZF9tZXRob2RfbGlzdCAo JnRlbXAsIG5hbWUsIAotCQkJCQkgICAgICAwLCAmbnVtX2ZucywgCi0JCQkJ CSAgICAgICZiYXNldHlwZSwgJmJvZmZzZXQpOworICAgICAgdmFsdWVfZmlu ZF9vbG9hZF9tZXRob2RfbGlzdCAoJnRlbXAsIG5hbWUsIDAsICZmbnNfcHRy LCAmbnVtX2ZucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGV4dF9mbiA/ICZleHRfZm5fdmVjIDogTlVMTCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZiYXNldHlwZSwgJmJvZmZzZXQp OwogICAgICAgLyogSWYgdGhpcyBpcyBhIG1ldGhvZCBvbmx5IHNlYXJjaCwg YW5kIG5vIG1ldGhvZHMgd2VyZSBmb3VuZAogICAgICAgICAgdGhlIHNlYXJj aCBoYXMgZmFpbGQuICAqLwotICAgICAgaWYgKG1ldGhvZCA9PSBNRVRIT0Qg JiYgKCFmbnNfcHRyIHx8ICFudW1fZm5zKSkKKyAgICAgIGlmIChtZXRob2Qg PT0gTUVUSE9EICYmICghZm5zX3B0ciB8fCAhbnVtX2ZucykgJiYgIWV4dF9m bl92ZWMpCiAJZXJyb3IgKF8oIkNvdWxkbid0IGZpbmQgbWV0aG9kICVzJXMl cyIpLAogCSAgICAgICBvYmpfdHlwZV9uYW1lLAogCSAgICAgICAob2JqX3R5 cGVfbmFtZSAmJiAqb2JqX3R5cGVfbmFtZSkgPyAiOjoiIDogIiIsCkBAIC0y NjQ2LDE4ICsyNzAxLDgyIEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVj dCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKICAgICAgIGlmIChmbnNfcHRy KQogCXsKIAkgIGdkYl9hc3NlcnQgKFRZUEVfRE9NQUlOX1RZUEUgKGZuc19w dHJbMF0udHlwZSkgIT0gTlVMTCk7Ci0JICBtZXRob2Rfb2xvYWRfY2hhbXAg PSBmaW5kX29sb2FkX2NoYW1wIChhcmdzLCBuYXJncywgbWV0aG9kLAotCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2Zu cywgZm5zX3B0ciwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9sb2FkX3N5bXMsICZtZXRob2RfYmFkbmVzcyk7Ci0KLQkg IG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0KLQkgICAgICBjbGFzc2lmeV9vbG9h ZF9tYXRjaCAobWV0aG9kX2JhZG5lc3MsIG5hcmdzLAotCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvbG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2Qs IGZuc19wdHIsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCkpOwotCi0JICBt YWtlX2NsZWFudXAgKHhmcmVlLCBtZXRob2RfYmFkbmVzcyk7CisJICBzcmNf bWV0aG9kX29sb2FkX2NoYW1wID0gZmluZF9vbG9hZF9jaGFtcCAoYXJncywg bmFyZ3MsIG1ldGhvZCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBudW1fZm5zLCBmbnNfcHRyLCBOVUxMLAorCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9s b2FkX3N5bXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZzcmNfbWV0aG9kX2JhZG5lc3MpOworCisJ ICBzcmNfbWV0aG9kX21hdGNoX3F1YWxpdHkgPQorCSAgICAgIGNsYXNzaWZ5 X29sb2FkX21hdGNoICgKKyAgICAgICAgICAgICAgICAgIHNyY19tZXRob2Rf YmFkbmVzcywgbmFyZ3MsCisJICAgICAgICAgIG9sb2FkX21ldGhvZF9zdGF0 aWMgKG1ldGhvZCwgZm5zX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNyY19tZXRob2Rfb2xvYWRfY2hhbXApKTsKKwor CSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgc3JjX21ldGhvZF9iYWRuZXNzKTsK IAl9CiAKKyAgICAgIGlmIChleHRfZm4gJiYgVkVDX2xlbmd0aCAoZXh0X2Zu X2Rlc2NyaXB0b3JfcCwgZXh0X2ZuX3ZlYykpCisgICAgICAgIHsKKyAgICAg ICAgICBleHRfbWV0aG9kX29sb2FkX2NoYW1wID0gZmluZF9vbG9hZF9jaGFt cCAoYXJncywgbmFyZ3MsIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgZXh0 X2ZuX3ZlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgJmV4dF9tZXRob2RfYmFkbmVzcyk7 CisgICAgICAgICAgZXh0X21ldGhvZF9tYXRjaF9xdWFsaXR5ID0gY2xhc3Np Znlfb2xvYWRfbWF0Y2ggKGV4dF9tZXRob2RfYmFkbmVzcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFyZ3MsIDApOworICAgICAgICAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGV4dF9tZXRob2RfYmFkbmVzcyk7CisgICAgICAgICAgbWFrZV9leHRf Zm5fdmVjX2NsZWFudXAgKGV4dF9mbl92ZWMpOworICAgICAgICB9CisKKyAg ICAgIGlmIChzcmNfbWV0aG9kX29sb2FkX2NoYW1wID49IDAgJiYgZXh0X21l dGhvZF9vbG9hZF9jaGFtcCA+PSAwKQorICAgICAgICB7CisgICAgICAgICAg c3dpdGNoIChjb21wYXJlX2JhZG5lc3MgKGV4dF9tZXRob2RfYmFkbmVzcywg c3JjX21ldGhvZF9iYWRuZXNzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgY2FzZSAwOiAvKiBTcmMgbWV0aG9kIGFuZCBleHQgbWV0aG9kIGFy ZSBlcXVhbGx5IGdvb2QuICAqLworICAgICAgICAgICAgICAgIHNyY19hbmRf ZXh0X2VxdWFsID0gMTsKKyAgICAgICAgICAgICAgY2FzZSAxOiAvKiBTcmMg bWV0aG9kIGFuZCBleHQgbWV0aG9kIGFyZSBpbmNvbXBhdGlibGUgICovCisg ICAgICAgICAgICAgICAgLyogaWYgZXh0IG1ldGhvZCBtYXRjaCBpcyBub3Qg c3RhbmRhcmQsIHRoZW4gbGV0IHNvdXJjZSBtZXRob2QKKyAgICAgICAgICAg ICAgICAgICB3aW4uICAqLworICAgICAgICAgICAgICAgIGlmIChleHRfbWV0 aG9kX21hdGNoX3F1YWxpdHkgIT0gU1RBTkRBUkQpCisgICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9vbG9hZF9jaGFt cCA9IHNyY19tZXRob2Rfb2xvYWRfY2hhbXA7CisgICAgICAgICAgICAgICAg ICAgIG1ldGhvZF9iYWRuZXNzID0gc3JjX21ldGhvZF9iYWRuZXNzOworICAg ICAgICAgICAgICAgICAgICBleHRfbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7 CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0g c3JjX21ldGhvZF9tYXRjaF9xdWFsaXR5OworICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg Y2FzZSAyOiAvKiBFeHQgbWV0aG9kIGlzIGNoYW1waW9uLiAgKi8KKyAgICAg ICAgICAgICAgICBtZXRob2Rfb2xvYWRfY2hhbXAgPSBleHRfbWV0aG9kX29s b2FkX2NoYW1wOworICAgICAgICAgICAgICAgIG1ldGhvZF9iYWRuZXNzID0g ZXh0X21ldGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICAgIHNyY19tZXRo b2Rfb2xvYWRfY2hhbXBfYmtwID0gc3JjX21ldGhvZF9vbG9hZF9jaGFtcDsK KyAgICAgICAgICAgICAgICBzcmNfbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7 CisgICAgICAgICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBleHRf bWV0aG9kX21hdGNoX3F1YWxpdHk7CisgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgIGNhc2UgMzogLyogU3JjIG1ldGhvZCBpcyBjaGFt cGlvbi4gICovCisgICAgICAgICAgICAgICAgbWV0aG9kX29sb2FkX2NoYW1w ID0gc3JjX21ldGhvZF9vbG9hZF9jaGFtcDsKKyAgICAgICAgICAgICAgICBt ZXRob2RfYmFkbmVzcyA9IHNyY19tZXRob2RfYmFkbmVzczsKKyAgICAgICAg ICAgICAgICBleHRfbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7CisgICAgICAg ICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBzcmNfbWV0aG9kX21h dGNoX3F1YWxpdHk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZXJyb3IgKF8oIklu dGVybmFsIGVycm9yOiB1bmV4cGVjdGVkIG92ZXJsb2FkIGNvbXBhcmlzb24g IgorICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHQiKSk7CisgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K KyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGlmIChzcmNfbWV0 aG9kX29sb2FkX2NoYW1wID49IDApCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCA9IHNyY19tZXRob2Rfb2xvYWRf Y2hhbXA7CisgICAgICAgICAgICAgIG1ldGhvZF9iYWRuZXNzID0gc3JjX21l dGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICBtZXRob2RfbWF0Y2hfcXVh bGl0eSA9IHNyY19tZXRob2RfbWF0Y2hfcXVhbGl0eTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICBpZiAoZXh0X21ldGhvZF9vbG9hZF9jaGFtcCA+PSAw KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBtZXRob2Rfb2xvYWRf Y2hhbXAgPSBleHRfbWV0aG9kX29sb2FkX2NoYW1wOworICAgICAgICAgICAg ICBtZXRob2RfYmFkbmVzcyA9IGV4dF9tZXRob2RfYmFkbmVzczsKKyAgICAg ICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBleHRfbWV0aG9kX21h dGNoX3F1YWxpdHk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9 CiAKICAgaWYgKG1ldGhvZCA9PSBOT05fTUVUSE9EIHx8IG1ldGhvZCA9PSBC T1RIKQpAQCAtMjgwMCwyMSArMjkxOSw2IEBAIGZpbmRfb3ZlcmxvYWRfbWF0 Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKIAkJIGZ1bmNf bmFtZSk7CiAgICAgfQogCi0gIGlmIChzdGF0aWNwICE9IE5VTEwpCi0gICAg KnN0YXRpY3AgPSBvbG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2QsIGZuc19w dHIsIG1ldGhvZF9vbG9hZF9jaGFtcCk7Ci0KLSAgaWYgKG1ldGhvZF9vbG9h ZF9jaGFtcCA+PSAwKQotICAgIHsKLSAgICAgIGlmIChUWVBFX0ZOX0ZJRUxE X1ZJUlRVQUxfUCAoZm5zX3B0ciwgbWV0aG9kX29sb2FkX2NoYW1wKSkKLQkq dmFscCA9IHZhbHVlX3ZpcnR1YWxfZm5fZmllbGQgKCZ0ZW1wLCBmbnNfcHRy LCBtZXRob2Rfb2xvYWRfY2hhbXAsCi0JCQkJCWJhc2V0eXBlLCBib2Zmc2V0 KTsKLSAgICAgIGVsc2UKLQkqdmFscCA9IHZhbHVlX2ZuX2ZpZWxkICgmdGVt cCwgZm5zX3B0ciwgbWV0aG9kX29sb2FkX2NoYW1wLAotCQkJCWJhc2V0eXBl LCBib2Zmc2V0KTsKLSAgICB9Ci0gIGVsc2UKLSAgICAqc3ltcCA9IG9sb2Fk X3N5bXNbZnVuY19vbG9hZF9jaGFtcF07Ci0KICAgaWYgKG9ianApCiAgICAg ewogICAgICAgc3RydWN0IHR5cGUgKnRlbXBfdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKHZhbHVlX3R5cGUgKHRlbXApKTsKQEAgLTI4MjQsMTEgKzI5MjgsNjYg QEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoqYXJncywg aW50IG5hcmdzLAogCSAgJiYgKFRZUEVfQ09ERSAob2JqdHlwZSkgPT0gVFlQ RV9DT0RFX1BUUgogCSAgICAgIHx8IFRZUEVfQ09ERSAob2JqdHlwZSkgPT0g VFlQRV9DT0RFX1JFRikpCiAJewotCSAgdGVtcCA9IHZhbHVlX2FkZHIgKHRl bXApOworCSAgKm9ianAgPSB2YWx1ZV9hZGRyICh0ZW1wKTsKIAl9Ci0gICAg ICAqb2JqcCA9IHRlbXA7CisgICAgICBlbHNlCisgICAgICAgICpvYmpwID0g dGVtcDsKICAgICB9CiAKKyAgaWYgKHN0YXRpY3AgIT0gTlVMTCkKKyAgICAq c3RhdGljcCA9IG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0 ciwgbWV0aG9kX29sb2FkX2NoYW1wKTsKKworICBpZiAobWV0aG9kX29sb2Fk X2NoYW1wID49IDApCisgICAgeworICAgICAgaWYgKHNyY19tZXRob2Rfb2xv YWRfY2hhbXAgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChUWVBF X0ZOX0ZJRUxEX1ZJUlRVQUxfUCAoZm5zX3B0ciwgbWV0aG9kX29sb2FkX2No YW1wKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3RydWN0IHR5 cGUgKmR0eXBlOworICAgICAgCisgICAgICAgICAgICAgIGR0eXBlID0gdmFs dWVfaGFzX2luZGlyZWN0X2R5bmFtaWNfdHlwZSAoYXJnc1swXSk7CisgICAg ICAgICAgICAgIGlmIChkdHlwZSkKKyAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICBhcmdzWzBdID0gdmFsdWVfY2FzdCAoZHR5cGUsIGFy Z3NbMF0pOworICAgICAgICAgICAgICAgICAgZG9fY2xlYW51cHMgKGFsbF9j bGVhbnVwcyk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9vdmVy bG9hZF9tYXRjaCAoYXJncywgbmFyZ3MsIG5hbWUsIG1ldGhvZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpw LCBmc3ltLCB2YWxwLCBzeW1wLCBleHRfZm4sCisJCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXRpY3AsIG5vX2FkbCk7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg KnZhbHAgPSB2YWx1ZV92aXJ0dWFsX2ZuX2ZpZWxkICgmdGVtcCwgZm5zX3B0 ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2V0eXBlLCBib2Zm c2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAg ICAgICAqdmFscCA9IHZhbHVlX2ZuX2ZpZWxkICgmdGVtcCwgZm5zX3B0ciwg bWV0aG9kX29sb2FkX2NoYW1wLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYmFzZXR5cGUsIGJvZmZzZXQpOworICAgICAgICB9Cisg ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoc3JjX2FuZF9l eHRfZXF1YWwgCisgICAgICAgICAgICAgICYmIFRZUEVfRk5fRklFTERfVklS VFVBTF9QIChmbnNfcHRyLCBzcmNfbWV0aG9kX29sb2FkX2NoYW1wX2JrcCkp CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0cnVjdCB0eXBlICpk dHlwZTsKKyAgICAgIAorICAgICAgICAgICAgICBkdHlwZSA9IHZhbHVlX2hh c19pbmRpcmVjdF9keW5hbWljX3R5cGUgKGFyZ3NbMF0pOworICAgICAgICAg ICAgICBpZiAoZHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgYXJnc1swXSA9IHZhbHVlX2Nhc3QgKGR0eXBlLCBhcmdzWzBd KTsKKyAgICAgICAgICAgICAgICAgIGRvX2NsZWFudXBzIChhbGxfY2xlYW51 cHMpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRfb3ZlcmxvYWRf bWF0Y2ggKGFyZ3MsIG5hcmdzLCBuYW1lLCBtZXRob2QsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqcCwgZnN5 bSwgdmFscCwgc3ltcCwgZXh0X2ZuLAorCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGF0aWNwLCBub19hZGwpOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICpleHRfZm4gPSBleHRf Zm5fY2xvbmUgKFZFQ19pbmRleCAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCwgZXh0 X2ZuX3ZlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4dF9tZXRob2Rfb2xvYWRfY2hhbXApKTsKKyAgICAgICAg fQorICAgIH0KKyAgZWxzZQorICAgICpzeW1wID0gb2xvYWRfc3ltc1tmdW5j X29sb2FkX2NoYW1wXTsKKwogICBkb19jbGVhbnVwcyAoYWxsX2NsZWFudXBz KTsKIAogICBzd2l0Y2ggKG1hdGNoX3F1YWxpdHkpCkBAIC0yOTYyLDcgKzMx MjEsNyBAQCBmaW5kX29sb2FkX2NoYW1wX25hbWVzcGFjZV9sb29wIChzdHJ1 Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAgICAgKytudW1fZm5zOwog CiAgIG5ld19vbG9hZF9jaGFtcCA9IGZpbmRfb2xvYWRfY2hhbXAgKGFyZ3Ms IG5hcmdzLCAwLCBudW1fZm5zLAotCQkJCSAgICAgIE5VTEwsIG5ld19vbG9h ZF9zeW1zLAorCQkJCSAgICAgIE5VTEwsIE5VTEwsIG5ld19vbG9hZF9zeW1z LAogCQkJCSAgICAgICZuZXdfb2xvYWRfY2hhbXBfYnYpOwogCiAgIC8qIENh c2UgMTogV2UgZm91bmQgYSBnb29kIG1hdGNoLiAgRnJlZSBlYXJsaWVyIG1h dGNoZXMgKGlmIGFueSksCkBAIC0zMDEwLDEwICszMTY5LDEyIEBAIGZpbmRf b2xvYWRfY2hhbXBfbmFtZXNwYWNlX2xvb3AgKHN0cnVjdCB2YWx1ZSAqKmFy Z3MsIGludCBuYXJncywKIHN0YXRpYyBpbnQKIGZpbmRfb2xvYWRfY2hhbXAg KHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywgaW50IG1ldGhvZCwK IAkJICBpbnQgbnVtX2Zucywgc3RydWN0IGZuX2ZpZWxkICpmbnNfcHRyLAor ICAgICAgICAgICAgICAgICAgVkVDIChleHRfZm5fZGVzY3JpcHRvcl9wKSAq ZXh0X2ZuX3ZlYywKIAkJICBzdHJ1Y3Qgc3ltYm9sICoqb2xvYWRfc3ltcywK IAkJICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKipvbG9hZF9jaGFtcF9idikK IHsKICAgaW50IGl4OworICBpbnQgZXh0X2ZuX3ZlY19uID0gMDsKICAgLyog QSBtZWFzdXJlIG9mIGhvdyBnb29kIGFuIG92ZXJsb2FkZWQgaW5zdGFuY2Ug aXMuICAqLwogICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKmJ2OwogICAvKiBJ bmRleCBvZiBiZXN0IG92ZXJsb2FkZWQgZnVuY3Rpb24uICAqLwpAQCAtMzAy MywxOCArMzE4NCwyNyBAQCBmaW5kX29sb2FkX2NoYW1wIChzdHJ1Y3QgdmFs dWUgKiphcmdzLCBpbnQgbmFyZ3MsIGludCBtZXRob2QsCiAgIC8qIDAgPT4g bm8gYW1iaWd1aXR5LCAxID0+IHR3byBnb29kIGZ1bmNzLCAyID0+IGluY29t cGFyYWJsZSBmdW5jcy4gICovCiAKICAgKm9sb2FkX2NoYW1wX2J2ID0gTlVM TDsKKyAgZXh0X2ZuX3ZlY19uID0gZXh0X2ZuX3ZlYyA/IFZFQ19sZW5ndGgg KGV4dF9mbl9kZXNjcmlwdG9yX3AsIGV4dF9mbl92ZWMpIDogMDsKIAogICAv KiBDb25zaWRlciBlYWNoIGNhbmRpZGF0ZSBpbiB0dXJuLiAgKi8KLSAgZm9y IChpeCA9IDA7IGl4IDwgbnVtX2ZuczsgaXgrKykKKyAgZm9yIChpeCA9IDA7 IChpeCA8IG51bV9mbnMpIHx8IChpeCA8IGV4dF9mbl92ZWNfbik7IGl4Kysp CiAgICAgewogICAgICAgaW50IGpqOwotICAgICAgaW50IHN0YXRpY19vZmZz ZXQgPSBvbG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2QsIGZuc19wdHIsIGl4 KTsKKyAgICAgIGludCBzdGF0aWNfb2Zmc2V0ID0gMDsKICAgICAgIGludCBu cGFybXM7CiAgICAgICBzdHJ1Y3QgdHlwZSAqKnBhcm1fdHlwZXM7CisgICAg ICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiA9IE5VTEw7CisK KyAgICAgIGlmIChleHRfZm5fdmVjKQorICAgICAgICBleHRfZm4gPSBWRUNf aW5kZXggKGV4dF9mbl9kZXNjcmlwdG9yX3AsIGV4dF9mbl92ZWMsIGl4KTsK IAogICAgICAgaWYgKG1ldGhvZCkKIAl7Ci0JICBucGFybXMgPSBUWVBFX05G SUVMRFMgKFRZUEVfRk5fRklFTERfVFlQRSAoZm5zX3B0ciwgaXgpKTsKKyAg ICAgICAgICBpZiAoZm5zX3B0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgc3RhdGljX29mZnNldCA9IG9sb2FkX21ldGhvZF9zdGF0aWMgKG1l dGhvZCwgZm5zX3B0ciwgaXgpOworCSAgICAgIG5wYXJtcyA9IFRZUEVfTkZJ RUxEUyAoVFlQRV9GTl9GSUVMRF9UWVBFIChmbnNfcHRyLCBpeCkpOworICAg ICAgICAgICAgfQogCX0KICAgICAgIGVsc2UKIAl7CkBAIC0zMDQzLDEzICsz MjEzLDIwIEBAIGZpbmRfb2xvYWRfY2hhbXAgKHN0cnVjdCB2YWx1ZSAqKmFy Z3MsIGludCBuYXJncywgaW50IG1ldGhvZCwKIAl9CiAKICAgICAgIC8qIFBy ZXBhcmUgYXJyYXkgb2YgcGFyYW1ldGVyIHR5cGVzLiAgKi8KLSAgICAgIHBh cm1fdHlwZXMgPSAoc3RydWN0IHR5cGUgKiopIAotCXhtYWxsb2MgKG5wYXJt cyAqIChzaXplb2YgKHN0cnVjdCB0eXBlICopKSk7Ci0gICAgICBmb3IgKGpq ID0gMDsgamogPCBucGFybXM7IGpqKyspCi0JcGFybV90eXBlc1tqal0gPSAo bWV0aG9kCi0JCQkgID8gKFRZUEVfRk5fRklFTERfQVJHUyAoZm5zX3B0ciwg aXgpW2pqXS50eXBlKQotCQkJICA6IFRZUEVfRklFTERfVFlQRSAoU1lNQk9M X1RZUEUgKG9sb2FkX3N5bXNbaXhdKSwgCi0JCQkJCSAgICAgamopKTsKKyAg ICAgIGlmIChmbnNfcHRyIHx8IG9sb2FkX3N5bXMpCisgICAgICAgIHsKKyAg ICAgICAgICBwYXJtX3R5cGVzID0gKHN0cnVjdCB0eXBlICoqKSAKKyAgICAg ICAgICAgIHhtYWxsb2MgKG5wYXJtcyAqIChzaXplb2YgKHN0cnVjdCB0eXBl ICopKSk7CisgICAgICAgICAgZm9yIChqaiA9IDA7IGpqIDwgbnBhcm1zOyBq aisrKQorICAgICAgICAgICAgcGFybV90eXBlc1tqal0gPSAobWV0aG9kCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChUWVBFX0ZOX0ZJRUxE X0FSR1MgKGZuc19wdHIsIGl4KVtqal0udHlwZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDogVFlQRV9GSUVMRF9UWVBFIChTWU1CT0xfVFlQ RSAob2xvYWRfc3ltc1tpeF0pLCAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGpqKSk7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAg eworICAgICAgICAgIHBhcm1fdHlwZXMgPSBleHRfZm5fZ2V0X2FyZ3R5cGVz IChleHRfZm4sICZucGFybXMpOworICAgICAgICB9CiAKICAgICAgIC8qIENv bXBhcmUgcGFyYW1ldGVyIHR5cGVzIHRvIHN1cHBsaWVkIGFyZ3VtZW50IHR5 cGVzLiAgU2tpcAogICAgICAgICAgVEhJUyBmb3Igc3RhdGljIG1ldGhvZHMu ICAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaApp bmRleCA0ZTgzOWQzLi5jNGJmNTFlIDEwMDY0NAotLS0gYS9nZGIvdmFsdWUu aAorKysgYi9nZGIvdmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQCBzdHJ1Y3Qg dHlwZTsKIHN0cnVjdCB1aV9maWxlOwogc3RydWN0IGxhbmd1YWdlX2RlZm47 CiBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9uczsKK3N0cnVjdCBleHRfZm5f ZGVzY3JpcHRvcjsKIAogLyogVGhlIHN0cnVjdHVyZSB3aGljaCBkZWZpbmVz IHRoZSB0eXBlIG9mIGEgdmFsdWUuICBJdCBzaG91bGQgbmV2ZXIKICAgIGJl IHBvc3NpYmxlIGZvciBhIHByb2dyYW0gbHZhbCB2YWx1ZSB0byBzdXJ2aXZl IG92ZXIgYSBjYWxsIHRvIHRoZQpAQCAtNjUyLDYgKzY1Myw3IEBAIGV4dGVy biBpbnQgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoqYXJn cywgaW50IG5hcmdzLAogCQkJCWVudW0gb2xvYWRfc2VhcmNoX3R5cGUgbWV0 aG9kLAogCQkJCXN0cnVjdCB2YWx1ZSAqKm9ianAsIHN0cnVjdCBzeW1ib2wg KmZzeW0sCiAJCQkJc3RydWN0IHZhbHVlICoqdmFscCwgc3RydWN0IHN5bWJv bCAqKnN5bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqKmV4dF9mbiwKIAkJCQlpbnQgKnN0 YXRpY3AsIGNvbnN0IGludCBub19hZGwpOwogCiBleHRlcm4gc3RydWN0IHZh bHVlICp2YWx1ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgZmll bGRubyk7Cg== --001a1132ecb61a4dcc04df5e33c8--