From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19535 invoked by alias); 7 Nov 2010 12:04:15 -0000 Received: (qmail 19522 invoked by uid 22791); 7 Nov 2010 12:04:14 -0000 X-SWARE-Spam-Status: No, hits=-0.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from mail-bw0-f47.google.com (HELO mail-bw0-f47.google.com) (209.85.214.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 07 Nov 2010 12:04:09 +0000 Received: by bwz10 with SMTP id 10so4048178bwz.20 for ; Sun, 07 Nov 2010 04:04:06 -0800 (PST) MIME-Version: 1.0 Received: by 10.204.61.65 with SMTP id s1mr3746774bkh.195.1289131445194; Sun, 07 Nov 2010 04:04:05 -0800 (PST) Received: by 10.204.7.80 with HTTP; Sun, 7 Nov 2010 04:04:05 -0800 (PST) In-Reply-To: <4CD65B85.8030903@net-b.de> References: <20101106233415.7DA533BE18@mailhost.lps.ens.fr> <4CD65B85.8030903@net-b.de> Date: Sun, 07 Nov 2010 12:04:00 -0000 Message-ID: Subject: Re: [Patch, Fortran, OOP] PR 46313: OOP-ABI issue, ALLOCATE issue, CLASS renaming issue From: Janus Weil To: Tobias Burnus Cc: Dominique Dhumieres , fortran , gcc-patches , tkoenig Content-Type: multipart/mixed; boundary=001636c5a931dc10190494754dbb Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org X-SW-Source: 2010-11/txt/msg00118.txt.bz2 --001636c5a931dc10190494754dbb Content-Type: text/plain; charset=ISO-8859-1 Content-length: 784 >> Yes, that is expected, because the patch changes the name of the vtab >> to "vtab$main$dt", so one needs to change the name of the subroutine >> in the test case in the same way in order to see the failure: > > Dot? vtab.main.dt? Yes, we once had this variant. I think the reason why I switched to dollars was that it made the dumps easier to read (think "vtab.main.dt..extends..size" etc). The best option I can currently see is to use leading underscores (as in "_vtab_main_dt"). This is forbidden in Fortran (cf. F08:R303), but accepted by the assembler (cf. http://sourceware.org/binutils/docs-2.20/as/Symbol-Names.html#Symbol-Names). Attached is a patch which does this change. I also added a few macros in gfortran.h. Ok for trunk after successful regtest? Cheers, Janus --001636c5a931dc10190494754dbb Content-Type: application/octet-stream; name="pr46313_leading_underscore.diff" Content-Disposition: attachment; filename="pr46313_leading_underscore.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gg7vjsun0 Content-length: 39854 SW5kZXg6IGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1leHByLmMJKHJldmlz aW9uIDE2NjQwOCkKKysrIGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwkod29y a2luZyBjb3B5KQpAQCAtMjU4NCw3ICsyNTg0LDcgQEAgZ2ZjX2NvbnZfZGVy aXZlZF90b19jbGFzcyAoZ2ZjX3NlICpwYXJtc2UsIGdmY19leHAKICAgdmFy ID0gZ2ZjX2NyZWF0ZV92YXIgKHRtcCwgImNsYXNzIik7CiAKICAgLyogU2V0 IHRoZSB2cHRyLiAgKi8KLSAgY21wID0gZ2ZjX2ZpbmRfY29tcG9uZW50IChk ZWNsYXJlZCwgIiR2cHRyIiwgdHJ1ZSwgdHJ1ZSk7CisgIGNtcCA9IGdmY19m aW5kX2NvbXBvbmVudCAoZGVjbGFyZWQsICJfdnB0ciIsIHRydWUsIHRydWUp OwogICBjdHJlZSA9IGZvbGRfYnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24s IENPTVBPTkVOVF9SRUYsCiAJCQkgICBUUkVFX1RZUEUgKGNtcC0+YmFja2Vu ZF9kZWNsKSwKIAkJCSAgIHZhciwgY21wLT5iYWNrZW5kX2RlY2wsIE5VTExf VFJFRSk7CkBAIC0yNTk4LDcgKzI1OTgsNyBAQCBnZmNfY29udl9kZXJpdmVk X3RvX2NsYXNzIChnZmNfc2UgKnBhcm1zZSwgZ2ZjX2V4cAogCQkgIGZvbGRf Y29udmVydCAoVFJFRV9UWVBFIChjdHJlZSksIHRtcCkpOwogCiAgIC8qIE5v dyBzZXQgdGhlIGRhdGEgZmllbGQuICAqLwotICBjbXAgPSBnZmNfZmluZF9j b21wb25lbnQgKGRlY2xhcmVkLCAiJGRhdGEiLCB0cnVlLCB0cnVlKTsKKyAg Y21wID0gZ2ZjX2ZpbmRfY29tcG9uZW50IChkZWNsYXJlZCwgIl9kYXRhIiwg dHJ1ZSwgdHJ1ZSk7CiAgIGN0cmVlID0gZm9sZF9idWlsZDNfbG9jIChpbnB1 dF9sb2NhdGlvbiwgQ09NUE9ORU5UX1JFRiwKIAkJCSAgIFRSRUVfVFlQRSAo Y21wLT5iYWNrZW5kX2RlY2wpLAogCQkJICAgdmFyLCBjbXAtPmJhY2tlbmRf ZGVjbCwgTlVMTF9UUkVFKTsKQEAgLTQ1MDQsMTMgKzQ1MDQsMTMgQEAgZ2Zj X2NvbnZfc3RydWN0dXJlIChnZmNfc2UgKiBzZSwgZ2ZjX2V4cHIgKiBleHBy LAogICAgICAgaWYgKCFjLT5leHByIHx8IGNtLT5hdHRyLmFsbG9jYXRhYmxl KQogICAgICAgICBjb250aW51ZTsKIAotICAgICAgaWYgKHN0cmNtcCAoY20t Pm5hbWUsICIkc2l6ZSIpID09IDApCisgICAgICBpZiAoc3RyY21wIChjbS0+ bmFtZSwgIl9zaXplIikgPT0gMCkKIAl7CiAJICB2YWwgPSBUWVBFX1NJWkVf VU5JVCAoZ2ZjX2dldF9kZXJpdmVkX3R5cGUgKGNtLT50cy51LmRlcml2ZWQp KTsKIAkgIENPTlNUUlVDVE9SX0FQUEVORF9FTFQgKHYsIGNtLT5iYWNrZW5k X2RlY2wsIHZhbCk7CiAJfQogICAgICAgZWxzZSBpZiAoY20tPmluaXRpYWxp emVyICYmIGNtLT5pbml0aWFsaXplci0+ZXhwcl90eXBlICE9IEVYUFJfTlVM TAotCSAgICAgICAmJiBzdHJjbXAgKGNtLT5uYW1lLCAiJGV4dGVuZHMiKSA9 PSAwKQorCSAgICAgICAmJiBzdHJjbXAgKGNtLT5uYW1lLCAiX2V4dGVuZHMi KSA9PSAwKQogCXsKIAkgIHRyZWUgdnRhYjsKIAkgIGdmY19zeW1ib2wgKnZ0 YWJzOwpAQCAtNTg3NSwxNSArNTg3NSwxNSBAQCBnZmNfdHJhbnNfY2xhc3Nf aW5pdF9hc3NpZ24gKGdmY19jb2RlICpjb2RlKQogICBnZmNfc3RhcnRfYmxv Y2sgKCZibG9jayk7CiAKICAgbGhzID0gZ2ZjX2NvcHlfZXhwciAoY29kZS0+ ZXhwcjEpOwotICBnZmNfYWRkX2NvbXBvbmVudF9yZWYgKGxocywgIiRkYXRh Iik7CisgIGdmY19hZGRfZGF0YV9jb21wb25lbnQgKGxocyk7CiAKICAgcmhz ID0gZ2ZjX2NvcHlfZXhwciAoY29kZS0+ZXhwcjEpOwotICBnZmNfYWRkX2Nv bXBvbmVudF9yZWYgKHJocywgIiR2cHRyIik7Ci0gIGdmY19hZGRfY29tcG9u ZW50X3JlZiAocmhzLCAiJGRlZl9pbml0Iik7CisgIGdmY19hZGRfdnB0cl9j b21wb25lbnQgKHJocyk7CisgIGdmY19hZGRfZGVmX2luaXRfY29tcG9uZW50 IChyaHMpOwogCiAgIHN6ID0gZ2ZjX2NvcHlfZXhwciAoY29kZS0+ZXhwcjEp OwotICBnZmNfYWRkX2NvbXBvbmVudF9yZWYgKHN6LCAiJHZwdHIiKTsKLSAg Z2ZjX2FkZF9jb21wb25lbnRfcmVmIChzeiwgIiRzaXplIik7CisgIGdmY19h ZGRfdnB0cl9jb21wb25lbnQgKHN6KTsKKyAgZ2ZjX2FkZF9zaXplX2NvbXBv bmVudCAoc3opOwogCiAgIGdmY19pbml0X3NlICgmZHN0LCBOVUxMKTsKICAg Z2ZjX2luaXRfc2UgKCZzcmMsIE5VTEwpOwpAQCAtNTkxNCw5ICs1OTE0LDkg QEAgZ2ZjX3RyYW5zX2NsYXNzX2Fzc2lnbiAoZ2ZjX2V4cHIgKmV4cHIxLCBn ZmNfZXhwcgogCiAgIGlmIChleHByMi0+dHMudHlwZSAhPSBCVF9DTEFTUykK ICAgICB7Ci0gICAgICAvKiBJbnNlcnQgYW4gYWRkaXRpb25hbCBhc3NpZ25t ZW50IHdoaWNoIHNldHMgdGhlICckdnB0cicgZmllbGQuICAqLworICAgICAg LyogSW5zZXJ0IGFuIGFkZGl0aW9uYWwgYXNzaWdubWVudCB3aGljaCBzZXRz IHRoZSAnX3ZwdHInIGZpZWxkLiAgKi8KICAgICAgIGxocyA9IGdmY19jb3B5 X2V4cHIgKGV4cHIxKTsKLSAgICAgIGdmY19hZGRfY29tcG9uZW50X3JlZiAo bGhzLCAiJHZwdHIiKTsKKyAgICAgIGdmY19hZGRfdnB0cl9jb21wb25lbnQg KGxocyk7CiAgICAgICBpZiAoZXhwcjItPnRzLnR5cGUgPT0gQlRfREVSSVZF RCkKIAl7CiAJICBnZmNfc3ltYm9sICp2dGFiOwpAQCAtNTk0NSw3ICs1OTQ1 LDcgQEAgZ2ZjX3RyYW5zX2NsYXNzX2Fzc2lnbiAoZ2ZjX2V4cHIgKmV4cHIx LCBnZmNfZXhwcgogICBpZiAoZXhwcjItPnRzLnR5cGUgPT0gQlRfQ0xBU1Mp CiAgICAgb3AgPSBFWEVDX0FTU0lHTjsKICAgZWxzZQotICAgIGdmY19hZGRf Y29tcG9uZW50X3JlZiAoZXhwcjEsICIkZGF0YSIpOworICAgIGdmY19hZGRf ZGF0YV9jb21wb25lbnQgKGV4cHIxKTsKIAogICBpZiAob3AgPT0gRVhFQ19B U1NJR04pCiAgICAgdG1wID0gZ2ZjX3RyYW5zX2Fzc2lnbm1lbnQgKGV4cHIx LCBleHByMiwgZmFsc2UsIHRydWUpOwpJbmRleDogZ2NjL2ZvcnRyYW4vdHJh bnMtYXJyYXkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvZm9y dHJhbi90cmFucy1hcnJheS5jCShyZXZpc2lvbiAxNjY0MDgpCisrKyBnY2Mv Zm9ydHJhbi90cmFucy1hcnJheS5jCSh3b3JraW5nIGNvcHkpCkBAIC02MzE3 LDcgKzYzMTcsNyBAQCBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGdmY19zeW1i b2wgKiBkZXJfdHlwZSwgdHJlZQogCSAgICAgIGNvbXAgPSBmb2xkX2J1aWxk M19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT01QT05FTlRfUkVGLCBjdHlwZSwK IAkJCQkgICAgICBkZWNsLCBjZGVjbCwgTlVMTF9UUkVFKTsKIAkgICAgICAK LQkgICAgICAvKiBBZGQgcmVmZXJlbmNlIHRvICckZGF0YScgY29tcG9uZW50 LiAgKi8KKwkgICAgICAvKiBBZGQgcmVmZXJlbmNlIHRvICdfZGF0YScgY29t cG9uZW50LiAgKi8KIAkgICAgICB0bXAgPSBDTEFTU19EQVRBIChjKS0+YmFj a2VuZF9kZWNsOwogCSAgICAgIGNvbXAgPSBmb2xkX2J1aWxkM19sb2MgKGlu cHV0X2xvY2F0aW9uLCBDT01QT05FTlRfUkVGLAogCQkJCSAgICAgIFRSRUVf VFlQRSAodG1wKSwgY29tcCwgdG1wLCBOVUxMX1RSRUUpOwpAQCAtNjM1Nyw3 ICs2MzU3LDcgQEAgc3RydWN0dXJlX2FsbG9jX2NvbXBzIChnZmNfc3ltYm9s ICogZGVyX3R5cGUsIHRyZWUKIAkgICAgICAvKiBBbGxvY2F0YWJsZSBzY2Fs YXIgQ0xBU1MgY29tcG9uZW50cy4gICovCiAJICAgICAgY29tcCA9IGZvbGRf YnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENPTVBPTkVOVF9SRUYsIGN0 eXBlLAogCQkJCSAgICAgIGRlY2wsIGNkZWNsLCBOVUxMX1RSRUUpOwotCSAg ICAgIC8qIEFkZCByZWZlcmVuY2UgdG8gJyRkYXRhJyBjb21wb25lbnQuICAq LworCSAgICAgIC8qIEFkZCByZWZlcmVuY2UgdG8gJ19kYXRhJyBjb21wb25l bnQuICAqLwogCSAgICAgIHRtcCA9IENMQVNTX0RBVEEgKGMpLT5iYWNrZW5k X2RlY2w7CiAJICAgICAgY29tcCA9IGZvbGRfYnVpbGQzX2xvYyAoaW5wdXRf bG9jYXRpb24sIENPTVBPTkVOVF9SRUYsCiAJCQkJICAgICAgVFJFRV9UWVBF ICh0bXApLCBjb21wLCB0bXAsIE5VTExfVFJFRSk7CkluZGV4OiBnY2MvZm9y dHJhbi9jbGFzcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9m b3J0cmFuL2NsYXNzLmMJKHJldmlzaW9uIDE2NjQwOCkKKysrIGdjYy9mb3J0 cmFuL2NsYXNzLmMJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE4ICsyOSwxOCBA QCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYg bm90IHNlZQogCiAgICBFYWNoIENMQVNTIHZhcmlhYmxlIGlzIGVuY2Fwc3Vs YXRlZCBieSBhIGNsYXNzIGNvbnRhaW5lciwgd2hpY2ggaXMgYQogICAgc3Ry dWN0dXJlIHdpdGggdHdvIGZpZWxkczoKLSAgICAqICRkYXRhOiBBIHBvaW50 ZXIgdG8gdGhlIGFjdHVhbCBkYXRhIG9mIHRoZSB2YXJpYWJsZS4gVGhpcyBm aWVsZCBoYXMgdGhlCisgICAgKiBfZGF0YTogQSBwb2ludGVyIHRvIHRoZSBh Y3R1YWwgZGF0YSBvZiB0aGUgdmFyaWFibGUuIFRoaXMgZmllbGQgaGFzIHRo ZQogICAgICAgICAgICAgIGRlY2xhcmVkIHR5cGUgb2YgdGhlIGNsYXNzIHZh cmlhYmxlIGFuZCBpdHMgYXR0cmlidXRlcwogICAgICAgICAgICAgIChwb2lu dGVyL2FsbG9jYXRhYmxlL2RpbWVuc2lvbi8uLi4pLgotICAgICogJHZwdHI6 IEEgcG9pbnRlciB0byB0aGUgdnRhYmxlIGVudHJ5IChzZWUgYmVsb3cpIG9m IHRoZSBkeW5hbWljIHR5cGUuCisgICAgKiBfdnB0cjogQSBwb2ludGVyIHRv IHRoZSB2dGFibGUgZW50cnkgKHNlZSBiZWxvdykgb2YgdGhlIGR5bmFtaWMg dHlwZS4KICAgICAKICAgIEZvciBlYWNoIGRlcml2ZWQgdHlwZSB3ZSBzZXQg dXAgYSAidnRhYmxlIiBlbnRyeSwgaS5lLiBhIHN0cnVjdHVyZSB3aXRoIHRo ZQogICAgZm9sbG93aW5nIGZpZWxkczoKLSAgICAqICRoYXNoOiBBIGhhc2gg dmFsdWUgc2VydmluZyBhcyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlz IHR5cGUuCi0gICAgKiAkc2l6ZTogVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhl IGRlcml2ZWQgdHlwZS4KLSAgICAqICRleHRlbmRzOiBBIHBvaW50ZXIgdG8g dGhlIHZ0YWJsZSBlbnRyeSBvZiB0aGUgcGFyZW50IGRlcml2ZWQgdHlwZS4K LSAgICAqICRkZWZfaW5pdDogQSBwb2ludGVyIHRvIGEgZGVmYXVsdCBpbml0 aWFsaXplZCB2YXJpYWJsZSBvZiB0aGlzIHR5cGUuCi0gICAgKiAkY29weTog QSBwcm9jZWR1cmUgcG9pbnRlciB0byBhIGNvcHlpbmcgcHJvY2VkdXJlLgor ICAgICogX2hhc2g6ICAgICBBIGhhc2ggdmFsdWUgc2VydmluZyBhcyBhIHVu aXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHR5cGUuCisgICAgKiBfc2l6ZTog ICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBkZXJpdmVkIHR5cGUuCisg ICAgKiBfZXh0ZW5kczogIEEgcG9pbnRlciB0byB0aGUgdnRhYmxlIGVudHJ5 IG9mIHRoZSBwYXJlbnQgZGVyaXZlZCB0eXBlLgorICAgICogX2RlZl9pbml0 OiBBIHBvaW50ZXIgdG8gYSBkZWZhdWx0IGluaXRpYWxpemVkIHZhcmlhYmxl IG9mIHRoaXMgdHlwZS4KKyAgICAqIF9jb3B5OiAgICAgQSBwcm9jZWR1cmUg cG9pbnRlciB0byBhIGNvcHlpbmcgcHJvY2VkdXJlLgogICAgQWZ0ZXIgdGhl c2UgZm9sbG93IHByb2NlZHVyZSBwb2ludGVyIGNvbXBvbmVudHMgZm9yIHRo ZSBzcGVjaWZpYwogICAgdHlwZS1ib3VuZCBwcm9jZWR1cmVzLiAgKi8KIApA QCAtNTIsNyArNTIsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxl IENPUFlJTkczLiAgSWYgbm90IHNlZQogCiAKIC8qIEluc2VydCBhIHJlZmVy ZW5jZSB0byB0aGUgY29tcG9uZW50IG9mIHRoZSBnaXZlbiBuYW1lLgotICAg T25seSB0byBiZSB1c2VkIHdpdGggQ0xBU1MgY29udGFpbmVycy4gICovCisg ICBPbmx5IHRvIGJlIHVzZWQgd2l0aCBDTEFTUyBjb250YWluZXJzIGFuZCB2 dGFibGVzLiAgKi8KIAogdm9pZAogZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChn ZmNfZXhwciAqZSwgY29uc3QgY2hhciAqbmFtZSkKQEAgLTY4LDcgKzY4LDcg QEAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChnZmNfZXhwciAqZSwgY29uc3Qg Y2hhciAqbmEKIAlicmVhazsKICAgICAgIHRhaWwgPSAmKCgqdGFpbCktPm5l eHQpOwogICAgIH0KLSAgaWYgKCp0YWlsICE9IE5VTEwgJiYgc3RyY21wIChu YW1lLCAiJGRhdGEiKSA9PSAwKQorICBpZiAoKnRhaWwgIT0gTlVMTCAmJiBz dHJjbXAgKG5hbWUsICJfZGF0YSIpID09IDApCiAgICAgbmV4dCA9ICp0YWls OwogICAoKnRhaWwpID0gZ2ZjX2dldF9yZWYoKTsKICAgKCp0YWlsKS0+bmV4 dCA9IG5leHQ7CkBAIC04Miw3ICs4Miw3IEBAIGdmY19hZGRfY29tcG9uZW50 X3JlZiAoZ2ZjX2V4cHIgKmUsIGNvbnN0IGNoYXIgKm5hCiAKIAogLyogQnVp bGQgYSBOVUxMIGluaXRpYWxpemVyIGZvciBDTEFTUyBwb2ludGVycywKLSAg IGluaXRpYWxpemluZyB0aGUgJGRhdGEgYW5kICR2cHRyIGNvbXBvbmVudHMg dG8gemVyby4gICovCisgICBpbml0aWFsaXppbmcgdGhlIF9kYXRhIGFuZCBf dnB0ciBjb21wb25lbnRzIHRvIHplcm8uICAqLwogCiBnZmNfZXhwciAqCiBn ZmNfY2xhc3NfbnVsbF9pbml0aWFsaXplciAoZ2ZjX3R5cGVzcGVjICp0cykK QEAgLTEwNywzMSArMTA3LDQ2IEBAIGdmY19jbGFzc19udWxsX2luaXRpYWxp emVyIChnZmNfdHlwZXNwZWMgKnRzKQogfQogCiAKKy8qIENyZWF0ZSBhIHVu aXF1ZSBzdHJpbmcgaWRlbnRpZmllciBmb3IgYSBkZXJpdmVkIHR5cGUsIGNv bXBvc2VkIG9mIGl0cyBuYW1lCisgICBhbmQgbW9kdWxlIG5hbWUuIFRoaXMg aXMgdXNlZCB0byBjb25zdHJ1Y3QgdW5pcXVlIG5hbWVzIGZvciB0aGUgY2xh c3MKKyAgIGNvbnRhaW5lcnMgYW5kIHZ0YWIgc3ltYm9scy4gICovCisKK3N0 YXRpYyB2b2lkCitnZXRfdW5pcXVlX3R5cGVfc3RyaW5nIChjaGFyICpzdHJp bmcsIGdmY19zeW1ib2wgKmRlcml2ZWQpCit7ICAKKyAgaWYgKGRlcml2ZWQt Pm1vZHVsZSkKKyAgICBzcHJpbnRmIChzdHJpbmcsICIlc18lcyIsIGRlcml2 ZWQtPm1vZHVsZSwgZGVyaXZlZC0+bmFtZSk7CisgIGVsc2UKKyAgICBzcHJp bnRmIChzdHJpbmcsICIlc18lcyIsIGRlcml2ZWQtPm5zLT5wcm9jX25hbWUt Pm5hbWUsIGRlcml2ZWQtPm5hbWUpOworfQorCisKIC8qIEJ1aWxkIGEgcG9s eW1vcnBoaWMgQ0xBU1MgZW50aXR5LCB1c2luZyB0aGUgc3ltYm9sIHRoYXQg Y29tZXMgZnJvbQogICAgYnVpbGRfc3ltLiBBIENMQVNTIGVudGl0eSBpcyBy ZXByZXNlbnRlZCBieSBhbiBlbmNhcHN1bGF0aW5nIHR5cGUsCi0gICB3aGlj aCBjb250YWlucyB0aGUgZGVjbGFyZWQgdHlwZSBhcyAnJGRhdGEnIGNvbXBv bmVudCwgcGx1cyBhIHBvaW50ZXIKLSAgIGNvbXBvbmVudCAnJHZwdHInIHdo aWNoIGRldGVybWluZXMgdGhlIGR5bmFtaWMgdHlwZS4gICovCisgICB3aGlj aCBjb250YWlucyB0aGUgZGVjbGFyZWQgdHlwZSBhcyAnX2RhdGEnIGNvbXBv bmVudCwgcGx1cyBhIHBvaW50ZXIKKyAgIGNvbXBvbmVudCAnX3ZwdHInIHdo aWNoIGRldGVybWluZXMgdGhlIGR5bmFtaWMgdHlwZS4gICovCiAKIGdmY190 cnkKIGdmY19idWlsZF9jbGFzc19zeW1ib2wgKGdmY190eXBlc3BlYyAqdHMs IHN5bWJvbF9hdHRyaWJ1dGUgKmF0dHIsCiAJCQlnZmNfYXJyYXlfc3BlYyAq KmFzLCBib29sIGRlbGF5ZWRfdnRhYikKIHsKLSAgY2hhciBuYW1lW0dGQ19N QVhfU1lNQk9MX0xFTiArIDVdOworICBjaGFyIG5hbWVbR0ZDX01BWF9TWU1C T0xfTEVOXSwgdG5hbWVbR0ZDX01BWF9TWU1CT0xfTEVOXTsKICAgZ2ZjX3N5 bWJvbCAqZmNsYXNzOwogICBnZmNfc3ltYm9sICp2dGFiOwogICBnZmNfY29t cG9uZW50ICpjOwogCiAgIC8qIERldGVybWluZSB0aGUgbmFtZSBvZiB0aGUg ZW5jYXBzdWxhdGluZyB0eXBlLiAgKi8KKyAgZ2V0X3VuaXF1ZV90eXBlX3N0 cmluZyAodG5hbWUsIHRzLT51LmRlcml2ZWQpOwogICBpZiAoKCphcykgJiYg KCphcyktPnJhbmsgJiYgYXR0ci0+YWxsb2NhdGFibGUpCi0gICAgc3ByaW50 ZiAobmFtZSwgImNsYXNzJCVzXyVkX2EiLCB0cy0+dS5kZXJpdmVkLT5uYW1l LCAoKmFzKS0+cmFuayk7CisgICAgc3ByaW50ZiAobmFtZSwgIl9jbGFzc18l c18lZF9hIiwgdG5hbWUsICgqYXMpLT5yYW5rKTsKICAgZWxzZSBpZiAoKCph cykgJiYgKCphcyktPnJhbmspCi0gICAgc3ByaW50ZiAobmFtZSwgImNsYXNz JCVzXyVkIiwgdHMtPnUuZGVyaXZlZC0+bmFtZSwgKCphcyktPnJhbmspOwor ICAgIHNwcmludGYgKG5hbWUsICJfY2xhc3NfJXNfJWQiLCB0bmFtZSwgKCph cyktPnJhbmspOwogICBlbHNlIGlmIChhdHRyLT5wb2ludGVyKQotICAgIHNw cmludGYgKG5hbWUsICJjbGFzcyQlc19wIiwgdHMtPnUuZGVyaXZlZC0+bmFt ZSk7CisgICAgc3ByaW50ZiAobmFtZSwgIl9jbGFzc18lc19wIiwgdG5hbWUp OwogICBlbHNlIGlmIChhdHRyLT5hbGxvY2F0YWJsZSkKLSAgICBzcHJpbnRm IChuYW1lLCAiY2xhc3MkJXNfYSIsIHRzLT51LmRlcml2ZWQtPm5hbWUpOwor ICAgIHNwcmludGYgKG5hbWUsICJfY2xhc3NfJXNfYSIsIHRuYW1lKTsKICAg ZWxzZQotICAgIHNwcmludGYgKG5hbWUsICJjbGFzcyQlcyIsIHRzLT51LmRl cml2ZWQtPm5hbWUpOworICAgIHNwcmludGYgKG5hbWUsICJfY2xhc3NfJXMi LCB0bmFtZSk7CiAKICAgZ2ZjX2ZpbmRfc3ltYm9sIChuYW1lLCB0cy0+dS5k ZXJpdmVkLT5ucywgMCwgJmZjbGFzcyk7CiAgIGlmIChmY2xhc3MgPT0gTlVM TCkKQEAgLTE1MSw4ICsxNjYsOCBAQCBnZmNfYnVpbGRfY2xhc3Nfc3ltYm9s IChnZmNfdHlwZXNwZWMgKnRzLCBzeW1ib2xfYQogCSAgTlVMTCwgJmdmY19j dXJyZW50X2xvY3VzKSA9PSBGQUlMVVJFKQogCXJldHVybiBGQUlMVVJFOwog Ci0gICAgICAvKiBBZGQgY29tcG9uZW50ICckZGF0YScuICAqLwotICAgICAg aWYgKGdmY19hZGRfY29tcG9uZW50IChmY2xhc3MsICIkZGF0YSIsICZjKSA9 PSBGQUlMVVJFKQorICAgICAgLyogQWRkIGNvbXBvbmVudCAnX2RhdGEnLiAg Ki8KKyAgICAgIGlmIChnZmNfYWRkX2NvbXBvbmVudCAoZmNsYXNzLCAiX2Rh dGEiLCAmYykgPT0gRkFJTFVSRSkKIAlyZXR1cm4gRkFJTFVSRTsKICAgICAg IGMtPnRzID0gKnRzOwogICAgICAgYy0+dHMudHlwZSA9IEJUX0RFUklWRUQ7 CkBAIC0xNjcsOCArMTgyLDggQEAgZ2ZjX2J1aWxkX2NsYXNzX3N5bWJvbCAo Z2ZjX3R5cGVzcGVjICp0cywgc3ltYm9sX2EKICAgICAgIGMtPmFzID0gKCph cyk7CiAgICAgICBjLT5pbml0aWFsaXplciA9IE5VTEw7CiAKLSAgICAgIC8q IEFkZCBjb21wb25lbnQgJyR2cHRyJy4gICovCi0gICAgICBpZiAoZ2ZjX2Fk ZF9jb21wb25lbnQgKGZjbGFzcywgIiR2cHRyIiwgJmMpID09IEZBSUxVUkUp CisgICAgICAvKiBBZGQgY29tcG9uZW50ICdfdnB0cicuICAqLworICAgICAg aWYgKGdmY19hZGRfY29tcG9uZW50IChmY2xhc3MsICJfdnB0ciIsICZjKSA9 PSBGQUlMVVJFKQogCXJldHVybiBGQUlMVVJFOwogICAgICAgYy0+dHMudHlw ZSA9IEJUX0RFUklWRUQ7CiAgICAgICBpZiAoZGVsYXllZF92dGFiKQpAQCAt MzE2LDcgKzMzMSw2IEBAIGdmY19maW5kX2Rlcml2ZWRfdnRhYiAoZ2ZjX3N5 bWJvbCAqZGVyaXZlZCkKICAgZ2ZjX25hbWVzcGFjZSAqbnM7CiAgIGdmY19z eW1ib2wgKnZ0YWIgPSBOVUxMLCAqdnR5cGUgPSBOVUxMLCAqZm91bmRfc3lt ID0gTlVMTCwgKmRlZl9pbml0ID0gTlVMTDsKICAgZ2ZjX3N5bWJvbCAqY29w eSA9IE5VTEwsICpzcmMgPSBOVUxMLCAqZHN0ID0gTlVMTDsKLSAgY2hhciBu YW1lWzIgKiBHRkNfTUFYX1NZTUJPTF9MRU4gKyA4XTsKICAgCiAgIC8qIEZp bmQgdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgKE1PRFVMRSBvciBQUk9HUkFN KS4gICovCiAgIGZvciAobnMgPSBnZmNfY3VycmVudF9uczsgbnM7IG5zID0g bnMtPnBhcmVudCkKQEAgLTMyOSw3ICszNDMsMTAgQEAgZ2ZjX2ZpbmRfZGVy aXZlZF92dGFiIChnZmNfc3ltYm9sICpkZXJpdmVkKQogICAgIAogICBpZiAo bnMpCiAgICAgewotICAgICAgc3ByaW50ZiAobmFtZSwgInZ0YWIkJXMiLCBk ZXJpdmVkLT5uYW1lKTsKKyAgICAgIGNoYXIgbmFtZVtHRkNfTUFYX1NZTUJP TF9MRU5dLCB0bmFtZVtHRkNfTUFYX1NZTUJPTF9MRU5dOworICAgICAgCisg ICAgICBnZXRfdW5pcXVlX3R5cGVfc3RyaW5nICh0bmFtZSwgZGVyaXZlZCk7 CisgICAgICBzcHJpbnRmIChuYW1lLCAiX3Z0YWJfJXMiLCB0bmFtZSk7CiAK ICAgICAgIC8qIExvb2sgZm9yIHRoZSB2dGFiIHN5bWJvbCBpbiB2YXJpb3Vz IG5hbWVzcGFjZXMuICAqLwogICAgICAgZ2ZjX2ZpbmRfc3ltYm9sIChuYW1l LCBnZmNfY3VycmVudF9ucywgMCwgJnZ0YWIpOwpAQCAtMzUwLDcgKzM2Nyw3 IEBAIGdmY19maW5kX2Rlcml2ZWRfdnRhYiAoZ2ZjX3N5bWJvbCAqZGVyaXZl ZCkKIAkgIHZ0YWItPmF0dHIudnRhYiA9IDE7CiAJICB2dGFiLT5hdHRyLmFj Y2VzcyA9IEFDQ0VTU19QVUJMSUM7CiAJICBnZmNfc2V0X3N5bV9yZWZlcmVu Y2VkICh2dGFiKTsKLQkgIHNwcmludGYgKG5hbWUsICJ2dHlwZSQlcyIsIGRl cml2ZWQtPm5hbWUpOworCSAgc3ByaW50ZiAobmFtZSwgIl92dHlwZV8lcyIs IHRuYW1lKTsKIAkgIAogCSAgZ2ZjX2ZpbmRfc3ltYm9sIChuYW1lLCBucywg MCwgJnZ0eXBlKTsKIAkgIGlmICh2dHlwZSA9PSBOVUxMKQpAQCAtMzY2LDgg KzM4Myw4IEBAIGdmY19maW5kX2Rlcml2ZWRfdnRhYiAoZ2ZjX3N5bWJvbCAq ZGVyaXZlZCkKIAkgICAgICB2dHlwZS0+YXR0ci52dHlwZSA9IDE7CiAJICAg ICAgZ2ZjX3NldF9zeW1fcmVmZXJlbmNlZCAodnR5cGUpOwogCi0JICAgICAg LyogQWRkIGNvbXBvbmVudCAnJGhhc2gnLiAgKi8KLQkgICAgICBpZiAoZ2Zj X2FkZF9jb21wb25lbnQgKHZ0eXBlLCAiJGhhc2giLCAmYykgPT0gRkFJTFVS RSkKKwkgICAgICAvKiBBZGQgY29tcG9uZW50ICdfaGFzaCcuICAqLworCSAg ICAgIGlmIChnZmNfYWRkX2NvbXBvbmVudCAodnR5cGUsICJfaGFzaCIsICZj KSA9PSBGQUlMVVJFKQogCQlnb3RvIGNsZWFudXA7CiAJICAgICAgYy0+dHMu dHlwZSA9IEJUX0lOVEVHRVI7CiAJICAgICAgYy0+dHMua2luZCA9IDQ7CkBA IC0zNzUsOCArMzkyLDggQEAgZ2ZjX2ZpbmRfZGVyaXZlZF92dGFiIChnZmNf c3ltYm9sICpkZXJpdmVkKQogCSAgICAgIGMtPmluaXRpYWxpemVyID0gZ2Zj X2dldF9pbnRfZXhwciAoZ2ZjX2RlZmF1bHRfaW50ZWdlcl9raW5kLAogCQkJ CQkJIE5VTEwsIGRlcml2ZWQtPmhhc2hfdmFsdWUpOwogCi0JICAgICAgLyog QWRkIGNvbXBvbmVudCAnJHNpemUnLiAgKi8KLQkgICAgICBpZiAoZ2ZjX2Fk ZF9jb21wb25lbnQgKHZ0eXBlLCAiJHNpemUiLCAmYykgPT0gRkFJTFVSRSkK KwkgICAgICAvKiBBZGQgY29tcG9uZW50ICdfc2l6ZScuICAqLworCSAgICAg IGlmIChnZmNfYWRkX2NvbXBvbmVudCAodnR5cGUsICJfc2l6ZSIsICZjKSA9 PSBGQUlMVVJFKQogCQlnb3RvIGNsZWFudXA7CiAJICAgICAgYy0+dHMudHlw ZSA9IEJUX0lOVEVHRVI7CiAJICAgICAgYy0+dHMua2luZCA9IDQ7CkBAIC0z ODgsOCArNDA1LDggQEAgZ2ZjX2ZpbmRfZGVyaXZlZF92dGFiIChnZmNfc3lt Ym9sICpkZXJpdmVkKQogCSAgICAgIGMtPmluaXRpYWxpemVyID0gZ2ZjX2dl dF9pbnRfZXhwciAoZ2ZjX2RlZmF1bHRfaW50ZWdlcl9raW5kLAogCQkJCQkJ IE5VTEwsIDApOwogCi0JICAgICAgLyogQWRkIGNvbXBvbmVudCAkZXh0ZW5k cy4gICovCi0JICAgICAgaWYgKGdmY19hZGRfY29tcG9uZW50ICh2dHlwZSwg IiRleHRlbmRzIiwgJmMpID09IEZBSUxVUkUpCisJICAgICAgLyogQWRkIGNv bXBvbmVudCBfZXh0ZW5kcy4gICovCisJICAgICAgaWYgKGdmY19hZGRfY29t cG9uZW50ICh2dHlwZSwgIl9leHRlbmRzIiwgJmMpID09IEZBSUxVUkUpCiAJ CWdvdG8gY2xlYW51cDsKIAkgICAgICBjLT5hdHRyLnBvaW50ZXIgPSAxOwog CSAgICAgIGMtPmF0dHIuYWNjZXNzID0gQUNDRVNTX1BSSVZBVEU7CkBAIC00 MTksOCArNDM2LDggQEAgZ2ZjX2ZpbmRfZGVyaXZlZF92dGFiIChnZmNfc3lt Ym9sICpkZXJpdmVkKQogCQkgIGdvdG8gaGF2ZV92dHlwZTsKIAkJfQogCi0J ICAgICAgLyogQWRkIGNvbXBvbmVudCAkZGVmX2luaXQuICAqLwotCSAgICAg IGlmIChnZmNfYWRkX2NvbXBvbmVudCAodnR5cGUsICIkZGVmX2luaXQiLCAm YykgPT0gRkFJTFVSRSkKKwkgICAgICAvKiBBZGQgY29tcG9uZW50IF9kZWZf aW5pdC4gICovCisJICAgICAgaWYgKGdmY19hZGRfY29tcG9uZW50ICh2dHlw ZSwgIl9kZWZfaW5pdCIsICZjKSA9PSBGQUlMVVJFKQogCQlnb3RvIGNsZWFu dXA7CiAJICAgICAgYy0+YXR0ci5wb2ludGVyID0gMTsKIAkgICAgICBjLT5h dHRyLmFjY2VzcyA9IEFDQ0VTU19QUklWQVRFOwpAQCAtNDMxLDcgKzQ0OCw3 IEBAIGdmY19maW5kX2Rlcml2ZWRfdnRhYiAoZ2ZjX3N5bWJvbCAqZGVyaXZl ZCkKIAkgICAgICBlbHNlCiAJCXsKIAkJICAvKiBDb25zdHJ1Y3QgZGVmYXVs dCBpbml0aWFsaXphdGlvbiB2YXJpYWJsZS4gICovCi0JCSAgc3ByaW50ZiAo bmFtZSwgImRlZl9pbml0JCVzIiwgZGVyaXZlZC0+bmFtZSk7CisJCSAgc3By aW50ZiAobmFtZSwgIl9kZWZfaW5pdF8lcyIsIHRuYW1lKTsKIAkJICBnZmNf Z2V0X3N5bWJvbCAobmFtZSwgbnMsICZkZWZfaW5pdCk7CiAJCSAgZGVmX2lu aXQtPmF0dHIudGFyZ2V0ID0gMTsKIAkJICBkZWZfaW5pdC0+YXR0ci5zYXZl ID0gU0FWRV9FWFBMSUNJVDsKQEAgLTQ0NSw4ICs0NjIsOCBAQCBnZmNfZmlu ZF9kZXJpdmVkX3Z0YWIgKGdmY19zeW1ib2wgKmRlcml2ZWQpCiAJCSAgYy0+ aW5pdGlhbGl6ZXIgPSBnZmNfbHZhbF9leHByX2Zyb21fc3ltIChkZWZfaW5p dCk7CiAJCX0KIAotCSAgICAgIC8qIEFkZCBjb21wb25lbnQgJGNvcHkuICAq LwotCSAgICAgIGlmIChnZmNfYWRkX2NvbXBvbmVudCAodnR5cGUsICIkY29w eSIsICZjKSA9PSBGQUlMVVJFKQorCSAgICAgIC8qIEFkZCBjb21wb25lbnQg X2NvcHkuICAqLworCSAgICAgIGlmIChnZmNfYWRkX2NvbXBvbmVudCAodnR5 cGUsICJfY29weSIsICZjKSA9PSBGQUlMVVJFKQogCQlnb3RvIGNsZWFudXA7 CiAJICAgICAgYy0+YXR0ci5wcm9jX3BvaW50ZXIgPSAxOwogCSAgICAgIGMt PmF0dHIuYWNjZXNzID0gQUNDRVNTX1BSSVZBVEU7CkBAIC00NjIsNyArNDc5 LDcgQEAgZ2ZjX2ZpbmRfZGVyaXZlZF92dGFiIChnZmNfc3ltYm9sICpkZXJp dmVkKQogCQkgIG5zLT5jb250YWluZWQgPSBzdWJfbnM7CiAJCSAgc3ViX25z LT5yZXNvbHZlZCA9IDE7CiAJCSAgLyogU2V0IHVwIHByb2NlZHVyZSBzeW1i b2wuICAqLwotCQkgIHNwcmludGYgKG5hbWUsICJjb3B5JCVzIiwgZGVyaXZl ZC0+bmFtZSk7CisJCSAgc3ByaW50ZiAobmFtZSwgIl9jb3B5XyVzIiwgdG5h bWUpOwogCQkgIGdmY19nZXRfc3ltYm9sIChuYW1lLCBzdWJfbnMsICZjb3B5 KTsKIAkJICBzdWJfbnMtPnByb2NfbmFtZSA9IGNvcHk7CiAJCSAgY29weS0+ YXR0ci5mbGF2b3IgPSBGTF9QUk9DRURVUkU7CkluZGV4OiBnY2MvZm9ydHJh bi9kZWNsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRy YW4vZGVjbC5jCShyZXZpc2lvbiAxNjY0MDgpCisrKyBnY2MvZm9ydHJhbi9k ZWNsLmMJKHdvcmtpbmcgY29weSkKQEAgLTYwMTQsMTAgKzYwMTQsMTAgQEAg YXR0cl9kZWNsMSAodm9pZCkKIAogICAvKiBVcGRhdGUgc3ltYm9sIHRhYmxl LiAgRElNRU5TSU9OIGF0dHJpYnV0ZSBpcyBzZXQgaW4KICAgICAgZ2ZjX3Nl dF9hcnJheV9zcGVjKCkuICBGb3IgQ0xBU1MgdmFyaWFibGVzLCB0aGlzIG11 c3QgYmUgYXBwbGllZAotICAgICB0byB0aGUgZmlyc3QgY29tcG9uZW50LCBv ciAnJGRhdGEnIGZpZWxkLiAgKi8KKyAgICAgdG8gdGhlIGZpcnN0IGNvbXBv bmVudCwgb3IgJ19kYXRhJyBmaWVsZC4gICovCiAgIGlmIChzeW0tPnRzLnR5 cGUgPT0gQlRfQ0xBU1MgJiYgc3ltLT50cy51LmRlcml2ZWQtPmF0dHIuaXNf Y2xhc3MpCiAgICAgewotICAgICAgaWYgKGdmY19jb3B5X2F0dHIgKCZDTEFT U19EQVRBIChzeW0pLT5hdHRyLCAmY3VycmVudF9hdHRyLCZ2YXJfbG9jdXMp CisgICAgICBpZiAoZ2ZjX2NvcHlfYXR0ciAoJkNMQVNTX0RBVEEgKHN5bSkt PmF0dHIsICZjdXJyZW50X2F0dHIsICZ2YXJfbG9jdXMpCiAJICA9PSBGQUlM VVJFKQogCXsKIAkgIG0gPSBNQVRDSF9FUlJPUjsKSW5kZXg6IGdjYy9mb3J0 cmFuL2dmb3J0cmFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L2ZvcnRyYW4vZ2ZvcnRyYW4uaAkocmV2aXNpb24gMTY2NDA4KQorKysgZ2Nj L2ZvcnRyYW4vZ2ZvcnRyYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjg3Nyw2 ICsyODc3LDExIEBAIGdmY190cnkgZ2ZjX2NoZWNrX3NhbWVfc3RybGVuIChj b25zdCBnZmNfZXhwciosIGNvCiAKIC8qIGNsYXNzLmMgKi8KIHZvaWQgZ2Zj X2FkZF9jb21wb25lbnRfcmVmIChnZmNfZXhwciAqLCBjb25zdCBjaGFyICop OworI2RlZmluZSBnZmNfYWRkX2RhdGFfY29tcG9uZW50KGUpICAgICBnZmNf YWRkX2NvbXBvbmVudF9yZWYoZSwiX2RhdGEiKQorI2RlZmluZSBnZmNfYWRk X3ZwdHJfY29tcG9uZW50KGUpICAgICBnZmNfYWRkX2NvbXBvbmVudF9yZWYo ZSwiX3ZwdHIiKQorI2RlZmluZSBnZmNfYWRkX2hhc2hfY29tcG9uZW50KGUp ICAgICBnZmNfYWRkX2NvbXBvbmVudF9yZWYoZSwiX2hhc2giKQorI2RlZmlu ZSBnZmNfYWRkX3NpemVfY29tcG9uZW50KGUpICAgICBnZmNfYWRkX2NvbXBv bmVudF9yZWYoZSwiX3NpemUiKQorI2RlZmluZSBnZmNfYWRkX2RlZl9pbml0 X2NvbXBvbmVudChlKSBnZmNfYWRkX2NvbXBvbmVudF9yZWYoZSwiX2RlZl9p bml0IikKIGdmY19leHByICpnZmNfY2xhc3NfbnVsbF9pbml0aWFsaXplciAo Z2ZjX3R5cGVzcGVjICopOwogZ2ZjX3RyeSBnZmNfYnVpbGRfY2xhc3Nfc3lt Ym9sIChnZmNfdHlwZXNwZWMgKiwgc3ltYm9sX2F0dHJpYnV0ZSAqLAogCQkJ CWdmY19hcnJheV9zcGVjICoqLCBib29sKTsKSW5kZXg6IGdjYy9mb3J0cmFu L3RyYW5zLXN0bXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Zm9ydHJhbi90cmFucy1zdG10LmMJKHJldmlzaW9uIDE2NjQwOCkKKysrIGdj Yy9mb3J0cmFuL3RyYW5zLXN0bXQuYwkod29ya2luZyBjb3B5KQpAQCAtNDM4 OCw3ICs0Mzg4LDcgQEAgZ2ZjX3RyYW5zX2FsbG9jYXRlIChnZmNfY29kZSAq IGNvZGUpCiAgICAgICBleHByID0gZ2ZjX2NvcHlfZXhwciAoYWwtPmV4cHIp OwogCiAgICAgICBpZiAoZXhwci0+dHMudHlwZSA9PSBCVF9DTEFTUykKLQln ZmNfYWRkX2NvbXBvbmVudF9yZWYgKGV4cHIsICIkZGF0YSIpOworCWdmY19h ZGRfZGF0YV9jb21wb25lbnQgKGV4cHIpOwogCiAgICAgICBnZmNfaW5pdF9z ZSAoJnNlLCBOVUxMKTsKICAgICAgIGdmY19zdGFydF9ibG9jayAoJnNlLnBy ZSk7CkBAIC00NDA5LDggKzQ0MDksOCBAQCBnZmNfdHJhbnNfYWxsb2NhdGUg KGdmY19jb2RlICogY29kZSkKIAkJICBnZmNfZXhwciAqc3o7CiAJCSAgZ2Zj X3NlIHNlX3N6OwogCQkgIHN6ID0gZ2ZjX2NvcHlfZXhwciAoY29kZS0+ZXhw cjMpOwotCQkgIGdmY19hZGRfY29tcG9uZW50X3JlZiAoc3osICIkdnB0ciIp OwotCQkgIGdmY19hZGRfY29tcG9uZW50X3JlZiAoc3osICIkc2l6ZSIpOwor CQkgIGdmY19hZGRfdnB0cl9jb21wb25lbnQgKHN6KTsKKwkJICBnZmNfYWRk X3NpemVfY29tcG9uZW50IChzeik7CiAJCSAgZ2ZjX2luaXRfc2UgKCZzZV9z eiwgTlVMTCk7CiAJCSAgZ2ZjX2NvbnZfZXhwciAoJnNlX3N6LCBzeik7CiAJ CSAgZ2ZjX2ZyZWVfZXhwciAoc3opOwpAQCAtNDQ5NywxOCArNDQ5NywxOCBA QCBnZmNfdHJhbnNfYWxsb2NhdGUgKGdmY19jb2RlICogY29kZSkKIAkgICAg ICBhY3R1YWwgPSBnZmNfZ2V0X2FjdHVhbF9hcmdsaXN0ICgpOwogCSAgICAg IGFjdHVhbC0+ZXhwciA9IGdmY19jb3B5X2V4cHIgKHJocyk7CiAJICAgICAg aWYgKHJocy0+dHMudHlwZSA9PSBCVF9DTEFTUykKLQkJZ2ZjX2FkZF9jb21w b25lbnRfcmVmIChhY3R1YWwtPmV4cHIsICIkZGF0YSIpOworCQlnZmNfYWRk X2RhdGFfY29tcG9uZW50IChhY3R1YWwtPmV4cHIpOwogCSAgICAgIGFjdHVh bC0+bmV4dCA9IGdmY19nZXRfYWN0dWFsX2FyZ2xpc3QgKCk7CiAJICAgICAg YWN0dWFsLT5uZXh0LT5leHByID0gZ2ZjX2NvcHlfZXhwciAoYWwtPmV4cHIp OwotCSAgICAgIGdmY19hZGRfY29tcG9uZW50X3JlZiAoYWN0dWFsLT5uZXh0 LT5leHByLCAiJGRhdGEiKTsKKwkgICAgICBnZmNfYWRkX2RhdGFfY29tcG9u ZW50IChhY3R1YWwtPm5leHQtPmV4cHIpOwogCSAgICAgIGlmIChyaHMtPnRz LnR5cGUgPT0gQlRfQ0xBU1MpCiAJCXsKIAkJICBwcGMgPSBnZmNfY29weV9l eHByIChyaHMpOwotCQkgIGdmY19hZGRfY29tcG9uZW50X3JlZiAocHBjLCAi JHZwdHIiKTsKKwkJICBnZmNfYWRkX3ZwdHJfY29tcG9uZW50IChwcGMpOwog CQl9CiAJICAgICAgZWxzZQogCQlwcGMgPSBnZmNfbHZhbF9leHByX2Zyb21f c3ltIChnZmNfZmluZF9kZXJpdmVkX3Z0YWIgKHJocy0+dHMudS5kZXJpdmVk KSk7Ci0JICAgICAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChwcGMsICIkY29w eSIpOworCSAgICAgIGdmY19hZGRfY29tcG9uZW50X3JlZiAocHBjLCAiX2Nv cHkiKTsKIAkgICAgICBnZmNfY29udl9wcm9jZWR1cmVfY2FsbCAoJmNhbGws IHBwYy0+c3ltdHJlZS0+bi5zeW0sIGFjdHVhbCwKIAkJCQkJcHBjLCBOVUxM KTsKIAkgICAgICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZjYWxsLnByZSwg Y2FsbC5leHByKTsKQEAgLTQ1MjcsOCArNDUyNyw4IEBAIGdmY190cmFuc19h bGxvY2F0ZSAoZ2ZjX2NvZGUgKiBjb2RlKQogCSAgLyogRGVmYXVsdC1pbml0 aWFsaXphdGlvbiB2aWEgTU9MRCAocG9seW1vcnBoaWMpLiAgKi8KIAkgIGdm Y19leHByICpyaHMgPSBnZmNfY29weV9leHByIChjb2RlLT5leHByMyk7CiAJ ICBnZmNfc2UgZHN0LHNyYzsKLQkgIGdmY19hZGRfY29tcG9uZW50X3JlZiAo cmhzLCAiJHZwdHIiKTsKLQkgIGdmY19hZGRfY29tcG9uZW50X3JlZiAocmhz LCAiJGRlZl9pbml0Iik7CisJICBnZmNfYWRkX3ZwdHJfY29tcG9uZW50IChy aHMpOworCSAgZ2ZjX2FkZF9kZWZfaW5pdF9jb21wb25lbnQgKHJocyk7CiAJ ICBnZmNfaW5pdF9zZSAoJmRzdCwgTlVMTCk7CiAJICBnZmNfaW5pdF9zZSAo JnNyYywgTlVMTCk7CiAJICBnZmNfY29udl9leHByICgmZHN0LCBleHByKTsK QEAgLTQ1NDksMTMgKzQ1NDksMTMgQEAgZ2ZjX3RyYW5zX2FsbG9jYXRlIChn ZmNfY29kZSAqIGNvZGUpCiAKIAkgIC8qIEluaXRpYWxpemUgVlBUUiBmb3Ig Q0xBU1Mgb2JqZWN0cy4gICovCiAJICBsaHMgPSBnZmNfZXhwcl90b19pbml0 aWFsaXplIChleHByKTsKLQkgIGdmY19hZGRfY29tcG9uZW50X3JlZiAobGhz LCAiJHZwdHIiKTsKKwkgIGdmY19hZGRfdnB0cl9jb21wb25lbnQgKGxocyk7 CiAJICByaHMgPSBOVUxMOwogCSAgaWYgKGNvZGUtPmV4cHIzICYmIGNvZGUt PmV4cHIzLT50cy50eXBlID09IEJUX0NMQVNTKQogCSAgICB7CiAJICAgICAg LyogUG9seW1vcnBoaWMgU09VUkNFOiBWUFRSIG11c3QgYmUgZGV0ZXJtaW5l ZCBhdCBydW4gdGltZS4gICovCiAJICAgICAgcmhzID0gZ2ZjX2NvcHlfZXhw ciAoY29kZS0+ZXhwcjMpOwotCSAgICAgIGdmY19hZGRfY29tcG9uZW50X3Jl ZiAocmhzLCAiJHZwdHIiKTsKKwkgICAgICBnZmNfYWRkX3ZwdHJfY29tcG9u ZW50IChyaHMpOwogCSAgICAgIHRtcCA9IGdmY190cmFuc19wb2ludGVyX2Fz c2lnbm1lbnQgKGxocywgcmhzKTsKIAkgICAgICBnZmNfYWRkX2V4cHJfdG9f YmxvY2sgKCZibG9jaywgdG1wKTsKIAkgICAgICBnZmNfZnJlZV9leHByIChy aHMpOwpJbmRleDogZ2NjL2ZvcnRyYW4vbW9kdWxlLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vbW9kdWxlLmMJKHJldmlzaW9u IDE2NjQwOCkKKysrIGdjYy9mb3J0cmFuL21vZHVsZS5jCSh3b3JraW5nIGNv cHkpCkBAIC00MzcyLDggKzQzNzIsOCBAQCByZWFkX21vZHVsZSAodm9pZCkK IAkgICAgcCA9IG5hbWU7CiAKIAkgIC8qIEV4Y2VwdGlvbjogQWx3YXlzIGlt cG9ydCB2dGFicyAmIHZ0eXBlcy4gICovCi0JICBpZiAocCA9PSBOVUxMICYm IChzdHJuY21wIChuYW1lLCAidnRhYiQiLCA1KSA9PSAwCi0JCQkgICAgfHwg c3RybmNtcCAobmFtZSwgInZ0eXBlJCIsIDYpID09IDApKQorCSAgaWYgKHAg PT0gTlVMTCAmJiAoc3RybmNtcCAobmFtZSwgIl92dGFiXyIsIDUpID09IDAK KwkJCSAgICB8fCBzdHJuY21wIChuYW1lLCAiX3Z0eXBlXyIsIDYpID09IDAp KQogCSAgICBwID0gbmFtZTsKIAogCSAgLyogU2tpcCBzeW10cmVlIG5vZGVz IG5vdCBpbiBhbiBPTkxZIGNsYXVzZSwgdW5sZXNzIHRoZXJlCkluZGV4OiBn Y2MvZm9ydHJhbi9yZXNvbHZlLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCShyZXZpc2lvbiAxNjY0MDgpCisr KyBnY2MvZm9ydHJhbi9yZXNvbHZlLmMJKHdvcmtpbmcgY29weSkKQEAgLTk4 OCw5ICs5ODgsOSBAQCByZXNvbHZlX3N0cnVjdHVyZV9jb25zIChnZmNfZXhw ciAqZXhwciwgaW50IGluaXQpCiAJICAhZ2ZjX2NvbXBhcmVfdHlwZXMgKCZj b25zLT5leHByLT50cywgJmNvbXAtPnRzKSkKIAl7CiAJICB0ID0gRkFJTFVS RTsKLQkgIGlmIChzdHJjbXAgKGNvbXAtPm5hbWUsICIkZXh0ZW5kcyIpID09 IDApCisJICBpZiAoc3RyY21wIChjb21wLT5uYW1lLCAiX2V4dGVuZHMiKSA9 PSAwKQogCSAgICB7Ci0JICAgICAgLyogQ2FuIGFmZm9yZCB0byBiZSBicnV0 YWwgd2l0aCB0aGUgJGV4dGVuZHMgaW5pdGlhbGl6ZXIuCisJICAgICAgLyog Q2FuIGFmZm9yZCB0byBiZSBicnV0YWwgd2l0aCB0aGUgX2V4dGVuZHMgaW5p dGlhbGl6ZXIuCiAJCSBUaGUgZGVyaXZlZCB0eXBlIGNhbiBnZXQgbG9zdCBi ZWNhdXNlIGl0IGlzIFBSSVZBVEUKIAkJIGJ1dCBpdCBpcyBub3QgdXNhZ2Ug Y29uc3RyYWluZWQgYnkgdGhlIHN0YW5kYXJkLiAgKi8KIAkgICAgICBjb25z LT5leHByLT50cyA9IGNvbXAtPnRzOwpAQCAtNTcyNiw3ICs1NzI2LDcgQEAg cmVzb2x2ZV90eXBlYm91bmRfZnVuY3Rpb24gKGdmY19leHByKiBlKQogCSBp cyBwcmVzZW50LiAgKi8KICAgICAgIHRzID0gZXhwci0+dHM7CiAgICAgICBk ZWNsYXJlZCA9IHRzLnUuZGVyaXZlZDsKLSAgICAgIGMgPSBnZmNfZmluZF9j b21wb25lbnQgKGRlY2xhcmVkLCAiJHZwdHIiLCB0cnVlLCB0cnVlKTsKKyAg ICAgIGMgPSBnZmNfZmluZF9jb21wb25lbnQgKGRlY2xhcmVkLCAiX3ZwdHIi LCB0cnVlLCB0cnVlKTsKICAgICAgIGlmIChjLT50cy51LmRlcml2ZWQgPT0g TlVMTCkKIAljLT50cy51LmRlcml2ZWQgPSBnZmNfZmluZF9kZXJpdmVkX3Z0 YWIgKGRlY2xhcmVkKTsKIApAQCAtNTczNyw3ICs1NzM3LDcgQEAgcmVzb2x2 ZV90eXBlYm91bmRfZnVuY3Rpb24gKGdmY19leHByKiBlKQogICAgICAgbmFt ZSA9IG5hbWUgPyBuYW1lIDogZS0+dmFsdWUuZnVuY3Rpb24uZXN5bS0+bmFt ZTsKICAgICAgIGUtPnN5bXRyZWUgPSBleHByLT5zeW10cmVlOwogICAgICAg ZS0+cmVmID0gZ2ZjX2NvcHlfcmVmIChleHByLT5yZWYpOwotICAgICAgZ2Zj X2FkZF9jb21wb25lbnRfcmVmIChlLCAiJHZwdHIiKTsKKyAgICAgIGdmY19h ZGRfdnB0cl9jb21wb25lbnQgKGUpOwogICAgICAgZ2ZjX2FkZF9jb21wb25l bnRfcmVmIChlLCBuYW1lKTsKICAgICAgIGUtPnZhbHVlLmZ1bmN0aW9uLmVz eW0gPSBOVUxMOwogICAgICAgcmV0dXJuIFNVQ0NFU1M7CkBAIC01NzYwLDcg KzU3NjAsNyBAQCByZXNvbHZlX3R5cGVib3VuZF9mdW5jdGlvbiAoZ2ZjX2V4 cHIqIGUpCiAgICAgICByZXR1cm4gcmVzb2x2ZV9jb21wY2FsbCAoZSwgTlVM TCk7CiAgICAgfQogCi0gIGMgPSBnZmNfZmluZF9jb21wb25lbnQgKGRlY2xh cmVkLCAiJGRhdGEiLCB0cnVlLCB0cnVlKTsKKyAgYyA9IGdmY19maW5kX2Nv bXBvbmVudCAoZGVjbGFyZWQsICJfZGF0YSIsIHRydWUsIHRydWUpOwogICBk ZWNsYXJlZCA9IGMtPnRzLnUuZGVyaXZlZDsKIAogICAvKiBUcmVhdCB0aGUg Y2FsbCBhcyBpZiBpdCBpcyBhIHR5cGVib3VuZCBwcm9jZWR1cmUsIGluIG9y ZGVyIHRvIHJvbGwKQEAgLTU3NzYsOCArNTc3Niw4IEBAIHJlc29sdmVfdHlw ZWJvdW5kX2Z1bmN0aW9uIChnZmNfZXhwciogZSkKICAgaWYgKG5ld19yZWYp ICAKICAgICBlLT5yZWYgPSBuZXdfcmVmOwogCi0gIC8qICckdnB0cicgcG9p bnRzIHRvIHRoZSB2dGFiLCB3aGljaCBjb250YWlucyB0aGUgcHJvY2VkdXJl IHBvaW50ZXJzLiAgKi8KLSAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChlLCAi JHZwdHIiKTsKKyAgLyogJ192cHRyJyBwb2ludHMgdG8gdGhlIHZ0YWIsIHdo aWNoIGNvbnRhaW5zIHRoZSBwcm9jZWR1cmUgcG9pbnRlcnMuICAqLworICBn ZmNfYWRkX3ZwdHJfY29tcG9uZW50IChlKTsKICAgZ2ZjX2FkZF9jb21wb25l bnRfcmVmIChlLCBuYW1lKTsKIAogICAvKiBSZWNvdmVyIHRoZSB0eXBlc3Bl YyBmb3IgdGhlIGV4cHJlc3Npb24uICBUaGlzIGlzIHJlYWxseSBvbmx5CkBA IC01ODE2LDcgKzU4MTYsNyBAQCByZXNvbHZlX3R5cGVib3VuZF9zdWJyb3V0 aW5lIChnZmNfY29kZSAqY29kZSkKIAkgaXMgcHJlc2VudC4gICovCiAgICAg ICB0cyA9IGV4cHItPnN5bXRyZWUtPm4uc3ltLT50czsKICAgICAgIGRlY2xh cmVkID0gdHMudS5kZXJpdmVkOwotICAgICAgYyA9IGdmY19maW5kX2NvbXBv bmVudCAoZGVjbGFyZWQsICIkdnB0ciIsIHRydWUsIHRydWUpOworICAgICAg YyA9IGdmY19maW5kX2NvbXBvbmVudCAoZGVjbGFyZWQsICJfdnB0ciIsIHRy dWUsIHRydWUpOwogICAgICAgaWYgKGMtPnRzLnUuZGVyaXZlZCA9PSBOVUxM KQogCWMtPnRzLnUuZGVyaXZlZCA9IGdmY19maW5kX2Rlcml2ZWRfdnRhYiAo ZGVjbGFyZWQpOwogCkBAIC01ODI3LDcgKzU4MjcsNyBAQCByZXNvbHZlX3R5 cGVib3VuZF9zdWJyb3V0aW5lIChnZmNfY29kZSAqY29kZSkKICAgICAgIG5h bWUgPSBuYW1lID8gbmFtZSA6IGNvZGUtPmV4cHIxLT52YWx1ZS5mdW5jdGlv bi5lc3ltLT5uYW1lOwogICAgICAgY29kZS0+ZXhwcjEtPnN5bXRyZWUgPSBl eHByLT5zeW10cmVlOwogICAgICAgZXhwci0+c3ltdHJlZS0+bi5zeW0tPnRz LnUuZGVyaXZlZCA9IGRlY2xhcmVkOwotICAgICAgZ2ZjX2FkZF9jb21wb25l bnRfcmVmIChjb2RlLT5leHByMSwgIiR2cHRyIik7CisgICAgICBnZmNfYWRk X3ZwdHJfY29tcG9uZW50IChjb2RlLT5leHByMSk7CiAgICAgICBnZmNfYWRk X2NvbXBvbmVudF9yZWYgKGNvZGUtPmV4cHIxLCBuYW1lKTsKICAgICAgIGNv ZGUtPmV4cHIxLT52YWx1ZS5mdW5jdGlvbi5lc3ltID0gTlVMTDsKICAgICAg IHJldHVybiBTVUNDRVNTOwpAQCAtNTg2MSw4ICs1ODYxLDggQEAgcmVzb2x2 ZV90eXBlYm91bmRfc3Vicm91dGluZSAoZ2ZjX2NvZGUgKmNvZGUpCiAgIGlm IChuZXdfcmVmKQogICAgIGNvZGUtPmV4cHIxLT5yZWYgPSBuZXdfcmVmOwog Ci0gIC8qICckdnB0cicgcG9pbnRzIHRvIHRoZSB2dGFiLCB3aGljaCBjb250 YWlucyB0aGUgcHJvY2VkdXJlIHBvaW50ZXJzLiAgKi8KLSAgZ2ZjX2FkZF9j b21wb25lbnRfcmVmIChjb2RlLT5leHByMSwgIiR2cHRyIik7CisgIC8qICdf dnB0cicgcG9pbnRzIHRvIHRoZSB2dGFiLCB3aGljaCBjb250YWlucyB0aGUg cHJvY2VkdXJlIHBvaW50ZXJzLiAgKi8KKyAgZ2ZjX2FkZF92cHRyX2NvbXBv bmVudCAoY29kZS0+ZXhwcjEpOwogICBnZmNfYWRkX2NvbXBvbmVudF9yZWYg KGNvZGUtPmV4cHIxLCBuYW1lKTsKIAogICAvKiBSZWNvdmVyIHRoZSB0eXBl c3BlYyBmb3IgdGhlIGV4cHJlc3Npb24uICBUaGlzIGlzIHJlYWxseSBvbmx5 CkBAIC02NDA0LDcgKzY0MDQsNyBAQCByZXNvbHZlX2RlYWxsb2NhdGVfZXhw ciAoZ2ZjX2V4cHIgKmUpCiAgIGlmIChlLT50cy50eXBlID09IEJUX0NMQVNT KQogICAgIHsKICAgICAgIC8qIE9ubHkgZGVhbGxvY2F0ZSB0aGUgREFUQSBj b21wb25lbnQuICAqLwotICAgICAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChl LCAiJGRhdGEiKTsKKyAgICAgIGdmY19hZGRfZGF0YV9jb21wb25lbnQgKGUp OwogICAgIH0KIAogICByZXR1cm4gU1VDQ0VTUzsKQEAgLTc3MzUsOCArNzcz NSw4IEBAIHJlc29sdmVfc2VsZWN0X3R5cGUgKGdmY19jb2RlICpjb2RlLCBn ZmNfbmFtZXNwYWNlCiAgICAgbnMtPmNvZGUtPm5leHQgPSBuZXdfc3Q7CiAg IGNvZGUgPSBuZXdfc3Q7CiAgIGNvZGUtPm9wID0gRVhFQ19TRUxFQ1Q7Ci0g IGdmY19hZGRfY29tcG9uZW50X3JlZiAoY29kZS0+ZXhwcjEsICIkdnB0ciIp OwotICBnZmNfYWRkX2NvbXBvbmVudF9yZWYgKGNvZGUtPmV4cHIxLCAiJGhh c2giKTsKKyAgZ2ZjX2FkZF92cHRyX2NvbXBvbmVudCAoY29kZS0+ZXhwcjEp OworICBnZmNfYWRkX2hhc2hfY29tcG9uZW50IChjb2RlLT5leHByMSk7CiAK ICAgLyogTG9vcCBvdmVyIFRZUEUgSVMgLyBDTEFTUyBJUyBjYXNlcy4gICov CiAgIGZvciAoYm9keSA9IGNvZGUtPmJsb2NrOyBib2R5OyBib2R5ID0gYm9k eS0+YmxvY2spCkBAIC03NzU2LDE0ICs3NzU2LDE0IEBAIHJlc29sdmVfc2Vs ZWN0X3R5cGUgKGdmY19jb2RlICpjb2RlLCBnZmNfbmFtZXNwYWNlCiAJICdn bG9iYWwnIG9uZSkuICAqLwogCiAgICAgICBpZiAoYy0+dHMudHlwZSA9PSBC VF9DTEFTUykKLQlzcHJpbnRmIChuYW1lLCAidG1wJGNsYXNzJCVzIiwgYy0+ dHMudS5kZXJpdmVkLT5uYW1lKTsKKwlzcHJpbnRmIChuYW1lLCAiX3RtcF9j bGFzc18lcyIsIGMtPnRzLnUuZGVyaXZlZC0+bmFtZSk7CiAgICAgICBlbHNl Ci0Jc3ByaW50ZiAobmFtZSwgInRtcCR0eXBlJCVzIiwgYy0+dHMudS5kZXJp dmVkLT5uYW1lKTsKKwlzcHJpbnRmIChuYW1lLCAiX3RtcF90eXBlXyVzIiwg Yy0+dHMudS5kZXJpdmVkLT5uYW1lKTsKICAgICAgIHN0ID0gZ2ZjX2ZpbmRf c3ltdHJlZSAobnMtPnN5bV9yb290LCBuYW1lKTsKICAgICAgIGdjY19hc3Nl cnQgKHN0LT5uLnN5bS0+YXNzb2MpOwogICAgICAgc3QtPm4uc3ltLT5hc3Nv Yy0+dGFyZ2V0ID0gZ2ZjX2dldF92YXJpYWJsZV9leHByIChjb2RlLT5leHBy MS0+c3ltdHJlZSk7CiAgICAgICBpZiAoYy0+dHMudHlwZSA9PSBCVF9ERVJJ VkVEKQotCWdmY19hZGRfY29tcG9uZW50X3JlZiAoc3QtPm4uc3ltLT5hc3Nv Yy0+dGFyZ2V0LCAiJGRhdGEiKTsKKwlnZmNfYWRkX2RhdGFfY29tcG9uZW50 IChzdC0+bi5zeW0tPmFzc29jLT50YXJnZXQpOwogCiAgICAgICBuZXdfc3Qg PSBnZmNfZ2V0X2NvZGUgKCk7CiAgICAgICBuZXdfc3QtPm9wID0gRVhFQ19C TE9DSzsKQEAgLTc4ODAsNyArNzg4MCw3IEBAIHJlc29sdmVfc2VsZWN0X3R5 cGUgKGdmY19jb2RlICpjb2RlLCBnZmNfbmFtZXNwYWNlCiAJICAvKiBTZXQg dXAgYXJndW1lbnRzLiAgKi8KIAkgIG5ld19zdC0+ZXhwcjEtPnZhbHVlLmZ1 bmN0aW9uLmFjdHVhbCA9IGdmY19nZXRfYWN0dWFsX2FyZ2xpc3QgKCk7CiAJ ICBuZXdfc3QtPmV4cHIxLT52YWx1ZS5mdW5jdGlvbi5hY3R1YWwtPmV4cHIg PSBnZmNfZ2V0X3ZhcmlhYmxlX2V4cHIgKGNvZGUtPmV4cHIxLT5zeW10cmVl KTsKLQkgIGdmY19hZGRfY29tcG9uZW50X3JlZiAobmV3X3N0LT5leHByMS0+ dmFsdWUuZnVuY3Rpb24uYWN0dWFsLT5leHByLCAiJHZwdHIiKTsKKwkgIGdm Y19hZGRfdnB0cl9jb21wb25lbnQgKG5ld19zdC0+ZXhwcjEtPnZhbHVlLmZ1 bmN0aW9uLmFjdHVhbC0+ZXhwcik7CiAJICB2dGFiID0gZ2ZjX2ZpbmRfZGVy aXZlZF92dGFiIChib2R5LT5leHQuY2FzZV9saXN0LT50cy51LmRlcml2ZWQp OwogCSAgc3QgPSBnZmNfZmluZF9zeW10cmVlICh2dGFiLT5ucy0+c3ltX3Jv b3QsIHZ0YWItPm5hbWUpOwogCSAgbmV3X3N0LT5leHByMS0+dmFsdWUuZnVu Y3Rpb24uYWN0dWFsLT5uZXh0ID0gZ2ZjX2dldF9hY3R1YWxfYXJnbGlzdCAo KTsKQEAgLTExMTkzLDggKzExMTkzLDggQEAgcmVzb2x2ZV9mbF9kZXJpdmVk IChnZmNfc3ltYm9sICpzeW0pCiAgIGlmIChzeW0tPmF0dHIuaXNfY2xhc3Mg JiYgc3ltLT50cy51LmRlcml2ZWQgPT0gTlVMTCkKICAgICB7CiAgICAgICAv KiBGaXggdXAgaW5jb21wbGV0ZSBDTEFTUyBzeW1ib2xzLiAgKi8KLSAgICAg IGdmY19jb21wb25lbnQgKmRhdGEgPSBnZmNfZmluZF9jb21wb25lbnQgKHN5 bSwgIiRkYXRhIiwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgICBnZmNfY29tcG9uZW50 ICp2cHRyID0gZ2ZjX2ZpbmRfY29tcG9uZW50IChzeW0sICIkdnB0ciIsIHRy dWUsIHRydWUpOworICAgICAgZ2ZjX2NvbXBvbmVudCAqZGF0YSA9IGdmY19m aW5kX2NvbXBvbmVudCAoc3ltLCAiX2RhdGEiLCB0cnVlLCB0cnVlKTsKKyAg ICAgIGdmY19jb21wb25lbnQgKnZwdHIgPSBnZmNfZmluZF9jb21wb25lbnQg KHN5bSwgIl92cHRyIiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICBpZiAodnB0ci0+ dHMudS5kZXJpdmVkID09IE5VTEwpCiAJewogCSAgZ2ZjX3N5bWJvbCAqdnRh YiA9IGdmY19maW5kX2Rlcml2ZWRfdnRhYiAoZGF0YS0+dHMudS5kZXJpdmVk KTsKSW5kZXg6IGdjYy9mb3J0cmFuL2lyZXNvbHZlLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vaXJlc29sdmUuYwkocmV2aXNp b24gMTY2NDA4KQorKysgZ2NjL2ZvcnRyYW4vaXJlc29sdmUuYwkod29ya2lu ZyBjb3B5KQpAQCAtOTM4LDcgKzkzOCw3IEBAIGdmY19yZXNvbHZlX2V4dGVu ZHNfdHlwZV9vZiAoZ2ZjX2V4cHIgKmYsIGdmY19leHByCiAKICAgLyogUmVw bGFjZSB0aGUgZmlyc3QgYXJndW1lbnQgd2l0aCB0aGUgY29ycmVzcG9uZGlu ZyB2dGFiLiAgKi8KICAgaWYgKGEtPnRzLnR5cGUgPT0gQlRfQ0xBU1MpCi0g ICAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChhLCAiJHZwdHIiKTsKKyAgICBn ZmNfYWRkX3ZwdHJfY29tcG9uZW50IChhKTsKICAgZWxzZSBpZiAoYS0+dHMu dHlwZSA9PSBCVF9ERVJJVkVEKQogICAgIHsKICAgICAgIHZ0YWIgPSBnZmNf ZmluZF9kZXJpdmVkX3Z0YWIgKGEtPnRzLnUuZGVyaXZlZCk7CkBAIC05NTQs NyArOTU0LDcgQEAgZ2ZjX3Jlc29sdmVfZXh0ZW5kc190eXBlX29mIChnZmNf ZXhwciAqZiwgZ2ZjX2V4cHIKIAogICAvKiBSZXBsYWNlIHRoZSBzZWNvbmQg YXJndW1lbnQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB2dGFiLiAgKi8KICAg aWYgKG1vLT50cy50eXBlID09IEJUX0NMQVNTKQotICAgIGdmY19hZGRfY29t cG9uZW50X3JlZiAobW8sICIkdnB0ciIpOworICAgIGdmY19hZGRfdnB0cl9j b21wb25lbnQgKG1vKTsKICAgZWxzZSBpZiAobW8tPnRzLnR5cGUgPT0gQlRf REVSSVZFRCkKICAgICB7CiAgICAgICB2dGFiID0gZ2ZjX2ZpbmRfZGVyaXZl ZF92dGFiIChtby0+dHMudS5kZXJpdmVkKTsKSW5kZXg6IGdjYy9mb3J0cmFu L3RyYW5zLWRlY2wuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Zm9ydHJhbi90cmFucy1kZWNsLmMJKHJldmlzaW9uIDE2NjQwOCkKKysrIGdj Yy9mb3J0cmFuL3RyYW5zLWRlY2wuYwkod29ya2luZyBjb3B5KQpAQCAtMzM5 Myw3ICszMzkzLDcgQEAgZ2ZjX3RyYW5zX2RlZmVycmVkX3ZhcnMgKGdmY19z eW1ib2wgKiBwcm9jX3N5bSwgZ2YKIAogCSAgICAgIGUgPSBnZmNfbHZhbF9l eHByX2Zyb21fc3ltIChzeW0pOwogCSAgICAgIGlmIChzeW0tPnRzLnR5cGUg PT0gQlRfQ0xBU1MpCi0JCWdmY19hZGRfY29tcG9uZW50X3JlZiAoZSwgIiRk YXRhIik7CisJCWdmY19hZGRfZGF0YV9jb21wb25lbnQgKGUpOwogCiAJICAg ICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CiAJICAgICAgc2Uud2FudF9w b2ludGVyID0gMTsKSW5kZXg6IGdjYy9mb3J0cmFuL21hdGNoLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vbWF0Y2guYwkocmV2 aXNpb24gMTY2NDA4KQorKysgZ2NjL2ZvcnRyYW4vbWF0Y2guYwkod29ya2lu ZyBjb3B5KQpAQCAtNDUxNiw5ICs0NTE2LDkgQEAgc2VsZWN0X3R5cGVfc2V0 X3RtcCAoZ2ZjX3R5cGVzcGVjICp0cykKICAgICByZXR1cm47CiAKICAgaWYg KHRzLT50eXBlID09IEJUX0NMQVNTKQotICAgIHNwcmludGYgKG5hbWUsICJ0 bXAkY2xhc3MkJXMiLCB0cy0+dS5kZXJpdmVkLT5uYW1lKTsKKyAgICBzcHJp bnRmIChuYW1lLCAiX3RtcF9jbGFzc18lcyIsIHRzLT51LmRlcml2ZWQtPm5h bWUpOwogICBlbHNlCi0gICAgc3ByaW50ZiAobmFtZSwgInRtcCR0eXBlJCVz IiwgdHMtPnUuZGVyaXZlZC0+bmFtZSk7CisgICAgc3ByaW50ZiAobmFtZSwg Il90bXBfdHlwZV8lcyIsIHRzLT51LmRlcml2ZWQtPm5hbWUpOwogICBnZmNf Z2V0X3N5bV90cmVlIChuYW1lLCBnZmNfY3VycmVudF9ucywgJnRtcCwgZmFs c2UpOwogICBnZmNfYWRkX3R5cGUgKHRtcC0+bi5zeW0sIHRzLCBOVUxMKTsK ICAgZ2ZjX3NldF9zeW1fcmVmZXJlbmNlZCAodG1wLT5uLnN5bSk7CkluZGV4 OiBnY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuYwko cmV2aXNpb24gMTY2NDA4KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmlu c2ljLmMJKHdvcmtpbmcgY29weSkKQEAgLTQ1NDcsNyArNDU0Nyw3IEBAIGdm Y19jb252X2ludHJpbnNpY19zaXplb2YgKGdmY19zZSAqc2UsIGdmY19leHBy ICplCiAgIGlmIChzcyA9PSBnZmNfc3NfdGVybWluYXRvcikKICAgICB7CiAg ICAgICBpZiAoYXJnLT50cy50eXBlID09IEJUX0NMQVNTKQotCWdmY19hZGRf Y29tcG9uZW50X3JlZiAoYXJnLCAiJGRhdGEiKTsKKwlnZmNfYWRkX2RhdGFf Y29tcG9uZW50IChhcmcpOwogCiAgICAgICBnZmNfY29udl9leHByX3JlZmVy ZW5jZSAoJmFyZ3NlLCBhcmcpOwogCkBAIC00NjE4LDggKzQ2MTgsOCBAQCBn ZmNfY29udl9pbnRyaW5zaWNfc3RvcmFnZV9zaXplIChnZmNfc2UgKnNlLCBn ZmNfZQogICAgIHsKICAgICAgIGlmIChhcmctPnRzLnR5cGUgPT0gQlRfQ0xB U1MpCiAgICAgICB7Ci0JZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChhcmcsICIk dnB0ciIpOwotCWdmY19hZGRfY29tcG9uZW50X3JlZiAoYXJnLCAiJHNpemUi KTsKKwlnZmNfYWRkX3ZwdHJfY29tcG9uZW50IChhcmcpOworCWdmY19hZGRf c2l6ZV9jb21wb25lbnQgKGFyZyk7CiAJZ2ZjX2NvbnZfZXhwciAoJmFyZ3Nl LCBhcmcpOwogCXRtcCA9IGZvbGRfY29udmVydCAocmVzdWx0X3R5cGUsIGFy Z3NlLmV4cHIpOwogCWdvdG8gZG9uZTsKQEAgLTUwNzAsNyArNTA3MCw3IEBA IGdmY19jb252X2FsbG9jYXRlZCAoZ2ZjX3NlICpzZSwgZ2ZjX2V4cHIgKmV4 cHIpCiAgICAgICAvKiBBbGxvY2F0YWJsZSBzY2FsYXIuICAqLwogICAgICAg YXJnMXNlLndhbnRfcG9pbnRlciA9IDE7CiAgICAgICBpZiAoYXJnMS0+ZXhw ci0+dHMudHlwZSA9PSBCVF9DTEFTUykKLQlnZmNfYWRkX2NvbXBvbmVudF9y ZWYgKGFyZzEtPmV4cHIsICIkZGF0YSIpOworCWdmY19hZGRfZGF0YV9jb21w b25lbnQgKGFyZzEtPmV4cHIpOwogICAgICAgZ2ZjX2NvbnZfZXhwciAoJmFy ZzFzZSwgYXJnMS0+ZXhwcik7CiAgICAgICB0bXAgPSBhcmcxc2UuZXhwcjsK ICAgICB9CkBAIC01MTExLDcgKzUxMTEsNyBAQCBnZmNfY29udl9hc3NvY2lh dGVkIChnZmNfc2UgKnNlLCBnZmNfZXhwciAqZXhwcikKICAgZ2ZjX2luaXRf c2UgKCZhcmcyc2UsIE5VTEwpOwogICBhcmcxID0gZXhwci0+dmFsdWUuZnVu Y3Rpb24uYWN0dWFsOwogICBpZiAoYXJnMS0+ZXhwci0+dHMudHlwZSA9PSBC VF9DTEFTUykKLSAgICBnZmNfYWRkX2NvbXBvbmVudF9yZWYgKGFyZzEtPmV4 cHIsICIkZGF0YSIpOworICAgIGdmY19hZGRfZGF0YV9jb21wb25lbnQgKGFy ZzEtPmV4cHIpOwogICBhcmcyID0gYXJnMS0+bmV4dDsKICAgc3MxID0gZ2Zj X3dhbGtfZXhwciAoYXJnMS0+ZXhwcik7CiAKQEAgLTUxNDEsNyArNTE0MSw3 IEBAIGdmY19jb252X2Fzc29jaWF0ZWQgKGdmY19zZSAqc2UsIGdmY19leHBy ICpleHByKQogICAgIHsKICAgICAgIC8qIEFuIG9wdGlvbmFsIHRhcmdldC4g ICovCiAgICAgICBpZiAoYXJnMi0+ZXhwci0+dHMudHlwZSA9PSBCVF9DTEFT UykKLQlnZmNfYWRkX2NvbXBvbmVudF9yZWYgKGFyZzItPmV4cHIsICIkZGF0 YSIpOworCWdmY19hZGRfZGF0YV9jb21wb25lbnQgKGFyZzItPmV4cHIpOwog ICAgICAgc3MyID0gZ2ZjX3dhbGtfZXhwciAoYXJnMi0+ZXhwcik7CiAKICAg ICAgIG5vbnplcm9fY2hhcmxlbiA9IE5VTExfVFJFRTsKQEAgLTUyMjgsOCAr NTIyOCw4IEBAIGdmY19jb252X3NhbWVfdHlwZV9hcyAoZ2ZjX3NlICpzZSwg Z2ZjX2V4cHIgKmV4cHIpCiAKICAgaWYgKGEtPnRzLnR5cGUgPT0gQlRfQ0xB U1MpCiAgICAgewotICAgICAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChhLCAi JHZwdHIiKTsKLSAgICAgIGdmY19hZGRfY29tcG9uZW50X3JlZiAoYSwgIiRo YXNoIik7CisgICAgICBnZmNfYWRkX3ZwdHJfY29tcG9uZW50IChhKTsKKyAg ICAgIGdmY19hZGRfaGFzaF9jb21wb25lbnQgKGEpOwogICAgIH0KICAgZWxz ZSBpZiAoYS0+dHMudHlwZSA9PSBCVF9ERVJJVkVEKQogICAgIGEgPSBnZmNf Z2V0X2ludF9leHByIChnZmNfZGVmYXVsdF9pbnRlZ2VyX2tpbmQsIE5VTEws CkBAIC01MjM3LDggKzUyMzcsOCBAQCBnZmNfY29udl9zYW1lX3R5cGVfYXMg KGdmY19zZSAqc2UsIGdmY19leHByICpleHByKQogCiAgIGlmIChiLT50cy50 eXBlID09IEJUX0NMQVNTKQogICAgIHsKLSAgICAgIGdmY19hZGRfY29tcG9u ZW50X3JlZiAoYiwgIiR2cHRyIik7Ci0gICAgICBnZmNfYWRkX2NvbXBvbmVu dF9yZWYgKGIsICIkaGFzaCIpOworICAgICAgZ2ZjX2FkZF92cHRyX2NvbXBv bmVudCAoYik7CisgICAgICBnZmNfYWRkX2hhc2hfY29tcG9uZW50IChiKTsK ICAgICB9CiAgIGVsc2UgaWYgKGItPnRzLnR5cGUgPT0gQlRfREVSSVZFRCkK ICAgICBiID0gZ2ZjX2dldF9pbnRfZXhwciAoZ2ZjX2RlZmF1bHRfaW50ZWdl cl9raW5kLCBOVUxMLAo= --001636c5a931dc10190494754dbb--