From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17958 invoked by alias); 29 Jan 2013 01:51:11 -0000 Received: (qmail 17841 invoked by uid 22791); 29 Jan 2013 01:51:09 -0000 X-SWARE-Spam-Status: No, hits=-3.4 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_STOCKGEN,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD,TW_BJ,TW_FN,TW_JF,TW_RG,TW_XZ X-Spam-Check-By: sourceware.org Received: from mail-ea0-f173.google.com (HELO mail-ea0-f173.google.com) (209.85.215.173) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 29 Jan 2013 01:49:10 +0000 Received: by mail-ea0-f173.google.com with SMTP id i1so1402435eaa.18 for ; Mon, 28 Jan 2013 17:49:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:content-type:x-gm-message-state; bh=q/i/oweHs3vHoeA5pn9TrunCi06U/hGKI+VEa3+PJeA=; b=ouYnXlgbag0o093fyXxQmLrriYlQ/UT0UWaBPKApR/WTnymurG0we0id/zkjmYNd7l j0UsUrdo5SzEy3Anje1ky+oFFPDfhVker4Orv3sRO0zPV+MzJbyju8bxnmIGBuVqMMoB PvOnQyp6Cy7lSS+B665HDSZLwF3Aq+QsA2JsV3QuWqLo+Z+jz1CEE0D5tgWjO3dJzk8g ny4JpMfh5B3Aa20Fe3tvLOOYHgRY/T0vekacSWc8a9gLQqz584k1r9DHtpqnJyCxmm95 hJNk4Ipsex7lhknNRO2CFCMnSDGwuUXFj9HBFz9nJdwWZ1z3SFjBM7aDE/S5BRWFbE9H 55Gw== MIME-Version: 1.0 X-Received: by 10.14.225.133 with SMTP id z5mr1170794eep.15.1359424148645; Mon, 28 Jan 2013 17:49:08 -0800 (PST) Received: by 10.14.47.208 with HTTP; Mon, 28 Jan 2013 17:49:08 -0800 (PST) In-Reply-To: References: Date: Tue, 29 Jan 2013 01:51:00 -0000 Message-ID: Subject: Re: [RFC] Debug Methods in GDB Python From: Siva Chandra To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=047d7b66f54d7aa7f804d46399d0 X-Gm-Message-State: ALoCoQk/MFq8TB/XUEJP9vnykMr1h5YFmD6bzq7v8Ar8omUdHwYJywMzIjM25i9K1MA+6xCk7hHAN8qfSc3nKqjICwVyLrYXbINg2Z7OwUqUA3KXkDzCGEPwHkTYjzHjFO70NKiuJM6RCZoOxqjZ93GTwCaabWWjyhX8bDyX4aZsS/GxSTMY1L1nnSWZ0CkukCfLE5ELnph1sD3aGYdzuwRe1Ov3WmEh9A== X-IsSubscribed: yes 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 X-SW-Source: 2013-01/txt/msg00677.txt.bz2 --047d7b66f54d7aa7f804d46399d0 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2356 Attached is a new version of the patch which I have now regression tested. Except for tests and docs, I think it is complete wrt the feature set I have in mind. Hence, the caveats from the previous mail still apply. 2013-01-01 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'. On Mon, Jan 7, 2013 at 1:21 PM, Siva Chandra wrote: > 1. The patch is incomplete in the sense that tests and documentation > are missing. Also, ways to enable and disable single or group of debug > methods is missing. At this point, I am looking for feedback on my > direction and the way I am intercepting the normal GDB flow to lookup > methods defined in Python. I will work on completing the patch once > there is an agreement on these basics. > > 2. I did not intend to provide a way for the user to define new or > override static methods via Python. > > 3. I did not intend to provide a way for the user to define new > virtual methods in Python. The user can however override existing > virtual and non-virtual methods. The user can also define new > non-virtual methods in Python. > > 4. Doug suggested that I use the C++ infrastructure in GDB as much as > possible. I feel I have done so. --047d7b66f54d7aa7f804d46399d0 Content-Type: text/plain; charset=US-ASCII; name="dm_patch_v2.txt" Content-Disposition: attachment; filename="dm_patch_v2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hcidxyau3 Content-length: 71045 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCA2OGQ1NDVlLi5jNDFiZjhjIDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0yNzgsNiArMjc4 LDcgQEAgU1VCRElSX1BZVEhPTl9PQlMgPSBcCiAJcHktYnJlYWtwb2ludC5v IFwKIAlweS1jbWQubyBcCiAJcHktY29udGludWVldmVudC5vIFwKKwlweS1k ZWJ1Z21ldGhvZHMubyBcCiAJcHktZXZlbnQubyBcCiAJcHktZXZ0cmVnaXN0 cnkubyBcCiAJcHktZXZ0cy5vIFwKQEAgLTMxMiw2ICszMTMsNyBAQCBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBc CiAJcHl0aG9uL3B5LWNtZC5jIFwKIAlweXRob24vcHktY29udGludWVldmVu dC5jIFwKKwlweXRob24vcHktZGVidWdtZXRob2RzLmMgXAogCXB5dGhvbi9w eS1ldmVudC5jIFwKIAlweXRob24vcHktZXZ0cmVnaXN0cnkuYyBcCiAJcHl0 aG9uL3B5LWV2dHMuYyBcCkBAIC03MTIsNyArNzE0LDcgQEAgU0ZJTEVTID0g YWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxw cmludC5jIGFkYS10YXNrcy5jIFwKIAlkd2FyZjJleHByLmMgZHdhcmYybG9j LmMgZHdhcmYycmVhZC5jIGR3YXJmMi1mcmFtZS5jIFwKIAlkd2FyZjItZnJh bWUtdGFpbGNhbGwuYyBcCiAJZWxmcmVhZC5jIGVudmlyb24uYyBldmFsLmMg ZXZlbnQtbG9vcC5jIGV2ZW50LXRvcC5jIFwKLQlleGNlcHRpb25zLmMgZXhw cHJpbnQuYyBcCisJZXhjZXB0aW9ucy5jIGV4cHByaW50LmMgZXh0LWZ1bmN0 aW9uLmMgXAogCWYtZXhwLnkgZi1sYW5nLmMgZi10eXBlcHJpbnQuYyBmLXZh bHByaW50LmMgZmlsZXN5c3RlbS5jIFwKIAlmaW5kY21kLmMgZmluZHZhci5j IGZyYW1lLmMgZnJhbWUtYmFzZS5jIGZyYW1lLXVud2luZC5jIFwKIAlnZGJh cmNoLmMgYXJjaC11dGlscy5jIGdkYl9iZmQuYyBnZGJfb2JzdGFjay5jIFwK QEAgLTgxMSw3ICs4MTMsNyBAQCBkb3VibGVzdC5oIHJlZ3NldC5oIGhwcGEt dGRlcC5oIHBwYy1saW51eC10ZGVwLmggcnM2MDAwLXRkZXAuaCBcCiBjb21t b24vZ2RiX2xvY2FsZS5oIGNvbW1vbi9nZGJfZGlyZW50LmggYXJjaC11dGls cy5oIHRyYWQtZnJhbWUuaCBnbnUtbmF0LmggXAogbGFuZ3VhZ2UuaCBuYnNk LXRkZXAuaCBzb2xpYi1zdnI0LmggXAogbWFjcm9leHAuaCB1aS1maWxlLmgg cmVnY2FjaGUuaCBnZGJfc3RyaW5nLmggdHJhY2Vwb2ludC5oIGkzODYtdGRl cC5oIFwKLWluZi1jaGlsZC5oIHAtbGFuZy5oIGV2ZW50LXRvcC5oIGdkYnR5 cGVzLmggdXNlci1yZWdzLmggXAoraW5mLWNoaWxkLmggcC1sYW5nLmggZXZl bnQtdG9wLmggZXh0LWZ1bmN0aW9uLmggZ2RidHlwZXMuaCB1c2VyLXJlZ3Mu aCBcCiByZWdmb3JtYXRzL3JlZ2RlZi5oIGNvbmZpZy9hbHBoYS9ubS1vc2Yz LmggIGNvbmZpZy9pMzg2L25tLWkzODZnbnUuaCBcCiBjb25maWcvaTM4Ni9u bS1mYnNkLmggXAogY29uZmlnL25tLW50by5oIGNvbmZpZy9zcGFyYy9ubS1z b2wyLmggY29uZmlnL25tLWxpbnV4LmggXApAQCAtOTI3LDcgKzkyOSw3IEBA IENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQoWVlP QkopIFwKIAlpbmZlcmlvci5vIG9zZGF0YS5vIGdkYl91c2xlZXAubyByZWNv cmQubyBnY29yZS5vIFwKIAlnZGJfdmVjcy5vIGppdC5vIHByb2dzcGFjZS5v IHNraXAubyBwcm9iZS5vIFwKIAljb21tb24tdXRpbHMubyBidWZmZXIubyBw dGlkLm8gZ2RiLWRsZmNuLm8gY29tbW9uLWFnZW50Lm8gXAotCWZvcm1hdC5v IHJlZ2lzdHJ5Lm8KKwlmb3JtYXQubyByZWdpc3RyeS5vIGV4dC1mdW5jdGlv bi5vCiAKIFRTT0JTID0gaW5mbG93Lm8KIApAQCAtMjA3Nyw2ICsyMDc5LDEw IEBAIHB5LWNvbnRpbnVlZXZlbnQubzogJChzcmNkaXIpL3B5dGhvbi9weS1j b250aW51ZWV2ZW50LmMKIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykg JChzcmNkaXIpL3B5dGhvbi9weS1jb250aW51ZWV2ZW50LmMKIAkkKFBPU1RD T01QSUxFKQogCitweS1kZWJ1Z21ldGhvZHMubzogJChzcmNkaXIpL3B5dGhv bi9weS1kZWJ1Z21ldGhvZHMuYworCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZM QUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5jCisJJChQ T1NUQ09NUElMRSkKKwogcHktZXZlbnQubzogJChzcmNkaXIpL3B5dGhvbi9w eS1ldmVudC5jCiAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3Jj ZGlyKS9weXRob24vcHktZXZlbnQuYwogCSQoUE9TVENPTVBJTEUpCmRpZmYg LS1naXQgYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gYi9nZGIv ZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KaW5kZXggZDk4YWM3Ny4uMDRl NWU1MiAxMDA2NDQKLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxl LmluCisrKyBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgpAQCAt NTYsNiArNTYsNyBAQCBQWVRIT05fRklMRVMgPSBcCiAJZ2RiL3R5cGVzLnB5 IFwKIAlnZGIvcHJpbnRpbmcucHkgXAogCWdkYi9wcm9tcHQucHkgXAorCWdk Yi9kZWJ1Z21ldGhvZHMucHkgXAogCWdkYi9jb21tYW5kL19faW5pdF9fLnB5 IFwKIAlnZGIvY29tbWFuZC90eXBlX3ByaW50ZXJzLnB5IFwKIAlnZGIvY29t bWFuZC9wcmV0dHlfcHJpbnRlcnMucHkgXApkaWZmIC0tZ2l0IGEvZ2RiL2V2 YWwuYyBiL2dkYi9ldmFsLmMKaW5kZXggZjRiMzljYi4uM2MyYzY3ZiAxMDA2 NDQKLS0tIGEvZ2RiL2V2YWwuYworKysgYi9nZGIvZXZhbC5jCkBAIC0yMiw2 ICsyMiw3IEBACiAjaW5jbHVkZSAic3ltdGFiLmgiCiAjaW5jbHVkZSAiZ2Ri dHlwZXMuaCIKICNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImV4dC1m dW5jdGlvbi5oIgogI2luY2x1ZGUgImV4cHJlc3Npb24uaCIKICNpbmNsdWRl ICJ0YXJnZXQuaCIKICNpbmNsdWRlICJmcmFtZS5oIgpAQCAtMTU5Miw3ICsx NTkzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlw ZSAqZXhwZWN0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTk9OX01FVEhPRCwgLyogbm90IG1ldGhvZCAqLwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIC8qIHBhc3MgTlVMTCBz eW1ib2wgc2luY2UKIAkJCQkJICAgICAgc3ltYm9sIGlzIHVua25vd24gKi8K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmc3ltcCwg TlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCwgJnN5bXAsIE5VTEwsIE5VTEwsIDApOwogCiAgICAgICAgICAgLyogTm93 IGZpeCB0aGUgZXhwcmVzc2lvbiBiZWluZyBldmFsdWF0ZWQuICAqLwogICAg ICAgICAgIGV4cC0+ZWx0c1tzYXZlX3BvczEgKyAyXS5zeW1ib2wgPSBzeW1w OwpAQCAtMTYyMiwxMSArMTYyMywxMiBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKIAkgICAgICAvKiBM YW5ndWFnZSBpcyBDKyssIGRvIHNvbWUgb3ZlcmxvYWQgcmVzb2x1dGlvbiBi ZWZvcmUKIAkJIGV2YWx1YXRpb24uICAqLwogCSAgICAgIHN0cnVjdCB2YWx1 ZSAqdmFscCA9IE5VTEw7CisgICAgICAgICAgICAgIHN0cnVjdCBleHRfZm5f ZGVzY3JpcHRvciAqZXh0X2ZucCA9IE5VTEw7CiAKIAkgICAgICAodm9pZCkg ZmluZF9vdmVybG9hZF9tYXRjaCAoJmFyZ3ZlY1sxXSwgbmFyZ3MsIHRzdHIs CiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhPRCwg LyogbWV0aG9kICovCiAJCQkJCSAgJmFyZzIsICAvKiB0aGUgb2JqZWN0ICov Ci0JCQkJCSAgTlVMTCwgJnZhbHAsIE5VTEwsCisJCQkJCSAgTlVMTCwgJnZh bHAsIE5VTEwsICZleHRfZm5wLAogCQkJCQkgICZzdGF0aWNfbWVtZnVuY3As IDApOwogCiAJICAgICAgaWYgKG9wID09IE9QX1NDT1BFICYmICFzdGF0aWNf bWVtZnVuY3ApCkBAIC0xNjM2LDkgKzE2MzgsMTkgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAJCQkg ICAiYHRoaXMnIHBvaW50ZXIiKSwKIAkJCSBmdW5jdGlvbl9uYW1lKTsKIAkJ fQotCSAgICAgIGFyZ3ZlY1sxXSA9IGFyZzI7CS8qIHRoZSBgYHRoaXMnJyBw b2ludGVyICovCi0JICAgICAgYXJndmVjWzBdID0gdmFscDsJLyogVXNlIHRo ZSBtZXRob2QgZm91bmQgYWZ0ZXIgb3ZlcmxvYWQKLQkJCQkgICByZXNvbHV0 aW9uLiAgKi8KKworICAgICAgICAgICAgICBpZiAodmFscCkKKyAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICBhcmd2ZWNbMV0gPSBhcmcy OyAgICAgLyogdGhlIGBgdGhpcycnIHBvaW50ZXIgKi8KKyAgICAgICAgICAg ICAgICAgIGFyZ3ZlY1swXSA9IHZhbHA7ICAgICAvKiBVc2UgdGhlIG1ldGhv ZCBmb3VuZCBhZnRlciBvdmVybG9hZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdXRpb24uICAqLworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgaWYgKGV4dF9mbnApCisgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaWYgKGV4dF9mbnAt PmlzX21ldGhvZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dF9m bl9pbnZva2VfbWV0aG9kIChleHRfZm5wLCBhcmcyLCBhcmd2ZWMgKyAyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hcmdzIC0gMSk7CisgICAgICAgICAgICAgICAgfQogCSAgICB9CiAJ ICBlbHNlCiAJICAgIC8qIE5vbi1DKysgY2FzZSAtLSBvciBubyBvdmVybG9h ZCByZXNvbHV0aW9uLiAgKi8KQEAgLTE2OTcsNyArMTcwOSw3IEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAogCQkJCQkgIE5VTEwsICAgICAgICAvKiBubyBuZWVkIGZvciBuYW1lICov CiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PTl9NRVRI T0QsICAvKiBub3QgbWV0aG9kICovCiAJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsIGZ1bmN0aW9uLCAvKiB0aGUgZnVuY3Rpb24g Ki8KLQkJCQkJICBOVUxMLCAmc3ltcCwgTlVMTCwgbm9fYWRsKTsKKwkJCQkJ ICBOVUxMLCAmc3ltcCwgTlVMTCwgTlVMTCwgbm9fYWRsKTsKIAogCSAgICAg IGlmIChvcCA9PSBPUF9WQVJfVkFMVUUpCiAJCXsKZGlmZiAtLWdpdCBhL2dk Yi9leHQtZnVuY3Rpb24uYyBiL2dkYi9leHQtZnVuY3Rpb24uYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGU5NzVmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiL2V4dC1mdW5jdGlvbi5jCkBAIC0wLDAgKzEsMTY2 IEBACisvKiBTdXBwb3J0IGZvciBmdW5jdGlvbnMgZGVmaW5lZCBpbiBleHRl bnNpb24gbGFuZ3VhZ2VzLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJleHQtZnVuY3Rpb24u aCIKKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCisKK3N0YXRpYyBVTE9O R0VTVCBlbmFibGVkX2V4dF9sYW5ndWFnZXMgPSBFWFRfTEFOR19QWVRIT047 CisKK3N0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqCituZXdfZXh0X2Z1bmN0 aW9uICh2b2lkKQoreworICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4 dF9mbiA9CisgICAgIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKikgeHph bGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IpKTsKKwor ICBleHRfZm4tPm5leHQgPSBOVUxMOworICBleHRfZm4tPmlzX21ldGhvZCA9 IDA7CisgIGV4dF9mbi0+bGFuZyA9IEVYVF9MQU5HX1VOS05PV047CisgIGV4 dF9mbi0+ZXh0X29iamVjdCA9IE5VTEw7CisKKyAgcmV0dXJuIGV4dF9mbjsK K30KKwordm9pZAorZXh0X2ZuX2xpc3RfZnJlZSAodm9pZCAqbCkKK3sKKyAg c3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpsaXN0ID0gKHN0cnVjdCBleHRf Zm5fZGVzY3JpcHRvciAqKSBsOworCisgIHdoaWxlIChsaXN0KQorICAgIHsK KyAgICAgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqaXRlbSA9IGxpc3Q7 CisKKyAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OworCisgICAgICBpZiAoaXRl bS0+aXNfbWV0aG9kKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGl0ZW0t PmxhbmcgPT0gRVhUX0xBTkdfUFlUSE9OKQorICAgICAgICAgICAgcHlfZnJl ZV9leHRfb2JqZWN0IChpdGVtLT5leHRfb2JqZWN0KTsKKyAgICAgICAgfQor CisgICAgICB4ZnJlZSAoaXRlbSk7CisgICAgfQorfQorCitzdHJ1Y3QgZXh0 X2ZuX2Rlc2NyaXB0b3IgKgorZXh0X2ZuX2xpc3RfZXh0ZW5kIChzdHJ1Y3Qg ZXh0X2ZuX2Rlc2NyaXB0b3IgKmwxLCBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0 b3IgKmwyKQoreworICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKml0ZW0g PSBsMTsKKworICBpZiAoIWwxKQorICAgIHJldHVybiBsMjsKKworICBpZiAo IWwyKQorICAgIHJldHVybiBsMTsKKworICB3aGlsZSAoaXRlbS0+bmV4dCkK KyAgICBpdGVtID0gaXRlbS0+bmV4dDsKKworICBpdGVtLT5uZXh0ID0gbDI7 CisKKyAgcmV0dXJuIGwxOworfQorCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0 b3IgKgorZXh0X2ZuX2xpc3RfcHJlcGVuZCAoc3RydWN0IGV4dF9mbl9kZXNj cmlwdG9yICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICppdGVtKQoreworICBzdHJ1Y3QgZXh0X2ZuX2Rl c2NyaXB0b3IgKmxhc3RfaXRlbTsKKyAgaWYgKCFsaXN0KQorICAgIHJldHVy biBpdGVtOworCisgIGlmICghaXRlbSkKKyAgICByZXR1cm4gbGlzdDsKKwor ICBpdGVtLT5uZXh0ID0gbGlzdDsKKworICByZXR1cm4gaXRlbTsKK30KKwor c3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICoKK2V4dF9mbl9jbG9uZSAoc3Ry dWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm4pCit7CisgIHN0cnVjdCBl eHRfZm5fZGVzY3JpcHRvciAqbmV3X2V4dF9mbiA9IG5ld19leHRfZnVuY3Rp b24gKCk7CisKKyAgbmV3X2V4dF9mbi0+bGFuZyA9IGV4dF9mbi0+bGFuZzsK KyAgbmV3X2V4dF9mbi0+aXNfbWV0aG9kID0gZXh0X2ZuLT5pc19tZXRob2Q7 CisjaWZkZWYgSEFWRV9QWVRIT04KKyAgaWYgKChlbmFibGVkX2V4dF9sYW5n dWFnZXMgJiYgRVhUX0xBTkdfUFlUSE9OKQorICAgICAgJiYgKGV4dF9mbi0+ bGFuZyA9PSBFWFRfTEFOR19QWVRIT04pKQorICAgIG5ld19leHRfZm4tPmV4 dF9vYmplY3QgPSBweV9jbG9uZV9leHRfb2JqZWN0IChleHRfZm4tPmV4dF9v YmplY3QpOworI2VuZGlmCisKKyAgcmV0dXJuIG5ld19leHRfZm47Cit9CisK K3N0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqCitleHRfZm5fbGlzdF9nZXQg KHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqbGlzdCwgaW50IGluZGV4KQor eworICBpbnQgaSA9IDA7CisKKyAgd2hpbGUgKGxpc3QpCisgICAgeworICAg ICAgaWYgKGkgPT0gaW5kZXgpCisgICAgICAgIHJldHVybiBsaXN0OworCisg ICAgICBpKys7CisgICAgICBsaXN0ID0gbGlzdC0+bmV4dDsKKyAgICB9CisK KyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0cnVjdCBleHRfZm5fZGVzY3JpcHRv ciAqCitnZXRfbWF0Y2hpbmdfZXh0X21ldGhvZHMgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBjaGFyICptZXRob2QpCit7CisgIHN0cnVjdCBleHRfZm5f ZGVzY3JpcHRvciAqcHl0aG9uX21ldGhvZHMgPSBOVUxMOworCisjaWZkZWYg SEFWRV9QWVRIT04KKyAgaWYgKGVuYWJsZWRfZXh0X2xhbmd1YWdlcyAmJiBF WFRfTEFOR19QWVRIT04pCisgICAgcHl0aG9uX21ldGhvZHMgPSBweV9kZWJ1 Z21ldGhvZF9uYW1lX21hdGNoICh0eXBlLCBtZXRob2QpOworI2VuZGlmICAv KiBIQVZFX1BZVEhPTiAgKi8KKworICByZXR1cm4gcHl0aG9uX21ldGhvZHM7 Cit9CisKK3N0cnVjdCB0eXBlICoqCitleHRfZm5fZ2V0X2FyZ3R5cGVzIChz dHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiwgaW50ICpuYXJncykK K3sKKyNpZmRlZiBIQVZFX1BZVEhPTgorICBpZiAoKGVuYWJsZWRfZXh0X2xh bmd1YWdlcyAmJiBFWFRfTEFOR19QWVRIT04pCisgICAgICAmJiAoZXh0X2Zu LT5sYW5nID09IEVYVF9MQU5HX1BZVEhPTikpCisgICAgcmV0dXJuIHB5X2V4 dF9mbl9nZXRfYXJndHlwZXMgKGV4dF9mbiwgbmFyZ3MpOworI2VuZGlmICAv KiBIQVZFX1BZVEhPTiAgKi8KKworICAqbmFyZ3MgPSAwOworICByZXR1cm4g TlVMTDsKK30KKworc3RydWN0IHZhbHVlICoKK2V4dF9mbl9pbnZva2VfbWV0 aG9kIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiwgc3RydWN0 IHZhbHVlICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZh bHVlICoqYXJncywgaW50IG5hcmdzKQoreworI2lmZGVmIEhBVkVfUFlUSE9O CisgIGlmICgoZW5hYmxlZF9leHRfbGFuZ3VhZ2VzICYmIEVYVF9MQU5HX1BZ VEhPTikKKyAgICAgICYmIChleHRfZm4tPmxhbmcgPT0gRVhUX0xBTkdfUFlU SE9OKSkKKyAgICByZXR1cm4gcHlfZXh0X2ZuX2ludm9rZV9tZXRob2QgKGV4 dF9mbiwgb2JqLCBhcmdzLCBuYXJncyk7CisjZW5kaWYgIC8qIEhBVkVfUFlU SE9OICAqLworCisgIHJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvZ2Ri L2V4dC1mdW5jdGlvbi5oIGIvZ2RiL2V4dC1mdW5jdGlvbi5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMTY5NjIKLS0tIC9kZXYv bnVsbAorKysgYi9nZGIvZXh0LWZ1bmN0aW9uLmgKQEAgLTAsMCArMSw3MCBA QAorLyogU3VwcG9ydCBmb3IgZnVuY3Rpb25zIGRlZmluZWQgaW4gZXh0ZW5z aW9uIGxhbmd1YWdlcy4KKworICAgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpZiAhZGVmaW5lZCAoRVhUX0ZVTkNUSU9OX0gpCisjZGVmaW5lIEVYVF9G VU5DVElPTl9ICisKK3N0cnVjdCB2YWx1ZTsKK3N0cnVjdCB0eXBlOworCitl bnVtIGV4dF9sYW5nCisgeworICAgRVhUX0xBTkdfVU5LTk9XTiA9IDAsCisg ICAvKiBWYWx1ZXMgZm9yIGV4dGVuc2lvbiBsYW5ndWFnZXMgYXJlIHBvd2Vy cyBvZiAyLiAgKi8KKyAgIEVYVF9MQU5HX0dVSUxFID0gMSwKKyAgIEVYVF9M QU5HX1BZVEhPTiA9IDIKKyAgIC8qIE5leHQgZXh0ZW5zaW9uIGxhbmd1YWdl IHNob3VsZCBoYXZlIHZhbHVlIG9mIDQuICAqLworIH07CisKK3N0cnVjdCBl eHRfZm5fZGVzY3JpcHRvcgorICB7CisgICAgZW51bSBleHRfbGFuZyBsYW5n OworCisgICAgaW50IGlzX21ldGhvZDsKKworICAgIHZvaWQgKmV4dF9vYmpl Y3Q7CisKKyAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKm5leHQ7Cisg IH07CisKK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKmV4dF9mbl9pbnZva2VfbWV0 aG9kIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFsdWUg KiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdmFsdWUgKiosIGludCBuYXJncyk7CisKK2V4dGVybiBzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbl9jbG9uZSAoc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICopOworCitleHRlcm4gc3RydWN0IGV4dF9mbl9k ZXNjcmlwdG9yICpleHRfZm5fbGlzdF9nZXQgKAorICAgIHN0cnVjdCBleHRf Zm5fZGVzY3JpcHRvciAqbGlzdCwgaW50KTsKKworZXh0ZXJuIHN0cnVjdCBl eHRfZm5fZGVzY3JpcHRvciAqCitleHRfZm5fbGlzdF9leHRlbmQgKHN0cnVj dCBleHRfZm5fZGVzY3JpcHRvciAqLCBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0 b3IgKik7CisKK2V4dGVybiBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4 dF9mbl9saXN0X3ByZXBlbmQgKAorICAgIHN0cnVjdCBleHRfZm5fZGVzY3Jp cHRvciAqbGlzdCwgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICppdGVtKTsK KworZXh0ZXJuIHZvaWQgZXh0X2ZuX2xpc3RfZnJlZSAodm9pZCAqbGlzdCk7 CisKK2V4dGVybiBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKm5ld19leHRf ZnVuY3Rpb24gKHZvaWQpOworCitleHRlcm4gc3RydWN0IGV4dF9mbl9kZXNj cmlwdG9yICpnZXRfbWF0Y2hpbmdfZXh0X21ldGhvZHMgKHN0cnVjdCB0eXBl ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7CisKK2V4dGVybiBz dHJ1Y3QgdHlwZSAqKmV4dF9mbl9nZXRfYXJndHlwZXMgKHN0cnVjdCBleHRf Zm5fZGVzY3JpcHRvciAqLCBpbnQgKik7CisKKyNlbmRpZiAvKiBFWFRfRlVO Q1RJT05fSCAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Rl YnVnbWV0aG9kcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9kZWJ1Z21ldGhv ZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQw YzcwNgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9weXRob24vbGliL2dkYi9k ZWJ1Z21ldGhvZHMucHkKQEAgLTAsMCArMSwxMTMgQEAKKyMgUHl0aG9uIHNp ZGUgb2YgdGhlIHN1cHBvcnQgZm9yIGRlYnVnIG1ldGhvZHMuCisjIENvcHly aWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKworIiIiVXRpbGl0aWVzIGZvciBhZGRpbmcg ZGVidWcgbWV0aG9kcyIiIgorCitpbXBvcnQgZ2RiCitpbXBvcnQgcmUKKwor REVGQVVMVF9ERUJVR19NRVRIT0RfR1JPVVAgPSAnREVGQVVMVF9ERUJVR19N RVRIT0RfR1JPVVAnCisKKworY2xhc3MgRGVidWdNZXRob2Qob2JqZWN0KToK KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBncm91cD1ERUZBVUxU X0RFQlVHX01FVEhPRF9HUk9VUCk6CisgICAgICAgIHNlbGYuX25hbWUgPSBu YW1lCisgICAgICAgIHNlbGYuZ3JvdXAgPSBncm91cAorICAgICAgICBzZWxm LmVuYWJsZWQgPSBUcnVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFt ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRl ZiBtYXRjaF9jbGFzcyhzZWxmLCBjbGFzc19uYW1lKToKKyAgICAgICAgZ2Ri LkdkYkVycm9yKCdFUlJPUjogSW52b2tpbmcgYWJzdHJhY3QgbWV0aG9kIFwn bWF0Y2hfY2xhc3NcJy4nKQorCisgICAgZGVmIG1hdGNoX21ldGhvZChzZWxm LCBtZXRob2RfbmFtZSk6CisgICAgICAgIGdkYi5HZGJFcnJvcignRVJST1I6 IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBcJ21hdGNoX21ldGhvZFwnLicp CisKKyAgICBkZWYgZ2V0X2FyZ3R5cGVzKHNlbGYsIGNsYXNzX3R5cGUsIG1l dGhvZF9uYW1lKToKKyAgICAgICAgZ2RiLkdkYkVycm9yKCdFUlJPUjogSW52 b2tpbmcgYWJzdHJhY3QgbWV0aG9kIFwnZ2V0X2FyZ3R5cGVzXCcuJykKKwor ICAgIGRlZiBpbnZva2Uoc2VsZiwgb2JqLCAqYXJncyk6CisgICAgICAgIGdk Yi5HZGJFcnJvcignRVJST1I6IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBc J2ludm9rZVwnLicpCisKKworY2xhc3MgU2ltcGxlRGVidWdNZXRob2QoRGVi dWdNZXRob2QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBncm91 cCwgbWV0aG9kX2Z1bmN0aW9uLCBjbGFzc19tYXRjaGVyLAorICAgICAgICAg ICAgICAgICBtZXRob2RfbWF0Y2hlciwgKmFyZ3R5cGVzKToKKyAgICAgICAg RGVidWdNZXRob2QuX19pbml0X18oc2VsZiwgbmFtZSwgZ3JvdXApCisgICAg ICAgIHNlbGYuX21ldGhvZF9mdW5jdGlvbiA9IG1ldGhvZF9mdW5jdGlvbgor ICAgICAgICBzZWxmLl9jbGFzc19tYXRjaGVyID0gY2xhc3NfbWF0Y2hlcgor ICAgICAgICBzZWxmLl9tZXRob2RfbWF0Y2hlciA9IG1ldGhvZF9tYXRjaGVy CisgICAgICAgIHNlbGYuX2FyZ3R5cGVzID0gYXJndHlwZXMKKworICAgIGRl ZiBtYXRjaF9jbGFzcyhzZWxmLCBjbGFzc190eXBlKToKKyAgICAgICAgaWYg cmUubWF0Y2goc2VsZi5fY2xhc3NfbWF0Y2hlciwgc3RyKGNsYXNzX3R5cGUu dW5xdWFsaWZpZWQoKS50YWcpKToKKyAgICAgICAgICAgIHJldHVybiBUcnVl CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwor ICAgIGRlZiBtYXRjaF9tZXRob2Qoc2VsZiwgbWV0aG9kX25hbWUpOgorICAg ICAgICBpZiByZS5tYXRjaChzZWxmLl9tZXRob2RfbWF0Y2hlciwgbWV0aG9k X25hbWUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGdldF9h cmd0eXBlcyhzZWxmLCBjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAg ICAgIHJldHVybiBzZWxmLl9hcmd0eXBlcworCisgICAgZGVmIGludm9rZShz ZWxmLCBvYmosICphcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21ldGhv ZF9mdW5jdGlvbihvYmosICphcmdzKQorCisKK2RlZiBnZXRfbWF0Y2hpbmdf bWV0aG9kcyhjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgbWF0Y2hf bGlzdCA9IFtdCisgICAgZm9yIG9iamZpbGUgaW4gZ2RiLm9iamZpbGVzKCk6 CisgICAgICAgIGZvciBkZWJ1Z19tZXRob2QgaW4gb2JqZmlsZS5kZWJ1Z19t ZXRob2RzOgorICAgICAgICAgICAgaWYgKGRlYnVnX21ldGhvZC5lbmFibGVk IGFuZAorICAgICAgICAgICAgICAgIGRlYnVnX21ldGhvZC5tYXRjaF9jbGFz cyhjbGFzc190eXBlKSBhbmQKKyAgICAgICAgICAgICAgICBkZWJ1Z19tZXRo b2QubWF0Y2hfbWV0aG9kKG1ldGhvZF9uYW1lKSk6CisgICAgICAgICAgICAg ICAgbWF0Y2hfbGlzdC5hcHBlbmQoZGVidWdfbWV0aG9kKQorICAgIHJldHVy biBtYXRjaF9saXN0CisKKworZGVmIGdldF9tZXRob2RfYXJndHlwZXMoZGVi dWdfbWV0aG9kLCBjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgcmV0 dXJuIGRlYnVnX21ldGhvZC5nZXRfYXJndHlwZXMoY2xhc3NfdHlwZSwgbWV0 aG9kX25hbWUpCisKKworZGVmIGludm9rZV9kZWJ1Z19tZXRob2QoZGVidWdf bWV0aG9kLCBvYmosIGFyZ3MpOgorICAgIHJldHVybiBkZWJ1Z19tZXRob2Qu aW52b2tlKG9iaiwgKmFyZ3MpCisKKworZGVmIHJlZ2lzdGVyX2RlYnVnX21l dGhvZHMob2JqZmlsZSwgZGVidWdfbWV0aG9kcyk6CisgICAgZXhpc3Rpbmdf bWV0aG9kX2xpc3QgPSBbXQorICAgIGZvciBuZXdfbWV0aG9kIGluIGRlYnVn X21ldGhvZHM6CisgICAgICAgIGZvciBvbGRfbWV0aG9kIGluIG9iamZpbGUu ZGVidWdfbWV0aG9kczoKKyAgICAgICAgICAgIGlmIChuZXdfbWV0aG9kLmdy b3VwID09IG9sZF9tZXRob2QuZ3JvdXAgYW5kCisgICAgICAgICAgICAgICAg bmV3X21ldGhvZC5uYW1lID09IG9sZF9tZXRob2QubmFtZSk6CisgICAgICAg ICAgICAgICAgcHJpbnQgKCdXQVJOSU5HOiBSZXBsYWNpbmcgZGVidWcgbWV0 aG9kIHdpdGggbmFtZSAiJXMiIGluICcKKyAgICAgICAgICAgICAgICAgICAg ICAgJ2dyb3VwICIlcyIuJyAlIChvbGRfbWV0aG9kLm5hbWUsIG9sZF9tZXRo b2QuZ3JvdXApKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nX21ldGhvZF9s aXN0LmFwcGVuZChvbGRfbWV0aG9kKQorICAgIGZvciBvbGRfbWV0aG9kIGlu IGV4aXN0aW5nX21ldGhvZF9saXN0OgorICAgICAgICBvYmpmaWxlLmRlYnVn X21ldGhvZHMucmVtb3ZlKG9sZF9tZXRob2QpCisgICAgb2JqZmlsZS5kZWJ1 Z19tZXRob2RzLmV4dGVuZChkZWJ1Z19tZXRob2RzKQorCisKKyMgUHl0aG9u IGRlYnVnIG1ldGhvZHMgZmVhdHVyZSB3aWxsIGJlIGVuYWJsZWQgd2hlbiBh IHVzZXIgaW1wb3J0cyB0aGlzCisjIG1vZHVsZS4KK2dkYi5lbmFibGVfZGVi dWdfbWV0aG9kcyhnZXRfbWF0Y2hpbmdfbWV0aG9kcywgZ2V0X21ldGhvZF9h cmd0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfZGVi dWdfbWV0aG9kKQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1kZWJ1Z21l dGhvZHMuYyBiL2dkYi9weXRob24vcHktZGVidWdtZXRob2RzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZkYjBiNQotLS0gL2Rl di9udWxsCisrKyBiL2dkYi9weXRob24vcHktZGVidWdtZXRob2RzLmMKQEAg LTAsMCArMSwyMzEgQEAKKy8qIFN1cHBvcnQgZm9yIGRlYnVnIG1ldGhvZHMg aW4gUHl0aG9uLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lu Y2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisjaW5j bHVkZSAiZXh0LWZ1bmN0aW9uLmgiCisjaW5jbHVkZSAidmFsdWUuaCIKKyNp bmNsdWRlICJsYW5ndWFnZS5oIgorI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5h bC5oIgorI2luY2x1ZGUgInB5dGhvbi5oIgorCitzdHJ1Y3QgcHlfZXh0X29i amVjdAoreworICBQeU9iamVjdCAqb2JqZWN0OworICBQeU9iamVjdCAqbWF0 Y2hfcHlfb2JqX3R5cGU7CisgIGNvbnN0IGNoYXIgKm1hdGNoX21ldGhvZDsK K307CisKK1B5T2JqZWN0ICptYXRjaF9tZXRob2RzX2NhbGxhYmxlID0gTlVM TDsKK1B5T2JqZWN0ICpnZXRfYXJndHlwZXNfY2FsbGFibGUgPSBOVUxMOwor UHlPYmplY3QgKmludm9rZV9tZXRob2RfY2FsbGFibGUgPSBOVUxMOworCitQ eU9iamVjdCAqCitnZGJweV9lbmFibGVfZGVidWdfbWV0aG9kcyAoUHlPYmpl Y3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICBQeU9iamVjdCAqbWF0 Y2hfbWV0aG9kc190ZW1wLCAqZ2V0X2FyZ3R5cGVzX3RlbXAsICppbnZva2Vf bWV0aG9kX3RlbXA7CisgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisg IGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgIk9PTyIsICZtYXRjaF9t ZXRob2RzX3RlbXAsICZnZXRfYXJndHlwZXNfdGVtcCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAmaW52b2tlX21ldGhvZF90ZW1wKSkKKyAgICByZXR1 cm4gcmVzdWx0OworCisgIGlmIChQeUNhbGxhYmxlX0NoZWNrIChtYXRjaF9t ZXRob2RzX3RlbXApCisgICAgICAmJiBQeUNhbGxhYmxlX0NoZWNrIChnZXRf YXJndHlwZXNfdGVtcCkKKyAgICAgICYmIFB5Q2FsbGFibGVfQ2hlY2sgKGlu dm9rZV9tZXRob2RfdGVtcCkpCisgICAgeworICAgICAgUHlfWERFQ1JFRiAo bWF0Y2hfbWV0aG9kc19jYWxsYWJsZSk7CisgICAgICBQeV9YREVDUkVGIChn ZXRfYXJndHlwZXNfY2FsbGFibGUpOworICAgICAgUHlfWERFQ1JFRiAoaW52 b2tlX21ldGhvZF9jYWxsYWJsZSk7CisKKyAgICAgIFB5X0lOQ1JFRiAobWF0 Y2hfbWV0aG9kc190ZW1wKTsKKyAgICAgIFB5X0lOQ1JFRiAoZ2V0X2FyZ3R5 cGVzX3RlbXApOworICAgICAgUHlfSU5DUkVGIChpbnZva2VfbWV0aG9kX3Rl bXApOworCisgICAgICBtYXRjaF9tZXRob2RzX2NhbGxhYmxlID0gbWF0Y2hf bWV0aG9kc190ZW1wOworICAgICAgZ2V0X2FyZ3R5cGVzX2NhbGxhYmxlID0g Z2V0X2FyZ3R5cGVzX3RlbXA7CisgICAgICBpbnZva2VfbWV0aG9kX2NhbGxh YmxlID0gaW52b2tlX21ldGhvZF90ZW1wOworCisgICAgICBQeV9JTkNSRUYg KFB5X05vbmUpOworICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKKyAgICB9CisK KyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHN0cnVjdCBleHRfZm5f ZGVzY3JpcHRvciAqCituZXdfcHl0aG9uX2V4dF9tZXRob2QgKFB5T2JqZWN0 ICppdGVtLCBQeU9iamVjdCAqcHlfb2JqX3R5cGUsCisgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZCkKK3sKKyAgc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICpleHRfZm4gPSBuZXdfZXh0X2Z1bmN0aW9uICgp OworICBzdHJ1Y3QgcHlfZXh0X29iamVjdCAqZXh0X29iamVjdDsKKworICBl eHRfb2JqZWN0ID0gKHN0cnVjdCBweV9leHRfb2JqZWN0ICopIHh6YWxsb2Mg KHNpemVvZiAoc3RydWN0IHB5X2V4dF9vYmplY3QpKTsKKyAgZXh0X29iamVj dC0+b2JqZWN0ID0gaXRlbTsKKyAgZXh0X29iamVjdC0+bWF0Y2hfcHlfb2Jq X3R5cGUgPSBweV9vYmpfdHlwZTsKKyAgZXh0X29iamVjdC0+bWF0Y2hfbWV0 aG9kID0gbWV0aG9kOworCisgIGV4dF9mbi0+bGFuZyA9IEVYVF9MQU5HX1BZ VEhPTjsKKyAgZXh0X2ZuLT5pc19tZXRob2QgPSAxOworICBleHRfZm4tPmV4 dF9vYmplY3QgPSAodm9pZCAqKSBleHRfb2JqZWN0OworCisgIHJldHVybiBl eHRfZm47Cit9CisKK3ZvaWQKK3B5X2ZyZWVfZXh0X29iamVjdCAodm9pZCAq ZXh0X29iamVjdCkKK3sKKyAgc3RydWN0IHB5X2V4dF9vYmplY3QgKm8gPSAo c3RydWN0IHB5X2V4dF9vYmplY3QgKikgZXh0X29iamVjdDsKKworICBQeV9Y REVDUkVGIChvLT5vYmplY3QpOworICBQeV9YREVDUkVGIChvLT5tYXRjaF9w eV9vYmpfdHlwZSk7CisgIHhmcmVlIChvKTsKK30KKwordm9pZCAqCitweV9j bG9uZV9leHRfb2JqZWN0ICh2b2lkICpvYmopCit7CisgIHN0cnVjdCBweV9l eHRfb2JqZWN0ICpuZXdfb2JqLCAqb2xkX29iajsKKworICBvbGRfb2JqID0g KHN0cnVjdCBweV9leHRfb2JqZWN0ICopIG9iajsKKworICBuZXdfb2JqID0g KHN0cnVjdCBweV9leHRfb2JqZWN0ICopIHh6YWxsb2MgKHNpemVvZiAoc3Ry dWN0IHB5X2V4dF9vYmplY3QpKTsKKyAgbmV3X29iai0+b2JqZWN0ID0gb2xk X29iai0+b2JqZWN0OworICBuZXdfb2JqLT5tYXRjaF9weV9vYmpfdHlwZSA9 IG9sZF9vYmotPm1hdGNoX3B5X29ial90eXBlOworICBuZXdfb2JqLT5tYXRj aF9tZXRob2QgPSBvbGRfb2JqLT5tYXRjaF9tZXRob2Q7CisKKyAgUHlfWElO Q1JFRiAobmV3X29iai0+b2JqZWN0KTsKKyAgUHlfWElOQ1JFRiAobmV3X29i ai0+bWF0Y2hfcHlfb2JqX3R5cGUpOworCisgIHJldHVybiAodm9pZCAqKSBu ZXdfb2JqOworfQorCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKgorcHlf ZGVidWdtZXRob2RfbmFtZV9tYXRjaCAoc3RydWN0IHR5cGUgKm9ial90eXBl LCBjb25zdCBjaGFyICptZXRob2RfbmFtZSkKK3sKKyAgUHlPYmplY3QgKnB5 X3R5cGUsICpweV9kZWJ1Z21ldGhvZF9saXN0ID0gTlVMTCwgKmxpc3RfaXRl ciwgKml0ZW07CisgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKyAgc3Ry dWN0IGV4dF9mbl9kZXNjcmlwdG9yICptZXRob2RfbGlzdCA9IE5VTEw7CisK KyAgaWYgKCFvYmpfdHlwZSB8fCAhbWF0Y2hfbWV0aG9kc19jYWxsYWJsZSkK KyAgICByZXR1cm4gTlVMTDsKKworICBjbGVhbnVwcyA9IGVuc3VyZV9weXRo b25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdl KTsKKworICBweV90eXBlID0gdHlwZV90b190eXBlX29iamVjdCAob2JqX3R5 cGUpOworICBweV9kZWJ1Z21ldGhvZF9saXN0ID0gUHlPYmplY3RfQ2FsbEZ1 bmN0aW9uIChtYXRjaF9tZXRob2RzX2NhbGxhYmxlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3MiLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw eV90eXBlLCBtZXRob2RfbmFtZSk7CisKKyAgbGlzdF9pdGVyID0gUHlPYmpl Y3RfR2V0SXRlciAocHlfZGVidWdtZXRob2RfbGlzdCk7CisgIHdoaWxlICgo aXRlbSA9IFB5SXRlcl9OZXh0IChsaXN0X2l0ZXIpKSkKKyAgICB7CisgICAg ICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbjsKKworICAgICAg ZXh0X2ZuID0gbmV3X3B5dGhvbl9leHRfbWV0aG9kIChpdGVtLCBweV90eXBl LCBtZXRob2RfbmFtZSk7CisgICAgICBtZXRob2RfbGlzdCA9IGV4dF9mbl9s aXN0X3ByZXBlbmQgKG1ldGhvZF9saXN0LCBleHRfZm4pOworICAgIH0KKwor ICBQeV9ERUNSRUYgKGxpc3RfaXRlcik7CisgIFB5X0RFQ1JFRiAocHlfZGVi dWdtZXRob2RfbGlzdCk7CisgIAorICBkb19jbGVhbnVwcyAoY2xlYW51cHMp OworICByZXR1cm4gbWV0aG9kX2xpc3Q7Cit9CisKK3N0cnVjdCB0eXBlICoq CitweV9leHRfZm5fZ2V0X2FyZ3R5cGVzIChzdHJ1Y3QgZXh0X2ZuX2Rlc2Ny aXB0b3IgKmV4dF9mbiwgaW50ICpuYXJncykKK3sKKyAgaWYgKGV4dF9mbi0+ aXNfbWV0aG9kICYmIGdldF9hcmd0eXBlc19jYWxsYWJsZSkKKyAgICB7Cisg ICAgICBzdHJ1Y3QgcHlfZXh0X29iamVjdCAqZXh0X29iamVjdCA9CisgICAg ICAgICAgKHN0cnVjdCBweV9leHRfb2JqZWN0ICopIGV4dF9mbi0+ZXh0X29i amVjdDsKKyAgICAgIFB5T2JqZWN0ICpweV9hcmd0eXBlX2xpc3QsICpsaXN0 X2l0ZXIsICppdGVtOworICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBz OworICAgICAgc3RydWN0IHR5cGUgKip0eXBlX2FycmF5LCAqb2JqX3R5cGU7 CisgICAgICBpbnQgaSA9IDE7CisKKyAgICAgIGNsZWFudXBzID0gZW5zdXJl X3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFu Z3VhZ2UpOworICAgICAgcHlfYXJndHlwZV9saXN0ID0gUHlPYmplY3RfQ2Fs bEZ1bmN0aW9uIChnZXRfYXJndHlwZXNfY2FsbGFibGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPT3MiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBleHRfb2JqZWN0LT5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF9vYmplY3QtPm1hdGNoX3B5 X29ial90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBleHRfb2JqZWN0LT5tYXRjaF9tZXRob2QpOworCisg ICAgICBsaXN0X2l0ZXIgPSBQeU9iamVjdF9HZXRJdGVyIChweV9hcmd0eXBl X2xpc3QpOworICAgICAgKm5hcmdzID0gUHlTZXF1ZW5jZV9TaXplIChweV9h cmd0eXBlX2xpc3QpICsgMTsgIC8qIEluY2x1ZGUgJ3RoaXMnICAqLworICAg ICAgdHlwZV9hcnJheSA9IChzdHJ1Y3QgdHlwZSAqKikgeG1hbGxvYyAoKm5h cmdzICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7CisgICAgICB3aGlsZSAo KGl0ZW0gPSBQeUl0ZXJfTmV4dCAobGlzdF9pdGVyKSkpCisgICAgICAgIHsK KyAgICAgICAgICB0eXBlX2FycmF5W2ldID0gdHlwZV9vYmplY3RfdG9fdHlw ZSAoaXRlbSk7CisgICAgICAgICAgaSsrOworICAgICAgICAgIFB5X1hERUNS RUYgKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgIC8qIEFkZCB0aGUgdHlw ZSBvZiAndGhpcycgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiAgKi8KKyAgICAg IG9ial90eXBlID0gdHlwZV9vYmplY3RfdG9fdHlwZSAoZXh0X29iamVjdC0+ bWF0Y2hfcHlfb2JqX3R5cGUpOworICAgICAgdHlwZV9hcnJheVswXSA9IG1h a2VfY3ZfdHlwZSAoMSwgMCwgbG9va3VwX3BvaW50ZXJfdHlwZSAob2JqX3R5 cGUpLCBOVUxMKTsKKworICAgICAgUHlfWERFQ1JFRiAobGlzdF9pdGVyKTsK KyAgICAgIFB5X1hERUNSRUYgKHB5X2FyZ3R5cGVfbGlzdCk7CisgICAgICBk b19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gdHlwZV9h cnJheTsKKyAgICB9CisKKyAgKm5hcmdzID0gMDsKKyAgcmV0dXJuIE5VTEw7 Cit9CisKK3N0cnVjdCB2YWx1ZSAqCitweV9leHRfZm5faW52b2tlX21ldGhv ZCAoc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm4sIHN0cnVjdCB2 YWx1ZSAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2 YWx1ZSAqKmFyZ3MsIGludCBuYXJncykKK3sKKyAgaW50IGk7CisgIHN0cnVj dCBjbGVhbnVwICpjbGVhbnVwczsKKyAgUHlPYmplY3QgKnB5X29iaiwgKnB5 X2FyZ190dXBsZSwgKnB5X3Jlc3VsdCwgKmRlYnVnX21ldGhvZDsKKyAgc3Ry dWN0IHZhbHVlICpyZXN1bHQgPSBOVUxMOworCisgIGlmICghZXh0X2ZuLT5p c19tZXRob2QgfHwgIWludm9rZV9tZXRob2RfY2FsbGFibGUpCisgICAgcmV0 dXJuIE5VTEw7CisKKyAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAo Z2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisKKyAg ZGVidWdfbWV0aG9kID0gKChzdHJ1Y3QgcHlfZXh0X29iamVjdCAqKSBleHRf Zm4tPmV4dF9vYmplY3QpLT5vYmplY3Q7CisgIHB5X29iaiA9IHZhbHVlX3Rv X3ZhbHVlX29iamVjdCAob2JqKTsKKyAgcHlfYXJnX3R1cGxlID0gUHlUdXBs ZV9OZXcgKG5hcmdzKTsKKyAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKysp CisgICAgeworICAgICAgUHlPYmplY3QgKnB5X2FyZ192YWx1ZSA9IHZhbHVl X3RvX3ZhbHVlX29iamVjdCAoYXJnc1tpXSk7CisKKyAgICAgIFB5VHVwbGVf U2V0SXRlbSAocHlfYXJnX3R1cGxlLCBpLCBweV9hcmdfdmFsdWUpOworICAg IH0KKworICBweV9yZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24gKGlu dm9rZV9tZXRob2RfY2FsbGFibGUsICJPT08iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX21ldGhvZCwgcHlfb2JqLCBw eV9hcmdfdHVwbGUpOworCisgIHJlc3VsdCA9IGNvbnZlcnRfdmFsdWVfZnJv bV9weXRob24gKHB5X3Jlc3VsdCk7CisKKyAgUHlfWERFQ1JFRiAocHlfb2Jq KTsKKyAgUHlfWERFQ1JFRiAocHlfYXJnX3R1cGxlKTsKKyAgUHlfWERFQ1JF RiAocHlfcmVzdWx0KTsKKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKwor ICByZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9w eS1vYmpmaWxlLmMgYi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwppbmRleCBk YjUxZjUwLi5jMmJlZjNlIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5LW9i amZpbGUuYworKysgYi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwpAQCAtMzUs NiArMzUsOSBAQCB0eXBlZGVmIHN0cnVjdAogCiAgIC8qIFRoZSB0eXBlLXBy aW50ZXIgbGlzdC4gICovCiAgIFB5T2JqZWN0ICp0eXBlX3ByaW50ZXJzOwor CisgIC8qIFRoZSBkZWJ1ZyBtZXRob2QgbGlzdC4gICovCisgIFB5T2JqZWN0 ICpkZWJ1Z19tZXRob2RzOwogfSBvYmpmaWxlX29iamVjdDsKIAogc3RhdGlj IFB5VHlwZU9iamVjdCBvYmpmaWxlX29iamVjdF90eXBlOwpAQCAtNjIsNiAr NjUsNyBAQCBvYmpmcHlfZGVhbGxvYyAoUHlPYmplY3QgKm8pCiAKICAgUHlf WERFQ1JFRiAoc2VsZi0+cHJpbnRlcnMpOwogICBQeV9YREVDUkVGIChzZWxm LT50eXBlX3ByaW50ZXJzKTsKKyAgUHlfWERFQ1JFRiAoc2VsZi0+ZGVidWdf bWV0aG9kcyk7CiAgIFB5X1RZUEUgKHNlbGYpLT50cF9mcmVlIChzZWxmKTsK IH0KIApAQCAtODcsNiArOTEsMTMgQEAgb2JqZnB5X25ldyAoUHlUeXBlT2Jq ZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRz KQogCSAgUHlfREVDUkVGIChzZWxmKTsKIAkgIHJldHVybiBOVUxMOwogCX0K KworICAgICAgc2VsZi0+ZGVidWdfbWV0aG9kcyA9IFB5TGlzdF9OZXcgKDAp OworICAgICAgaWYgKCFzZWxmLT5kZWJ1Z19tZXRob2RzKQorCXsKKwkgIFB5 X0RFQ1JFRiAoc2VsZik7CisJICByZXR1cm4gTlVMTDsKKwl9CiAgICAgfQog ICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7CiB9CkBAIC0xNDAsNiArMTUx LDE3IEBAIG9iamZweV9nZXRfdHlwZV9wcmludGVycyAoUHlPYmplY3QgKm8s IHZvaWQgKmlnbm9yZSkKICAgcmV0dXJuIHNlbGYtPnR5cGVfcHJpbnRlcnM7 CiB9CiAKKy8qIEdldCB0aGUgJ2RlYnVnX21ldGhvZHMnIGF0dHJpYnV0ZS4g ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvYmpmcHlfZ2V0X2RlYnVnX21l dGhvZHMgKFB5T2JqZWN0ICpvLCB2b2lkICppZ25vcmUpCit7CisgIG9iamZp bGVfb2JqZWN0ICpzZWxmID0gKG9iamZpbGVfb2JqZWN0ICopIG87CisKKyAg UHlfSU5DUkVGIChzZWxmLT5kZWJ1Z19tZXRob2RzKTsKKyAgcmV0dXJuIHNl bGYtPmRlYnVnX21ldGhvZHM7Cit9CisKIC8qIFNldCB0aGUgJ3R5cGVfcHJp bnRlcnMnIGF0dHJpYnV0ZS4gICovCiAKIHN0YXRpYyBpbnQKQEAgLTIzMiw2 ICsyNTQsMTMgQEAgb2JqZmlsZV90b19vYmpmaWxlX29iamVjdCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCiAJICAgICAgcmV0dXJuIE5VTEw7CiAJICAg IH0KIAorCSAgb2JqZWN0LT5kZWJ1Z19tZXRob2RzID0gUHlMaXN0X05ldyAo MCk7CisJICBpZiAoIW9iamVjdC0+ZGVidWdfbWV0aG9kcykKKwkgICAgewor CSAgICAgIFB5X0RFQ1JFRiAob2JqZWN0KTsKKwkgICAgICByZXR1cm4gTlVM TDsKKwkgICAgfQorCiAJICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBv YmpmcHlfb2JqZmlsZV9kYXRhX2tleSwgb2JqZWN0KTsKIAl9CiAgICAgfQpA QCAtMjcyLDYgKzMwMSw4IEBAIHN0YXRpYyBQeUdldFNldERlZiBvYmpmaWxl X2dldHNldFtdID0KICAgICAiUHJldHR5IHByaW50ZXJzLiIsIE5VTEwgfSwK ICAgeyAidHlwZV9wcmludGVycyIsIG9iamZweV9nZXRfdHlwZV9wcmludGVy cywgb2JqZnB5X3NldF90eXBlX3ByaW50ZXJzLAogICAgICJUeXBlIHByaW50 ZXJzLiIsIE5VTEwgfSwKKyAgeyAiZGVidWdfbWV0aG9kcyIsIG9iamZweV9n ZXRfZGVidWdfbWV0aG9kcywgTlVMTCwKKyAgICAiRGVidWcgbWV0aG9kcy4i LCBOVUxMIH0sCiAgIHsgTlVMTCB9CiB9OwogCmRpZmYgLS1naXQgYS9nZGIv cHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRob24t aW50ZXJuYWwuaAppbmRleCA4ZGZmMWQ3Li4wZjE1MDg1IDEwMDY0NAotLS0g YS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCisrKyBiL2dkYi9weXRo b24vcHl0aG9uLWludGVybmFsLmgKQEAgLTIzMSw2ICsyMzEsNyBAQCBQeU9i amVjdCAqZ2RicHlfc2VsZWN0ZWRfaW5mZXJpb3IgKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXJncyk7CiBQeU9iamVjdCAqZ2RicHlfc3RyaW5nX3Rv X2FyZ3YgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CiBQeU9i amVjdCAqZ2RicHlfcGFyYW1ldGVyIChQeU9iamVjdCAqc2VsZiwgUHlPYmpl Y3QgKmFyZ3MpOwogUHlPYmplY3QgKmdkYnB5X3BhcmFtZXRlcl92YWx1ZSAo ZW51bSB2YXJfdHlwZXMgdHlwZSwgdm9pZCAqdmFyKTsKK1B5T2JqZWN0ICpn ZGJweV9lbmFibGVfZGVidWdfbWV0aG9kcyAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKTsKIGNoYXIgKmdkYnB5X3BhcnNlX2NvbW1hbmRfbmFt ZSAoY29uc3QgY2hhciAqbmFtZSwKIAkJCQlzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqKipiYXNlX2xpc3QsCiAJCQkJc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKipzdGFydF9saXN0KTsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0 aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCmluZGV4IDUzZGRlZTkuLmNm YzUwMzQgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKKysrIGIv Z2RiL3B5dGhvbi9weXRob24uYwpAQCAtMTgyNiw2ICsxODI2LDkgQEAgUmV0 dXJuIHRoZSBzZWxlY3RlZCBpbmZlcmlvciBvYmplY3QuIiB9LAogICB7ICJp bmZlcmlvcnMiLCBnZGJweV9pbmZlcmlvcnMsIE1FVEhfTk9BUkdTLAogICAg ICJpbmZlcmlvcnMgKCkgLT4gKGdkYi5JbmZlcmlvciwgLi4uKS5cblwKIFJl dHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIGluZmVyaW9ycy4iIH0sCisg IHsgImVuYWJsZV9kZWJ1Z19tZXRob2RzIiwgZ2RicHlfZW5hYmxlX2RlYnVn X21ldGhvZHMsIE1FVEhfVkFSQVJHUywKKyAgICAiaW5mZXJpb3JzIChtZXRo X21hdGNoX2Z1bmN0aW9uLCBhcmdzX21hdGNoX2Z1bmN0aW9uKSAtPiBOb25l LlxuXAorRW5hYmxlcyBQeXRob24gZGVidWcgbWV0aG9kcyBmZWF0dXJlLiIg fSwKICAge05VTEwsIE5VTEwsIDAsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQg YS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaApp bmRleCAyNGUzMDc3Li5hZTI1ZGJjIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9u L3B5dGhvbi5oCisrKyBiL2dkYi9weXRob24vcHl0aG9uLmgKQEAgLTQ5LDYg KzQ5LDE5IEBAIGludCBnZGJweV9zaG91bGRfc3RvcCAoc3RydWN0IGJyZWFr cG9pbnRfb2JqZWN0ICpicF9vYmopOwogCiBpbnQgZ2RicHlfYnJlYWtwb2lu dF9oYXNfcHlfY29uZCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpicF9v YmopOwogCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKnB5X2RlYnVnbWV0 aG9kX25hbWVfbWF0Y2ggKHN0cnVjdCB0eXBlICosCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKik7CisKK3ZvaWQgcHlfZnJlZV9leHRfb2JqZWN0ICh2b2lkICpl eHRfb2JqZWN0KTsKKwordm9pZCAqcHlfY2xvbmVfZXh0X29iamVjdCAodm9p ZCAqZXh0X29iamVjdCk7CisKK3N0cnVjdCB0eXBlICoqcHlfZXh0X2ZuX2dl dF9hcmd0eXBlcyAoc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICosIGludCAq KTsKKworc3RydWN0IHZhbHVlICpweV9leHRfZm5faW52b2tlX21ldGhvZCAo c3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICosCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFsdWUgKiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1 ZSAqKiwgaW50IG5hcmdzKTsKKwogdm9pZCAqc3RhcnRfdHlwZV9wcmludGVy cyAodm9pZCk7CiAKIGNoYXIgKmFwcGx5X3R5cGVfcHJpbnRlcnMgKHZvaWQg Kiwgc3RydWN0IHR5cGUgKnR5cGUpOwpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFy aXRoLmMgYi9nZGIvdmFsYXJpdGguYwppbmRleCBiZGM5OGZmLi43ZGUxYWUy IDEwMDY0NAotLS0gYS9nZGIvdmFsYXJpdGguYworKysgYi9nZGIvdmFsYXJp dGguYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPG1hdGguaD4KICNp bmNsdWRlICJpbmZjYWxsLmgiCiAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgor I2luY2x1ZGUgImV4dC1mdW5jdGlvbi5oIgogCiAvKiBEZWZpbmUgd2hldGhl ciBvciBub3QgdGhlIEMgb3BlcmF0b3IgJy8nIHRydW5jYXRlcyB0b3dhcmRz IHplcm8gZm9yCiAgICBkaWZmZXJlbnRseSBzaWduZWQgb3BlcmFuZHMgKHRy dW5jYXRpb24gZGlyZWN0aW9uIGlzIHVuZGVmaW5lZCBpbiBDKS4gICovCkBA IC0yODUsMjEgKzI4NiwyNyBAQCB1bm9wX3VzZXJfZGVmaW5lZF9wIChlbnVt IGV4cF9vcGNvZGUgb3AsIHN0cnVjdCB2YWx1ZSAqYXJnMSkKICAgIGV4cGxp Y2l0bHksIGFuZCBwZXJmb3JtIGNvcnJlY3Qgb3ZlcmxvYWQgcmVzb2x1dGlv biBpbiBhbGwgb2YgdGhlIGFib3ZlCiAgICBzaXR1YXRpb25zIG9yIGNvbWJp bmF0aW9ucyB0aGVyZW9mLiAgKi8KIAotc3RhdGljIHN0cnVjdCB2YWx1ZSAq CitzdGF0aWMgdm9pZAogdmFsdWVfdXNlcl9kZWZpbmVkX2NwcF9vcCAoc3Ry dWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLCBjaGFyICpvcGVyYXRvciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKnNy Y19mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBleHRf Zm5fZGVzY3JpcHRvciAqKmV4dF9mbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCAqc3RhdGljX21lbWZ1bmNwKQogewogCiAgIHN0cnVjdCBz eW1ib2wgKnN5bXAgPSBOVUxMOwogICBzdHJ1Y3QgdmFsdWUgKnZhbHAgPSBO VUxMOworICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbnAgPSBO VUxMOwogCiAgIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKGFyZ3MsIG5hcmdzLCBv cGVyYXRvciwgQk9USCAvKiBjb3VsZCBiZSBtZXRob2QgKi8sCiAgICAgICAg ICAgICAgICAgICAgICAgICZhcmdzWzBdIC8qIG9ianAgKi8sCiAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwgLyogcGFzcyBOVUxMIHN5bWJvbCBzaW5j ZSBzeW1ib2wgaXMgdW5rbm93biAqLywKLSAgICAgICAgICAgICAgICAgICAg ICAgJnZhbHAsICZzeW1wLCBzdGF0aWNfbWVtZnVuY3AsIDApOworICAgICAg ICAgICAgICAgICAgICAgICAmdmFscCwgJnN5bXAsICZleHRfZm5wLCBzdGF0 aWNfbWVtZnVuY3AsIDApOwogCiAgIGlmICh2YWxwKQotICAgIHJldHVybiB2 YWxwOworICAgIHsKKyAgICAgICpzcmNfZm4gPSB2YWxwOworICAgICAgcmV0 dXJuOworICAgIH0KIAogICBpZiAoc3ltcCkKICAgICB7CkBAIC0zMDcsNyAr MzE0LDE0IEBAIHZhbHVlX3VzZXJfZGVmaW5lZF9jcHBfb3AgKHN0cnVjdCB2 YWx1ZSAqKmFyZ3MsIGludCBuYXJncywgY2hhciAqb3BlcmF0b3IsCiAgICAg ICAgICBleHBlY3QgYSByZWZlcmVuY2UgYXMgaXRzIGZpcnN0IGFyZ3VtZW50 CiAgICAgICAgICByYXRoZXIgdGhlIGV4cGxpY2l0IHN0cnVjdHVyZS4gICov CiAgICAgICBhcmdzWzBdID0gdmFsdWVfaW5kIChhcmdzWzBdKTsKLSAgICAg IHJldHVybiB2YWx1ZV9vZl92YXJpYWJsZSAoc3ltcCwgMCk7CisgICAgICAq c3JjX2ZuID0gdmFsdWVfb2ZfdmFyaWFibGUgKHN5bXAsIDApOworICAgICAg cmV0dXJuOworICAgIH0KKworICBpZiAoZXh0X2ZucCkKKyAgICB7CisgICAg ICAqZXh0X2ZuID0gZXh0X2ZucDsKKyAgICAgIHJldHVybjsKICAgICB9CiAK ICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBmaW5kICVzLiIpLCBvcGVyYXRvcik7 CkBAIC0zMTYsMTkgKzMzMCwyMiBAQCB2YWx1ZV91c2VyX2RlZmluZWRfY3Bw X29wIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIGNoYXIgKm9w ZXJhdG9yLAogLyogTG9va3VwIHVzZXIgZGVmaW5lZCBvcGVyYXRvciBOQU1F LiAgUmV0dXJuIGEgdmFsdWUgcmVwcmVzZW50aW5nIHRoZQogICAgZnVuY3Rp b24sIG90aGVyd2lzZSByZXR1cm4gTlVMTC4gICovCiAKLXN0YXRpYyBzdHJ1 Y3QgdmFsdWUgKgorc3RhdGljIHZvaWQKIHZhbHVlX3VzZXJfZGVmaW5lZF9v cCAoc3RydWN0IHZhbHVlICoqYXJncCwgc3RydWN0IHZhbHVlICoqYXJncywg Y2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0 aWNfbWVtZnVuY3AsIGludCBuYXJncykKKyAgICAgICAgICAgICAgICAgICAg ICAgaW50ICpzdGF0aWNfbWVtZnVuY3AsIGludCBuYXJncywKKyAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHZhbHVlICoqc3JjX2ZuLCBzdHJ1Y3Qg ZXh0X2ZuX2Rlc2NyaXB0b3IgKipleHRfZm4pCiB7CiAgIHN0cnVjdCB2YWx1 ZSAqcmVzdWx0ID0gTlVMTDsKIAogICBpZiAoY3VycmVudF9sYW5ndWFnZS0+ bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0gICAgcmVzdWx0ID0g dmFsdWVfdXNlcl9kZWZpbmVkX2NwcF9vcCAoYXJncywgbmFyZ3MsIG5hbWUs IHN0YXRpY19tZW1mdW5jcCk7CisgICAgdmFsdWVfdXNlcl9kZWZpbmVkX2Nw cF9vcCAoYXJncywgbmFyZ3MsIG5hbWUsIHNyY19mbiwgZXh0X2ZuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19tZW1mdW5jcCk7 CiAgIGVsc2UKLSAgICByZXN1bHQgPSB2YWx1ZV9zdHJ1Y3RfZWx0IChhcmdw LCBhcmdzLCBuYW1lLCBzdGF0aWNfbWVtZnVuY3AsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSIpOwotCi0gIHJldHVybiBy ZXN1bHQ7CisgICAgeworICAgICAgcmVzdWx0ID0gdmFsdWVfc3RydWN0X2Vs dCAoYXJncCwgYXJncywgbmFtZSwgc3RhdGljX21lbWZ1bmNwLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSIpOworICAg ICAgKnNyY19mbiA9IHJlc3VsdDsKKyAgICB9CiB9CiAKIC8qIFdlIGtub3cg ZWl0aGVyIGFyZzEgb3IgYXJnMiBpcyBhIHN0cnVjdHVyZSwgc28gdHJ5IHRv IGZpbmQgdGhlIHJpZ2h0CkBAIC0zNDUsNiArMzYyLDcgQEAgdmFsdWVfeF9i aW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QgdmFsdWUgKmFyZzIs IGVudW0gZXhwX29wY29kZSBvcCwKIAkgICAgICAgZW51bSBleHBfb3Bjb2Rl IG90aGVyb3AsIGVudW0gbm9zaWRlIG5vc2lkZSkKIHsKICAgc3RydWN0IHZh bHVlICoqYXJndmVjOworICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4 dF9mbiA9IE5VTEw7CiAgIGNoYXIgKnB0cjsKICAgY2hhciB0c3RyWzEzXTsK ICAgaW50IHN0YXRpY19tZW1mdW5jcDsKQEAgLTM1OSw2ICszNzcsNyBAQCB2 YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1 ZSAqYXJnMiwgZW51bSBleHBfb3Bjb2RlIG9wLAogICAgIGVycm9yIChfKCJD YW4ndCBkbyB0aGF0IGJpbmFyeSBvcCBvbiB0aGF0IHR5cGUiKSk7CS8qIEZJ WE1FIGJlIGV4cGxpY2l0ICovCiAKICAgYXJndmVjID0gKHN0cnVjdCB2YWx1 ZSAqKikgYWxsb2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSAqIDQpOwor ICBhcmd2ZWNbMF0gPSBOVUxMOwogICBhcmd2ZWNbMV0gPSB2YWx1ZV9hZGRy IChhcmcxKTsKICAgYXJndmVjWzJdID0gYXJnMjsKICAgYXJndmVjWzNdID0g MDsKQEAgLTQ3MSw4ICs0OTAsOCBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3Qg dmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMiwgZW51bSBleHBfb3Bj b2RlIG9wLAogICAgICAgZXJyb3IgKF8oIkludmFsaWQgYmluYXJ5IG9wZXJh dGlvbiBzcGVjaWZpZWQuIikpOwogICAgIH0KIAotICBhcmd2ZWNbMF0gPSB2 YWx1ZV91c2VyX2RlZmluZWRfb3AgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3Ry LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0 aWNfbWVtZnVuY3AsIDIpOworICB2YWx1ZV91c2VyX2RlZmluZWRfb3AgKCZh cmcxLCBhcmd2ZWMgKyAxLCB0c3RyLCAmc3RhdGljX21lbWZ1bmNwLCAyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2ZWNbMF0sICZleHRfZm4p OwogCiAgIGlmIChhcmd2ZWNbMF0pCiAgICAgewpAQCAtNDkyLDYgKzUxMSwx MSBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVj dCB2YWx1ZSAqYXJnMiwgZW51bSBleHBfb3Bjb2RlIG9wLAogICAgICAgcmV0 dXJuIGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoYXJndmVjWzBdLCAyIC0gc3Rh dGljX21lbWZ1bmNwLAogCQkJCSAgICBhcmd2ZWMgKyAxKTsKICAgICB9Cisg IGlmIChleHRfZm4pCisgICAgeworICAgICAgaWYgKGV4dF9mbi0+aXNfbWV0 aG9kKQorICAgICAgICByZXR1cm4gZXh0X2ZuX2ludm9rZV9tZXRob2QgKGV4 dF9mbiwgYXJnMSwgJmFyZzIsIDEpOworICAgIH0KICAgdGhyb3dfZXJyb3Ig KE5PVF9GT1VORF9FUlJPUiwKICAgICAgICAgICAgICAgIF8oIm1lbWJlciBm dW5jdGlvbiAlcyBub3QgZm91bmQiKSwgdHN0cik7CiAjaWZkZWYgbGludApA QCAtNTEwLDYgKzUzNCw3IEBAIHZhbHVlX3hfdW5vcCAoc3RydWN0IHZhbHVl ICphcmcxLCBlbnVtIGV4cF9vcGNvZGUgb3AsIGVudW0gbm9zaWRlIG5vc2lk ZSkKIHsKICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9h cmNoICh2YWx1ZV90eXBlIChhcmcxKSk7CiAgIHN0cnVjdCB2YWx1ZSAqKmFy Z3ZlYzsKKyAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm47CiAg IGNoYXIgKnB0ciwgKm1hbmdsZV9wdHI7CiAgIGNoYXIgdHN0clsxM10sIG1h bmdsZV90c3RyWzEzXTsKICAgaW50IHN0YXRpY19tZW1mdW5jcCwgbmFyZ3M7 CkBAIC01MjMsNiArNTQ4LDcgQEAgdmFsdWVfeF91bm9wIChzdHJ1Y3QgdmFs dWUgKmFyZzEsIGVudW0gZXhwX29wY29kZSBvcCwgZW51bSBub3NpZGUgbm9z aWRlKQogICAgIGVycm9yIChfKCJDYW4ndCBkbyB0aGF0IHVuYXJ5IG9wIG9u IHRoYXQgdHlwZSIpKTsJLyogRklYTUUgYmUgZXhwbGljaXQgKi8KIAogICBh cmd2ZWMgPSAoc3RydWN0IHZhbHVlICoqKSBhbGxvY2EgKHNpemVvZiAoc3Ry dWN0IHZhbHVlICopICogNCk7CisgIGFyZ3ZlY1swXSA9IE5VTEw7CiAgIGFy Z3ZlY1sxXSA9IHZhbHVlX2FkZHIgKGFyZzEpOwogICBhcmd2ZWNbMl0gPSAw OwogCkBAIC01NzUsOCArNjAxLDggQEAgdmFsdWVfeF91bm9wIChzdHJ1Y3Qg dmFsdWUgKmFyZzEsIGVudW0gZXhwX29wY29kZSBvcCwgZW51bSBub3NpZGUg bm9zaWRlKQogICAgICAgZXJyb3IgKF8oIkludmFsaWQgdW5hcnkgb3BlcmF0 aW9uIHNwZWNpZmllZC4iKSk7CiAgICAgfQogCi0gIGFyZ3ZlY1swXSA9IHZh bHVlX3VzZXJfZGVmaW5lZF9vcCAoJmFyZzEsIGFyZ3ZlYyArIDEsIHRzdHIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRp Y19tZW1mdW5jcCwgbmFyZ3MpOworICB2YWx1ZV91c2VyX2RlZmluZWRfb3Ag KCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3RyLCAmc3RhdGljX21lbWZ1bmNwLCBu YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndmVjWzBdLCAm ZXh0X2ZuKTsKIAogICBpZiAoYXJndmVjWzBdKQogICAgIHsKQEAgLTU5NSw2 ICs2MjEsMTEgQEAgdmFsdWVfeF91bm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEs IGVudW0gZXhwX29wY29kZSBvcCwgZW51bSBub3NpZGUgbm9zaWRlKQogCSAg cmV0dXJuIHZhbHVlX3plcm8gKHJldHVybl90eXBlLCBWQUxVRV9MVkFMIChh cmcxKSk7CiAJfQogICAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fYnlfaGFu ZCAoYXJndmVjWzBdLCBuYXJncywgYXJndmVjICsgMSk7CisgICAgfSAKKyAg aWYgKGV4dF9mbikKKyAgICB7CisgICAgICBpZiAoZXh0X2ZuLT5pc19tZXRo b2QpCisgICAgICAgIHJldHVybiBleHRfZm5faW52b2tlX21ldGhvZCAoZXh0 X2ZuLCBhcmcxLCBOVUxMLCAwKTsKICAgICB9CiAgIHRocm93X2Vycm9yIChO T1RfRk9VTkRfRVJST1IsCiAgICAgICAgICAgICAgICBfKCJtZW1iZXIgZnVu Y3Rpb24gJXMgbm90IGZvdW5kIiksIHRzdHIpOwpkaWZmIC0tZ2l0IGEvZ2Ri L3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCmluZGV4IDViMmFiZjQuLjA1Mzhk ZjQgMTAwNjQ0Ci0tLSBhL2dkYi92YWxvcHMuYworKysgYi9nZGIvdmFsb3Bz LmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJvYmpmaWxlcy5oIgog I2luY2x1ZGUgInN5bXRhYi5oIgogI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIK KyNpbmNsdWRlICJleHQtZnVuY3Rpb24uaCIKIAogZXh0ZXJuIHVuc2lnbmVk IGludCBvdmVybG9hZF9kZWJ1ZzsKIC8qIExvY2FsIGZ1bmN0aW9ucy4gICov CkBAIC03Myw4ICs3NCw4IEBAIGludCBmaW5kX29sb2FkX2NoYW1wX25hbWVz cGFjZV9sb29wIChzdHJ1Y3QgdmFsdWUgKiosIGludCwKIAkJCQkgICAgIGNv bnN0IGludCBub19hZGwpOwogCiBzdGF0aWMgaW50IGZpbmRfb2xvYWRfY2hh bXAgKHN0cnVjdCB2YWx1ZSAqKiwgaW50LCBpbnQsIGludCwKLQkJCSAgICAg c3RydWN0IGZuX2ZpZWxkICosIHN0cnVjdCBzeW1ib2wgKiosCi0JCQkgICAg IHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqKik7CisJCQkgICAgIHN0cnVjdCBm bl9maWVsZCAqLCBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN5bWJvbCAqKiwgc3Ry dWN0IGJhZG5lc3NfdmVjdG9yICoqKTsKIAogc3RhdGljIGludCBvbG9hZF9t ZXRob2Rfc3RhdGljIChpbnQsIHN0cnVjdCBmbl9maWVsZCAqLCBpbnQpOwog CkBAIC0xMDEsOSArMTAyLDEwIEBAIHN0YXRpYyBDT1JFX0FERFIgYWxsb2Nh dGVfc3BhY2VfaW5faW5mZXJpb3IgKGludCk7CiAKIHN0YXRpYyBzdHJ1Y3Qg dmFsdWUgKmNhc3RfaW50b19jb21wbGV4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdmFsdWUgKik7CiAKLXN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQgKmZpbmRf bWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKiwgY29uc3QgY2hhciAqLAot CQkJCQkgIGludCwgc3RydWN0IHR5cGUgKiwgaW50ICosCi0JCQkJCSAgc3Ry dWN0IHR5cGUgKiosIGludCAqKTsKK3N0YXRpYyB2b2lkIGZpbmRfbWV0aG9k X2xpc3QgKHN0cnVjdCB2YWx1ZSAqKiwgY29uc3QgY2hhciAqLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgZm5fZmllbGQgKiosIGludCAqLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICoqLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKiosIGlu dCAqKTsKIAogdm9pZCBfaW5pdGlhbGl6ZV92YWxvcHMgKHZvaWQpOwogCkBA IC0yNDE3LDQwICsyNDE5LDUzIEBAIHZhbHVlX3N0cnVjdF9lbHQgKHN0cnVj dCB2YWx1ZSAqKmFyZ3AsIHN0cnVjdCB2YWx1ZSAqKmFyZ3MsCiAgICAgICBt ZXRob2QgaXMgZm91bmQuCiAgICBCT0ZGU0VUIGlzIHRoZSBvZmZzZXQgb2Yg dGhlIGJhc2Ugc3Vib2JqZWN0IHdoZXJlIHRoZSBtZXRob2QgaXMgZm91bmQu ICAqLwogCi1zdGF0aWMgc3RydWN0IGZuX2ZpZWxkICoKK3N0YXRpYyB2b2lk CiBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25z dCBjaGFyICptZXRob2QsCi0JCSAgaW50IG9mZnNldCwgc3RydWN0IHR5cGUg KnR5cGUsIGludCAqbnVtX2ZucywKKwkJICBpbnQgb2Zmc2V0LCBzdHJ1Y3Qg dHlwZSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBmbl9maWVs ZCAqKmZuX2xpc3QsIGludCAqbnVtX2ZucywKKyAgICAgICAgICAgICAgICAg IHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqKmV4dF9mbl9saXN0LAogCQkg IHN0cnVjdCB0eXBlICoqYmFzZXR5cGUsIGludCAqYm9mZnNldCkKIHsKICAg aW50IGk7Ci0gIHN0cnVjdCBmbl9maWVsZCAqZjsKLSAgQ0hFQ0tfVFlQRURF RiAodHlwZSk7CisgIHN0cnVjdCBmbl9maWVsZCAqZiA9IE5VTEw7CisgIHN0 cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZWYgPSBOVUxMOwogCi0gICpudW1f Zm5zID0gMDsKKyAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CiAKICAgLyogRmly c3QgY2hlY2sgaW4gb2JqZWN0IGl0c2VsZi4gICovCi0gIGZvciAoaSA9IFRZ UEVfTkZOX0ZJRUxEUyAodHlwZSkgLSAxOyBpID49IDA7IGktLSkKLSAgICB7 Ci0gICAgICAvKiBwYWk6IEZJWE1FIFdoYXQgYWJvdXQgb3BlcmF0b3JzIGFu ZCB0eXBlIGNvbnZlcnNpb25zPyAgKi8KLSAgICAgIGNvbnN0IGNoYXIgKmZu X2ZpZWxkX25hbWUgPSBUWVBFX0ZOX0ZJRUxETElTVF9OQU1FICh0eXBlLCBp KTsKIAotICAgICAgaWYgKGZuX2ZpZWxkX25hbWUgJiYgKHN0cmNtcF9pdyAo Zm5fZmllbGRfbmFtZSwgbWV0aG9kKSA9PSAwKSkKLQl7Ci0JICBpbnQgbGVu ID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0eXBlLCBpKTsKLQkgIHN0 cnVjdCBmbl9maWVsZCAqZiA9IFRZUEVfRk5fRklFTERMSVNUMSAodHlwZSwg aSk7Ci0KLQkgICpudW1fZm5zID0gbGVuOwotCSAgKmJhc2V0eXBlID0gdHlw ZTsKLQkgICpib2Zmc2V0ID0gb2Zmc2V0OwotCi0JICAvKiBSZXNvbHZlIGFu eSBzdHViIG1ldGhvZHMuICAqLwotCSAgY2hlY2tfc3R1Yl9tZXRob2RfZ3Jv dXAgKHR5cGUsIGkpOworICBpZiAoZm5fbGlzdCAmJiAhKCpmbl9saXN0KSkK KyAgICBmb3IgKGkgPSBUWVBFX05GTl9GSUVMRFMgKHR5cGUpIC0gMTsgaSA+ PSAwOyBpLS0pCisgICAgICB7CisgICAgICAgIC8qIHBhaTogRklYTUUgV2hh dCBhYm91dCBvcGVyYXRvcnMgYW5kIHR5cGUgY29udmVyc2lvbnM/ICAqLwor ICAgICAgICBjb25zdCBjaGFyICpmbl9maWVsZF9uYW1lID0gVFlQRV9GTl9G SUVMRExJU1RfTkFNRSAodHlwZSwgaSk7CisgIAorICAgICAgICBpZiAoZm5f ZmllbGRfbmFtZSAmJiAoc3RyY21wX2l3IChmbl9maWVsZF9uYW1lLCBtZXRo b2QpID09IDApKQorICAJeworICAJICBpbnQgbGVuID0gVFlQRV9GTl9GSUVM RExJU1RfTEVOR1RIICh0eXBlLCBpKTsKKyAgCSAgZiA9IFRZUEVfRk5fRklF TERMSVNUMSAodHlwZSwgaSk7CisgICAgICAgICAgKmZuX2xpc3QgPSBmOwor ICAKKyAgCSAgKm51bV9mbnMgPSBsZW47CisgIAkgICpiYXNldHlwZSA9IHR5 cGU7CisgIAkgICpib2Zmc2V0ID0gb2Zmc2V0OworICAKKyAgCSAgLyogUmVz b2x2ZSBhbnkgc3R1YiBtZXRob2RzLiAgKi8KKyAgCSAgY2hlY2tfc3R1Yl9t ZXRob2RfZ3JvdXAgKHR5cGUsIGkpOworICAKKyAgICAgICAgICAgIGJyZWFr OworICAJfQorICAgICAgfQogCi0JICByZXR1cm4gZjsKLQl9CisgIGlmIChl eHRfZm5fbGlzdCkKKyAgICB7CisgICAgICBlZiA9IGdldF9tYXRjaGluZ19l eHRfbWV0aG9kcyAodHlwZSwgbWV0aG9kKTsKKyAgICAgICpleHRfZm5fbGlz dCA9IGV4dF9mbl9saXN0X2V4dGVuZCAoKmV4dF9mbl9saXN0LCBlZik7CiAg ICAgfQogCi0gIC8qIE5vdCBmb3VuZCBpbiBvYmplY3QsIGNoZWNrIGluIGJh c2Ugc3Vib2JqZWN0cy4gICovCisgIC8qIElmIHNvdXJjZSBtZXRob2RzIGFy ZSBub3QgZm91bmQgaW4gY3VycmVudCBjbGFzcywgbG9vayBmb3IgdGhlbSBp biB0aGUKKyAgICAgYmFzZSBjbGFzc2VzLiAgV2UgaGF2ZSB0byBnbyB0aHJv dWdoIHRoZSBiYXNlIGNsYXNzZXMgdG8gZ2F0aGVyIGV4dGVuc2lvbgorICAg ICBtZXRob2RzIGFueXdheS4gICovCiAgIGZvciAoaSA9IFRZUEVfTl9CQVNF Q0xBU1NFUyAodHlwZSkgLSAxOyBpID49IDA7IGktLSkKICAgICB7CiAgICAg ICBpbnQgYmFzZV9vZmZzZXQ7CkBAIC0yNDY3LDEzICsyNDgyLDExIEBAIGZp bmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNo YXIgKm1ldGhvZCwKIAl7CiAJICBiYXNlX29mZnNldCA9IFRZUEVfQkFTRUNM QVNTX0JJVFBPUyAodHlwZSwgaSkgLyA4OwogCX0KLSAgICAgIGYgPSBmaW5k X21ldGhvZF9saXN0IChhcmdwLCBtZXRob2QsIGJhc2Vfb2Zmc2V0ICsgb2Zm c2V0LAotCQkJICAgIFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSwgbnVtX2Zu cywgCi0JCQkgICAgYmFzZXR5cGUsIGJvZmZzZXQpOwotICAgICAgaWYgKGYp Ci0JcmV0dXJuIGY7CisgICAgICAKKyAgICAgIGZpbmRfbWV0aG9kX2xpc3Qg KGFyZ3AsIG1ldGhvZCwgYmFzZV9vZmZzZXQgKyBvZmZzZXQsCisgICAgICAg ICAgICAgICAgICAgICAgICBUWVBFX0JBU0VDTEFTUyAodHlwZSwgaSksIGZu X2xpc3QsIG51bV9mbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBleHRf Zm5fbGlzdCwgYmFzZXR5cGUsIGJvZmZzZXQpOwogICAgIH0KLSAgcmV0dXJu IE5VTEw7CiB9CiAKIC8qIFJldHVybiB0aGUgbGlzdCBvZiBvdmVybG9hZGVk IG1ldGhvZHMgb2YgYSBzcGVjaWZpZWQgbmFtZS4KQEAgLTI0ODYsOSArMjQ5 OSwxMSBAQCBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdw LCBjb25zdCBjaGFyICptZXRob2QsCiAgICAgICBtZXRob2QuCiAgICBCT0ZG U0VUIGlzIHRoZSBvZmZzZXQgb2YgdGhlIGJhc2Ugc3Vib2JqZWN0IHdoaWNo IGRlZmluZXMgdGhlIG1ldGhvZC4gICovCiAKLXN0YXRpYyBzdHJ1Y3QgZm5f ZmllbGQgKgorc3RhdGljIHZvaWQKIHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9k X2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhv ZCwKLQkJCSAgICAgIGludCBvZmZzZXQsIGludCAqbnVtX2ZucywgCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LCBzdHJ1Y3Qg Zm5fZmllbGQgKipmbl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpudW1fZm5zLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICoqZXh0X2ZuX2xpc3Qs CiAJCQkgICAgICBzdHJ1Y3QgdHlwZSAqKmJhc2V0eXBlLCBpbnQgKmJvZmZz ZXQpCiB7CiAgIHN0cnVjdCB0eXBlICp0OwpAQCAtMjUxMCw4ICsyNTI1LDMy IEBAIHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1 ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKICAgICBlcnJvciAoXygi QXR0ZW1wdCB0byBleHRyYWN0IGEgY29tcG9uZW50IG9mIGEgIgogCSAgICAg InZhbHVlIHRoYXQgaXMgbm90IGEgc3RydWN0IG9yIHVuaW9uIikpOwogCi0g IHJldHVybiBmaW5kX21ldGhvZF9saXN0IChhcmdwLCBtZXRob2QsIDAsIHQs IG51bV9mbnMsIAotCQkJICAgYmFzZXR5cGUsIGJvZmZzZXQpOworICAvKiBD bGVhciB0aGUgbGlzdHMuICAqLworICBpZiAoZm5fbGlzdCkKKyAgICB7Cisg ICAgICAqZm5fbGlzdCA9IE5VTEw7CisgICAgICAqbnVtX2ZucyA9IDA7Cisg ICAgfQorICBpZiAoZXh0X2ZuX2xpc3QpCisgICAgKmV4dF9mbl9saXN0ID0g TlVMTDsKKworICBmaW5kX21ldGhvZF9saXN0IChhcmdwLCBtZXRob2QsIDAs IHQsIGZuX2xpc3QsIG51bV9mbnMsIGV4dF9mbl9saXN0LAorICAgICAgICAg ICAgICAgICAgICBiYXNldHlwZSwgYm9mZnNldCk7Cit9CisKK3N0YXRpYyBz dHJ1Y3QgdHlwZSAqCit2YWx1ZV9oYXNfaW5kaXJlY3RfZHluYW1pY190eXBl IChzdHJ1Y3QgdmFsdWUgKm9iaikKK3sKKyAgc3RydWN0IHR5cGUgKnN0eXBl LCAqZHR5cGUsICpkdHlwZV9pbmQ7CisKKyAgc3R5cGUgPSBjaGVja190eXBl ZGVmIChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlIChvYmopKSk7Cisg IGR0eXBlX2luZCA9IHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAob2JqLCBO VUxMLCBOVUxMLCBOVUxMKTsKKyAgZHR5cGUgPSBkdHlwZV9pbmQgPyBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChkdHlwZV9pbmQpKSA6IHN0 eXBlOworCisgIGlmIChjbGFzc190eXBlc19zYW1lX3AgKHN0eXBlLCBkdHlw ZSkpCisgICAgcmV0dXJuIE5VTEw7CisgIGVsc2UKKyAgICByZXR1cm4gZHR5 cGVfaW5kOwogfQogCiAvKiBHaXZlbiBhbiBhcnJheSBvZiBhcmd1bWVudHMg KEFSR1MpICh3aGljaCBpbmNsdWRlcyBhbgpAQCAtMjU1OSw2ICsyNTk4LDcg QEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoqYXJncywg aW50IG5hcmdzLAogCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGVudW0gb2xv YWRfc2VhcmNoX3R5cGUgbWV0aG9kLAogCQkgICAgIHN0cnVjdCB2YWx1ZSAq Km9ianAsIHN0cnVjdCBzeW1ib2wgKmZzeW0sCiAJCSAgICAgc3RydWN0IHZh bHVlICoqdmFscCwgc3RydWN0IHN5bWJvbCAqKnN5bXAsIAorICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICoqZXh0X2Zu LAogCQkgICAgIGludCAqc3RhdGljcCwgY29uc3QgaW50IG5vX2FkbCkKIHsK ICAgc3RydWN0IHZhbHVlICpvYmogPSAob2JqcCA/ICpvYmpwIDogTlVMTCk7 CkBAIC0yNTY2LDE2ICsyNjA2LDI0IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2gg KHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKICAgLyogSW5kZXgg b2YgYmVzdCBvdmVybG9hZGVkIGZ1bmN0aW9uLiAgKi8KICAgaW50IGZ1bmNf b2xvYWRfY2hhbXAgPSAtMTsKICAgaW50IG1ldGhvZF9vbG9hZF9jaGFtcCA9 IC0xOworICBpbnQgc3JjX21ldGhvZF9vbG9hZF9jaGFtcCA9IC0xOworICBp bnQgc3JjX21ldGhvZF9vbG9hZF9jaGFtcF9ia3AgPSAtMTsKKyAgaW50IGV4 dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgaW50IHNyY19hbmRfZXh0 X2VxdWFsID0gMDsKIAogICAvKiBUaGUgbWVhc3VyZSBmb3IgdGhlIGN1cnJl bnQgYmVzdCBtYXRjaC4gICovCiAgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAq bWV0aG9kX2JhZG5lc3MgPSBOVUxMOwogICBzdHJ1Y3QgYmFkbmVzc192ZWN0 b3IgKmZ1bmNfYmFkbmVzcyA9IE5VTEw7CisgIHN0cnVjdCBiYWRuZXNzX3Zl Y3RvciAqZXh0X21ldGhvZF9iYWRuZXNzID0gTlVMTDsKKyAgc3RydWN0IGJh ZG5lc3NfdmVjdG9yICpzcmNfbWV0aG9kX2JhZG5lc3MgPSBOVUxMOwogCiAg IHN0cnVjdCB2YWx1ZSAqdGVtcCA9IG9iajsKICAgLyogRm9yIG1ldGhvZHMs IHRoZSBsaXN0IG9mIG92ZXJsb2FkZWQgbWV0aG9kcy4gICovCiAgIHN0cnVj dCBmbl9maWVsZCAqZm5zX3B0ciA9IE5VTEw7CiAgIC8qIEZvciBub24tbWV0 aG9kcywgdGhlIGxpc3Qgb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbiBzeW1ib2xz LiAgKi8KICAgc3RydWN0IHN5bWJvbCAqKm9sb2FkX3N5bXMgPSBOVUxMOwor ICAvKiBGb3IgZXh0ZW5zaW9uIGZ1bmN0aW9ucywgdGhlIGxpc3Qgb2YgZXh0 ZW5zaW9uIGZ1bmN0aW9uIGRlc2NyaXB0b3JzLiAgKi8KKyAgc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICpleHRfZm5fbGlzdCA9IE5VTEw7CiAgIC8qIE51 bWJlciBvZiBvdmVybG9hZGVkIGluc3RhbmNlcyBiZWluZyBjb25zaWRlcmVk LiAgKi8KICAgaW50IG51bV9mbnMgPSAwOwogICBzdHJ1Y3QgdHlwZSAqYmFz ZXR5cGUgPSBOVUxMOwpAQCAtMjU4Nyw2ICsyNjM1LDggQEAgZmluZF9vdmVy bG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAog ICBjb25zdCBjaGFyICpmdW5jX25hbWUgPSBOVUxMOwogICBlbnVtIG9sb2Fk X2NsYXNzaWZpY2F0aW9uIG1hdGNoX3F1YWxpdHk7CiAgIGVudW0gb2xvYWRf Y2xhc3NpZmljYXRpb24gbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBJTkNPTVBB VElCTEU7CisgIGVudW0gb2xvYWRfY2xhc3NpZmljYXRpb24gc3JjX21ldGhv ZF9tYXRjaF9xdWFsaXR5ID0gSU5DT01QQVRJQkxFOworICBlbnVtIG9sb2Fk X2NsYXNzaWZpY2F0aW9uIGV4dF9tZXRob2RfbWF0Y2hfcXVhbGl0eSA9IElO Q09NUEFUSUJMRTsKICAgZW51bSBvbG9hZF9jbGFzc2lmaWNhdGlvbiBmdW5j X21hdGNoX3F1YWxpdHkgPSBJTkNPTVBBVElCTEU7CiAKICAgLyogR2V0IHRo ZSBsaXN0IG9mIG92ZXJsb2FkZWQgbWV0aG9kcyBvciBmdW5jdGlvbnMuICAq LwpAQCAtMjYxNSwxMiArMjY2NSwxMyBAQCBmaW5kX292ZXJsb2FkX21hdGNo IChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAJfQogCiAgICAg ICAvKiBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBtZXRob2RzIHdpdGggdGhlIG5h bWUgTkFNRS4gICovCi0gICAgICBmbnNfcHRyID0gdmFsdWVfZmluZF9vbG9h ZF9tZXRob2RfbGlzdCAoJnRlbXAsIG5hbWUsIAotCQkJCQkgICAgICAwLCAm bnVtX2ZucywgCi0JCQkJCSAgICAgICZiYXNldHlwZSwgJmJvZmZzZXQpOwor ICAgICAgdmFsdWVfZmluZF9vbG9hZF9tZXRob2RfbGlzdCAoJnRlbXAsIG5h bWUsIDAsICZmbnNfcHRyLCAmbnVtX2ZucywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV4dF9mbiA/ICZleHRfZm5fbGlzdCA6IE5V TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmFz ZXR5cGUsICZib2Zmc2V0KTsKICAgICAgIC8qIElmIHRoaXMgaXMgYSBtZXRo b2Qgb25seSBzZWFyY2gsIGFuZCBubyBtZXRob2RzIHdlcmUgZm91bmQKICAg ICAgICAgIHRoZSBzZWFyY2ggaGFzIGZhaWxkLiAgKi8KLSAgICAgIGlmICht ZXRob2QgPT0gTUVUSE9EICYmICghZm5zX3B0ciB8fCAhbnVtX2ZucykpCisg ICAgICBpZiAobWV0aG9kID09IE1FVEhPRCAmJiAoIWZuc19wdHIgfHwgIW51 bV9mbnMpCisgICAgICAgICAgJiYgKGV4dF9mbiAmJiAhZXh0X2ZuX2xpc3Qp KQogCWVycm9yIChfKCJDb3VsZG4ndCBmaW5kIG1ldGhvZCAlcyVzJXMiKSwK IAkgICAgICAgb2JqX3R5cGVfbmFtZSwKIAkgICAgICAgKG9ial90eXBlX25h bWUgJiYgKm9ial90eXBlX25hbWUpID8gIjo6IiA6ICIiLApAQCAtMjYzMSwx OCArMjY4Miw4MiBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFs dWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAgICAgICBpZiAoZm5zX3B0cikKIAl7 CiAJICBnZGJfYXNzZXJ0IChUWVBFX0RPTUFJTl9UWVBFIChmbnNfcHRyWzBd LnR5cGUpICE9IE5VTEwpOwotCSAgbWV0aG9kX29sb2FkX2NoYW1wID0gZmlu ZF9vbG9hZF9jaGFtcCAoYXJncywgbmFyZ3MsIG1ldGhvZCwKLQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mbnMsIGZu c19wdHIsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvbG9hZF9zeW1zLCAmbWV0aG9kX2JhZG5lc3MpOwotCi0JICBtZXRo b2RfbWF0Y2hfcXVhbGl0eSA9Ci0JICAgICAgY2xhc3NpZnlfb2xvYWRfbWF0 Y2ggKG1ldGhvZF9iYWRuZXNzLCBuYXJncywKLQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9kLCBmbnNf cHRyLAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtZXRob2Rfb2xvYWRfY2hhbXApKTsKLQotCSAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgbWV0aG9kX2JhZG5lc3MpOworCSAgc3JjX21ldGhv ZF9vbG9hZF9jaGFtcCA9IGZpbmRfb2xvYWRfY2hhbXAgKGFyZ3MsIG5hcmdz LCBtZXRob2QsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbnVtX2ZucywgZm5zX3B0ciwgTlVMTCwKKwkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbG9hZF9z eW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmc3JjX21ldGhvZF9iYWRuZXNzKTsKKworCSAgc3Jj X21ldGhvZF9tYXRjaF9xdWFsaXR5ID0KKwkgICAgICBjbGFzc2lmeV9vbG9h ZF9tYXRjaCAoCisgICAgICAgICAgICAgICAgICBzcmNfbWV0aG9kX2JhZG5l c3MsIG5hcmdzLAorCSAgICAgICAgICBvbG9hZF9tZXRob2Rfc3RhdGljICht ZXRob2QsIGZuc19wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzcmNfbWV0aG9kX29sb2FkX2NoYW1wKSk7CisKKwkgIG1h a2VfY2xlYW51cCAoeGZyZWUsIHNyY19tZXRob2RfYmFkbmVzcyk7CiAJfQog CisgICAgICBpZiAoZXh0X2ZuX2xpc3QpCisgICAgICAgIHsKKyAgICAgICAg ICBleHRfbWV0aG9kX29sb2FkX2NoYW1wID0gZmluZF9vbG9hZF9jaGFtcCAo YXJncywgbmFyZ3MsIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgZXh0X2Zu X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsICZleHRfbWV0aG9kX2JhZG5lc3MpOwor ICAgICAgICAgIGV4dF9tZXRob2RfbWF0Y2hfcXVhbGl0eSA9IGNsYXNzaWZ5 X29sb2FkX21hdGNoIChleHRfbWV0aG9kX2JhZG5lc3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hcmdzLCAwKTsKKyAgICAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVl LCBleHRfbWV0aG9kX2JhZG5lc3MpOworICAgICAgICAgIG1ha2VfY2xlYW51 cCAoZXh0X2ZuX2xpc3RfZnJlZSwgZXh0X2ZuX2xpc3QpOworICAgICAgICB9 CisKKyAgICAgIGlmIChzcmNfbWV0aG9kX29sb2FkX2NoYW1wID49IDAgJiYg ZXh0X21ldGhvZF9vbG9hZF9jaGFtcCA+PSAwKQorICAgICAgICB7CisgICAg ICAgICAgc3dpdGNoIChjb21wYXJlX2JhZG5lc3MgKGV4dF9tZXRob2RfYmFk bmVzcywgc3JjX21ldGhvZF9iYWRuZXNzKSkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgY2FzZSAwOiAvKiBTcmMgbWV0aG9kIGFuZCBleHQgbWV0 aG9kIGFyZSBlcXVhbGx5IGdvb2QuICAqLworICAgICAgICAgICAgICAgIHNy Y19hbmRfZXh0X2VxdWFsID0gMTsKKyAgICAgICAgICAgICAgY2FzZSAxOiAv KiBTcmMgbWV0aG9kIGFuZCBleHQgbWV0aG9kIGFyZSBpbmNvbXBhdGlibGUg ICovCisgICAgICAgICAgICAgICAgLyogaWYgZXh0IG1ldGhvZCBtYXRjaCBp cyBub3Qgc3RhbmRhcmQsIHRoZW4gbGV0IHNvdXJjZSBtZXRob2QKKyAgICAg ICAgICAgICAgICAgICB3aW4uICAqLworICAgICAgICAgICAgICAgIGlmIChl eHRfbWV0aG9kX21hdGNoX3F1YWxpdHkgIT0gU1RBTkRBUkQpCisgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9vbG9h ZF9jaGFtcCA9IHNyY19tZXRob2Rfb2xvYWRfY2hhbXA7CisgICAgICAgICAg ICAgICAgICAgIG1ldGhvZF9iYWRuZXNzID0gc3JjX21ldGhvZF9iYWRuZXNz OworICAgICAgICAgICAgICAgICAgICBleHRfbWV0aG9kX29sb2FkX2NoYW1w ID0gLTE7CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9tYXRjaF9xdWFs aXR5ID0gc3JjX21ldGhvZF9tYXRjaF9xdWFsaXR5OworICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgY2FzZSAyOiAvKiBFeHQgbWV0aG9kIGlzIGNoYW1waW9uLiAgKi8K KyAgICAgICAgICAgICAgICBtZXRob2Rfb2xvYWRfY2hhbXAgPSBleHRfbWV0 aG9kX29sb2FkX2NoYW1wOworICAgICAgICAgICAgICAgIG1ldGhvZF9iYWRu ZXNzID0gZXh0X21ldGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICAgIHNy Y19tZXRob2Rfb2xvYWRfY2hhbXBfYmtwID0gc3JjX21ldGhvZF9vbG9hZF9j aGFtcDsKKyAgICAgICAgICAgICAgICBzcmNfbWV0aG9kX29sb2FkX2NoYW1w ID0gLTE7CisgICAgICAgICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkg PSBleHRfbWV0aG9kX21hdGNoX3F1YWxpdHk7CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMzogLyogU3JjIG1ldGhvZCBp cyBjaGFtcGlvbi4gICovCisgICAgICAgICAgICAgICAgbWV0aG9kX29sb2Fk X2NoYW1wID0gc3JjX21ldGhvZF9vbG9hZF9jaGFtcDsKKyAgICAgICAgICAg ICAgICBtZXRob2RfYmFkbmVzcyA9IHNyY19tZXRob2RfYmFkbmVzczsKKyAg ICAgICAgICAgICAgICBleHRfbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7Cisg ICAgICAgICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBzcmNfbWV0 aG9kX21hdGNoX3F1YWxpdHk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZXJyb3Ig KF8oIkludGVybmFsIGVycm9yOiB1bmV4cGVjdGVkIG92ZXJsb2FkIGNvbXBh cmlzb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHQiKSk7 CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGlmIChz cmNfbWV0aG9kX29sb2FkX2NoYW1wID49IDApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCA9IHNyY19tZXRob2Rf b2xvYWRfY2hhbXA7CisgICAgICAgICAgICAgIG1ldGhvZF9iYWRuZXNzID0g c3JjX21ldGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICBtZXRob2RfbWF0 Y2hfcXVhbGl0eSA9IHNyY19tZXRob2RfbWF0Y2hfcXVhbGl0eTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICBpZiAoZXh0X21ldGhvZF9vbG9hZF9jaGFt cCA+PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBtZXRob2Rf b2xvYWRfY2hhbXAgPSBleHRfbWV0aG9kX29sb2FkX2NoYW1wOworICAgICAg ICAgICAgICBtZXRob2RfYmFkbmVzcyA9IGV4dF9tZXRob2RfYmFkbmVzczsK KyAgICAgICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBleHRfbWV0 aG9kX21hdGNoX3F1YWxpdHk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K ICAgICB9CiAKICAgaWYgKG1ldGhvZCA9PSBOT05fTUVUSE9EIHx8IG1ldGhv ZCA9PSBCT1RIKQpAQCAtMjc4NSwyMSArMjkwMCw2IEBAIGZpbmRfb3Zlcmxv YWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKIAkJ IGZ1bmNfbmFtZSk7CiAgICAgfQogCi0gIGlmIChzdGF0aWNwICE9IE5VTEwp Ci0gICAgKnN0YXRpY3AgPSBvbG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2Qs IGZuc19wdHIsIG1ldGhvZF9vbG9hZF9jaGFtcCk7Ci0KLSAgaWYgKG1ldGhv ZF9vbG9hZF9jaGFtcCA+PSAwKQotICAgIHsKLSAgICAgIGlmIChUWVBFX0ZO X0ZJRUxEX1ZJUlRVQUxfUCAoZm5zX3B0ciwgbWV0aG9kX29sb2FkX2NoYW1w KSkKLQkqdmFscCA9IHZhbHVlX3ZpcnR1YWxfZm5fZmllbGQgKCZ0ZW1wLCBm bnNfcHRyLCBtZXRob2Rfb2xvYWRfY2hhbXAsCi0JCQkJCWJhc2V0eXBlLCBi b2Zmc2V0KTsKLSAgICAgIGVsc2UKLQkqdmFscCA9IHZhbHVlX2ZuX2ZpZWxk ICgmdGVtcCwgZm5zX3B0ciwgbWV0aG9kX29sb2FkX2NoYW1wLAotCQkJCWJh c2V0eXBlLCBib2Zmc2V0KTsKLSAgICB9Ci0gIGVsc2UKLSAgICAqc3ltcCA9 IG9sb2FkX3N5bXNbZnVuY19vbG9hZF9jaGFtcF07Ci0KICAgaWYgKG9ianAp CiAgICAgewogICAgICAgc3RydWN0IHR5cGUgKnRlbXBfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKHRlbXApKTsKQEAgLTI4MDksMTAgKzI5 MDksNjUgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoq YXJncywgaW50IG5hcmdzLAogCSAgJiYgKFRZUEVfQ09ERSAob2JqdHlwZSkg PT0gVFlQRV9DT0RFX1BUUgogCSAgICAgIHx8IFRZUEVfQ09ERSAob2JqdHlw ZSkgPT0gVFlQRV9DT0RFX1JFRikpCiAJewotCSAgdGVtcCA9IHZhbHVlX2Fk ZHIgKHRlbXApOworCSAgKm9ianAgPSB2YWx1ZV9hZGRyICh0ZW1wKTsKIAl9 Ci0gICAgICAqb2JqcCA9IHRlbXA7CisgICAgICBlbHNlCisgICAgICAgICpv YmpwID0gdGVtcDsKKyAgICB9CisKKyAgaWYgKHN0YXRpY3AgIT0gTlVMTCkK KyAgICAqc3RhdGljcCA9IG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhvZCwg Zm5zX3B0ciwgbWV0aG9kX29sb2FkX2NoYW1wKTsKKworICBpZiAobWV0aG9k X29sb2FkX2NoYW1wID49IDApCisgICAgeworICAgICAgaWYgKHNyY19tZXRo b2Rfb2xvYWRfY2hhbXAgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgIGlm IChUWVBFX0ZOX0ZJRUxEX1ZJUlRVQUxfUCAoZm5zX3B0ciwgbWV0aG9kX29s b2FkX2NoYW1wKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3Ry dWN0IHR5cGUgKmR0eXBlOworICAgICAgCisgICAgICAgICAgICAgIGR0eXBl ID0gdmFsdWVfaGFzX2luZGlyZWN0X2R5bmFtaWNfdHlwZSAoYXJnc1swXSk7 CisgICAgICAgICAgICAgIGlmIChkdHlwZSkKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICBhcmdzWzBdID0gdmFsdWVfY2FzdCAoZHR5 cGUsIGFyZ3NbMF0pOworICAgICAgICAgICAgICAgICAgZG9fY2xlYW51cHMg KGFsbF9jbGVhbnVwcyk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmlu ZF9vdmVybG9hZF9tYXRjaCAoYXJncywgbmFyZ3MsIG5hbWUsIG1ldGhvZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvYmpwLCBmc3ltLCB2YWxwLCBzeW1wLCBleHRfZm4sCisJCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY3AsIG5vX2FkbCk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgICAgKnZhbHAgPSB2YWx1ZV92aXJ0dWFsX2ZuX2ZpZWxkICgmdGVtcCwg Zm5zX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2V0eXBl LCBib2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisg ICAgICAgICAgICAqdmFscCA9IHZhbHVlX2ZuX2ZpZWxkICgmdGVtcCwgZm5z X3B0ciwgbWV0aG9kX29sb2FkX2NoYW1wLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmFzZXR5cGUsIGJvZmZzZXQpOworICAgICAg ICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoc3Jj X2FuZF9leHRfZXF1YWwgCisgICAgICAgICAgICAgICYmIFRZUEVfRk5fRklF TERfVklSVFVBTF9QIChmbnNfcHRyLCBzcmNfbWV0aG9kX29sb2FkX2NoYW1w X2JrcCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0cnVjdCB0 eXBlICpkdHlwZTsKKyAgICAgIAorICAgICAgICAgICAgICBkdHlwZSA9IHZh bHVlX2hhc19pbmRpcmVjdF9keW5hbWljX3R5cGUgKGFyZ3NbMF0pOworICAg ICAgICAgICAgICBpZiAoZHR5cGUpCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgYXJnc1swXSA9IHZhbHVlX2Nhc3QgKGR0eXBlLCBh cmdzWzBdKTsKKyAgICAgICAgICAgICAgICAgIGRvX2NsZWFudXBzIChhbGxf Y2xlYW51cHMpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRfb3Zl cmxvYWRfbWF0Y2ggKGFyZ3MsIG5hcmdzLCBuYW1lLCBtZXRob2QsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Jq cCwgZnN5bSwgdmFscCwgc3ltcCwgZXh0X2ZuLAorCQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0aWNwLCBub19hZGwpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICpleHRfZm4g PSBleHRfZm5fY2xvbmUgKGV4dF9mbl9saXN0X2dldCAoZXh0X2ZuX2xpc3Qs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleHRfbWV0aG9kX29sb2FkX2NoYW1wKSk7CisgICAgICAgIH0K ICAgICB9CisgIGVsc2UKKyAgICAqc3ltcCA9IG9sb2FkX3N5bXNbZnVuY19v bG9hZF9jaGFtcF07CiAKICAgZG9fY2xlYW51cHMgKGFsbF9jbGVhbnVwcyk7 CiAKQEAgLTI5NDcsNyArMzEwMiw3IEBAIGZpbmRfb2xvYWRfY2hhbXBfbmFt ZXNwYWNlX2xvb3AgKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywK ICAgICArK251bV9mbnM7CiAKICAgbmV3X29sb2FkX2NoYW1wID0gZmluZF9v bG9hZF9jaGFtcCAoYXJncywgbmFyZ3MsIDAsIG51bV9mbnMsCi0JCQkJICAg ICAgTlVMTCwgbmV3X29sb2FkX3N5bXMsCisJCQkJICAgICAgTlVMTCwgTlVM TCwgbmV3X29sb2FkX3N5bXMsCiAJCQkJICAgICAgJm5ld19vbG9hZF9jaGFt cF9idik7CiAKICAgLyogQ2FzZSAxOiBXZSBmb3VuZCBhIGdvb2QgbWF0Y2gu ICBGcmVlIGVhcmxpZXIgbWF0Y2hlcyAoaWYgYW55KSwKQEAgLTI5OTUsNiAr MzE1MCw3IEBAIGZpbmRfb2xvYWRfY2hhbXBfbmFtZXNwYWNlX2xvb3AgKHN0 cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKIHN0YXRpYyBpbnQKIGZp bmRfb2xvYWRfY2hhbXAgKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJn cywgaW50IG1ldGhvZCwKIAkJICBpbnQgbnVtX2Zucywgc3RydWN0IGZuX2Zp ZWxkICpmbnNfcHRyLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICpleHRfZm5fbGlzdCwKIAkJICBzdHJ1Y3Qgc3ltYm9s ICoqb2xvYWRfc3ltcywKIAkJICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKipv bG9hZF9jaGFtcF9idikKIHsKQEAgLTMwMTAsMTYgKzMxNjYsMjQgQEAgZmlu ZF9vbG9hZF9jaGFtcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdz LCBpbnQgbWV0aG9kLAogICAqb2xvYWRfY2hhbXBfYnYgPSBOVUxMOwogCiAg IC8qIENvbnNpZGVyIGVhY2ggY2FuZGlkYXRlIGluIHR1cm4uICAqLwotICBm b3IgKGl4ID0gMDsgaXggPCBudW1fZm5zOyBpeCsrKQorICBmb3IgKGl4ID0g MDsgKGl4IDwgbnVtX2ZucykgfHwgZXh0X2ZuX2xpc3Q7IGl4KyspCiAgICAg ewogICAgICAgaW50IGpqOwotICAgICAgaW50IHN0YXRpY19vZmZzZXQgPSBv bG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2QsIGZuc19wdHIsIGl4KTsKKyAg ICAgIGludCBzdGF0aWNfb2Zmc2V0ID0gMDsKICAgICAgIGludCBucGFybXM7 CiAgICAgICBzdHJ1Y3QgdHlwZSAqKnBhcm1fdHlwZXM7CisgICAgICBzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiA9IGV4dF9mbl9saXN0Owor CisgICAgICBpZiAoZXh0X2ZuX2xpc3QpCisgICAgICAgIGV4dF9mbl9saXN0 ID0gZXh0X2ZuX2xpc3QtPm5leHQ7CiAKICAgICAgIGlmIChtZXRob2QpCiAJ ewotCSAgbnBhcm1zID0gVFlQRV9ORklFTERTIChUWVBFX0ZOX0ZJRUxEX1RZ UEUgKGZuc19wdHIsIGl4KSk7CisgICAgICAgICAgaWYgKGZuc19wdHIpCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0YXRpY19vZmZzZXQgPSBv bG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2QsIGZuc19wdHIsIGl4KTsKKwkg ICAgICBucGFybXMgPSBUWVBFX05GSUVMRFMgKFRZUEVfRk5fRklFTERfVFlQ RSAoZm5zX3B0ciwgaXgpKTsKKyAgICAgICAgICAgIH0KIAl9CiAgICAgICBl bHNlCiAJewpAQCAtMzAyOCwxMyArMzE5MiwyMCBAQCBmaW5kX29sb2FkX2No YW1wIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIGludCBtZXRo b2QsCiAJfQogCiAgICAgICAvKiBQcmVwYXJlIGFycmF5IG9mIHBhcmFtZXRl ciB0eXBlcy4gICovCi0gICAgICBwYXJtX3R5cGVzID0gKHN0cnVjdCB0eXBl ICoqKSAKLQl4bWFsbG9jIChucGFybXMgKiAoc2l6ZW9mIChzdHJ1Y3QgdHlw ZSAqKSkpOwotICAgICAgZm9yIChqaiA9IDA7IGpqIDwgbnBhcm1zOyBqaisr KQotCXBhcm1fdHlwZXNbampdID0gKG1ldGhvZAotCQkJICA/IChUWVBFX0ZO X0ZJRUxEX0FSR1MgKGZuc19wdHIsIGl4KVtqal0udHlwZSkKLQkJCSAgOiBU WVBFX0ZJRUxEX1RZUEUgKFNZTUJPTF9UWVBFIChvbG9hZF9zeW1zW2l4XSks IAotCQkJCQkgICAgIGpqKSk7CisgICAgICBpZiAoZm5zX3B0ciB8fCBvbG9h ZF9zeW1zKQorICAgICAgICB7CisgICAgICAgICAgcGFybV90eXBlcyA9IChz dHJ1Y3QgdHlwZSAqKikgCisgICAgICAgICAgICB4bWFsbG9jIChucGFybXMg KiAoc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSkpOworICAgICAgICAgIGZvciAo amogPSAwOyBqaiA8IG5wYXJtczsgamorKykKKyAgICAgICAgICAgIHBhcm1f dHlwZXNbampdID0gKG1ldGhvZAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPyAoVFlQRV9GTl9GSUVMRF9BUkdTIChmbnNfcHRyLCBpeClbampd LnR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFRZUEVf RklFTERfVFlQRSAoU1lNQk9MX1RZUEUgKG9sb2FkX3N5bXNbaXhdKSwgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaikpOworICAgICAgICB9 CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBwYXJtX3R5cGVz ID0gZXh0X2ZuX2dldF9hcmd0eXBlcyAoZXh0X2ZuLCAmbnBhcm1zKTsKKyAg ICAgICAgfQogCiAgICAgICAvKiBDb21wYXJlIHBhcmFtZXRlciB0eXBlcyB0 byBzdXBwbGllZCBhcmd1bWVudCB0eXBlcy4gIFNraXAKICAgICAgICAgIFRI SVMgZm9yIHN0YXRpYyBtZXRob2RzLiAgKi8KZGlmZiAtLWdpdCBhL2dkYi92 YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKaW5kZXggOTdjZWVhYi4uODVlZjM3NyAx MDA2NDQKLS0tIGEvZ2RiL3ZhbHVlLmgKKysrIGIvZ2RiL3ZhbHVlLmgKQEAg LTMxLDYgKzMxLDcgQEAgc3RydWN0IHR5cGU7CiBzdHJ1Y3QgdWlfZmlsZTsK IHN0cnVjdCBsYW5ndWFnZV9kZWZuOwogc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnM7CitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3I7CiAKIC8qIFRoZSBz dHJ1Y3R1cmUgd2hpY2ggZGVmaW5lcyB0aGUgdHlwZSBvZiBhIHZhbHVlLiAg SXQgc2hvdWxkIG5ldmVyCiAgICBiZSBwb3NzaWJsZSBmb3IgYSBwcm9ncmFt IGx2YWwgdmFsdWUgdG8gc3Vydml2ZSBvdmVyIGEgY2FsbCB0byB0aGUKQEAg LTY1NCw2ICs2NTUsNyBAQCBleHRlcm4gaW50IGZpbmRfb3ZlcmxvYWRfbWF0 Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKIAkJCQllbnVt IG9sb2FkX3NlYXJjaF90eXBlIG1ldGhvZCwKIAkJCQlzdHJ1Y3QgdmFsdWUg KipvYmpwLCBzdHJ1Y3Qgc3ltYm9sICpmc3ltLAogCQkJCXN0cnVjdCB2YWx1 ZSAqKnZhbHAsIHN0cnVjdCBzeW1ib2wgKipzeW1wLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3Ig KipleHRfZm4sCiAJCQkJaW50ICpzdGF0aWNwLCBjb25zdCBpbnQgbm9fYWRs KTsKIAogZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZmllbGQgKHN0cnVj dCB2YWx1ZSAqYXJnMSwgaW50IGZpZWxkbm8pOwo= --047d7b66f54d7aa7f804d46399d0--