From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14302 invoked by alias); 1 Nov 2011 10:58:49 -0000 Received: (qmail 14292 invoked by uid 22791); 1 Nov 2011 10:58:40 -0000 X-SWARE-Spam-Status: No, hits=2.4 required=5.0 tests=AWL,BAYES_40,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,TW_BJ,TW_CP,TW_EG,TW_FN,TW_PN,TW_RV,TW_TR,TW_VP,TW_VW,TW_XS,TW_YM,T_FILL_THIS_FORM_SHORT X-Spam-Check-By: sourceware.org Received: from mail-qy0-f176.google.com (HELO mail-qy0-f176.google.com) (209.85.216.176) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 01 Nov 2011 10:58:17 +0000 Received: by qyk29 with SMTP id 29so248506qyk.0 for ; Tue, 01 Nov 2011 03:58:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.59.5 with SMTP id v5mr3740851obq.78.1320145095617; Tue, 01 Nov 2011 03:58:15 -0700 (PDT) Received: by 10.182.159.65 with HTTP; Tue, 1 Nov 2011 03:58:15 -0700 (PDT) Date: Tue, 01 Nov 2011 10:58:00 -0000 Message-ID: Subject: [PATCH 01/17] Enable building with -Wshadow From: Andrey Smirnov To: gdb-patches Content-Type: multipart/mixed; boundary=14dae93a151b79eba004b0aa3bb6 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: 2011-11/txt/msg00004.txt.bz2 --14dae93a151b79eba004b0aa3bb6 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1366 Hello everyone, On the supr of the moment, while reading Project Ideas page on GDB wiki, I've decided to undertake the task of making compilation with -Wshadow flag possible (seeing how that is a simple task for a person unfamiliar with gdb's code base). So, having configured the code with gcc.gnu.org CFLAGS="-D_BSD_SOURCE -D_POSIX_C_SOURCE=199309L -Wshadow -Werror -ansi" ./configure I rummaged through it and fixed all naming clashes. In the attachment to this letter is a 1st in the series of 17 patches. The majority of the changes is related to fixing -Wshadow caused errors with two or three fixes related to -Werror and -ansi flags. A couple of quick questions: - What is the common way(etiquette?) of sending a series patches to this list? Do I send them all at once or do I wait 'till the end of discussion about the first one? - Does the part of MAINTAINERS file about patches to libiberty, libdecnumber and intl needing to be sent to GCC still holds true or should I send them to this list? Bfd and binutils? - In case the patches got applied and building with -Wshadow is working would it be possible to add aforementioned CFLAGS to the set of default ones? Andrey Smirnov P.S. Forgot to mention that I checked for regressions by running 'make check' and, to the best of my knowledge, fixed all that have been cased by my patches. --14dae93a151b79eba004b0aa3bb6 Content-Type: text/x-patch; charset=US-ASCII; name="0001-gdb-Fix-Wshadow-warnings-part-01.patch" Content-Disposition: attachment; filename="0001-gdb-Fix-Wshadow-warnings-part-01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gugs7lar0 Content-length: 110431 RnJvbSBjMDU1Y2ZlMGM2MzBhN2ExNmJkNTVkZjQyNTNiYWRiZjBjNGY4NjI2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgU21pcm5v diA8YW5kcmV3LnNtaXJub3ZAZ21haWwuY29tPgpEYXRlOiBUdWUsIDEgTm92 IDIwMTEgMTc6NDg6MzggKzA3MDAKU3ViamVjdDogW1BBVENIIDAxLzE3XSBn ZGI6IEZpeCAtV3NoYWRvdyB3YXJuaW5ncyAocGFydCAwMSkKCi0tLQogZ2Ri L2FkYS1leHAueSAgICAgICAgICB8ICAgIDYgKy0KIGdkYi9hZGEtbGFuZy5j ICAgICAgICAgfCAgMTYwICsrKysrKysrLS0tLS0tLS0KIGdkYi9hZGEtdmFs cHJpbnQuYyAgICAgfCAgIDcxICsrKystLS0tCiBnZGIvYW1kNjQtbGludXgt dGRlcC5jIHwgICAgNCArLQogZ2RiL2FtZDY0LXRkZXAuYyAgICAgICB8ICAg IDkgKy0KIGdkYi9hbm5vdGF0ZS5jICAgICAgICAgfCAgICA0ICstCiBnZGIv YmNhY2hlLmMgICAgICAgICAgIHwgICA4OCArKysrKy0tLS0tCiBnZGIvYmZk LXRhcmdldC5jICAgICAgIHwgICAgNiArLQogZ2RiL2JyZWFrcG9pbnQuYyAg ICAgICB8ICAgOTYgKysrKystLS0tLQogZ2RiL2J1aWxkc3ltLmMgICAgICAg ICB8ICAgMzAgKystLQogZ2RiL2MtdHlwZXByaW50LmMgICAgICB8ICA0OTEg KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiBnZGIvYy12YWxwcmludC5jICAgICAgIHwgICAxNCArLQogZ2RiL2Nv ZmZyZWFkLmMgICAgICAgICB8ICAgMjggKystLQogZ2RiL2NvbXBsYWludHMu YyAgICAgICB8ICAgNTIgKysrLS0tCiBnZGIvY29tcGxldGVyLmMgICAgICAg IHwgICAgOCArLQogZ2RiL2NwLWFiaS5jICAgICAgICAgICB8ICAgIDQgKy0K IGdkYi9jcC1uYW1lLXBhcnNlci55ICAgfCAgICA0ICstCiBnZGIvY3Atc3Vw cG9ydC5jICAgICAgIHwgICA2OCArKysrLS0tLQogZ2RiL2NwLXZhbHByaW50 LmMgICAgICB8ICAgMzcgKystLQogMTkgZmlsZXMgY2hhbmdlZCwgNTk2IGlu c2VydGlvbnMoKyksIDU4NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9n ZGIvYWRhLWV4cC55IGIvZ2RiL2FkYS1leHAueQppbmRleCA5NTc2YmU1Li5i ZmEzOTEzIDEwMDY0NAotLS0gYS9nZGIvYWRhLWV4cC55CisrKyBiL2dkYi9h ZGEtZXhwLnkKQEAgLTEyODcsMTIgKzEyODcsMTIgQEAgd3JpdGVfdmFyX29y X3R5cGUgKHN0cnVjdCBibG9jayAqYmxvY2ssIHN0cnVjdCBzdG9rZW4gbmFt ZTApCiAJICAgICBGSVhNRSBwbmggNy8yMC8yMDA3LiAqLwogCSAgaWYgKG5z eW1zID09IDEpCiAJICAgIHsKLQkgICAgICBzdHJ1Y3Qgc3ltYm9sICpyZW5h bWluZyA9CisJICAgICAgc3RydWN0IHN5bWJvbCAqcmVuX3N5bSA9CiAJCWFk YV9maW5kX3JlbmFtaW5nX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAo c3ltc1swXS5zeW0pLCAKIAkJCQkJICBzeW1zWzBdLmJsb2NrKTsKIAotCSAg ICAgIGlmIChyZW5hbWluZyAhPSBOVUxMKQotCQlzeW1zWzBdLnN5bSA9IHJl bmFtaW5nOworCSAgICAgIGlmIChyZW5fc3ltICE9IE5VTEwpCisJCXN5bXNb MF0uc3ltID0gcmVuX3N5bTsKIAkgICAgfQogCiAJICB0eXBlX3N5bSA9IHNl bGVjdF9wb3NzaWJsZV90eXBlX3N5bSAoc3ltcywgbnN5bXMpOwpkaWZmIC0t Z2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwppbmRleCAx ZGFiZDBmLi4zOWVjOGZmIDEwMDY0NAotLS0gYS9nZGIvYWRhLWxhbmcuYwor KysgYi9nZGIvYWRhLWxhbmcuYwpAQCAtMTQyMSwxOCArMTQyMSwxOCBAQCBp c190aGluX3BudHIgKHN0cnVjdCB0eXBlICp0eXBlKQogc3RhdGljIHN0cnVj dCB0eXBlICoKIHRoaW5fZGVzY3JpcHRvcl90eXBlIChzdHJ1Y3QgdHlwZSAq dHlwZSkKIHsKLSAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZSA9IGRlc2NfYmFz ZV90eXBlICh0eXBlKTsKKyAgc3RydWN0IHR5cGUgKmJ0eXBlID0gZGVzY19i YXNlX3R5cGUgKHR5cGUpOwogCi0gIGlmIChiYXNlX3R5cGUgPT0gTlVMTCkK KyAgaWYgKGJ0eXBlID09IE5VTEwpCiAgICAgcmV0dXJuIE5VTEw7Ci0gIGlm IChpc19zdWZmaXggKGFkYV90eXBlX25hbWUgKGJhc2VfdHlwZSksICJfX19Y VkUiKSkKLSAgICByZXR1cm4gYmFzZV90eXBlOworICBpZiAoaXNfc3VmZml4 IChhZGFfdHlwZV9uYW1lIChidHlwZSksICJfX19YVkUiKSkKKyAgICByZXR1 cm4gYnR5cGU7CiAgIGVsc2UKICAgICB7Ci0gICAgICBzdHJ1Y3QgdHlwZSAq YWx0X3R5cGUgPSBhZGFfZmluZF9wYXJhbGxlbF90eXBlIChiYXNlX3R5cGUs ICJfX19YVkUiKTsKKyAgICAgIHN0cnVjdCB0eXBlICphbHRfdHlwZSA9IGFk YV9maW5kX3BhcmFsbGVsX3R5cGUgKGJ0eXBlLCAiX19fWFZFIik7CiAKICAg ICAgIGlmIChhbHRfdHlwZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gYmFz ZV90eXBlOworICAgICAgICByZXR1cm4gYnR5cGU7CiAgICAgICBlbHNlCiAg ICAgICAgIHJldHVybiBhbHRfdHlwZTsKICAgICB9CkBAIC00MzIxLDE5ICs0 MzIxLDE5IEBAIGFkYV9sb29rdXBfc2ltcGxlX21pbnN5bSAoY29uc3QgY2hh ciAqbmFtZSkKIHsKICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CiAgIHN0 cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbDsKLSAgaW50IHdpbGRfbWF0 Y2g7CisgIGludCB3aWxkX21vZGVfZmxhZzsKIAogICBpZiAoc3RybmNtcCAo bmFtZSwgInN0YW5kYXJkX18iLCBzaXplb2YgKCJzdGFuZGFyZF9fIikgLSAx KSA9PSAwKQogICAgIHsKICAgICAgIG5hbWUgKz0gc2l6ZW9mICgic3RhbmRh cmRfXyIpIC0gMTsKLSAgICAgIHdpbGRfbWF0Y2ggPSAwOworICAgICAgd2ls ZF9tb2RlX2ZsYWcgPSAwOwogICAgIH0KICAgZWxzZQotICAgIHdpbGRfbWF0 Y2ggPSAoc3Ryc3RyIChuYW1lLCAiX18iKSA9PSBOVUxMKTsKKyAgICB3aWxk X21vZGVfZmxhZyA9IChzdHJzdHIgKG5hbWUsICJfXyIpID09IE5VTEwpOwog CiAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5bWJvbCkKICAgewotICAg IGlmIChtYXRjaF9uYW1lIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9s KSwgbmFtZSwgd2lsZF9tYXRjaCkKKyAgICBpZiAobWF0Y2hfbmFtZSAoU1lN Qk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCksIG5hbWUsIHdpbGRfbW9kZV9m bGFnKQogICAgICAgICAmJiBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpICE9IG1z dF9zb2xpYl90cmFtcG9saW5lKQogICAgICAgcmV0dXJuIG1zeW1ib2w7CiAg IH0KQEAgLTQzNTAsNyArNDM1MCw3IEBAIGFkYV9sb29rdXBfc2ltcGxlX21p bnN5bSAoY29uc3QgY2hhciAqbmFtZSkKIHN0YXRpYyB2b2lkCiBhZGRfc3lt Ym9sc19mcm9tX2VuY2xvc2luZ19wcm9jcyAoc3RydWN0IG9ic3RhY2sgKm9i c3RhY2twLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKm5hbWUsIGRvbWFpbl9lbnVtIG5hbWVzcGFjZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lsZF9tYXRjaCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lsZF9t b2RlX2ZsYWcpCiB7CiB9CiAKQEAgLTQ0ODgsNyArNDQ4OCw3IEBAIHJlbW92 ZV9leHRyYV9zeW1ib2xzIChzdHJ1Y3QgYWRhX3N5bWJvbF9pbmZvICpzeW1z LCBpbnQgbnN5bXMpCiAgIGkgPSAwOwogICB3aGlsZSAoaSA8IG5zeW1zKQog ICAgIHsKLSAgICAgIGludCByZW1vdmUgPSAwOworICAgICAgaW50IHJlbW92 ZV9mbGFnID0gMDsKIAogICAgICAgLyogSWYgdHdvIHN5bWJvbHMgaGF2ZSB0 aGUgc2FtZSBuYW1lIGFuZCBvbmUgb2YgdGhlbSBpcyBhIHN0dWIgdHlwZSwK ICAgICAgICAgIHRoZSBnZXQgcmlkIG9mIHRoZSBzdHViLiAgKi8KQEAgLTQ1 MDMsNyArNDUwMyw3IEBAIHJlbW92ZV9leHRyYV9zeW1ib2xzIChzdHJ1Y3Qg YWRhX3N5bWJvbF9pbmZvICpzeW1zLCBpbnQgbnN5bXMpCiAgICAgICAgICAg ICAgICAgICAmJiBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW1zW2pdLnN5bSkg IT0gTlVMTAogICAgICAgICAgICAgICAgICAgJiYgc3RyY21wIChTWU1CT0xf TElOS0FHRV9OQU1FIChzeW1zW2ldLnN5bSksCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bXNbal0uc3lt KSkgPT0gMCkKLSAgICAgICAgICAgICAgICByZW1vdmUgPSAxOworICAgICAg ICAgICAgICAgIHJlbW92ZV9mbGFnID0gMTsKICAgICAgICAgICAgIH0KICAg ICAgICAgfQogCkBAIC00NTIzLDExICs0NTIzLDExIEBAIHJlbW92ZV9leHRy YV9zeW1ib2xzIChzdHJ1Y3QgYWRhX3N5bWJvbF9pbmZvICpzeW1zLCBpbnQg bnN5bXMpCiAgICAgICAgICAgICAgICAgICAmJiBTWU1CT0xfQ0xBU1MgKHN5 bXNbaV0uc3ltKSA9PSBTWU1CT0xfQ0xBU1MgKHN5bXNbal0uc3ltKQogICAg ICAgICAgICAgICAgICAgJiYgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bXNb aV0uc3ltKQogICAgICAgICAgICAgICAgICAgPT0gU1lNQk9MX1ZBTFVFX0FE RFJFU1MgKHN5bXNbal0uc3ltKSkKLSAgICAgICAgICAgICAgICByZW1vdmUg PSAxOworICAgICAgICAgICAgICAgIHJlbW92ZV9mbGFnID0gMTsKICAgICAg ICAgICAgIH0KICAgICAgICAgfQogICAgICAgCi0gICAgICBpZiAocmVtb3Zl KQorICAgICAgaWYgKHJlbW92ZV9mbGFnKQogICAgICAgICB7CiAgICAgICAg ICAgZm9yIChqID0gaSArIDE7IGogPCBuc3ltczsgaiArPSAxKQogICAgICAg ICAgICAgc3ltc1tqIC0gMV0gPSBzeW1zW2pdOwpAQCAtNDc5MywxNCArNDc5 MywxNCBAQCByZW1vdmVfaXJyZWxldmFudF9yZW5hbWluZ3MgKHN0cnVjdCBh ZGFfc3ltYm9sX2luZm8gKnN5bXMsCiBzdGF0aWMgdm9pZAogYWRhX2FkZF9s b2NhbF9zeW1ib2xzIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFja3AsIGNvbnN0 IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBi bG9jayAqYmxvY2ssIGRvbWFpbl9lbnVtIGRvbWFpbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgaW50IHdpbGRfbWF0Y2gpCisgICAgICAgICAgICAgICAg ICAgICAgIGludCB3aWxkX21vZGVfZmxhZykKIHsKICAgaW50IGJsb2NrX2Rl cHRoID0gMDsKIAogICB3aGlsZSAoYmxvY2sgIT0gTlVMTCkKICAgICB7CiAg ICAgICBibG9ja19kZXB0aCArPSAxOwotICAgICAgYWRhX2FkZF9ibG9ja19z eW1ib2xzIChvYnN0YWNrcCwgYmxvY2ssIG5hbWUsIGRvbWFpbiwgTlVMTCwg d2lsZF9tYXRjaCk7CisgICAgICBhZGFfYWRkX2Jsb2NrX3N5bWJvbHMgKG9i c3RhY2twLCBibG9jaywgbmFtZSwgZG9tYWluLCBOVUxMLCB3aWxkX21vZGVf ZmxhZyk7CiAKICAgICAgIC8qIElmIHdlIGZvdW5kIGEgbm9uLWZ1bmN0aW9u IG1hdGNoLCBhc3N1bWUgdGhhdCdzIHRoZSBvbmUuICAqLwogICAgICAgaWYg KGlzX25vbmZ1bmN0aW9uIChkZWZuc19jb2xsZWN0ZWQgKG9ic3RhY2twLCAw KSwKQEAgLTQ4MTMsNyArNDgxMyw3IEBAIGFkYV9hZGRfbG9jYWxfc3ltYm9s cyAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2twLCBjb25zdCBjaGFyICpuYW1l LAogICAvKiBJZiBubyBsdWNrIHNvIGZhciwgdHJ5IHRvIGZpbmQgTkFNRSBh cyBhIGxvY2FsIHN5bWJvbCBpbiBzb21lIGxleGljYWxseQogICAgICBlbmNs b3Npbmcgc3VicHJvZ3JhbS4gICovCiAgIGlmIChudW1fZGVmbnNfY29sbGVj dGVkIChvYnN0YWNrcCkgPT0gMCAmJiBibG9ja19kZXB0aCA+IDIpCi0gICAg YWRkX3N5bWJvbHNfZnJvbV9lbmNsb3NpbmdfcHJvY3MgKG9ic3RhY2twLCBu YW1lLCBkb21haW4sIHdpbGRfbWF0Y2gpOworICAgIGFkZF9zeW1ib2xzX2Zy b21fZW5jbG9zaW5nX3Byb2NzIChvYnN0YWNrcCwgbmFtZSwgZG9tYWluLCB3 aWxkX21vZGVfZmxhZyk7CiB9CiAKIC8qIEFuIG9iamVjdCBvZiB0aGlzIHR5 cGUgaXMgdXNlZCBhcyB0aGUgdXNlcl9kYXRhIGFyZ3VtZW50IHdoZW4KQEAg LTQ5NzMsNyArNDk3Myw3IEBAIGFkYV9sb29rdXBfc3ltYm9sX2xpc3QgKGNv bnN0IGNoYXIgKm5hbWUwLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrMCwK ICAgc3RydWN0IHN5bWJvbCAqc3ltOwogICBzdHJ1Y3QgYmxvY2sgKmJsb2Nr OwogICBjb25zdCBjaGFyICpuYW1lOwotICBpbnQgd2lsZF9tYXRjaDsKKyAg aW50IHdpbGRfbW9kZV9mbGFnOwogICBpbnQgY2FjaGVJZlVuaXF1ZTsKICAg aW50IG5kZWZuczsKIApAQCAtNDk4NCw3ICs0OTg0LDcgQEAgYWRhX2xvb2t1 cF9zeW1ib2xfbGlzdCAoY29uc3QgY2hhciAqbmFtZTAsIGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2swLAogCiAgIC8qIFNlYXJjaCBzcGVjaWZpZWQgYmxv Y2sgYW5kIGl0cyBzdXBlcmlvcnMuICAqLwogCi0gIHdpbGRfbWF0Y2ggPSAo c3Ryc3RyIChuYW1lMCwgIl9fIikgPT0gTlVMTCk7CisgIHdpbGRfbW9kZV9m bGFnID0gKHN0cnN0ciAobmFtZTAsICJfXyIpID09IE5VTEwpOwogICBuYW1l ID0gbmFtZTA7CiAgIGJsb2NrID0gKHN0cnVjdCBibG9jayAqKSBibG9jazA7 ICAgICAgLyogRklYTUU6IE5vIGNhc3Qgb3VnaHQgdG8gYmUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkZWQsIGJ1 dCBhZGRpbmcgY29uc3Qgd2lsbApAQCAtNDk5OSw3ICs0OTk5LDcgQEAgYWRh X2xvb2t1cF9zeW1ib2xfbGlzdCAoY29uc3QgY2hhciAqbmFtZTAsIGNvbnN0 IHN0cnVjdCBibG9jayAqYmxvY2swLAogICAgICBlbnRpdHkgaW5zaWRlIGl0 cyBwcm9ncmFtKS4gICovCiAgIGlmIChzdHJuY21wIChuYW1lMCwgInN0YW5k YXJkX18iLCBzaXplb2YgKCJzdGFuZGFyZF9fIikgLSAxKSA9PSAwKQogICAg IHsKLSAgICAgIHdpbGRfbWF0Y2ggPSAwOworICAgICAgd2lsZF9tb2RlX2Zs YWcgPSAwOwogICAgICAgYmxvY2sgPSBOVUxMOwogICAgICAgbmFtZSA9IG5h bWUwICsgc2l6ZW9mICgic3RhbmRhcmRfXyIpIC0gMTsKICAgICB9CkBAIC01 MDA3LDcgKzUwMDcsNyBAQCBhZGFfbG9va3VwX3N5bWJvbF9saXN0IChjb25z dCBjaGFyICpuYW1lMCwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jazAsCiAg IC8qIENoZWNrIHRoZSBub24tZ2xvYmFsIHN5bWJvbHMuICBJZiB3ZSBoYXZl IEFOWSBtYXRjaCwgdGhlbiB3ZSdyZSBkb25lLiAgKi8KIAogICBhZGFfYWRk X2xvY2FsX3N5bWJvbHMgKCZzeW1ib2xfbGlzdF9vYnN0YWNrLCBuYW1lLCBi bG9jaywgbmFtZXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHdp bGRfbWF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRfbW9k ZV9mbGFnKTsKICAgaWYgKG51bV9kZWZuc19jb2xsZWN0ZWQgKCZzeW1ib2xf bGlzdF9vYnN0YWNrKSA+IDApCiAgICAgZ290byBkb25lOwogCkBAIC01MDI2 LDE0ICs1MDI2LDE0IEBAIGFkYV9sb29rdXBfc3ltYm9sX2xpc3QgKGNvbnN0 IGNoYXIgKm5hbWUwLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrMCwKICAg LyogU2VhcmNoIHN5bWJvbHMgZnJvbSBhbGwgZ2xvYmFsIGJsb2Nrcy4gICov CiAgCiAgIGFkZF9ub25sb2NhbF9zeW1ib2xzICgmc3ltYm9sX2xpc3Rfb2Jz dGFjaywgbmFtZSwgbmFtZXNwYWNlLCAxLAotCQkJd2lsZF9tYXRjaCk7CisJ CQl3aWxkX21vZGVfZmxhZyk7CiAKICAgLyogTm93IGFkZCBzeW1ib2xzIGZy b20gYWxsIHBlci1maWxlIGJsb2NrcyBpZiB3ZSd2ZSBnb3R0ZW4gbm8gaGl0 cwogICAgICAobm90IHN0cmljdGx5IGNvcnJlY3QsIGJ1dCBwZXJoYXBzIGJl dHRlciB0aGFuIGFuIGVycm9yKS4gICovCiAKICAgaWYgKG51bV9kZWZuc19j b2xsZWN0ZWQgKCZzeW1ib2xfbGlzdF9vYnN0YWNrKSA9PSAwKQogICAgIGFk ZF9ub25sb2NhbF9zeW1ib2xzICgmc3ltYm9sX2xpc3Rfb2JzdGFjaywgbmFt ZSwgbmFtZXNwYWNlLCAwLAotCQkJICB3aWxkX21hdGNoKTsKKwkJCSAgd2ls ZF9tb2RlX2ZsYWcpOwogCiBkb25lOgogICBuZGVmbnMgPSBudW1fZGVmbnNf Y29sbGVjdGVkICgmc3ltYm9sX2xpc3Rfb2JzdGFjayk7CkBAIC01MDU0LDcg KzUwNTQsNyBAQCBkb25lOgogCiBzdHJ1Y3Qgc3ltYm9sICoKIGFkYV9sb29r dXBfZW5jb2RlZF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2swLAotCQkJICAgZG9tYWluX2VudW0gbmFtZXNw YWNlLCBzdHJ1Y3QgYmxvY2sgKipibG9ja19mb3VuZCkKKwkJCSAgIGRvbWFp bl9lbnVtIG5hbWVzcGFjZSwgc3RydWN0IGJsb2NrICoqZm91bmRfYmxvY2sp CiB7CiAgIHN0cnVjdCBhZGFfc3ltYm9sX2luZm8gKmNhbmRpZGF0ZXM7CiAg IGludCBuX2NhbmRpZGF0ZXM7CkBAIC01MDY0LDggKzUwNjQsOCBAQCBhZGFf bG9va3VwX2VuY29kZWRfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrMCwKICAgaWYgKG5fY2FuZGlkYXRlcyA9 PSAwKQogICAgIHJldHVybiBOVUxMOwogCi0gIGlmIChibG9ja19mb3VuZCAh PSBOVUxMKQotICAgICpibG9ja19mb3VuZCA9IGNhbmRpZGF0ZXNbMF0uYmxv Y2s7CisgIGlmIChmb3VuZF9ibG9jayAhPSBOVUxMKQorICAgICpmb3VuZF9i bG9jayA9IGNhbmRpZGF0ZXNbMF0uYmxvY2s7CiAKICAgcmV0dXJuIGZpeHVw X3N5bWJvbF9zZWN0aW9uIChjYW5kaWRhdGVzWzBdLnN5bSwgTlVMTCk7CiB9 ICAKQEAgLTU0ODgsNyArNTQ4OCw3IEBAIGFkYV9hZGRfYmxvY2tfc3ltYm9s cyAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2twLAogc3RhdGljIGNvbnN0IGNo YXIgKgogc3ltYm9sX2NvbXBsZXRpb25fbWF0Y2ggKGNvbnN0IGNoYXIgKnN5 bV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KnRleHQsIGludCB0ZXh0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgd2lsZF9tYXRjaCwgaW50IGVuY29kZWQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHdpbGRfbW9kZV9mbGFnLCBpbnQgZW5jb2RlZCkK IHsKICAgY29uc3QgaW50IHZlcmJhdGltX21hdGNoID0gKHRleHRbMF0gPT0g JzwnKTsKICAgaW50IG1hdGNoID0gMDsKQEAgLTU1MzYsNyArNTUzNiw3IEBA IHN5bWJvbF9jb21wbGV0aW9uX21hdGNoIChjb25zdCBjaGFyICpzeW1fbmFt ZSwKIAogICAvKiBTZWNvbmQ6IFRyeSB3aWxkIG1hdGNoaW5nLi4uICAqLwog Ci0gIGlmICghbWF0Y2ggJiYgd2lsZF9tYXRjaCkKKyAgaWYgKCFtYXRjaCAm JiB3aWxkX21vZGVfZmxhZykKICAgICB7CiAgICAgICAvKiBTaW5jZSB3ZSBh cmUgZG9pbmcgd2lsZCBtYXRjaGluZywgdGhpcyBtZWFucyB0aGF0IFRFWFQK ICAgICAgICAgIG1heSByZXByZXNlbnQgYW4gdW5xdWFsaWZpZWQgc3ltYm9s IG5hbWUuICBXZSB0aGVyZWZvcmUgbXVzdApAQCAtNTU3Myw3ICs1NTczLDcg QEAgREVGX1ZFQ19QIChjaGFyX3B0cik7CiAgICBjb21wbGV0aW9uIHNob3Vs ZCBiZSBwZXJmb3JtZWQuICBUaGVzZSB0d28gcGFyYW1ldGVycyBhcmUgdXNl ZCB0bwogICAgZGV0ZXJtaW5lIHdoaWNoIHBhcnQgb2YgdGhlIHN5bWJvbCBu YW1lIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKICAgIGNvbXBsZXRpb24gdmVj dG9yLgotICAgaWYgV0lMRF9NQVRDSCBpcyBzZXQsIHRoZW4gd2lsZCBtYXRj aGluZyBpcyBwZXJmb3JtZWQuCisgICBpZiBXSUxEX01PREVfRkxBRyBpcyBz ZXQsIHRoZW4gd2lsZCBtYXRjaGluZyBpcyBwZXJmb3JtZWQuCiAgICBFTkNP REVEIHNob3VsZCBiZSBzZXQgaWYgVEVYVCByZXByZXNlbnRzIGEgc3ltYm9s IG5hbWUgaW4gaXRzCiAgICBlbmNvZGVkIGZvcm1lZCAoaW4gd2hpY2ggY2Fz ZSB0aGUgY29tcGxldGlvbiBzaG91bGQgYWxzbyBiZQogICAgZW5jb2RlZCku ICAqLwpAQCAtNTU4MywxMCArNTU4MywxMCBAQCBzeW1ib2xfY29tcGxldGlv bl9hZGQgKFZFQyhjaGFyX3B0cikgKipzdiwKICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqc3ltX25hbWUsCiAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKnRleHQsIGludCB0ZXh0X2xlbiwKICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb3JpZ190ZXh0LCBjb25z dCBjaGFyICp3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2ls ZF9tYXRjaCwgaW50IGVuY29kZWQpCisgICAgICAgICAgICAgICAgICAgICAg IGludCB3aWxkX21vZGVfZmxhZywgaW50IGVuY29kZWQpCiB7CiAgIGNvbnN0 IGNoYXIgKm1hdGNoID0gc3ltYm9sX2NvbXBsZXRpb25fbWF0Y2ggKHN5bV9u YW1lLCB0ZXh0LCB0ZXh0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2lsZF9tYXRjaCwgZW5jb2RlZCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdpbGRfbW9kZV9mbGFnLCBlbmNvZGVkKTsKICAgY2hhciAqY29tcGxl dGlvbjsKIAogICBpZiAobWF0Y2ggPT0gTlVMTCkKQEAgLTU2MzcsOCArNTYz NywxMCBAQCBhZGFfZXhwYW5kX3BhcnRpYWxfc3ltYm9sX25hbWUgKGNvbnN0 IGNoYXIgKm5hbWUsIHZvaWQgKnVzZXJfZGF0YSkKIHsKICAgc3RydWN0IGFk ZF9wYXJ0aWFsX2RhdHVtICpkYXRhID0gdXNlcl9kYXRhOwogICAKLSAgcmV0 dXJuIHN5bWJvbF9jb21wbGV0aW9uX21hdGNoIChuYW1lLCBkYXRhLT50ZXh0 LCBkYXRhLT50ZXh0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhLT53aWxkX21hdGNoLCBkYXRhLT5lbmNvZGVkKSAhPSBO VUxMOworICBjb25zdCBpbnQgbWF0Y2ggPSBzeW1ib2xfY29tcGxldGlvbl9t YXRjaCAobmFtZSwgZGF0YS0+dGV4dCwgZGF0YS0+dGV4dF9sZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh LT53aWxkX21hdGNoLCBkYXRhLT5lbmNvZGVkKSAhPSBOVUxMOworCisgIHJl dHVybiBtYXRjaDsKIH0KIAogLyogUmV0dXJuIGEgbGlzdCBvZiBwb3NzaWJs ZSBzeW1ib2wgbmFtZXMgY29tcGxldGluZyBURVhUMC4gIFRoZSBsaXN0CkBA IC01NjUwLDcgKzU2NTIsNyBAQCBhZGFfbWFrZV9zeW1ib2xfY29tcGxldGlv bl9saXN0IChjaGFyICp0ZXh0MCwgY2hhciAqd29yZCkKIHsKICAgY2hhciAq dGV4dDsKICAgaW50IHRleHRfbGVuOwotICBpbnQgd2lsZF9tYXRjaDsKKyAg aW50IHdpbGRfbW9kZV9mbGFnOwogICBpbnQgZW5jb2RlZDsKICAgVkVDKGNo YXJfcHRyKSAqY29tcGxldGlvbnMgPSBWRUNfYWxsb2MgKGNoYXJfcHRyLCAx MjgpOwogICBzdHJ1Y3Qgc3ltYm9sICpzeW07CkBAIC01NjY2LDcgKzU2Njgs NyBAQCBhZGFfbWFrZV9zeW1ib2xfY29tcGxldGlvbl9saXN0IChjaGFyICp0 ZXh0MCwgY2hhciAqd29yZCkKICAgICAgIHRleHQgPSB4c3RyZHVwICh0ZXh0 MCk7CiAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCB0ZXh0KTsKICAgICAg IHRleHRfbGVuID0gc3RybGVuICh0ZXh0KTsKLSAgICAgIHdpbGRfbWF0Y2gg PSAwOworICAgICAgd2lsZF9tb2RlX2ZsYWcgPSAwOwogICAgICAgZW5jb2Rl ZCA9IDE7CiAgICAgfQogICBlbHNlCkBAIC01NjgyLDcgKzU2ODQsNyBAQCBh ZGFfbWFrZV9zeW1ib2xfY29tcGxldGlvbl9saXN0IChjaGFyICp0ZXh0MCwg Y2hhciAqd29yZCkKICAgICAgICAgIHF1YWxpZmllZCBlbnRpdHkgbmFtZSwg YW5kIHRoZSBtYXRjaCBtdXN0IG5vdCBiZSBkb25lIGluIHdpbGQKICAgICAg ICAgIG1vZGUuICBTaW1pbGFybHksIGlmIHRoZSB1c2VyIHdhbnRzIHRvIGNv bXBsZXRlIHdoYXQgbG9va3MgbGlrZQogICAgICAgICAgYW4gZW5jb2RlZCBu YW1lLCB0aGUgbWF0Y2ggbXVzdCBub3QgYmUgZG9uZSBpbiB3aWxkIG1vZGUu ICAqLwotICAgICAgd2lsZF9tYXRjaCA9IChzdHJjaHIgKHRleHQwLCAnLicp ID09IE5VTEwgJiYgIWVuY29kZWQpOworICAgICAgd2lsZF9tb2RlX2ZsYWcg PSAoc3RyY2hyICh0ZXh0MCwgJy4nKSA9PSBOVUxMICYmICFlbmNvZGVkKTsK ICAgICB9CiAKICAgLyogRmlyc3QsIGxvb2sgYXQgdGhlIHBhcnRpYWwgc3lt dGFiIHN5bWJvbHMuICAqLwpAQCAtNTY5NCw3ICs1Njk2LDcgQEAgYWRhX21h a2Vfc3ltYm9sX2NvbXBsZXRpb25fbGlzdCAoY2hhciAqdGV4dDAsIGNoYXIg KndvcmQpCiAgICAgZGF0YS50ZXh0X2xlbiA9IHRleHRfbGVuOwogICAgIGRh dGEudGV4dDAgPSB0ZXh0MDsKICAgICBkYXRhLndvcmQgPSB3b3JkOwotICAg IGRhdGEud2lsZF9tYXRjaCA9IHdpbGRfbWF0Y2g7CisgICAgZGF0YS53aWxk X21hdGNoID0gd2lsZF9tb2RlX2ZsYWc7CiAgICAgZGF0YS5lbmNvZGVkID0g ZW5jb2RlZDsKICAgICBleHBhbmRfcGFydGlhbF9zeW1ib2xfbmFtZXMgKGFk YV9leHBhbmRfcGFydGlhbF9zeW1ib2xfbmFtZSwgJmRhdGEpOwogICB9CkBA IC01NzA4LDcgKzU3MTAsNyBAQCBhZGFfbWFrZV9zeW1ib2xfY29tcGxldGlv bl9saXN0IChjaGFyICp0ZXh0MCwgY2hhciAqd29yZCkKICAgewogICAgIFFV SVQ7CiAgICAgc3ltYm9sX2NvbXBsZXRpb25fYWRkICgmY29tcGxldGlvbnMs IFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGV4dCwgdGV4dF9sZW4sIHRleHQwLCB3b3JkLCB3 aWxkX21hdGNoLCBlbmNvZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRleHQsIHRleHRfbGVuLCB0ZXh0MCwgd29yZCwgd2lsZF9tb2RlX2Zs YWcsIGVuY29kZWQpOwogICB9CiAKICAgLyogU2VhcmNoIHVwd2FyZHMgZnJv bSBjdXJyZW50bHkgc2VsZWN0ZWQgZnJhbWUgKHNvIHRoYXQgd2UgY2FuCkBA IC01NzIzLDcgKzU3MjUsNyBAQCBhZGFfbWFrZV9zeW1ib2xfY29tcGxldGlv bl9saXN0IChjaGFyICp0ZXh0MCwgY2hhciAqd29yZCkKICAgICAgIHsKICAg ICAgICAgc3ltYm9sX2NvbXBsZXRpb25fYWRkICgmY29tcGxldGlvbnMsIFNZ TUJPTF9MSU5LQUdFX05BTUUgKHN5bSksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGV4dCwgdGV4dF9sZW4sIHRleHQwLCB3b3JkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRfbWF0Y2gsIGVuY29k ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRfbW9k ZV9mbGFnLCBlbmNvZGVkKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTU3Mzgs NyArNTc0MCw3IEBAIGFkYV9tYWtlX3N5bWJvbF9jb21wbGV0aW9uX2xpc3Qg KGNoYXIgKnRleHQwLCBjaGFyICp3b3JkKQogICAgIHsKICAgICAgIHN5bWJv bF9jb21wbGV0aW9uX2FkZCAoJmNvbXBsZXRpb25zLCBTWU1CT0xfTElOS0FH RV9OQU1FIChzeW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXh0LCB0ZXh0X2xlbiwgdGV4dDAsIHdvcmQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdpbGRfbWF0Y2gsIGVuY29kZWQpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3aWxkX21vZGVfZmxhZywgZW5jb2RlZCk7 CiAgICAgfQogICB9CiAKQEAgLTU3NTMsNyArNTc1NSw3IEBAIGFkYV9tYWtl X3N5bWJvbF9jb21wbGV0aW9uX2xpc3QgKGNoYXIgKnRleHQwLCBjaGFyICp3 b3JkKQogICAgIHsKICAgICAgIHN5bWJvbF9jb21wbGV0aW9uX2FkZCAoJmNv bXBsZXRpb25zLCBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LCB0ZXh0X2xlbiwgdGV4dDAs IHdvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRfbWF0 Y2gsIGVuY29kZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3 aWxkX21vZGVfZmxhZywgZW5jb2RlZCk7CiAgICAgfQogICB9CiAKQEAgLTY0 NTAsMTAgKzY0NTIsMTAgQEAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqYWRhX2lu ZGV4X3N0cnVjdF9maWVsZF8xIChpbnQgKiwgc3RydWN0IHZhbHVlICosCiAg KiBJZiBmb3VuZCwgcmV0dXJuIHZhbHVlLCBlbHNlIHJldHVybiBOVUxMLiAg Ki8KIAogc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi1hZGFfaW5kZXhfc3RydWN0 X2ZpZWxkIChpbnQgaW5kZXgsIHN0cnVjdCB2YWx1ZSAqYXJnLCBpbnQgb2Zm c2V0LAorYWRhX2luZGV4X3N0cnVjdF9maWVsZCAoaW50IGlkeCwgc3RydWN0 IHZhbHVlICphcmcsIGludCBvZmZzZXQsCiAJCQlzdHJ1Y3QgdHlwZSAqdHlw ZSkKIHsKLSAgcmV0dXJuIGFkYV9pbmRleF9zdHJ1Y3RfZmllbGRfMSAoJmlu ZGV4LCBhcmcsIG9mZnNldCwgdHlwZSk7CisgIHJldHVybiBhZGFfaW5kZXhf c3RydWN0X2ZpZWxkXzEgKCZpZHgsIGFyZywgb2Zmc2V0LCB0eXBlKTsKIH0K IAogCkBAIC02OTUzLDcgKzY5NTUsNyBAQCBzdGF0aWMgc3RydWN0IHN5bWJv bCAqCiBmaW5kX29sZF9zdHlsZV9yZW5hbWluZ19zeW1ib2wgKGNvbnN0IGNo YXIgKm5hbWUsIHN0cnVjdCBibG9jayAqYmxvY2spCiB7CiAgIGNvbnN0IHN0 cnVjdCBzeW1ib2wgKmZ1bmN0aW9uX3N5bSA9IGJsb2NrX2xpbmthZ2VfZnVu Y3Rpb24gKGJsb2NrKTsKLSAgY2hhciAqcmVuYW1lOworICBjaGFyICpzeW1u YW1lOwogCiAgIGlmIChmdW5jdGlvbl9zeW0gIT0gTlVMTCkKICAgICB7CkBA IC02OTg3LDIwICs2OTg5LDIwIEBAIGZpbmRfb2xkX3N0eWxlX3JlbmFtaW5n X3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGJsb2NrICpibG9j aykKIAkgIGZ1bmN0aW9uX25hbWVfbGVuIC09IDU7CiAgICAgICAgIH0KIAot ICAgICAgcmVuYW1lID0gKGNoYXIgKikgYWxsb2NhIChyZW5hbWVfbGVuICog c2l6ZW9mIChjaGFyKSk7Ci0gICAgICBzdHJuY3B5IChyZW5hbWUsIGZ1bmN0 aW9uX25hbWUsIGZ1bmN0aW9uX25hbWVfbGVuKTsKLSAgICAgIHhzbnByaW50 ZiAocmVuYW1lICsgZnVuY3Rpb25fbmFtZV9sZW4sIHJlbmFtZV9sZW4gLSBm dW5jdGlvbl9uYW1lX2xlbiwKKyAgICAgIHN5bW5hbWUgPSAoY2hhciAqKSBh bGxvY2EgKHJlbmFtZV9sZW4gKiBzaXplb2YgKGNoYXIpKTsKKyAgICAgIHN0 cm5jcHkgKHN5bW5hbWUsIGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX25hbWVf bGVuKTsKKyAgICAgIHhzbnByaW50ZiAoc3ltbmFtZSArIGZ1bmN0aW9uX25h bWVfbGVuLCByZW5hbWVfbGVuIC0gZnVuY3Rpb25fbmFtZV9sZW4sCiAJCSAi X18lc19fX1hSIiwgbmFtZSk7CiAgICAgfQogICBlbHNlCiAgICAgewogICAg ICAgY29uc3QgaW50IHJlbmFtZV9sZW4gPSBzdHJsZW4gKG5hbWUpICsgNjsK IAotICAgICAgcmVuYW1lID0gKGNoYXIgKikgYWxsb2NhIChyZW5hbWVfbGVu ICogc2l6ZW9mIChjaGFyKSk7Ci0gICAgICB4c25wcmludGYgKHJlbmFtZSwg cmVuYW1lX2xlbiAqIHNpemVvZiAoY2hhciksICIlc19fX1hSIiwgbmFtZSk7 CisgICAgICBzeW1uYW1lID0gKGNoYXIgKikgYWxsb2NhIChyZW5hbWVfbGVu ICogc2l6ZW9mIChjaGFyKSk7CisgICAgICB4c25wcmludGYgKHN5bW5hbWUs IHJlbmFtZV9sZW4gKiBzaXplb2YgKGNoYXIpLCAiJXNfX19YUiIsIG5hbWUp OwogICAgIH0KIAotICByZXR1cm4gYWRhX2ZpbmRfYW55X3N5bWJvbCAocmVu YW1lKTsKKyAgcmV0dXJuIGFkYV9maW5kX2FueV9zeW1ib2wgKHN5bW5hbWUp OwogfQogCiAvKiBCZWNhdXNlIG9mIEdOQVQgZW5jb2RpbmcgY29udmVudGlv bnMsIHNldmVyYWwgR0RCIHN5bWJvbHMgbWF5IG1hdGNoIGEKQEAgLTg2MTEs NyArODYxMyw3IEBAIG51bV9jb21wb25lbnRfc3BlY3MgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwYykKICAgIExIUyA9PSBDT05UQUlORVIpLiAg Ki8KIAogc3RhdGljIHZvaWQKLWFzc2lnbl9jb21wb25lbnQgKHN0cnVjdCB2 YWx1ZSAqY29udGFpbmVyLCBzdHJ1Y3QgdmFsdWUgKmxocywgTE9OR0VTVCBp bmRleCwKK2Fzc2lnbl9jb21wb25lbnQgKHN0cnVjdCB2YWx1ZSAqY29udGFp bmVyLCBzdHJ1Y3QgdmFsdWUgKmxocywgTE9OR0VTVCBpZHgsCiAJCSAgc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCiB7CiAgIHN0cnVjdCB2 YWx1ZSAqbWFyayA9IHZhbHVlX21hcmsgKCk7CkBAIC04NjIwLDEzICs4NjIy LDEzIEBAIGFzc2lnbl9jb21wb25lbnQgKHN0cnVjdCB2YWx1ZSAqY29udGFp bmVyLCBzdHJ1Y3QgdmFsdWUgKmxocywgTE9OR0VTVCBpbmRleCwKICAgaWYg KFRZUEVfQ09ERSAodmFsdWVfdHlwZSAobGhzKSkgPT0gVFlQRV9DT0RFX0FS UkFZKQogICAgIHsKICAgICAgIHN0cnVjdCB0eXBlICppbmRleF90eXBlID0g YnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludDsKLSAg ICAgIHN0cnVjdCB2YWx1ZSAqaW5kZXhfdmFsID0gdmFsdWVfZnJvbV9sb25n ZXN0IChpbmRleF90eXBlLCBpbmRleCk7CisgICAgICBzdHJ1Y3QgdmFsdWUg KmluZGV4X3ZhbCA9IHZhbHVlX2Zyb21fbG9uZ2VzdCAoaW5kZXhfdHlwZSwg aWR4KTsKIAogICAgICAgZWx0ID0gdW53cmFwX3ZhbHVlIChhZGFfdmFsdWVf c3Vic2NyaXB0IChsaHMsIDEsICZpbmRleF92YWwpKTsKICAgICB9CiAgIGVs c2UKICAgICB7Ci0gICAgICBlbHQgPSBhZGFfaW5kZXhfc3RydWN0X2ZpZWxk IChpbmRleCwgbGhzLCAwLCB2YWx1ZV90eXBlIChsaHMpKTsKKyAgICAgIGVs dCA9IGFkYV9pbmRleF9zdHJ1Y3RfZmllbGQgKGlkeCwgbGhzLCAwLCB2YWx1 ZV90eXBlIChsaHMpKTsKICAgICAgIGVsdCA9IGFkYV90b19maXhlZF92YWx1 ZSAodW53cmFwX3ZhbHVlIChlbHQpKTsKICAgICB9CiAKQEAgLTg2NjUsOCAr ODY2Nyw2IEBAIGFzc2lnbl9hZ2dyZWdhdGUgKHN0cnVjdCB2YWx1ZSAqY29u dGFpbmVyLAogICAqcG9zICs9IDM7CiAgIGlmIChub3NpZGUgIT0gRVZBTF9O T1JNQUwpCiAgICAgewotICAgICAgaW50IGk7Ci0KICAgICAgIGZvciAoaSA9 IDA7IGkgPCBuOyBpICs9IDEpCiAJYWRhX2V2YWx1YXRlX3N1YmV4cCAoTlVM TCwgZXhwLCBwb3MsIG5vc2lkZSk7CiAgICAgICByZXR1cm4gY29udGFpbmVy OwpAQCAtODcwNywyNiArODcwNywyNiBAQCBhc3NpZ25fYWdncmVnYXRlIChz dHJ1Y3QgdmFsdWUgKmNvbnRhaW5lciwKICAgZm9yIChpID0gMDsgaSA8IG47 IGkgKz0gMSkKICAgICB7CiAgICAgICBzd2l0Y2ggKGV4cC0+ZWx0c1sqcG9z XS5vcGNvZGUpCi0JewotCWNhc2UgT1BfQ0hPSUNFUzoKLQkgIGFnZ3JlZ2F0 ZV9hc3NpZ25fZnJvbV9jaG9pY2VzIChjb250YWluZXIsIGxocywgZXhwLCBw b3MsIGluZGljZXMsIAotCQkJCQkgJm51bV9pbmRpY2VzLCBtYXhfaW5kaWNl cywKLQkJCQkJIGxvd19pbmRleCwgaGlnaF9pbmRleCk7Ci0JICBicmVhazsK LQljYXNlIE9QX1BPU0lUSU9OQUw6Ci0JICBhZ2dyZWdhdGVfYXNzaWduX3Bv c2l0aW9uYWwgKGNvbnRhaW5lciwgbGhzLCBleHAsIHBvcywgaW5kaWNlcywK LQkJCQkgICAgICAgJm51bV9pbmRpY2VzLCBtYXhfaW5kaWNlcywKLQkJCQkg ICAgICAgbG93X2luZGV4LCBoaWdoX2luZGV4KTsKLQkgIGJyZWFrOwotCWNh c2UgT1BfT1RIRVJTOgotCSAgaWYgKGkgIT0gbi0xKQotCSAgICBlcnJvciAo XygiTWlzcGxhY2VkICdvdGhlcnMnIGNsYXVzZSIpKTsKLQkgIGFnZ3JlZ2F0 ZV9hc3NpZ25fb3RoZXJzIChjb250YWluZXIsIGxocywgZXhwLCBwb3MsIGlu ZGljZXMsIAotCQkJCSAgIG51bV9pbmRpY2VzLCBsb3dfaW5kZXgsIGhpZ2hf aW5kZXgpOwotCSAgYnJlYWs7Ci0JZGVmYXVsdDoKLQkgIGVycm9yIChfKCJJ bnRlcm5hbCBlcnJvcjogYmFkIGFnZ3JlZ2F0ZSBjbGF1c2UiKSk7Ci0JfQor ICAgICAgICB7CisgICAgICAgIGNhc2UgT1BfQ0hPSUNFUzoKKyAgICAgICAg ICBhZ2dyZWdhdGVfYXNzaWduX2Zyb21fY2hvaWNlcyAoY29udGFpbmVyLCBs aHMsIGV4cCwgcG9zLCBpbmRpY2VzLCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm51bV9pbmRpY2VzLCBtYXhfaW5kaWNl cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bG93X2luZGV4LCBoaWdoX2luZGV4KTsKKyAgICAgICAgICBicmVhazsKKyAg ICAgICAgY2FzZSBPUF9QT1NJVElPTkFMOgorICAgICAgICAgIGFnZ3JlZ2F0 ZV9hc3NpZ25fcG9zaXRpb25hbCAoY29udGFpbmVyLCBsaHMsIGV4cCwgcG9z LCBpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm51bV9pbmRpY2VzLCBtYXhfaW5kaWNlcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd19pbmRleCwgaGlnaF9p bmRleCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfT1RI RVJTOgorICAgICAgICAgIGlmIChpICE9IG4tMSkKKyAgICAgICAgICAgIGVy cm9yIChfKCJNaXNwbGFjZWQgJ290aGVycycgY2xhdXNlIikpOworICAgICAg ICAgIGFnZ3JlZ2F0ZV9hc3NpZ25fb3RoZXJzIChjb250YWluZXIsIGxocywg ZXhwLCBwb3MsIGluZGljZXMsIAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBudW1faW5kaWNlcywgbG93X2luZGV4LCBoaWdoX2luZGV4 KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJyb3I6IGJhZCBhZ2dyZWdhdGUg Y2xhdXNlIikpOworICAgICAgICB9CiAgICAgfQogCiAgIHJldHVybiBjb250 YWluZXI7CkBAIC0xMDM0NSwxNiArMTAzNDUsMTYgQEAgc3RhdGljIHN0cnVj dCB0eXBlICoKIHRvX2ZpeGVkX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpy YXdfdHlwZSwgc3RydWN0IHZhbHVlICpkdmFsKQogewogICBjaGFyICpuYW1l OwotICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlOworICBzdHJ1Y3QgdHlwZSAq YnR5cGU7CiAgIGNoYXIgKnN1YnR5cGVfaW5mbzsKIAogICBnZGJfYXNzZXJ0 IChyYXdfdHlwZSAhPSBOVUxMKTsKICAgZ2RiX2Fzc2VydCAoVFlQRV9OQU1F IChyYXdfdHlwZSkgIT0gTlVMTCk7CiAKICAgaWYgKFRZUEVfQ09ERSAocmF3 X3R5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLSAgICBiYXNlX3R5cGUgPSBU WVBFX1RBUkdFVF9UWVBFIChyYXdfdHlwZSk7CisgICAgYnR5cGUgPSBUWVBF X1RBUkdFVF9UWVBFIChyYXdfdHlwZSk7CiAgIGVsc2UKLSAgICBiYXNlX3R5 cGUgPSByYXdfdHlwZTsKKyAgICBidHlwZSA9IHJhd190eXBlOwogCiAgIG5h bWUgPSBUWVBFX05BTUUgKHJhd190eXBlKTsKICAgc3VidHlwZV9pbmZvID0g c3Ryc3RyIChuYW1lLCAiX19fWEQiKTsKQEAgLTEwNDMxLDcgKzEwNDMxLDcg QEAgdG9fZml4ZWRfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJhd190eXBl LCBzdHJ1Y3QgdmFsdWUgKmR2YWwpCiAgICAgICAgICAgICB9CiAgICAgICAg IH0KIAotICAgICAgdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChhbGxvY190 eXBlX2NvcHkgKHJhd190eXBlKSwgYmFzZV90eXBlLCBMLCBVKTsKKyAgICAg IHR5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoYWxsb2NfdHlwZV9jb3B5IChy YXdfdHlwZSksIGJ0eXBlLCBMLCBVKTsKICAgICAgIFRZUEVfTkFNRSAodHlw ZSkgPSBuYW1lOwogICAgICAgcmV0dXJuIHR5cGU7CiAgICAgfQpkaWZmIC0t Z2l0IGEvZ2RiL2FkYS12YWxwcmludC5jIGIvZ2RiL2FkYS12YWxwcmludC5j CmluZGV4IDhhNzJiOWUuLmJiZWE1ZWQgMTAwNjQ0Ci0tLSBhL2dkYi9hZGEt dmFscHJpbnQuYworKysgYi9nZGIvYWRhLXZhbHByaW50LmMKQEAgLTY3Mywx MCArNjczLDEwIEBAIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkgY29uc3Qgc3RydWN0 IHZhbHVlICpvcmlnaW5hbF92YWx1ZSwKIAkJIGNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewotICB1bnNpZ25lZCBpbnQg bGVuOworICAvKiB1bnNpZ25lZCBpbnQgbGVuOyAqLwogICBpbnQgaTsKICAg c3RydWN0IHR5cGUgKmVsdHR5cGU7Ci0gIExPTkdFU1QgdmFsOworICAvKiBM T05HRVNUIHZhbDsgKi8KICAgaW50IG9mZnNldF9hbGlnbmVkOwogCiAgIHR5 cGUgPSBhZGFfY2hlY2tfdHlwZWRlZiAodHlwZSk7CkBAIC04MjIsMzcgKzgy Miw0MCBAQCBhZGFfdmFsX3ByaW50XzEgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAl9CiAKICAgICBjYXNlIFRZUEVf Q09ERV9FTlVNOgotICAgICAgaWYgKG9wdGlvbnMtPmZvcm1hdCkKLQl7Ci0J ICB2YWxfcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodHlwZSwgdmFsYWRkciwg b2Zmc2V0X2FsaWduZWQsCi0JCQkJICAgICAgb3JpZ2luYWxfdmFsdWUsIG9w dGlvbnMsIDAsIHN0cmVhbSk7Ci0JICBicmVhazsKLQl9Ci0gICAgICBsZW4g PSBUWVBFX05GSUVMRFMgKHR5cGUpOwotICAgICAgdmFsID0gdW5wYWNrX2xv bmcgKHR5cGUsIHZhbGFkZHIgKyBvZmZzZXRfYWxpZ25lZCk7Ci0gICAgICBm b3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0JewotCSAgUVVJVDsKLQkgIGlm ICh2YWwgPT0gVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpKQotCSAgICB7 Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KLQl9Ci0gICAgICBpZiAoaSA8IGxl bikKLQl7Ci0JICBjb25zdCBjaGFyICpuYW1lID0gYWRhX2VudW1fbmFtZSAo VFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci0KLQkgIGlmIChuYW1lWzBd ID09ICdcJycpCi0JICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVs ZCAlcyIsIChsb25nKSB2YWwsIG5hbWUpOwotCSAgZWxzZQotCSAgICBmcHV0 c19maWx0ZXJlZCAobmFtZSwgc3RyZWFtKTsKLQl9Ci0gICAgICBlbHNlCi0J ewotCSAgcHJpbnRfbG9uZ2VzdCAoc3RyZWFtLCAnZCcsIDAsIHZhbCk7Ci0J fQotICAgICAgYnJlYWs7Ci0KKyAgICAgIHsKKyAgICAgICAgY29uc3QgdW5z aWduZWQgaW50IGxlbiA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CisgICAgICAg IGNvbnN0IExPTkdFU1QgdmFsICAgICAgPSB1bnBhY2tfbG9uZyAodHlwZSwg dmFsYWRkciArIG9mZnNldF9hbGlnbmVkKTsKKworCisgICAgICAgIGlmIChv cHRpb25zLT5mb3JtYXQpCisgICAgICAgICAgeworICAgICAgICAgICAgdmFs X3ByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHR5cGUsIHZhbGFkZHIsIG9mZnNl dF9hbGlnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCAwLCBzdHJlYW0pOwor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgeworICAgICAgICAg ICAgUVVJVDsKKyAgICAgICAgICAgIGlmICh2YWwgPT0gVFlQRV9GSUVMRF9C SVRQT1MgKHR5cGUsIGkpKQorICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg ICAgICAgIGlmIChpIDwgbGVuKQorICAgICAgICAgIHsKKyAgICAgICAgICAg IGNvbnN0IGNoYXIgKm5hbWUgPSBhZGFfZW51bV9uYW1lIChUWVBFX0ZJRUxE X05BTUUgKHR5cGUsIGkpKTsKKworICAgICAgICAgICAgaWYgKG5hbWVbMF0g PT0gJ1wnJykKKyAgICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiJWxkICVzIiwgKGxvbmcpIHZhbCwgbmFtZSk7CisgICAgICAgICAg ICBlbHNlCisgICAgICAgICAgICAgIGZwdXRzX2ZpbHRlcmVkIChuYW1lLCBz dHJlYW0pOworICAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAg IHsKKyAgICAgICAgICAgIHByaW50X2xvbmdlc3QgKHN0cmVhbSwgJ2QnLCAw LCB2YWwpOworICAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICB9 CiAgICAgY2FzZSBUWVBFX0NPREVfRkxBR1M6CiAgICAgICBpZiAob3B0aW9u cy0+Zm9ybWF0KQogCXZhbF9wcmludF9zY2FsYXJfZm9ybWF0dGVkICh0eXBl LCB2YWxhZGRyLCBvZmZzZXRfYWxpZ25lZCwKQEAgLTkxMiw3ICs5MTUsNyBA QCBhZGFfdmFsX3ByaW50XzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgICAgICBkZXJlZl92YWxfaW50ID0g dW5wYWNrX3BvaW50ZXIgKHR5cGUsIHZhbGFkZHIgKyBvZmZzZXRfYWxpZ25l ZCk7CiAgICAgICAgICAgaWYgKGRlcmVmX3ZhbF9pbnQgIT0gMCkKICAgICAg ICAgICAgIHsKLSAgICAgICAgICAgICAgc3RydWN0IHZhbHVlICpkZXJlZl92 YWwgPQorICAgICAgICAgICAgICBkZXJlZl92YWwgPQogICAgICAgICAgICAg ICAgIGFkYV92YWx1ZV9pbmQgKHZhbHVlX2Zyb21fcG9pbnRlcgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsb29rdXBfcG9pbnRlcl90eXBl IChlbHR0eXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVyZWZfdmFsX2ludCkpOwpkaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxpbnV4 LXRkZXAuYyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKaW5kZXggMDExOTgz OC4uODRiNThhMCAxMDA2NDQKLS0tIGEvZ2RiL2FtZDY0LWxpbnV4LXRkZXAu YworKysgYi9nZGIvYW1kNjQtbGludXgtdGRlcC5jCkBAIC0zMzksOSArMzM5 LDkgQEAgYW1kNjRfYWxsX2J1dF9pcF9yZWdpc3RlcnNfcmVjb3JkIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQogICAgcHJvY2VzcyByZWNvcmQuICAq LwogCiBzdGF0aWMgZW51bSBnZGJfc3lzY2FsbAotYW1kNjRfY2Fub25pY2Fs aXplX3N5c2NhbGwgKGVudW0gYW1kNjRfc3lzY2FsbCBzeXNjYWxsKQorYW1k NjRfY2Fub25pY2FsaXplX3N5c2NhbGwgKGVudW0gYW1kNjRfc3lzY2FsbCBz eXNjYWxsX251bWJlcikKIHsKLSAgc3dpdGNoIChzeXNjYWxsKSB7CisgIHN3 aXRjaCAoc3lzY2FsbF9udW1iZXIpIHsKICAgY2FzZSBhbWQ2NF9zeXNfcmVh ZDoKICAgICByZXR1cm4gZ2RiX3N5c19yZWFkOwogCmRpZmYgLS1naXQgYS9n ZGIvYW1kNjQtdGRlcC5jIGIvZ2RiL2FtZDY0LXRkZXAuYwppbmRleCBiODVm MjU1Li5iZDM3MGY3IDEwMDY0NAotLS0gYS9nZGIvYW1kNjQtdGRlcC5jCisr KyBiL2dkYi9hbWQ2NC10ZGVwLmMKQEAgLTg3OCwxMCArODc4LDExIEBAIGFt ZDY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sCiAgIC8qIFBhc3MgImhpZGRlbiIg YXJndW1lbnQiLiAgKi8KICAgaWYgKHN0cnVjdF9yZXR1cm4pCiAgICAgewot ICAgICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRl cCAoZ2RiYXJjaCk7CiAgICAgICAvKiBUaGUgImhpZGRlbiIgYXJndW1lbnQg aXMgcGFzc2VkIHRocm91Z2h0IHRoZSBmaXJzdCBhcmd1bWVudAogICAgICAg ICAgcmVnaXN0ZXIuICAqLwotICAgICAgY29uc3QgaW50IGFyZ19yZWdudW0g PSB0ZGVwLT5jYWxsX2R1bW15X2ludGVnZXJfcmVnc1swXTsKKyAgICAgIAor ICAgICAgY29uc3QgaW50IGFyZ19yZWdudW0gPSAKKyAgICAgICAgZ2RiYXJj aF90ZGVwIChnZGJhcmNoKS0+Y2FsbF9kdW1teV9pbnRlZ2VyX3JlZ3NbMF07 CiAKICAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgOCwgYnl0 ZV9vcmRlciwgc3RydWN0X2FkZHIpOwogICAgICAgcmVnY2FjaGVfY29va2Vk X3dyaXRlIChyZWdjYWNoZSwgYXJnX3JlZ251bSwgYnVmKTsKQEAgLTEwODIs OSArMTA4Myw5IEBAIGFtZDY0X2dldF91bnVzZWRfaW5wdXRfaW50X3JlZyAo Y29uc3Qgc3RydWN0IGFtZDY0X2luc24gKmRldGFpbHMpCiAgICAgICBpZiAo aGF2ZV9zaWIpCiAJewogCSAgaW50IGJhc2UgPSBTSUJfQkFTRV9GSUVMRCAo ZGV0YWlscy0+cmF3X2luc25bZGV0YWlscy0+bW9kcm1fb2Zmc2V0ICsgMV0p OwotCSAgaW50IGluZGV4ID0gU0lCX0lOREVYX0ZJRUxEIChkZXRhaWxzLT5y YXdfaW5zbltkZXRhaWxzLT5tb2RybV9vZmZzZXQgKyAxXSk7CisJICBpbnQg aWR4ID0gU0lCX0lOREVYX0ZJRUxEIChkZXRhaWxzLT5yYXdfaW5zbltkZXRh aWxzLT5tb2RybV9vZmZzZXQgKyAxXSk7CiAJICB1c2VkX3JlZ3NfbWFzayB8 PSAxIDw8IGJhc2U7Ci0JICB1c2VkX3JlZ3NfbWFzayB8PSAxIDw8IGluZGV4 OworCSAgdXNlZF9yZWdzX21hc2sgfD0gMSA8PCBpZHg7CiAJfQogICAgICAg ZWxzZQogCXsKZGlmZiAtLWdpdCBhL2dkYi9hbm5vdGF0ZS5jIGIvZ2RiL2Fu bm90YXRlLmMKaW5kZXggMmYwNzY5YS4uOTNjNjVhMSAxMDA2NDQKLS0tIGEv Z2RiL2Fubm90YXRlLmMKKysrIGIvZ2RiL2Fubm90YXRlLmMKQEAgLTUyMiwx MSArNTIyLDExIEBAIGFubm90YXRlX2ZyYW1lX2VuZCAodm9pZCkKIH0KIAwK IHZvaWQKLWFubm90YXRlX2FycmF5X3NlY3Rpb25fYmVnaW4gKGludCBpbmRl eCwgc3RydWN0IHR5cGUgKmVsdHR5cGUpCithbm5vdGF0ZV9hcnJheV9zZWN0 aW9uX2JlZ2luIChpbnQgaWR4LCBzdHJ1Y3QgdHlwZSAqZWx0dHlwZSkKIHsK ICAgaWYgKGFubm90YXRpb25fbGV2ZWwgPT0gMikKICAgICB7Ci0gICAgICBw cmludGZfZmlsdGVyZWQgKCgiXG5cMDMyXDAzMmFycmF5LXNlY3Rpb24tYmVn aW4gJWQgIiksIGluZGV4KTsKKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoKCJc blwwMzJcMDMyYXJyYXktc2VjdGlvbi1iZWdpbiAlZCAiKSwgaWR4KTsKICAg ICAgIHByaW50X3ZhbHVlX2ZsYWdzIChlbHR0eXBlKTsKICAgICAgIHByaW50 Zl9maWx0ZXJlZCAoKCJcbiIpKTsKICAgICB9CmRpZmYgLS1naXQgYS9nZGIv YmNhY2hlLmMgYi9nZGIvYmNhY2hlLmMKaW5kZXggNzZlMzg5My4uZjljMzFl MCAxMDA2NDQKLS0tIGEvZ2RiL2JjYWNoZS5jCisrKyBiL2dkYi9iY2FjaGUu YwpAQCAtMTMwLDcgKzEzMCw3IEBAIGhhc2hfY29udGludWUgKGNvbnN0IHZv aWQgKmFkZHIsIGludCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgaCkKICNkZWZp bmUgQ0hBSU5fTEVOR1RIX1RIUkVTSE9MRCAoNSkKIAogc3RhdGljIHZvaWQK LWV4cGFuZF9oYXNoX3RhYmxlIChzdHJ1Y3QgYmNhY2hlICpiY2FjaGUpCitl eHBhbmRfaGFzaF90YWJsZSAoc3RydWN0IGJjYWNoZSAqY2FoY2UpCiB7CiAg IC8qIEEgdGFibGUgb2YgZ29vZCBoYXNoIHRhYmxlIHNpemVzLiAgV2hlbmV2 ZXIgd2UgZ3Jvdywgd2UgcGljayB0aGUKICAgICAgbmV4dCBsYXJnZXIgc2l6 ZSBmcm9tIHRoaXMgdGFibGUuICBzaXplc1tpXSBpcyBjbG9zZSB0byAxIDw8 IChpKzEwKSwKQEAgLTE0OSwxMyArMTQ5LDEzIEBAIGV4cGFuZF9oYXNoX3Rh YmxlIChzdHJ1Y3QgYmNhY2hlICpiY2FjaGUpCiAKICAgLyogQ291bnQgdGhl IHN0YXRzLiAgRXZlcnkgdW5pcXVlIGl0ZW0gbmVlZHMgdG8gYmUgcmUtaGFz aGVkIGFuZAogICAgICByZS1lbnRlcmVkLiAgKi8KLSAgYmNhY2hlLT5leHBh bmRfY291bnQrKzsKLSAgYmNhY2hlLT5leHBhbmRfaGFzaF9jb3VudCArPSBi Y2FjaGUtPnVuaXF1ZV9jb3VudDsKKyAgY2FoY2UtPmV4cGFuZF9jb3VudCsr OworICBjYWhjZS0+ZXhwYW5kX2hhc2hfY291bnQgKz0gY2FoY2UtPnVuaXF1 ZV9jb3VudDsKIAogICAvKiBGaW5kIHRoZSBuZXh0IHNpemUuICAqLwotICBu ZXdfbnVtX2J1Y2tldHMgPSBiY2FjaGUtPm51bV9idWNrZXRzICogMjsKKyAg bmV3X251bV9idWNrZXRzID0gY2FoY2UtPm51bV9idWNrZXRzICogMjsKICAg Zm9yIChpID0gMDsgaSA8IChzaXplb2YgKHNpemVzKSAvIHNpemVvZiAoc2l6 ZXNbMF0pKTsgaSsrKQotICAgIGlmIChzaXplc1tpXSA+IGJjYWNoZS0+bnVt X2J1Y2tldHMpCisgICAgaWYgKHNpemVzW2ldID4gY2FoY2UtPm51bV9idWNr ZXRzKQogICAgICAgewogCW5ld19udW1fYnVja2V0cyA9IHNpemVzW2ldOwog CWJyZWFrOwpAQCAtMTY4LDIyICsxNjgsMjIgQEAgZXhwYW5kX2hhc2hfdGFi bGUgKHN0cnVjdCBiY2FjaGUgKmJjYWNoZSkKICAgICBuZXdfYnVja2V0cyA9 IChzdHJ1Y3QgYnN0cmluZyAqKikgeG1hbGxvYyAobmV3X3NpemUpOwogICAg IG1lbXNldCAobmV3X2J1Y2tldHMsIDAsIG5ld19zaXplKTsKIAotICAgIGJj YWNoZS0+c3RydWN0dXJlX3NpemUgLT0gKGJjYWNoZS0+bnVtX2J1Y2tldHMK LQkJCSAgICAgICAqIHNpemVvZiAoYmNhY2hlLT5idWNrZXRbMF0pKTsKLSAg ICBiY2FjaGUtPnN0cnVjdHVyZV9zaXplICs9IG5ld19zaXplOworICAgIGNh aGNlLT5zdHJ1Y3R1cmVfc2l6ZSAtPSAoY2FoY2UtPm51bV9idWNrZXRzCisJ CQkgICAgICAgKiBzaXplb2YgKGNhaGNlLT5idWNrZXRbMF0pKTsKKyAgICBj YWhjZS0+c3RydWN0dXJlX3NpemUgKz0gbmV3X3NpemU7CiAgIH0KIAogICAv KiBSZWhhc2ggYWxsIGV4aXN0aW5nIHN0cmluZ3MuICAqLwotICBmb3IgKGkg PSAwOyBpIDwgYmNhY2hlLT5udW1fYnVja2V0czsgaSsrKQorICBmb3IgKGkg PSAwOyBpIDwgY2FoY2UtPm51bV9idWNrZXRzOyBpKyspCiAgICAgewogICAg ICAgc3RydWN0IGJzdHJpbmcgKnMsICpuZXh0OwogCi0gICAgICBmb3IgKHMg PSBiY2FjaGUtPmJ1Y2tldFtpXTsgczsgcyA9IG5leHQpCisgICAgICBmb3Ig KHMgPSBjYWhjZS0+YnVja2V0W2ldOyBzOyBzID0gbmV4dCkKIAl7CiAJICBz dHJ1Y3QgYnN0cmluZyAqKm5ld19idWNrZXQ7CiAJICBuZXh0ID0gcy0+bmV4 dDsKIAotCSAgbmV3X2J1Y2tldCA9ICZuZXdfYnVja2V0c1soYmNhY2hlLT5o YXNoX2Z1bmN0aW9uICgmcy0+ZC5kYXRhLAorCSAgbmV3X2J1Y2tldCA9ICZu ZXdfYnVja2V0c1soY2FoY2UtPmhhc2hfZnVuY3Rpb24gKCZzLT5kLmRhdGEs CiAJCQkJCQkJICAgIHMtPmxlbmd0aCkKIAkJCQkgICAgICUgbmV3X251bV9i dWNrZXRzKV07CiAJICBzLT5uZXh0ID0gKm5ld19idWNrZXQ7CkBAIC0xOTIs MTAgKzE5MiwxMCBAQCBleHBhbmRfaGFzaF90YWJsZSAoc3RydWN0IGJjYWNo ZSAqYmNhY2hlKQogICAgIH0KIAogICAvKiBQbHVnIGluIHRoZSBuZXcgdGFi bGUuICAqLwotICBpZiAoYmNhY2hlLT5idWNrZXQpCi0gICAgeGZyZWUgKGJj YWNoZS0+YnVja2V0KTsKLSAgYmNhY2hlLT5idWNrZXQgPSBuZXdfYnVja2V0 czsKLSAgYmNhY2hlLT5udW1fYnVja2V0cyA9IG5ld19udW1fYnVja2V0czsK KyAgaWYgKGNhaGNlLT5idWNrZXQpCisgICAgeGZyZWUgKGNhaGNlLT5idWNr ZXQpOworICBjYWhjZS0+YnVja2V0ID0gbmV3X2J1Y2tldHM7CisgIGNhaGNl LT5udW1fYnVja2V0cyA9IG5ld19udW1fYnVja2V0czsKIH0KIAogDApAQCAt MjA5LDkgKzIwOSw5IEBAIGV4cGFuZF9oYXNoX3RhYmxlIChzdHJ1Y3QgYmNh Y2hlICpiY2FjaGUpCiAgICBuZXZlciBzZWVuIHRob3NlIGJ5dGVzIGJlZm9y ZSwgYWRkIGEgY29weSBvZiB0aGVtIHRvIEJDQUNIRS4gIEluCiAgICBlaXRo ZXIgY2FzZSwgcmV0dXJuIGEgcG9pbnRlciB0byBCQ0FDSEUncyBjb3B5IG9m IHRoYXQgc3RyaW5nLiAgKi8KIGNvbnN0IHZvaWQgKgotYmNhY2hlIChjb25z dCB2b2lkICphZGRyLCBpbnQgbGVuZ3RoLCBzdHJ1Y3QgYmNhY2hlICpiY2Fj aGUpCitiY2FjaGUgKGNvbnN0IHZvaWQgKmFkZHIsIGludCBsZW5ndGgsIHN0 cnVjdCBiY2FjaGUgKmNhaGNlKQogewotICByZXR1cm4gYmNhY2hlX2Z1bGwg KGFkZHIsIGxlbmd0aCwgYmNhY2hlLCBOVUxMKTsKKyAgcmV0dXJuIGJjYWNo ZV9mdWxsIChhZGRyLCBsZW5ndGgsIGNhaGNlLCBOVUxMKTsKIH0KIAogLyog RmluZCBhIGNvcHkgb2YgdGhlIExFTkdUSCBieXRlcyBhdCBBRERSIGluIEJD QUNIRS4gIElmIEJDQUNIRSBoYXMKQEAgLTIyMSw3ICsyMjEsNyBAQCBiY2Fj aGUgKGNvbnN0IHZvaWQgKmFkZHIsIGludCBsZW5ndGgsIHN0cnVjdCBiY2Fj aGUgKmJjYWNoZSkKICAgIHJldHVybmluZyBhbiBvbGQgZW50cnkuICAqLwog CiBjb25zdCB2b2lkICoKLWJjYWNoZV9mdWxsIChjb25zdCB2b2lkICphZGRy LCBpbnQgbGVuZ3RoLCBzdHJ1Y3QgYmNhY2hlICpiY2FjaGUsIGludCAqYWRk ZWQpCitiY2FjaGVfZnVsbCAoY29uc3Qgdm9pZCAqYWRkciwgaW50IGxlbmd0 aCwgc3RydWN0IGJjYWNoZSAqY2FoY2UsIGludCAqYWRkZWQpCiB7CiAgIHVu c2lnbmVkIGxvbmcgZnVsbF9oYXNoOwogICB1bnNpZ25lZCBzaG9ydCBoYWxm X2hhc2g7CkBAIC0yMzMsNTUgKzIzMyw1NSBAQCBiY2FjaGVfZnVsbCAoY29u c3Qgdm9pZCAqYWRkciwgaW50IGxlbmd0aCwgc3RydWN0IGJjYWNoZSAqYmNh Y2hlLCBpbnQgKmFkZGVkKQogCiAgIC8qIExhemlseSBpbml0aWFsaXplIHRo ZSBvYnN0YWNrLiAgVGhpcyBjYW4gc2F2ZSBxdWl0ZSBhIGJpdCBvZgogICAg ICBtZW1vcnkgaW4gc29tZSBjYXNlcy4gICovCi0gIGlmIChiY2FjaGUtPnRv dGFsX2NvdW50ID09IDApCisgIGlmIChjYWhjZS0+dG90YWxfY291bnQgPT0g MCkKICAgICB7CiAgICAgICAvKiBXZSBjb3VsZCB1c2Ugb2JzdGFja19zcGVj aWZ5X2FsbG9jYXRpb24gaGVyZSBpbnN0ZWFkLCBidXQKIAkgZ2RiX29ic3Rh Y2suaCBzcGVjaWZpZXMgdGhlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uCiAJ IGZ1bmN0aW9ucy4gICovCi0gICAgICBvYnN0YWNrX2luaXQgKCZiY2FjaGUt PmNhY2hlKTsKKyAgICAgIG9ic3RhY2tfaW5pdCAoJmNhaGNlLT5jYWNoZSk7 CiAgICAgfQogCiAgIC8qIElmIG91ciBhdmVyYWdlIGNoYWluIGxlbmd0aCBp cyB0b28gaGlnaCwgZXhwYW5kIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAgaWYg KGJjYWNoZS0+dW5pcXVlX2NvdW50ID49IGJjYWNoZS0+bnVtX2J1Y2tldHMg KiBDSEFJTl9MRU5HVEhfVEhSRVNIT0xEKQotICAgIGV4cGFuZF9oYXNoX3Rh YmxlIChiY2FjaGUpOworICBpZiAoY2FoY2UtPnVuaXF1ZV9jb3VudCA+PSBj YWhjZS0+bnVtX2J1Y2tldHMgKiBDSEFJTl9MRU5HVEhfVEhSRVNIT0xEKQor ICAgIGV4cGFuZF9oYXNoX3RhYmxlIChjYWhjZSk7CiAKLSAgYmNhY2hlLT50 b3RhbF9jb3VudCsrOwotICBiY2FjaGUtPnRvdGFsX3NpemUgKz0gbGVuZ3Ro OworICBjYWhjZS0+dG90YWxfY291bnQrKzsKKyAgY2FoY2UtPnRvdGFsX3Np emUgKz0gbGVuZ3RoOwogCi0gIGZ1bGxfaGFzaCA9IGJjYWNoZS0+aGFzaF9m dW5jdGlvbiAoYWRkciwgbGVuZ3RoKTsKKyAgZnVsbF9oYXNoID0gY2FoY2Ut Pmhhc2hfZnVuY3Rpb24gKGFkZHIsIGxlbmd0aCk7CiAKICAgaGFsZl9oYXNo ID0gKGZ1bGxfaGFzaCA+PiAxNik7Ci0gIGhhc2hfaW5kZXggPSBmdWxsX2hh c2ggJSBiY2FjaGUtPm51bV9idWNrZXRzOworICBoYXNoX2luZGV4ID0gZnVs bF9oYXNoICUgY2FoY2UtPm51bV9idWNrZXRzOwogCiAgIC8qIFNlYXJjaCB0 aGUgaGFzaCBidWNrZXQgZm9yIGEgc3RyaW5nIGlkZW50aWNhbCB0byB0aGUg Y2FsbGVyJ3MuCiAgICAgIEFzIGEgc2hvcnQtY2lyY3VpdCBmaXJzdCBjb21w YXJlIHRoZSB1cHBlciBwYXJ0IG9mIGVhY2ggaGFzaAogICAgICB2YWx1ZXMu ICAqLwotICBmb3IgKHMgPSBiY2FjaGUtPmJ1Y2tldFtoYXNoX2luZGV4XTsg czsgcyA9IHMtPm5leHQpCisgIGZvciAocyA9IGNhaGNlLT5idWNrZXRbaGFz aF9pbmRleF07IHM7IHMgPSBzLT5uZXh0KQogICAgIHsKICAgICAgIGlmIChz LT5oYWxmX2hhc2ggPT0gaGFsZl9oYXNoKQogCXsKIAkgIGlmIChzLT5sZW5n dGggPT0gbGVuZ3RoCi0JICAgICAgJiYgYmNhY2hlLT5jb21wYXJlX2Z1bmN0 aW9uICgmcy0+ZC5kYXRhLCBhZGRyLCBsZW5ndGgpKQorCSAgICAgICYmIGNh aGNlLT5jb21wYXJlX2Z1bmN0aW9uICgmcy0+ZC5kYXRhLCBhZGRyLCBsZW5n dGgpKQogCSAgICByZXR1cm4gJnMtPmQuZGF0YTsKIAkgIGVsc2UKLQkgICAg YmNhY2hlLT5oYWxmX2hhc2hfbWlzc19jb3VudCsrOworCSAgICBjYWhjZS0+ aGFsZl9oYXNoX21pc3NfY291bnQrKzsKIAl9CiAgICAgfQogCiAgIC8qIFRo ZSB1c2VyJ3Mgc3RyaW5nIGlzbid0IGluIHRoZSBsaXN0LiAgSW5zZXJ0IGl0 IGFmdGVyICpwcy4gICovCiAgIHsKICAgICBzdHJ1Y3QgYnN0cmluZyAqbmV3 Ci0gICAgICA9IG9ic3RhY2tfYWxsb2MgKCZiY2FjaGUtPmNhY2hlLCBCU1RS SU5HX1NJWkUgKGxlbmd0aCkpOworICAgICAgPSBvYnN0YWNrX2FsbG9jICgm Y2FoY2UtPmNhY2hlLCBCU1RSSU5HX1NJWkUgKGxlbmd0aCkpOwogCiAgICAg bWVtY3B5ICgmbmV3LT5kLmRhdGEsIGFkZHIsIGxlbmd0aCk7CiAgICAgbmV3 LT5sZW5ndGggPSBsZW5ndGg7Ci0gICAgbmV3LT5uZXh0ID0gYmNhY2hlLT5i dWNrZXRbaGFzaF9pbmRleF07CisgICAgbmV3LT5uZXh0ID0gY2FoY2UtPmJ1 Y2tldFtoYXNoX2luZGV4XTsKICAgICBuZXctPmhhbGZfaGFzaCA9IGhhbGZf aGFzaDsKLSAgICBiY2FjaGUtPmJ1Y2tldFtoYXNoX2luZGV4XSA9IG5ldzsK KyAgICBjYWhjZS0+YnVja2V0W2hhc2hfaW5kZXhdID0gbmV3OwogCi0gICAg YmNhY2hlLT51bmlxdWVfY291bnQrKzsKLSAgICBiY2FjaGUtPnVuaXF1ZV9z aXplICs9IGxlbmd0aDsKLSAgICBiY2FjaGUtPnN0cnVjdHVyZV9zaXplICs9 IEJTVFJJTkdfU0laRSAobGVuZ3RoKTsKKyAgICBjYWhjZS0+dW5pcXVlX2Nv dW50Kys7CisgICAgY2FoY2UtPnVuaXF1ZV9zaXplICs9IGxlbmd0aDsKKyAg ICBjYWhjZS0+c3RydWN0dXJlX3NpemUgKz0gQlNUUklOR19TSVpFIChsZW5n dGgpOwogCiAgICAgaWYgKGFkZGVkKQogICAgICAgKmFkZGVkID0gMTsKQEAg LTMzMCwxNSArMzMwLDE1IEBAIGJjYWNoZV94bWFsbG9jICh1bnNpZ25lZCBs b25nICgqaGFzaF9mdW5jdGlvbikoY29uc3Qgdm9pZCAqLCBpbnQgbGVuZ3Ro KSwKIAogLyogRnJlZSBhbGwgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRo IEJDQUNIRS4gICovCiB2b2lkCi1iY2FjaGVfeGZyZWUgKHN0cnVjdCBiY2Fj aGUgKmJjYWNoZSkKK2JjYWNoZV94ZnJlZSAoc3RydWN0IGJjYWNoZSAqY2Fo Y2UpCiB7Ci0gIGlmIChiY2FjaGUgPT0gTlVMTCkKKyAgaWYgKGNhaGNlID09 IE5VTEwpCiAgICAgcmV0dXJuOwogICAvKiBPbmx5IGZyZWUgdGhlIG9ic3Rh Y2sgaWYgd2UgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgaXQuICAqLwotICBpZiAo YmNhY2hlLT50b3RhbF9jb3VudCA+IDApCi0gICAgb2JzdGFja19mcmVlICgm YmNhY2hlLT5jYWNoZSwgMCk7Ci0gIHhmcmVlIChiY2FjaGUtPmJ1Y2tldCk7 Ci0gIHhmcmVlIChiY2FjaGUpOworICBpZiAoY2FoY2UtPnRvdGFsX2NvdW50 ID4gMCkKKyAgICBvYnN0YWNrX2ZyZWUgKCZjYWhjZS0+Y2FjaGUsIDApOwor ICB4ZnJlZSAoY2FoY2UtPmJ1Y2tldCk7CisgIHhmcmVlIChjYWhjZSk7CiB9 CiAKIApAQCAtNDg4LDkgKzQ4OCw5IEBAIFRvdGFsIG1lbW9yeSB1c2VkIGJ5 IGJjYWNoZSwgaW5jbHVkaW5nIG92ZXJoZWFkOiAlbGRcbiIpLAogfQogCiBp bnQKLWJjYWNoZV9tZW1vcnlfdXNlZCAoc3RydWN0IGJjYWNoZSAqYmNhY2hl KQorYmNhY2hlX21lbW9yeV91c2VkIChzdHJ1Y3QgYmNhY2hlICpjYWhjZSkK IHsKLSAgaWYgKGJjYWNoZS0+dG90YWxfY291bnQgPT0gMCkKKyAgaWYgKGNh aGNlLT50b3RhbF9jb3VudCA9PSAwKQogICAgIHJldHVybiAwOwotICByZXR1 cm4gb2JzdGFja19tZW1vcnlfdXNlZCAoJmJjYWNoZS0+Y2FjaGUpOworICBy ZXR1cm4gb2JzdGFja19tZW1vcnlfdXNlZCAoJmNhaGNlLT5jYWNoZSk7CiB9 CmRpZmYgLS1naXQgYS9nZGIvYmZkLXRhcmdldC5jIGIvZ2RiL2JmZC10YXJn ZXQuYwppbmRleCBjZmViMGIxLi5kMWM4Y2FmIDEwMDY0NAotLS0gYS9nZGIv YmZkLXRhcmdldC5jCisrKyBiL2dkYi9iZmQtdGFyZ2V0LmMKQEAgLTc4LDE0 ICs3OCwxNCBAQCB0YXJnZXRfYmZkX3hjbG9zZSAoc3RydWN0IHRhcmdldF9v cHMgKnQsIGludCBxdWl0dGluZykKIH0KIAogc3RydWN0IHRhcmdldF9vcHMg KgotdGFyZ2V0X2JmZF9yZW9wZW4gKHN0cnVjdCBiZmQgKmJmZCkKK3Rhcmdl dF9iZmRfcmVvcGVuIChzdHJ1Y3QgYmZkICpiaW5hcnlfZGVzY3IpCiB7CiAg IHN0cnVjdCB0YXJnZXRfb3BzICp0OwogICBzdHJ1Y3QgdGFyZ2V0X2JmZF9k YXRhICpkYXRhOwogCiAgIGRhdGEgPSBYWkFMTE9DIChzdHJ1Y3QgdGFyZ2V0 X2JmZF9kYXRhKTsKLSAgZGF0YS0+YmZkID0gYmZkOwotICBidWlsZF9zZWN0 aW9uX3RhYmxlIChiZmQsICZkYXRhLT50YWJsZS5zZWN0aW9ucywgJmRhdGEt PnRhYmxlLnNlY3Rpb25zX2VuZCk7CisgIGRhdGEtPmJmZCA9IGJpbmFyeV9k ZXNjcjsKKyAgYnVpbGRfc2VjdGlvbl90YWJsZSAoYmluYXJ5X2Rlc2NyLCAm ZGF0YS0+dGFibGUuc2VjdGlvbnMsICZkYXRhLT50YWJsZS5zZWN0aW9uc19l bmQpOwogCiAgIHQgPSBYWkFMTE9DIChzdHJ1Y3QgdGFyZ2V0X29wcyk7CiAg IHQtPnRvX3Nob3J0bmFtZSA9ICJiZmQiOwpkaWZmIC0tZ2l0IGEvZ2RiL2Jy ZWFrcG9pbnQuYyBiL2dkYi9icmVha3BvaW50LmMKaW5kZXggYmExYjA4Zi4u MWQ4MmVmYyAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysgYi9n ZGIvYnJlYWtwb2ludC5jCkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBpbnNlcnRf YnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCiB7CiAgIHN0cnVjdCBicmVh a3BvaW50ICpicHQ7CiAgIHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsICoqYmxw X3RtcDsKLSAgaW50IGVycm9yID0gMDsKKyAgaW50IGVycm9yX2ZsYWcgPSAw OwogICBpbnQgdmFsID0gMDsKICAgaW50IGRpc2FibGVkX2JyZWFrcyA9IDA7 CiAgIGludCBod19icmVha3BvaW50X2Vycm9yID0gMDsKQEAgLTE5OTIsNyAr MTk5Miw3IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkK ICAgICAgIHZhbCA9IGluc2VydF9icF9sb2NhdGlvbiAoYmwsIHRtcF9lcnJv cl9zdHJlYW0sICZkaXNhYmxlZF9icmVha3MsCiAJCQkJICAgICZod19icmVh a3BvaW50X2Vycm9yKTsKICAgICAgIGlmICh2YWwpCi0JZXJyb3IgPSB2YWw7 CisJZXJyb3JfZmxhZyA9IHZhbDsKICAgICB9CiAKICAgLyogSWYgd2UgZmFp bGVkIHRvIGluc2VydCBhbGwgbG9jYXRpb25zIG9mIGEgd2F0Y2hwb2ludCwg cmVtb3ZlCkBAIC0yMDI3LDExICsyMDI3LDExIEBAIGluc2VydF9icmVha3Bv aW50X2xvY2F0aW9ucyAodm9pZCkKIAkgIGZwcmludGZfdW5maWx0ZXJlZCAo dG1wX2Vycm9yX3N0cmVhbSwKIAkJCSAgICAgICJDb3VsZCBub3QgaW5zZXJ0 IGhhcmR3YXJlIHdhdGNocG9pbnQgJWQuXG4iLCAKIAkJCSAgICAgIGJwdC0+ bnVtYmVyKTsKLQkgIGVycm9yID0gLTE7CisJICBlcnJvcl9mbGFnID0gLTE7 CiAJfQogICAgIH0KIAotICBpZiAoZXJyb3IpCisgIGlmIChlcnJvcl9mbGFn KQogICAgIHsKICAgICAgIC8qIElmIGEgaGFyZHdhcmUgYnJlYWtwb2ludCBv ciB3YXRjaHBvaW50IHdhcyBpbnNlcnRlZCwgYWRkIGEKICAgICAgICAgIG1l c3NhZ2UgYWJvdXQgcG9zc2libHkgZXhoYXVzdGVkIHJlc291cmNlcy4gICov CkBAIC03MTUxLDcgKzcxNTEsNyBAQCBicF9sb2NfaXNfcGVybWFuZW50IChz dHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKIHsKICAgaW50IGxlbjsKICAgQ09S RV9BRERSIGFkZHI7Ci0gIGNvbnN0IGdkYl9ieXRlICpicms7CisgIGNvbnN0 IGdkYl9ieXRlICpicG9pbnQ7CiAgIGdkYl9ieXRlICp0YXJnZXRfbWVtOwog ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKICAgaW50IHJldHZhbCA9IDA7 CkBAIC03MTU5LDEwICs3MTU5LDEwIEBAIGJwX2xvY19pc19wZXJtYW5lbnQg KHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQogICBnZGJfYXNzZXJ0IChsb2Mg IT0gTlVMTCk7CiAKICAgYWRkciA9IGxvYy0+YWRkcmVzczsKLSAgYnJrID0g Z2RiYXJjaF9icmVha3BvaW50X2Zyb21fcGMgKGxvYy0+Z2RiYXJjaCwgJmFk ZHIsICZsZW4pOworICBicG9pbnQgPSBnZGJhcmNoX2JyZWFrcG9pbnRfZnJv bV9wYyAobG9jLT5nZGJhcmNoLCAmYWRkciwgJmxlbik7CiAKICAgLyogU29m dHdhcmUgYnJlYWtwb2ludHMgdW5zdXBwb3J0ZWQ/ICAqLwotICBpZiAoYnJr ID09IE5VTEwpCisgIGlmIChicG9pbnQgPT0gTlVMTCkKICAgICByZXR1cm4g MDsKIAogICB0YXJnZXRfbWVtID0gYWxsb2NhIChsZW4pOwpAQCAtNzE3Niw3 ICs3MTc2LDcgQEAgYnBfbG9jX2lzX3Blcm1hbmVudCAoc3RydWN0IGJwX2xv Y2F0aW9uICpsb2MpCiAgIG1ha2Vfc2hvd19tZW1vcnlfYnJlYWtwb2ludHNf Y2xlYW51cCAoMCk7CiAKICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAobG9j LT5hZGRyZXNzLCB0YXJnZXRfbWVtLCBsZW4pID09IDAKLSAgICAgICYmIG1l bWNtcCAodGFyZ2V0X21lbSwgYnJrLCBsZW4pID09IDApCisgICAgICAmJiBt ZW1jbXAgKHRhcmdldF9tZW0sIGJwb2ludCwgbGVuKSA9PSAwKQogICAgIHJl dHZhbCA9IDE7CiAKICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwpAQCAtNzIw Myw4ICs3MjAzLDEwIEBAIGluaXRfYnJlYWtwb2ludF9zYWwgKHN0cnVjdCBi cmVha3BvaW50ICpiLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAogICBp ZiAodHlwZSA9PSBicF9oYXJkd2FyZV9icmVha3BvaW50KQogICAgIHsKLSAg ICAgIGludCBpID0gaHdfYnJlYWtwb2ludF91c2VkX2NvdW50ICgpOwotICAg ICAgaW50IHRhcmdldF9yZXNvdXJjZXNfb2sgPSAKKyAgICAgIGludCB0YXJn ZXRfcmVzb3VyY2VzX29rOworCisgICAgICBpID0gaHdfYnJlYWtwb2ludF91 c2VkX2NvdW50ICgpOworICAgICAgdGFyZ2V0X3Jlc291cmNlc19vayA9IAog CXRhcmdldF9jYW5fdXNlX2hhcmR3YXJlX3dhdGNocG9pbnQgKGJwX2hhcmR3 YXJlX2JyZWFrcG9pbnQsIAogCQkJCQkgICAgaSArIDEsIDApOwogICAgICAg aWYgKHRhcmdldF9yZXNvdXJjZXNfb2sgPT0gMCkKQEAgLTcyNTQsNyArNzI1 Niw2IEBAIGluaXRfYnJlYWtwb2ludF9zYWwgKHN0cnVjdCBicmVha3BvaW50 ICpiLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAkJICBjaGFyICpwID0g JmFkZHJfc3RyaW5nWzNdOwogCQkgIGNoYXIgKmVuZHA7CiAJCSAgY2hhciAq bWFya2VyX3N0cjsKLQkJICBpbnQgaTsKIAogCQkgIHAgPSBza2lwX3NwYWNl cyAocCk7CiAKQEAgLTc3ODQsNyArNzc4NSw3IEBAIGNyZWF0ZV9icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAkJICAgaW50IHBhcnNl X2NvbmRpdGlvbl9hbmRfdGhyZWFkLAogCQkgICBpbnQgdGVtcGZsYWcsIGVu dW0gYnB0eXBlIHR5cGVfd2FudGVkLAogCQkgICBpbnQgaWdub3JlX2NvdW50 LAotCQkgICBlbnVtIGF1dG9fYm9vbGVhbiBwZW5kaW5nX2JyZWFrX3N1cHBv cnQsCisJCSAgIGVudW0gYXV0b19ib29sZWFuIHBlbmRpbmdfYnJlYWtfc3Vw cG9ydF90eXBlLAogCQkgICBjb25zdCBzdHJ1Y3QgYnJlYWtwb2ludF9vcHMg Km9wcywKIAkJICAgaW50IGZyb21fdHR5LCBpbnQgZW5hYmxlZCwgaW50IGlu dGVybmFsKQogewpAQCAtNzgwOSw3ICs3ODEwLDcgQEAgY3JlYXRlX2JyZWFr cG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogCiAgIGlmICh0eXBl X3dhbnRlZCA9PSBicF9zdGF0aWNfdHJhY2Vwb2ludCAmJiBpc19tYXJrZXJf c3BlYyAoYXJnKSkKICAgICB7Ci0gICAgICBpbnQgaTsKKwogCiAgICAgICBz YWxzID0gZGVjb2RlX3N0YXRpY190cmFjZXBvaW50X3NwZWMgKCZhcmcpOwog CkBAIC03ODM4LDE0ICs3ODM5LDE0IEBAIGNyZWF0ZV9icmVha3BvaW50IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAkgIC8qIElmIHBlbmRpbmcgYnJl YWtwb2ludCBzdXBwb3J0IGlzIHR1cm5lZCBvZmYsIHRocm93CiAJICAgICBl cnJvci4gICovCiAKLQkgIGlmIChwZW5kaW5nX2JyZWFrX3N1cHBvcnQgPT0g QVVUT19CT09MRUFOX0ZBTFNFKQorCSAgaWYgKHBlbmRpbmdfYnJlYWtfc3Vw cG9ydF90eXBlID09IEFVVE9fQk9PTEVBTl9GQUxTRSkKIAkgICAgdGhyb3df ZXhjZXB0aW9uIChlKTsKIAogCSAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3Rk ZXJyLCBlKTsKIAogICAgICAgICAgIC8qIElmIHBlbmRpbmcgYnJlYWtwb2lu dCBzdXBwb3J0IGlzIGF1dG8gcXVlcnkgYW5kIHRoZSB1c2VyCiAJICAgICBz ZWxlY3RzIG5vLCB0aGVuIHNpbXBseSByZXR1cm4gdGhlIGVycm9yIGNvZGUu ICAqLwotCSAgaWYgKHBlbmRpbmdfYnJlYWtfc3VwcG9ydCA9PSBBVVRPX0JP T0xFQU5fQVVUTworCSAgaWYgKHBlbmRpbmdfYnJlYWtfc3VwcG9ydF90eXBl ID09IEFVVE9fQk9PTEVBTl9BVVRPCiAJICAgICAgJiYgIW5xdWVyeSAoXygi TWFrZSBicmVha3BvaW50IHBlbmRpbmcgb24gIgogCQkJICAgICJmdXR1cmUg c2hhcmVkIGxpYnJhcnkgbG9hZD8gIikpKQogCSAgICByZXR1cm4gMDsKQEAg LTc5NDQsMTggKzc5NDUsMTcgQEAgY3JlYXRlX2JyZWFrcG9pbnQgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAogICAgICAgaWYgKHR5cGVfd2FudGVkID09 IGJwX3N0YXRpY190cmFjZXBvaW50CiAJICAmJiBpc19tYXJrZXJfc3BlYyAo Y2Fub25pY2FsLmNhbm9uaWNhbFswXSkpCiAJewotCSAgaW50IGk7CiAKIAkg IGZvciAoaSA9IDA7IGkgPCBzYWxzLm5lbHRzOyArK2kpCiAJICAgIHsKIAkg ICAgICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgZXhwYW5kZWQ7CiAJICAg ICAgc3RydWN0IHRyYWNlcG9pbnQgKnRwOwotCSAgICAgIHN0cnVjdCBjbGVh bnVwICpvbGRfY2hhaW47CisJICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9j aGFpbl9jbGVhbnVwOwogCiAJICAgICAgZXhwYW5kZWQubmVsdHMgPSAxOwog CSAgICAgIGV4cGFuZGVkLnNhbHMgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVj dCBzeW10YWJfYW5kX2xpbmUpKTsKIAkgICAgICBleHBhbmRlZC5zYWxzWzBd ID0gc2Fscy5zYWxzW2ldOwotCSAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xl YW51cCAoeGZyZWUsIGV4cGFuZGVkLnNhbHMpOworCSAgICAgIG9sZF9jaGFp bl9jbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZXhwYW5kZWQuc2Fs cyk7CiAKIAkgICAgICB0cCA9IFhDTkVXIChzdHJ1Y3QgdHJhY2Vwb2ludCk7 CiAJICAgICAgaW5pdF9icmVha3BvaW50X3NhbCAoJnRwLT5iYXNlLCBnZGJh cmNoLCBleHBhbmRlZCwKQEAgLTc5NzUsNyArNzk3NSw3IEBAIGNyZWF0ZV9i cmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAogCSAgICAg IGluc3RhbGxfYnJlYWtwb2ludCAoaW50ZXJuYWwsICZ0cC0+YmFzZSk7CiAK LQkgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKwkgICAgICBkb19j bGVhbnVwcyAob2xkX2NoYWluX2NsZWFudXApOwogCSAgICB9CiAJfQogICAg ICAgZWxzZQpAQCAtOTE4NywxNyArOTE4NywxNyBAQCB3YXRjaF9jb21tYW5k XzEgKGNoYXIgKmFyZywgaW50IGFjY2Vzc2ZsYWcsIGludCBmcm9tX3R0eSwK IAkgICAgICAvKiBXZSd2ZSBmb3VuZCBhICJtYXNrIiB0b2tlbiwgd2hpY2gg bWVhbnMgdGhlIHVzZXIgd2FudHMgdG8KIAkJIGNyZWF0ZSBhIGhhcmR3YXJl IHdhdGNocG9pbnQgdGhhdCBpcyBnb2luZyB0byBoYXZlIHRoZSBtYXNrCiAJ CSBmYWNpbGl0eS4gICovCi0JICAgICAgc3RydWN0IHZhbHVlICptYXNrX3Zh bHVlLCAqbWFyazsKKwkgICAgICBzdHJ1Y3QgdmFsdWUgKm1hc2tfdmFsdWUs ICptYXJrX3ZhbHVlOwogCiAJICAgICAgaWYgKHVzZV9tYXNrKQogCQllcnJv cihfKCJZb3UgY2FuIHNwZWNpZnkgb25seSBvbmUgbWFzay4iKSk7CiAKIAkg ICAgICB1c2VfbWFzayA9IGp1c3RfbG9jYXRpb24gPSAxOwogCi0JICAgICAg bWFyayA9IHZhbHVlX21hcmsgKCk7CisJICAgICAgbWFya192YWx1ZSA9IHZh bHVlX21hcmsgKCk7CiAJICAgICAgbWFza192YWx1ZSA9IHBhcnNlX3RvX2Nv bW1hX2FuZF9ldmFsICgmdmFsdWVfc3RhcnQpOwogCSAgICAgIG1hc2sgPSB2 YWx1ZV9hc19hZGRyZXNzIChtYXNrX3ZhbHVlKTsKLQkgICAgICB2YWx1ZV9m cmVlX3RvX21hcmsgKG1hcmspOworCSAgICAgIHZhbHVlX2ZyZWVfdG9fbWFy ayAobWFya192YWx1ZSk7CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgLyogV2Ug ZGlkbid0IHJlY29nbml6ZSB3aGF0IHdlIGZvdW5kLiAgV2Ugc2hvdWxkIHN0 b3AgaGVyZS4gICovCkBAIC0xMDYyMSwyOSArMTA2MjEsMjkgQEAgdXBkYXRl X2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAg ICB7CiAgICAgICAvKiBBTExfQlBfTE9DQVRJT05TIGJwX2xvY2F0aW9uIGhh cyBMT0MtPk9XTkVSIGFsd2F5cwogCSBub24tTlVMTC4gICovCi0gICAgICBz dHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGxvYy0+b3duZXI7CisgICAgICBzdHJ1 Y3QgYnJlYWtwb2ludCAqYnAgPSBsb2MtPm93bmVyOwogICAgICAgc3RydWN0 IGJwX2xvY2F0aW9uICoqbG9jX2ZpcnN0X3A7CiAKLSAgICAgIGlmIChiLT5l bmFibGVfc3RhdGUgPT0gYnBfZGlzYWJsZWQKLQkgIHx8IGItPmVuYWJsZV9z dGF0ZSA9PSBicF9jYWxsX2Rpc2FibGVkCi0JICB8fCBiLT5lbmFibGVfc3Rh dGUgPT0gYnBfc3RhcnR1cF9kaXNhYmxlZAorICAgICAgaWYgKGJwLT5lbmFi bGVfc3RhdGUgPT0gYnBfZGlzYWJsZWQKKwkgIHx8IGJwLT5lbmFibGVfc3Rh dGUgPT0gYnBfY2FsbF9kaXNhYmxlZAorCSAgfHwgYnAtPmVuYWJsZV9zdGF0 ZSA9PSBicF9zdGFydHVwX2Rpc2FibGVkCiAJICB8fCAhbG9jLT5lbmFibGVk CiAJICB8fCBsb2MtPnNobGliX2Rpc2FibGVkCi0JICB8fCAhYnJlYWtwb2lu dF9hZGRyZXNzX2lzX21lYW5pbmdmdWwgKGIpCi0JICB8fCBpc190cmFjZXBv aW50IChiKSkKKwkgIHx8ICFicmVha3BvaW50X2FkZHJlc3NfaXNfbWVhbmlu Z2Z1bCAoYnApCisJICB8fCBpc190cmFjZXBvaW50IChicCkpCiAJY29udGlu dWU7CiAKICAgICAgIC8qIFBlcm1hbmVudCBicmVha3BvaW50IHNob3VsZCBh bHdheXMgYmUgaW5zZXJ0ZWQuICAqLwotICAgICAgaWYgKGItPmVuYWJsZV9z dGF0ZSA9PSBicF9wZXJtYW5lbnQgJiYgISBsb2MtPmluc2VydGVkKQorICAg ICAgaWYgKGJwLT5lbmFibGVfc3RhdGUgPT0gYnBfcGVybWFuZW50ICYmICEg bG9jLT5pbnNlcnRlZCkKIAlpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9f TElORV9fLAogCQkJXygiYWxsZWdlZGx5IHBlcm1hbmVudCBicmVha3BvaW50 IGlzIG5vdCAiCiAJCQkiYWN0dWFsbHkgaW5zZXJ0ZWQiKSk7CiAKLSAgICAg IGlmIChiLT50eXBlID09IGJwX2hhcmR3YXJlX3dhdGNocG9pbnQpCisgICAg ICBpZiAoYnAtPnR5cGUgPT0gYnBfaGFyZHdhcmVfd2F0Y2hwb2ludCkKIAls b2NfZmlyc3RfcCA9ICZ3cF9sb2NfZmlyc3Q7Ci0gICAgICBlbHNlIGlmIChi LT50eXBlID09IGJwX3JlYWRfd2F0Y2hwb2ludCkKKyAgICAgIGVsc2UgaWYg KGJwLT50eXBlID09IGJwX3JlYWRfd2F0Y2hwb2ludCkKIAlsb2NfZmlyc3Rf cCA9ICZyd3BfbG9jX2ZpcnN0OwotICAgICAgZWxzZSBpZiAoYi0+dHlwZSA9 PSBicF9hY2Nlc3Nfd2F0Y2hwb2ludCkKKyAgICAgIGVsc2UgaWYgKGJwLT50 eXBlID09IGJwX2FjY2Vzc193YXRjaHBvaW50KQogCWxvY19maXJzdF9wID0g JmF3cF9sb2NfZmlyc3Q7CiAgICAgICBlbHNlCiAJbG9jX2ZpcnN0X3AgPSAm YnBfbG9jX2ZpcnN0OwpAQCAtMTA2NjYsNyArMTA2NjYsNyBAQCB1cGRhdGVf Z2xvYmFsX2xvY2F0aW9uX2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQogICAg ICAgbG9jLT5kdXBsaWNhdGUgPSAxOwogCiAgICAgICBpZiAoKCpsb2NfZmly c3RfcCktPm93bmVyLT5lbmFibGVfc3RhdGUgPT0gYnBfcGVybWFuZW50ICYm IGxvYy0+aW5zZXJ0ZWQKLQkgICYmIGItPmVuYWJsZV9zdGF0ZSAhPSBicF9w ZXJtYW5lbnQpCisJICAmJiBicC0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1h bmVudCkKIAlpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAog CQkJXygiYW5vdGhlciBicmVha3BvaW50IHdhcyBpbnNlcnRlZCBvbiB0b3Ag b2YgIgogCQkJImEgcGVybWFuZW50IGJyZWFrcG9pbnQiKSk7CkBAIC0xMTU4 OCwyNiArMTE1ODgsMjYgQEAgdXBkYXRlX3N0YXRpY190cmFjZXBvaW50IChz dHJ1Y3QgYnJlYWtwb2ludCAqYiwgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBz YWwpCiAKICAgICAgIGlmICghVkVDX2VtcHR5KHN0YXRpY190cmFjZXBvaW50 X21hcmtlcl9wLCBtYXJrZXJzKSkKIAl7Ci0JICBzdHJ1Y3Qgc3ltdGFiX2Fu ZF9saW5lIHNhbDsKKwkgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgbGFzOwog CSAgc3RydWN0IHN5bWJvbCAqc3ltOwotCSAgc3RydWN0IHN0YXRpY190cmFj ZXBvaW50X21hcmtlciAqbWFya2VyOworCSAgc3RydWN0IHN0YXRpY190cmFj ZXBvaW50X21hcmtlciAqdHBtYXJrZXI7CiAJICBzdHJ1Y3QgdWlfb3V0ICp1 aW91dCA9IGN1cnJlbnRfdWlvdXQ7CiAKLQkgIG1hcmtlciA9IFZFQ19pbmRl eCAoc3RhdGljX3RyYWNlcG9pbnRfbWFya2VyX3AsIG1hcmtlcnMsIDApOwor CSAgdHBtYXJrZXIgPSBWRUNfaW5kZXggKHN0YXRpY190cmFjZXBvaW50X21h cmtlcl9wLCBtYXJrZXJzLCAwKTsKIAogCSAgeGZyZWUgKHRwLT5zdGF0aWNf dHJhY2VfbWFya2VyX2lkKTsKLQkgIHRwLT5zdGF0aWNfdHJhY2VfbWFya2Vy X2lkID0geHN0cmR1cCAobWFya2VyLT5zdHJfaWQpOworCSAgdHAtPnN0YXRp Y190cmFjZV9tYXJrZXJfaWQgPSB4c3RyZHVwICh0cG1hcmtlci0+c3RyX2lk KTsKIAogCSAgd2FybmluZyAoXygibWFya2VyIGZvciBzdGF0aWMgdHJhY2Vw b2ludCAlZCAoJXMpIG5vdCAiCiAJCSAgICAgImZvdW5kIGF0IHByZXZpb3Vz IGxpbmUgbnVtYmVyIiksCiAJCSAgIGItPm51bWJlciwgdHAtPnN0YXRpY190 cmFjZV9tYXJrZXJfaWQpOwogCi0JICBpbml0X3NhbCAoJnNhbCk7CisJICBp bml0X3NhbCAoJmxhcyk7CiAKLQkgIHNhbC5wYyA9IG1hcmtlci0+YWRkcmVz czsKKwkgIGxhcy5wYyA9IHRwbWFya2VyLT5hZGRyZXNzOwogCi0JICBzYWwg PSBmaW5kX3BjX2xpbmUgKG1hcmtlci0+YWRkcmVzcywgMCk7Ci0JICBzeW0g PSBmaW5kX3BjX3NlY3RfZnVuY3Rpb24gKG1hcmtlci0+YWRkcmVzcywgTlVM TCk7CisJICBsYXMgPSBmaW5kX3BjX2xpbmUgKHRwbWFya2VyLT5hZGRyZXNz LCAwKTsKKwkgIHN5bSA9IGZpbmRfcGNfc2VjdF9mdW5jdGlvbiAodHBtYXJr ZXItPmFkZHJlc3MsIE5VTEwpOwogCSAgdWlfb3V0X3RleHQgKHVpb3V0LCAi Tm93IGluICIpOwogCSAgaWYgKHN5bSkKIAkgICAgewpAQCAtMTE2MTUsMzYg KzExNjE1LDM2IEBAIHVwZGF0ZV9zdGF0aWNfdHJhY2Vwb2ludCAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKQog CQkJCSAgIFNZTUJPTF9QUklOVF9OQU1FIChzeW0pKTsKIAkgICAgICB1aV9v dXRfdGV4dCAodWlvdXQsICIgYXQgIik7CiAJICAgIH0KLQkgIHVpX291dF9m aWVsZF9zdHJpbmcgKHVpb3V0LCAiZmlsZSIsIHNhbC5zeW10YWItPmZpbGVu YW1lKTsKKwkgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZmlsZSIs IGxhcy5zeW10YWItPmZpbGVuYW1lKTsKIAkgIHVpX291dF90ZXh0ICh1aW91 dCwgIjoiKTsKIAogCSAgaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0 KSkKIAkgICAgewotCSAgICAgIGNoYXIgKmZ1bGxuYW1lID0gc3ltdGFiX3Rv X2Z1bGxuYW1lIChzYWwuc3ltdGFiKTsKKwkgICAgICBjaGFyICpmdWxsbmFt ZSA9IHN5bXRhYl90b19mdWxsbmFtZSAobGFzLnN5bXRhYik7CiAKIAkgICAg ICBpZiAoZnVsbG5hbWUpCiAJCXVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0 LCAiZnVsbG5hbWUiLCBmdWxsbmFtZSk7CiAJICAgIH0KIAotCSAgdWlfb3V0 X2ZpZWxkX2ludCAodWlvdXQsICJsaW5lIiwgc2FsLmxpbmUpOworCSAgdWlf b3V0X2ZpZWxkX2ludCAodWlvdXQsICJsaW5lIiwgbGFzLmxpbmUpOwogCSAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKIAotCSAgYi0+bGluZV9udW1i ZXIgPSBzYWwubGluZTsKKwkgIGItPmxpbmVfbnVtYmVyID0gbGFzLmxpbmU7 CiAKIAkgIHhmcmVlIChiLT5zb3VyY2VfZmlsZSk7CiAJICBpZiAoc3ltKQot CSAgICBiLT5zb3VyY2VfZmlsZSA9IHhzdHJkdXAgKHNhbC5zeW10YWItPmZp bGVuYW1lKTsKKwkgICAgYi0+c291cmNlX2ZpbGUgPSB4c3RyZHVwIChsYXMu c3ltdGFiLT5maWxlbmFtZSk7CiAJICBlbHNlCiAJICAgIGItPnNvdXJjZV9m aWxlID0gTlVMTDsKIAogCSAgeGZyZWUgKGItPmFkZHJfc3RyaW5nKTsKIAkg IGItPmFkZHJfc3RyaW5nID0geHN0cnByaW50ZiAoIiVzOiVkIiwKLQkJCQkg ICAgICAgc2FsLnN5bXRhYi0+ZmlsZW5hbWUsIGItPmxpbmVfbnVtYmVyKTsK KwkJCQkgICAgICAgbGFzLnN5bXRhYi0+ZmlsZW5hbWUsIGItPmxpbmVfbnVt YmVyKTsKIAogCSAgLyogTWlnaHQgYmUgbmljZSB0byBjaGVjayBpZiBmdW5j dGlvbiBjaGFuZ2VkLCBhbmQgd2FybiBpZgogCSAgICAgc28uICAqLwogCi0J ICByZWxlYXNlX3N0YXRpY190cmFjZXBvaW50X21hcmtlciAobWFya2VyKTsK KwkgIHJlbGVhc2Vfc3RhdGljX3RyYWNlcG9pbnRfbWFya2VyICh0cG1hcmtl cik7CiAJfQogICAgIH0KICAgcmV0dXJuIHNhbDsKZGlmZiAtLWdpdCBhL2dk Yi9idWlsZHN5bS5jIGIvZ2RiL2J1aWxkc3ltLmMKaW5kZXggMzE4ODBiOC4u OTNlODk4YiAxMDA2NDQKLS0tIGEvZ2RiL2J1aWxkc3ltLmMKKysrIGIvZ2Ri L2J1aWxkc3ltLmMKQEAgLTEwMywxMiArMTAzLDEyIEBAIHN0YXRpYyBpbnQg Y29tcGFyZV9saW5lX251bWJlcnMgKGNvbnN0IHZvaWQgKmxuMXAsIGNvbnN0 IHZvaWQgKmxuMnApOwogdm9pZAogYWRkX2ZyZWVfcGVuZGluZ3MgKHN0cnVj dCBwZW5kaW5nICpsaXN0KQogewotICBzdHJ1Y3QgcGVuZGluZyAqbGluayA9 IGxpc3Q7CisgIHN0cnVjdCBwZW5kaW5nICpsc3RsaW5rID0gbGlzdDsKIAog ICBpZiAobGlzdCkKICAgICB7Ci0gICAgICB3aGlsZSAobGluay0+bmV4dCkg bGluayA9IGxpbmstPm5leHQ7Ci0gICAgICBsaW5rLT5uZXh0ID0gZnJlZV9w ZW5kaW5nczsKKyAgICAgIHdoaWxlIChsc3RsaW5rLT5uZXh0KSBsc3RsaW5r ID0gbHN0bGluay0+bmV4dDsKKyAgICAgIGxzdGxpbmstPm5leHQgPSBmcmVl X3BlbmRpbmdzOwogICAgICAgZnJlZV9wZW5kaW5ncyA9IGxpc3Q7CiAgICAg fQogfQpAQCAtMTIxLDcgKzEyMSw3IEBAIGFkZF9mcmVlX3BlbmRpbmdzIChz dHJ1Y3QgcGVuZGluZyAqbGlzdCkKIHZvaWQKIGFkZF9zeW1ib2xfdG9fbGlz dCAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgcGVuZGluZyAqKmxp c3RoZWFkKQogewotICBzdHJ1Y3QgcGVuZGluZyAqbGluazsKKyAgc3RydWN0 IHBlbmRpbmcgKmxzdGxpbms7CiAKICAgLyogSWYgdGhpcyBpcyBhbiBhbGlh cyBmb3IgYW5vdGhlciBzeW1ib2wsIGRvbid0IGFkZCBpdC4gICovCiAgIGlm IChzeW1ib2wtPmdpbmZvLm5hbWUgJiYgc3ltYm9sLT5naW5mby5uYW1lWzBd ID09ICcjJykKQEAgLTEzMywxNyArMTMzLDE3IEBAIGFkZF9zeW1ib2xfdG9f bGlzdCAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgcGVuZGluZyAq Kmxpc3RoZWFkKQogICAgIHsKICAgICAgIGlmIChmcmVlX3BlbmRpbmdzKQog CXsKLQkgIGxpbmsgPSBmcmVlX3BlbmRpbmdzOwotCSAgZnJlZV9wZW5kaW5n cyA9IGxpbmstPm5leHQ7CisJICBsc3RsaW5rID0gZnJlZV9wZW5kaW5nczsK KwkgIGZyZWVfcGVuZGluZ3MgPSBsc3RsaW5rLT5uZXh0OwogCX0KICAgICAg IGVsc2UKIAl7Ci0JICBsaW5rID0gKHN0cnVjdCBwZW5kaW5nICopIHhtYWxs b2MgKHNpemVvZiAoc3RydWN0IHBlbmRpbmcpKTsKKwkgIGxzdGxpbmsgPSAo c3RydWN0IHBlbmRpbmcgKikgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgcGVu ZGluZykpOwogCX0KIAotICAgICAgbGluay0+bmV4dCA9ICpsaXN0aGVhZDsK LSAgICAgICpsaXN0aGVhZCA9IGxpbms7Ci0gICAgICBsaW5rLT5uc3ltcyA9 IDA7CisgICAgICBsc3RsaW5rLT5uZXh0ID0gKmxpc3RoZWFkOworICAgICAg Kmxpc3RoZWFkID0gbHN0bGluazsKKyAgICAgIGxzdGxpbmstPm5zeW1zID0g MDsKICAgICB9CiAKICAgKCpsaXN0aGVhZCktPnN5bWJvbFsoKmxpc3RoZWFk KS0+bnN5bXMrK10gPSBzeW1ib2w7CkBAIC02OTQsMTYgKzY5NCwxNiBAQCBj aGFyICoKIHBvcF9zdWJmaWxlICh2b2lkKQogewogICBjaGFyICpuYW1lOwot ICBzdHJ1Y3Qgc3ViZmlsZV9zdGFjayAqbGluayA9IHN1YmZpbGVfc3RhY2s7 CisgIHN0cnVjdCBzdWJmaWxlX3N0YWNrICpsc3RsaW5rID0gc3ViZmlsZV9z dGFjazsKIAotICBpZiAobGluayA9PSBOVUxMKQorICBpZiAobHN0bGluayA9 PSBOVUxMKQogICAgIHsKICAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sCiAJCSAgICAgIF8oImZhaWxlZCBpbnRlcm5hbCBjb25z aXN0ZW5jeSBjaGVjayIpKTsKICAgICB9Ci0gIG5hbWUgPSBsaW5rLT5uYW1l OwotICBzdWJmaWxlX3N0YWNrID0gbGluay0+bmV4dDsKLSAgeGZyZWUgKCh2 b2lkICopIGxpbmspOworICBuYW1lID0gbHN0bGluay0+bmFtZTsKKyAgc3Vi ZmlsZV9zdGFjayA9IGxzdGxpbmstPm5leHQ7CisgIHhmcmVlICgodm9pZCAq KSBsc3RsaW5rKTsKICAgcmV0dXJuIChuYW1lKTsKIH0KIAwKZGlmZiAtLWdp dCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2RiL2MtdHlwZXByaW50LmMKaW5k ZXggMDIxMjIzMi4uNTg2ZDE2YSAxMDA2NDQKLS0tIGEvZ2RiL2MtdHlwZXBy aW50LmMKKysrIGIvZ2RiL2MtdHlwZXByaW50LmMKQEAgLTgzOSw5ICs4Mzks MTAgQEAgY190eXBlX3ByaW50X2Jhc2UgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogCiAJICBpZiAoVFlQRV9ERUNMQVJF RF9DTEFTUyAodHlwZSkpCiAJICAgIHsKKwkgICAgICBjb25zdCBpbnQgbmZp ZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CisKIAkgICAgICBRVUlUOwot CSAgICAgIGxlbiA9IFRZUEVfTkZJRUxEUyAodHlwZSk7Ci0JICAgICAgZm9y IChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKTsgaSA8IGxlbjsgaSsr KQorCSAgICAgIGZvciAoaSA9IFRZUEVfTl9CQVNFQ0xBU1NFUyAodHlwZSk7 IGkgPCBuZmllbGRzOyBpKyspCiAJCWlmICghVFlQRV9GSUVMRF9QUklWQVRF ICh0eXBlLCBpKSkKIAkJICB7CiAJCSAgICBuZWVkX2FjY2Vzc19sYWJlbCA9 IDE7CkBAIC04NTAsMTEgKzg1MSwxMSBAQCBjX3R5cGVfcHJpbnRfYmFzZSAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAJ ICAgICAgUVVJVDsKIAkgICAgICBpZiAoIW5lZWRfYWNjZXNzX2xhYmVsKQog CQl7Ci0JCSAgbGVuMiA9IFRZUEVfTkZOX0ZJRUxEUyAodHlwZSk7Ci0JCSAg Zm9yIChqID0gMDsgaiA8IGxlbjI7IGorKykKKwkJICBjb25zdCBpbnQgbmZu X2ZpZWxkcyA9IFRZUEVfTkZOX0ZJRUxEUyAodHlwZSk7CisJCSAgZm9yIChq ID0gMDsgaiA8IG5mbl9maWVsZHM7IGorKykKIAkJICAgIHsKLQkJICAgICAg bGVuID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0eXBlLCBqKTsKLQkJ ICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorCQkgICAgICBjb25z dCBpbnQgZm5fZmllbGRsaXN0X2xlbmd0aCA9IFRZUEVfRk5fRklFTERMSVNU X0xFTkdUSCAodHlwZSwgaik7CisJCSAgICAgIGZvciAoaSA9IDA7IGkgPCBm bl9maWVsZGxpc3RfbGVuZ3RoOyBpKyspCiAJCQlpZiAoIVRZUEVfRk5fRklF TERfUFJJVkFURSAoVFlQRV9GTl9GSUVMRExJU1QxICh0eXBlLAogCQkJCQkJ CQkJaiksIGkpKQogCQkJICB7CkBAIC04NjgsOSArODY5LDEwIEBAIGNfdHlw ZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwKIAkgICAgfQogCSAgZWxzZQogCSAgICB7CisgICAgICAg ICAgICAgIGNvbnN0IGludCBuZmllbGRzID0gVFlQRV9ORklFTERTICh0eXBl KTsKKwogCSAgICAgIFFVSVQ7Ci0JICAgICAgbGVuID0gVFlQRV9ORklFTERT ICh0eXBlKTsKLQkgICAgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMg KHR5cGUpOyBpIDwgbGVuOyBpKyspCisJICAgICAgZm9yIChpID0gVFlQRV9O X0JBU0VDTEFTU0VTICh0eXBlKTsgaSA8IG5maWVsZHM7IGkrKykKIAkJaWYg KFRZUEVfRklFTERfUFJJVkFURSAodHlwZSwgaSkKIAkJICAgIHx8IFRZUEVf RklFTERfUFJPVEVDVEVEICh0eXBlLCBpKSkKIAkJICB7CkBAIC04ODAsMTIg Kzg4MiwxNCBAQCBjX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAJICAgICAgUVVJVDsKIAkg ICAgICBpZiAoIW5lZWRfYWNjZXNzX2xhYmVsKQogCQl7Ci0JCSAgbGVuMiA9 IFRZUEVfTkZOX0ZJRUxEUyAodHlwZSk7Ci0JCSAgZm9yIChqID0gMDsgaiA8 IGxlbjI7IGorKykKKwkJICBjb25zdCBpbnQgbmZuX2ZpZWxkcyA9IFRZUEVf TkZOX0ZJRUxEUyAodHlwZSk7CisJCSAgZm9yIChqID0gMDsgaiA8IG5mbl9m aWVsZHM7IGorKykKIAkJICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBj b25zdCBpbnQgZm5fZmllbGRsaXN0X2xlbmd0aCA9IFRZUEVfRk5fRklFTERM SVNUX0xFTkdUSCAodHlwZSwgaik7CisgICAgICAgICAgICAgICAgICAgICAg CiAJCSAgICAgIFFVSVQ7Ci0JCSAgICAgIGxlbiA9IFRZUEVfRk5fRklFTERM SVNUX0xFTkdUSCAodHlwZSwgaik7Ci0JCSAgICAgIGZvciAoaSA9IDA7IGkg PCBsZW47IGkrKykKKworCQkgICAgICBmb3IgKGkgPSAwOyBpIDwgZm5fZmll bGRsaXN0X2xlbmd0aDsgaSsrKQogCQkJaWYgKFRZUEVfRk5fRklFTERfUFJP VEVDVEVEIChUWVBFX0ZOX0ZJRUxETElTVDEgKHR5cGUsCiAJCQkJCQkJCQkg aiksIGkpCiAJCQkgICAgfHwgVFlQRV9GTl9GSUVMRF9QUklWQVRFIChUWVBF X0ZOX0ZJRUxETElTVDEgKHR5cGUsCkBAIC05MDMsMjM5ICs5MDcsMjQwIEBA IGNfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwKIAogCSAgLyogSWYgdGhlcmUgaXMgYSBiYXNl IGNsYXNzIGZvciB0aGlzIHR5cGUsCiAJICAgICBkbyBub3QgcHJpbnQgdGhl IGZpZWxkIHRoYXQgaXQgb2NjdXBpZXMuICAqLwotCi0JICBsZW4gPSBUWVBF X05GSUVMRFMgKHR5cGUpOwotCSAgdnB0cl9maWVsZG5vID0gZ2V0X3ZwdHJf ZmllbGRubyAodHlwZSwgJmJhc2V0eXBlKTsKLQkgIGZvciAoaSA9IFRZUEVf Tl9CQVNFQ0xBU1NFUyAodHlwZSk7IGkgPCBsZW47IGkrKykKLQkgICAgewot CSAgICAgIFFVSVQ7Ci0KLQkgICAgICAvKiBJZiB3ZSBoYXZlIGEgdmlydHVh bCB0YWJsZSBwb2ludGVyLCBvbWl0IGl0LiAgRXZlbiBpZgotCQkgdmlydHVh bCB0YWJsZSBwb2ludGVycyBhcmUgbm90IHNwZWNpZmljYWxseSBtYXJrZWQg aW4KLQkJIHRoZSBkZWJ1ZyBpbmZvLCB0aGV5IHNob3VsZCBiZSBhcnRpZmlj aWFsLiAgKi8KLQkgICAgICBpZiAoKGkgPT0gdnB0cl9maWVsZG5vICYmIHR5 cGUgPT0gYmFzZXR5cGUpCi0JCSAgfHwgVFlQRV9GSUVMRF9BUlRJRklDSUFM ICh0eXBlLCBpKSkKLQkJY29udGludWU7Ci0KLQkgICAgICBpZiAobmVlZF9h Y2Nlc3NfbGFiZWwpCi0JCXsKLQkJICBpZiAoVFlQRV9GSUVMRF9QUk9URUNU RUQgKHR5cGUsIGkpKQotCQkgICAgewotCQkgICAgICBpZiAoc2VjdGlvbl90 eXBlICE9IHNfcHJvdGVjdGVkKQotCQkJewotCQkJICBzZWN0aW9uX3R5cGUg PSBzX3Byb3RlY3RlZDsKLQkJCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVs ICsgMiwgc3RyZWFtLAotCQkJCQkgICAgICJwcm90ZWN0ZWQ6XG4iKTsKLQkJ CX0KLQkJICAgIH0KLQkJICBlbHNlIGlmIChUWVBFX0ZJRUxEX1BSSVZBVEUg KHR5cGUsIGkpKQotCQkgICAgewotCQkgICAgICBpZiAoc2VjdGlvbl90eXBl ICE9IHNfcHJpdmF0ZSkKLQkJCXsKLQkJCSAgc2VjdGlvbl90eXBlID0gc19w cml2YXRlOwotCQkJICBmcHJpbnRmaV9maWx0ZXJlZCAobGV2ZWwgKyAyLCBz dHJlYW0sCi0JCQkJCSAgICAgInByaXZhdGU6XG4iKTsKLQkJCX0KLQkJICAg IH0KLQkJICBlbHNlCi0JCSAgICB7Ci0JCSAgICAgIGlmIChzZWN0aW9uX3R5 cGUgIT0gc19wdWJsaWMpCi0JCQl7Ci0JCQkgIHNlY3Rpb25fdHlwZSA9IHNf cHVibGljOwotCQkJICBmcHJpbnRmaV9maWx0ZXJlZCAobGV2ZWwgKyAyLCBz dHJlYW0sCi0JCQkJCSAgICAgInB1YmxpYzpcbiIpOwotCQkJfQotCQkgICAg fQotCQl9Ci0KLQkgICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKGxldmVs ICsgNCwgc3RyZWFtKTsKLQkgICAgICBpZiAoZmllbGRfaXNfc3RhdGljICgm VFlQRV9GSUVMRCAodHlwZSwgaSkpKQotCQlmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJzdGF0aWMgIik7Ci0JICAgICAgY19wcmludF90eXBlIChUWVBF X0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAotCQkJICAgIFRZUEVfRklFTERfTkFN RSAodHlwZSwgaSksCi0JCQkgICAgc3RyZWFtLCBzaG93IC0gMSwgbGV2ZWwg KyA0KTsKLQkgICAgICBpZiAoIWZpZWxkX2lzX3N0YXRpYyAoJlRZUEVfRklF TEQgKHR5cGUsIGkpKQotCQkgICYmIFRZUEVfRklFTERfUEFDS0VEICh0eXBl LCBpKSkKLQkJewotCQkgIC8qIEl0IGlzIGEgYml0ZmllbGQuICBUaGlzIGNv ZGUgZG9lcyBub3QgYXR0ZW1wdAotCQkgICAgIHRvIGxvb2sgYXQgdGhlIGJp dHBvcyBhbmQgcmVjb25zdHJ1Y3QgZmlsbGVyLAotCQkgICAgIHVubmFtZWQg ZmllbGRzLiAgVGhpcyB3b3VsZCBsZWFkIHRvIG1pc2xlYWRpbmcKLQkJICAg ICByZXN1bHRzIGlmIHRoZSBjb21waWxlciBkb2VzIG5vdCBwdXQgb3V0IGZp ZWxkcwotCQkgICAgIGZvciBzdWNoIHRoaW5ncyAoSSBkb24ndCBrbm93IHdo YXQgaXQgZG9lcykuICAqLwotCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIiA6ICVkIiwKLQkJCQkgICAgVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBl LCBpKSk7Ci0JCX0KLQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICI7XG4iKTsKLQkgICAgfQotCisgICAgICAgICAgeworICAgICAgICAgICAg Y29uc3QgaW50IG5maWVsZHMgPSBUWVBFX05GSUVMRFMgKHR5cGUpOworICAg ICAgICAgICAgdnB0cl9maWVsZG5vID0gZ2V0X3ZwdHJfZmllbGRubyAodHlw ZSwgJmJhc2V0eXBlKTsKKyAgICAgICAgICAgIGZvciAoaSA9IFRZUEVfTl9C QVNFQ0xBU1NFUyAodHlwZSk7IGkgPCBuZmllbGRzOyBpKyspCisgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBRVUlUOworCisgICAgICAgICAg ICAgICAgLyogSWYgd2UgaGF2ZSBhIHZpcnR1YWwgdGFibGUgcG9pbnRlciwg b21pdCBpdC4gIEV2ZW4gaWYKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFs IHRhYmxlIHBvaW50ZXJzIGFyZSBub3Qgc3BlY2lmaWNhbGx5IG1hcmtlZCBp bgorICAgICAgICAgICAgICAgICAgIHRoZSBkZWJ1ZyBpbmZvLCB0aGV5IHNo b3VsZCBiZSBhcnRpZmljaWFsLiAgKi8KKyAgICAgICAgICAgICAgICBpZiAo KGkgPT0gdnB0cl9maWVsZG5vICYmIHR5cGUgPT0gYmFzZXR5cGUpCisgICAg ICAgICAgICAgICAgICAgIHx8IFRZUEVfRklFTERfQVJUSUZJQ0lBTCAodHlw ZSwgaSkpCisgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg ICAgICAgICAgIGlmIChuZWVkX2FjY2Vzc19sYWJlbCkKKyAgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfRklFTERf UFJPVEVDVEVEICh0eXBlLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbl90eXBlICE9 IHNfcHJvdGVjdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbl90eXBlID0gc19w cm90ZWN0ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50 ZmlfZmlsdGVyZWQgKGxldmVsICsgMiwgc3RyZWFtLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdGVjdGVk OlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg KFRZUEVfRklFTERfUFJJVkFURSAodHlwZSwgaSkpCisgICAgICAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rp b25fdHlwZSAhPSBzX3ByaXZhdGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uX3R5 cGUgPSBzX3ByaXZhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnByaW50ZmlfZmlsdGVyZWQgKGxldmVsICsgMiwgc3RyZWFtLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJp dmF0ZTpcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNl CisgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHNlY3Rpb25fdHlwZSAhPSBzX3B1YmxpYykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlY3Rpb25fdHlwZSA9IHNfcHVibGljOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCArIDIsIHN0 cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInB1YmxpYzpcbiIpOworICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRl cmVkIChsZXZlbCArIDQsIHN0cmVhbSk7CisgICAgICAgICAgICAgICAgaWYg KGZpZWxkX2lzX3N0YXRpYyAoJlRZUEVfRklFTEQgKHR5cGUsIGkpKSkKKyAg ICAgICAgICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInN0 YXRpYyAiKTsKKyAgICAgICAgICAgICAgICBjX3ByaW50X3R5cGUgKFRZUEVf RklFTERfVFlQRSAodHlwZSwgaSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCBzaG93IC0gMSwgbGV2ZWwg KyA0KTsKKyAgICAgICAgICAgICAgICBpZiAoIWZpZWxkX2lzX3N0YXRpYyAo JlRZUEVfRklFTEQgKHR5cGUsIGkpKQorICAgICAgICAgICAgICAgICAgICAm JiBUWVBFX0ZJRUxEX1BBQ0tFRCAodHlwZSwgaSkpCisgICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEl0IGlzIGEgYml0Zmll bGQuICBUaGlzIGNvZGUgZG9lcyBub3QgYXR0ZW1wdAorICAgICAgICAgICAg ICAgICAgICAgICB0byBsb29rIGF0IHRoZSBiaXRwb3MgYW5kIHJlY29uc3Ry dWN0IGZpbGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5uYW1lZCBm aWVsZHMuICBUaGlzIHdvdWxkIGxlYWQgdG8gbWlzbGVhZGluZworICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHRzIGlmIHRoZSBjb21waWxlciBkb2Vz IG5vdCBwdXQgb3V0IGZpZWxkcworICAgICAgICAgICAgICAgICAgICAgICBm b3Igc3VjaCB0aGluZ3MgKEkgZG9uJ3Qga25vdyB3aGF0IGl0IGRvZXMpLiAg Ki8KKyAgICAgICAgICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiIDogJWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGkpKTsKKyAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICI7XG4iKTsKKyAgICAgICAgICAgICAgfQorICAgICAg ICAgIH0KIAkgIC8qIElmIHRoZXJlIGFyZSBib3RoIGZpZWxkcyBhbmQgbWV0 aG9kcywgcHV0IGEgYmxhbmsgbGluZQogCSAgICAgYmV0d2VlbiB0aGVtLiAg TWFrZSBzdXJlIHRvIGNvdW50IG9ubHkgbWV0aG9kIHRoYXQgd2UKIAkgICAg IHdpbGwgZGlzcGxheTsgYXJ0aWZpY2lhbCBtZXRob2RzIHdpbGwgYmUgaGlk ZGVuLiAgKi8KLQkgIGxlbiA9IFRZUEVfTkZOX0ZJRUxEUyAodHlwZSk7Ci0J ICByZWFsX2xlbiA9IDA7Ci0JICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKysp Ci0JICAgIHsKLQkgICAgICBzdHJ1Y3QgZm5fZmllbGQgKmYgPSBUWVBFX0ZO X0ZJRUxETElTVDEgKHR5cGUsIGkpOwotCSAgICAgIGludCBsZW4yID0gVFlQ RV9GTl9GSUVMRExJU1RfTEVOR1RIICh0eXBlLCBpKTsKLQkgICAgICBpbnQg ajsKLQotCSAgICAgIGZvciAoaiA9IDA7IGogPCBsZW4yOyBqKyspCi0JCWlm ICghVFlQRV9GTl9GSUVMRF9BUlRJRklDSUFMIChmLCBqKSkKLQkJICByZWFs X2xlbisrOwotCSAgICB9Ci0JICBpZiAocmVhbF9sZW4gPiAwICYmIHNlY3Rp b25fdHlwZSAhPSBzX25vbmUpCi0JICAgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIlxuIik7Ci0KLQkgIC8qIEMrKzogcHJpbnQgb3V0IHRoZSBtZXRo b2RzLiAgKi8KLQkgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLQkgICAg ewotCSAgICAgIHN0cnVjdCBmbl9maWVsZCAqZiA9IFRZUEVfRk5fRklFTERM SVNUMSAodHlwZSwgaSk7Ci0JICAgICAgaW50IGosIGxlbjIgPSBUWVBFX0ZO X0ZJRUxETElTVF9MRU5HVEggKHR5cGUsIGkpOwotCSAgICAgIGNoYXIgKm1l dGhvZF9uYW1lID0gVFlQRV9GTl9GSUVMRExJU1RfTkFNRSAodHlwZSwgaSk7 Ci0JICAgICAgY2hhciAqbmFtZSA9IHR5cGVfbmFtZV9ub190YWcgKHR5cGUp OwotCSAgICAgIGludCBpc19jb25zdHJ1Y3RvciA9IG5hbWUgJiYgc3RyY21w IChtZXRob2RfbmFtZSwKLQkJCQkJCSAgIG5hbWUpID09IDA7Ci0KLQkgICAg ICBmb3IgKGogPSAwOyBqIDwgbGVuMjsgaisrKQotCQl7Ci0JCSAgY29uc3Qg Y2hhciAqbWFuZ2xlZF9uYW1lOwotCQkgIGNoYXIgKmRlbWFuZ2xlZF9uYW1l OwotCQkgIHN0cnVjdCBjbGVhbnVwICppbm5lcl9jbGVhbnVwOwotCQkgIGNv bnN0IGNoYXIgKnBoeXNuYW1lID0gVFlQRV9GTl9GSUVMRF9QSFlTTkFNRSAo Ziwgaik7Ci0JCSAgaW50IGlzX2Z1bGxfcGh5c25hbWVfY29uc3RydWN0b3Ig PQotCQkgICAgaXNfY29uc3RydWN0b3JfbmFtZSAocGh5c25hbWUpIAotCQkg ICAgfHwgaXNfZGVzdHJ1Y3Rvcl9uYW1lIChwaHlzbmFtZSkKLQkJICAgIHx8 IG1ldGhvZF9uYW1lWzBdID09ICd+JzsKLQotCQkgIC8qIERvIG5vdCBwcmlu dCBvdXQgYXJ0aWZpY2lhbCBtZXRob2RzLiAgKi8KLQkJICBpZiAoVFlQRV9G Tl9GSUVMRF9BUlRJRklDSUFMIChmLCBqKSkKLQkJICAgIGNvbnRpbnVlOwot Ci0JCSAgaW5uZXJfY2xlYW51cCA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVh bnVwLCBOVUxMKTsKLQotCQkgIFFVSVQ7Ci0JCSAgaWYgKFRZUEVfRk5fRklF TERfUFJPVEVDVEVEIChmLCBqKSkKLQkJICAgIHsKLQkJICAgICAgaWYgKHNl Y3Rpb25fdHlwZSAhPSBzX3Byb3RlY3RlZCkKLQkJCXsKLQkJCSAgc2VjdGlv bl90eXBlID0gc19wcm90ZWN0ZWQ7Ci0JCQkgIGZwcmludGZpX2ZpbHRlcmVk IChsZXZlbCArIDIsIHN0cmVhbSwKLQkJCQkJICAgICAicHJvdGVjdGVkOlxu Iik7Ci0JCQl9Ci0JCSAgICB9Ci0JCSAgZWxzZSBpZiAoVFlQRV9GTl9GSUVM RF9QUklWQVRFIChmLCBqKSkKLQkJICAgIHsKLQkJICAgICAgaWYgKHNlY3Rp b25fdHlwZSAhPSBzX3ByaXZhdGUpCi0JCQl7Ci0JCQkgIHNlY3Rpb25fdHlw ZSA9IHNfcHJpdmF0ZTsKLQkJCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVs ICsgMiwgc3RyZWFtLAotCQkJCQkgICAgICJwcml2YXRlOlxuIik7Ci0JCQl9 Ci0JCSAgICB9Ci0JCSAgZWxzZQotCQkgICAgewotCQkgICAgICBpZiAoc2Vj dGlvbl90eXBlICE9IHNfcHVibGljKQotCQkJewotCQkJICBzZWN0aW9uX3R5 cGUgPSBzX3B1YmxpYzsKLQkJCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVs ICsgMiwgc3RyZWFtLAotCQkJCQkgICAgICJwdWJsaWM6XG4iKTsKLQkJCX0K LQkJICAgIH0KLQotCQkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAobGV2ZWwg KyA0LCBzdHJlYW0pOwotCQkgIGlmIChUWVBFX0ZOX0ZJRUxEX1ZJUlRVQUxf UCAoZiwgaikpCi0JCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2 aXJ0dWFsICIpOwotCQkgIGVsc2UgaWYgKFRZUEVfRk5fRklFTERfU1RBVElD X1AgKGYsIGopKQotCQkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi c3RhdGljICIpOwotCQkgIGlmIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZO X0ZJRUxEX1RZUEUgKGYsIGopKSA9PSAwKQotCQkgICAgewotCQkgICAgICAv KiBLZWVwIEdEQiBmcm9tIGNyYXNoaW5nIGhlcmUuICAqLwotCQkgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sCi0JCQkJCV8oIjx1bmRlZmluZWQg dHlwZT4gJXM7XG4iKSwKLQkJCQkJVFlQRV9GTl9GSUVMRF9QSFlTTkFNRSAo ZiwgaikpOwotCQkgICAgICBicmVhazsKLQkJICAgIH0KLQkJICBlbHNlIGlm ICghaXNfY29uc3RydWN0b3IJLyogQ29uc3RydWN0b3JzIGRvbid0CisgICAg ICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IG5mbl9maWVsZHMgPSBU WVBFX05GTl9GSUVMRFMgKHR5cGUpOworICAgICAgICAgICAgcmVhbF9sZW4g PSAwOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5mbl9maWVsZHM7 IGkrKykKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0cnVj dCBmbl9maWVsZCAqZiA9IFRZUEVfRk5fRklFTERMSVNUMSAodHlwZSwgaSk7 CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGZuX2ZpZWxkbGlzdF9sZW5n dGggPSBUWVBFX0ZOX0ZJRUxETElTVF9MRU5HVEggKHR5cGUsIGkpOworCisg ICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGZuX2ZpZWxkbGlzdF9s ZW5ndGg7IGorKykKKyAgICAgICAgICAgICAgICAgIGlmICghVFlQRV9GTl9G SUVMRF9BUlRJRklDSUFMIChmLCBqKSkKKyAgICAgICAgICAgICAgICAgICAg cmVhbF9sZW4rKzsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg KHJlYWxfbGVuID4gMCAmJiBzZWN0aW9uX3R5cGUgIT0gc19ub25lKQorICAg ICAgICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOwor CisgICAgICAgICAgICAvKiBDKys6IHByaW50IG91dCB0aGUgbWV0aG9kcy4g ICovCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmZuX2ZpZWxkczsg aSsrKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RydWN0 IGZuX2ZpZWxkICpmID0gVFlQRV9GTl9GSUVMRExJU1QxICh0eXBlLCBpKTsK KworICAgICAgICAgICAgICAgIGNvbnN0IGludCBmbl9maWVsZGxpc3RfbGVu Z3RoID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0eXBlLCBpKTsKKyAg ICAgICAgICAgICAgICBjaGFyICptZXRob2RfbmFtZSA9IFRZUEVfRk5fRklF TERMSVNUX05BTUUgKHR5cGUsIGkpOworICAgICAgICAgICAgICAgIGNoYXIg Km5hbWUgPSB0eXBlX25hbWVfbm9fdGFnICh0eXBlKTsKKyAgICAgICAgICAg ICAgICBpbnQgaXNfY29uc3RydWN0b3IgPSBuYW1lICYmIHN0cmNtcCAobWV0 aG9kX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hbWUpID09IDA7CisKKyAgICAgICAgICAg ICAgICBmb3IgKGogPSAwOyBqIDwgZm5fZmllbGRsaXN0X2xlbmd0aDsgaisr KQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICptYW5nbGVkX25hbWU7CisgICAgICAgICAgICAgICAgICAg IGNoYXIgKmRlbWFuZ2xlZF9uYW1lOworICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgY2xlYW51cCAqaW5uZXJfY2xlYW51cDsKKyAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqcGh5c25hbWUgPSBUWVBFX0ZOX0ZJRUxEX1BI WVNOQU1FIChmLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGlzX2Z1 bGxfcGh5c25hbWVfY29uc3RydWN0b3IgPQorICAgICAgICAgICAgICAgICAg ICAgIGlzX2NvbnN0cnVjdG9yX25hbWUgKHBoeXNuYW1lKSAKKyAgICAgICAg ICAgICAgICAgICAgICB8fCBpc19kZXN0cnVjdG9yX25hbWUgKHBoeXNuYW1l KQorICAgICAgICAgICAgICAgICAgICAgIHx8IG1ldGhvZF9uYW1lWzBdID09 ICd+JzsKKworICAgICAgICAgICAgICAgICAgICAvKiBEbyBub3QgcHJpbnQg b3V0IGFydGlmaWNpYWwgbWV0aG9kcy4gICovCisgICAgICAgICAgICAgICAg ICAgIGlmIChUWVBFX0ZOX0ZJRUxEX0FSVElGSUNJQUwgKGYsIGopKQorICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAg ICAgICAgIGlubmVyX2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xl YW51cCwgTlVMTCk7CisKKyAgICAgICAgICAgICAgICAgICAgUVVJVDsKKyAg ICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfRk5fRklFTERfUFJPVEVDVEVE IChmLCBqKSkKKyAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoc2VjdGlvbl90eXBlICE9IHNfcHJvdGVjdGVk KQorICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VjdGlvbl90eXBlID0gc19wcm90ZWN0ZWQ7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZmlfZmlsdGVyZWQg KGxldmVsICsgMiwgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicHJvdGVjdGVkOlxuIik7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFRZUEVfRk5fRklF TERfUFJJVkFURSAoZiwgaikpCisgICAgICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rpb25fdHlwZSAhPSBz X3ByaXZhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uX3R5cGUgPSBzX3ByaXZh dGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZmlfZmls dGVyZWQgKGxldmVsICsgMiwgc3RyZWFtLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmF0ZTpcbiIpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNl Y3Rpb25fdHlwZSAhPSBzX3B1YmxpYykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25f dHlwZSA9IHNfcHVibGljOworICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCArIDIsIHN0cmVhbSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB1 YmxpYzpcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHBy aW50X3NwYWNlc19maWx0ZXJlZCAobGV2ZWwgKyA0LCBzdHJlYW0pOworICAg ICAgICAgICAgICAgICAgICBpZiAoVFlQRV9GTl9GSUVMRF9WSVJUVUFMX1Ag KGYsIGopKQorICAgICAgICAgICAgICAgICAgICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgInZpcnR1YWwgIik7CisgICAgICAgICAgICAgICAgICAg IGVsc2UgaWYgKFRZUEVfRk5fRklFTERfU1RBVElDX1AgKGYsIGopKQorICAg ICAgICAgICAgICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg InN0YXRpYyAiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfVEFS R0VUX1RZUEUgKFRZUEVfRk5fRklFTERfVFlQRSAoZiwgaikpID09IDApCisg ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg ICAgLyogS2VlcCBHREIgZnJvbSBjcmFzaGluZyBoZXJlLiAgKi8KKyAgICAg ICAgICAgICAgICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o Ijx1bmRlZmluZWQgdHlwZT4gJXM7XG4iKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfRk5fRklFTERfUEhZU05B TUUgKGYsIGopKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ZWxzZSBpZiAoIWlzX2NvbnN0cnVjdG9yCS8qIENvbnN0cnVjdG9ycyBkb24n dAogCQkJCQkJICAgaGF2ZSBkZWNsYXJlZAogCQkJCQkJICAgdHlwZXMuICAq LwotCQkJICAgJiYgIWlzX2Z1bGxfcGh5c25hbWVfY29uc3RydWN0b3IgIC8q ICIgIiAqLwotCQkJICAgJiYgIWlzX3R5cGVfY29udmVyc2lvbl9vcGVyYXRv ciAodHlwZSwgaSwgaikpCi0JCSAgICB7Ci0JCSAgICAgIHR5cGVfcHJpbnQg KFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfRk5fRklFTERfVFlQRSAoZiwgaikp LAotCQkJCSAgIiIsIHN0cmVhbSwgLTEpOwotCQkgICAgICBmcHV0c19maWx0 ZXJlZCAoIiAiLCBzdHJlYW0pOwotCQkgICAgfQotCQkgIGlmIChUWVBFX0ZO X0ZJRUxEX1NUVUIgKGYsIGopKQotCQkgICAgewotCQkgICAgICBjaGFyICp0 ZW07Ci0KLQkJICAgICAgLyogQnVpbGQgc29tZXRoaW5nIHdlIGNhbiBkZW1h bmdsZS4gICovCi0JCSAgICAgIHRlbSA9IGdkYl9tYW5nbGVfbmFtZSAodHlw ZSwgaSwgaik7Ci0JCSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHRlbSk7 Ci0JCSAgICAgIG1hbmdsZWRfbmFtZSA9IHRlbTsKLQkJICAgIH0KLQkJICBl bHNlCi0JCSAgICBtYW5nbGVkX25hbWUgPSBUWVBFX0ZOX0ZJRUxEX1BIWVNO QU1FIChmLCBqKTsKLQotCQkgIGRlbWFuZ2xlZF9uYW1lID0KLQkJICAgIGNw bHVzX2RlbWFuZ2xlIChtYW5nbGVkX25hbWUsCi0JCQkJICAgIERNR0xfQU5T SSB8IERNR0xfUEFSQU1TKTsKLQkJICBpZiAoZGVtYW5nbGVkX25hbWUgPT0g TlVMTCkKLQkJICAgIHsKLQkJICAgICAgLyogSW4gc29tZSBjYXNlcyAoZm9y IGluc3RhbmNlIHdpdGggdGhlIEhQCi0JCSAgICAgICAgIGRlbWFuZ2xpbmcp LCBpZiBhIGZ1bmN0aW9uIGhhcyBtb3JlIHRoYW4gMTAKLQkJICAgICAgICAg YXJndW1lbnRzLCB0aGUgZGVtYW5nbGluZyB3aWxsIGZhaWwuCi0JCSAgICAg ICAgIExldCdzIHRyeSB0byByZWNvbnN0cnVjdCB0aGUgZnVuY3Rpb24KLQkJ ICAgICAgICAgc2lnbmF0dXJlIGZyb20gdGhlIHN5bWJvbCBpbmZvcm1hdGlv bi4gICovCi0JCSAgICAgIGlmICghVFlQRV9GTl9GSUVMRF9TVFVCIChmLCBq KSkKLQkJCXsKLQkJCSAgaW50IHN0YXRpY3AgPSBUWVBFX0ZOX0ZJRUxEX1NU QVRJQ19QIChmLCBqKTsKLQkJCSAgc3RydWN0IHR5cGUgKm10eXBlID0gVFlQ RV9GTl9GSUVMRF9UWVBFIChmLCBqKTsKLQotCQkJICBjcF90eXBlX3ByaW50 X21ldGhvZF9hcmdzIChtdHlwZSwKLQkJCQkJCSAgICAgIiIsCi0JCQkJCQkg ICAgIG1ldGhvZF9uYW1lLAotCQkJCQkJICAgICBzdGF0aWNwLAotCQkJCQkJ ICAgICBzdHJlYW0pOwotCQkJfQotCQkgICAgICBlbHNlCi0JCQlmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sCi0JCQkJCSAgXygiPGJhZGx5IG1hbmdsZWQg bmFtZSAnJXMnPiIpLAotCQkJCQkgIG1hbmdsZWRfbmFtZSk7Ci0JCSAgICB9 Ci0JCSAgZWxzZQotCQkgICAgewotCQkgICAgICBjaGFyICpwOwotCQkgICAg ICBjaGFyICpkZW1hbmdsZWRfbm9fY2xhc3MKLQkJCT0gcmVtb3ZlX3F1YWxp ZmllcnMgKGRlbWFuZ2xlZF9uYW1lKTsKLQotCQkgICAgICAvKiBHZXQgcmlk IG9mIHRoZSBgc3RhdGljJyBhcHBlbmRlZCBieSB0aGUKLQkJCSBkZW1hbmds ZXIuICAqLwotCQkgICAgICBwID0gc3Ryc3RyIChkZW1hbmdsZWRfbm9fY2xh c3MsICIgc3RhdGljIik7Ci0JCSAgICAgIGlmIChwICE9IE5VTEwpCi0JCQl7 Ci0JCQkgIGludCBsZW5ndGggPSBwIC0gZGVtYW5nbGVkX25vX2NsYXNzOwot CQkJICBjaGFyICpkZW1hbmdsZWRfbm9fc3RhdGljOwotCi0JCQkgIGRlbWFu Z2xlZF9ub19zdGF0aWMKLQkJCSAgICA9IChjaGFyICopIHhtYWxsb2MgKGxl bmd0aCArIDEpOwotCQkJICBzdHJuY3B5IChkZW1hbmdsZWRfbm9fc3RhdGlj LAotCQkJCSAgIGRlbWFuZ2xlZF9ub19jbGFzcywgbGVuZ3RoKTsKLQkJCSAg KihkZW1hbmdsZWRfbm9fc3RhdGljICsgbGVuZ3RoKSA9ICdcMCc7Ci0JCQkg IGZwdXRzX2ZpbHRlcmVkIChkZW1hbmdsZWRfbm9fc3RhdGljLCBzdHJlYW0p OwotCQkJICB4ZnJlZSAoZGVtYW5nbGVkX25vX3N0YXRpYyk7Ci0JCQl9Ci0J CSAgICAgIGVsc2UKLQkJCWZwdXRzX2ZpbHRlcmVkIChkZW1hbmdsZWRfbm9f Y2xhc3MsIHN0cmVhbSk7Ci0JCSAgICAgIHhmcmVlIChkZW1hbmdsZWRfbmFt ZSk7Ci0JCSAgICB9Ci0KLQkJICBkb19jbGVhbnVwcyAoaW5uZXJfY2xlYW51 cCk7Ci0KLQkJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI7XG4iKTsK LQkJfQotCSAgICB9Ci0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JiYgIWlzX2Z1bGxfcGh5c25hbWVfY29uc3RydWN0b3IgIC8qICIgIiAqLwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaXNfdHlwZV9jb252 ZXJzaW9uX29wZXJhdG9yICh0eXBlLCBpLCBqKSkKKyAgICAgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX3ByaW50 IChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZOX0ZJRUxEX1RZUEUgKGYsIGop KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCBz dHJlYW0sIC0xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRzX2Zp bHRlcmVkICgiICIsIHN0cmVhbSk7CisgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICBpZiAoVFlQRV9GTl9GSUVMRF9TVFVC IChmLCBqKSkKKyAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICBjaGFyICp0ZW07CisKKyAgICAgICAgICAgICAgICAg ICAgICAgIC8qIEJ1aWxkIHNvbWV0aGluZyB3ZSBjYW4gZGVtYW5nbGUuICAq LworICAgICAgICAgICAgICAgICAgICAgICAgdGVtID0gZ2RiX21hbmdsZV9u YW1lICh0eXBlLCBpLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIHRlbSk7CisgICAgICAgICAgICAgICAgICAg ICAgICBtYW5nbGVkX25hbWUgPSB0ZW07CisgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgICAgICAgbWFuZ2xlZF9uYW1lID0gVFlQRV9GTl9GSUVMRF9QSFlTTkFN RSAoZiwgaik7CisKKyAgICAgICAgICAgICAgICAgICAgZGVtYW5nbGVkX25h bWUgPQorICAgICAgICAgICAgICAgICAgICAgIGNwbHVzX2RlbWFuZ2xlICht YW5nbGVkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERNR0xfQU5TSSB8IERNR0xfUEFSQU1TKTsKKyAgICAgICAgICAg ICAgICAgICAgaWYgKGRlbWFuZ2xlZF9uYW1lID09IE5VTEwpCisgICAgICAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLyog SW4gc29tZSBjYXNlcyAoZm9yIGluc3RhbmNlIHdpdGggdGhlIEhQCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZW1hbmdsaW5nKSwgaWYgYSBmdW5j dGlvbiBoYXMgbW9yZSB0aGFuIDEwCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBhcmd1bWVudHMsIHRoZSBkZW1hbmdsaW5nIHdpbGwgZmFpbC4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIExldCdzIHRyeSB0byByZWNvbnN0 cnVjdCB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpZ25hdHVyZSBmcm9tIHRoZSBzeW1ib2wgaW5mb3JtYXRpb24uICAqLwor ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFUWVBFX0ZOX0ZJRUxEX1NU VUIgKGYsIGopKQorICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRpY3AgPSBUWVBFX0ZO X0ZJRUxEX1NUQVRJQ19QIChmLCBqKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgdHlwZSAqbXR5cGUgPSBUWVBFX0ZOX0ZJRUxEX1RZ UEUgKGYsIGopOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Bf dHlwZV9wcmludF9tZXRob2RfYXJncyAobXR5cGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWV0aG9kX25hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljcCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJlYW0pOworICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi PGJhZGx5IG1hbmdsZWQgbmFtZSAnJXMnPiIpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5nbGVkX25hbWUpOwor ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ZWxzZQorICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKnA7CisgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICpkZW1hbmdsZWRfbm9fY2xhc3MKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgPSByZW1vdmVfcXVhbGlmaWVycyAoZGVtYW5nbGVkX25hbWUpOwor CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBHZXQgcmlkIG9mIHRoZSBg c3RhdGljJyBhcHBlbmRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlbWFuZ2xlci4gICovCisgICAgICAgICAgICAgICAgICAgICAg ICBwID0gc3Ryc3RyIChkZW1hbmdsZWRfbm9fY2xhc3MsICIgc3RhdGljIik7 CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCAhPSBOVUxMKQorICAg ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGxlbmd0aCA9IHAgLSBkZW1hbmdsZWRfbm9fY2xhc3M7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZGVtYW5nbGVk X25vX3N0YXRpYzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl bWFuZ2xlZF9ub19zdGF0aWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID0gKGNoYXIgKikgeG1hbGxvYyAobGVuZ3RoICsgMSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RybmNweSAoZGVtYW5nbGVkX25vX3N0 YXRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZW1hbmdsZWRfbm9fY2xhc3MsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKihkZW1hbmdsZWRfbm9fc3RhdGljICsgbGVuZ3RoKSA9 ICdcMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnB1dHNfZmls dGVyZWQgKGRlbWFuZ2xlZF9ub19zdGF0aWMsIHN0cmVhbSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeGZyZWUgKGRlbWFuZ2xlZF9ub19zdGF0 aWMpOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAg IGZwdXRzX2ZpbHRlcmVkIChkZW1hbmdsZWRfbm9fY2xhc3MsIHN0cmVhbSk7 CisgICAgICAgICAgICAgICAgICAgICAgICB4ZnJlZSAoZGVtYW5nbGVkX25h bWUpOworICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAgICAgICBkb19jbGVhbnVwcyAoaW5uZXJfY2xlYW51cCk7CisKKyAgICAg ICAgICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiO1xu Iik7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAg ICAgICAgICB9CiAJICAvKiBQcmludCB0eXBlZGVmcyBkZWZpbmVkIGluIHRo aXMgY2xhc3MuICAqLwogCiAJICBpZiAoVFlQRV9UWVBFREVGX0ZJRUxEX0NP VU5UICh0eXBlKSAhPSAwKQpAQCAtMTE5NSwxMCArMTIwMCwxMiBAQCBjX3R5 cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCiAJfQogICAgICAgZWxzZSBpZiAoc2hvdyA+IDAgfHwg VFlQRV9UQUdfTkFNRSAodHlwZSkgPT0gTlVMTCkKIAl7CisgICAgICAgICAg Y29uc3QgaW50IG5maWVsZHMgPSBUWVBFX05GSUVMRFMgKHR5cGUpOworCiAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Iik7Ci0JICBsZW4gPSBU WVBFX05GSUVMRFMgKHR5cGUpOworCiAJICBsYXN0dmFsID0gMDsKLQkgIGZv ciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKwkgIGZvciAoaSA9IDA7IGkgPCBu ZmllbGRzOyBpKyspCiAJICAgIHsKIAkgICAgICBRVUlUOwogCSAgICAgIGlm IChpKQpkaWZmIC0tZ2l0IGEvZ2RiL2MtdmFscHJpbnQuYyBiL2dkYi9jLXZh bHByaW50LmMKaW5kZXggMzQ2MWIwOC4uMmQ2MTIwOSAxMDA2NDQKLS0tIGEv Z2RiL2MtdmFscHJpbnQuYworKysgYi9nZGIvYy12YWxwcmludC5jCkBAIC0y NzAsMTAgKzI3MCwxMCBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgLyogUHJpbnQgdnRh YmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiB3ZSBBUkUgdXNpbmcK IAkgICAgIC1mdnRhYmxlX3RodW5rcy4gIChPdGhlcndpc2UsIGxvb2sgdW5k ZXIKIAkgICAgIFRZUEVfQ09ERV9TVFJVQ1QuKSAgKi8KLQkgIENPUkVfQURE UiBhZGRyCisJICBjb25zdCBDT1JFX0FERFIgYWRkcjEKIAkgICAgPSBleHRy YWN0X3R5cGVkX2FkZHJlc3MgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQs IHR5cGUpOwogCi0JICBwcmludF9mdW5jdGlvbl9wb2ludGVyX2FkZHJlc3Mg KGdkYmFyY2gsIGFkZHIsIHN0cmVhbSwKKwkgIHByaW50X2Z1bmN0aW9uX3Bv aW50ZXJfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcjEsIHN0cmVhbSwKIAkJCQkJ ICBvcHRpb25zLT5hZGRyZXNzcHJpbnQpOwogCSAgYnJlYWs7CiAJfQpAQCAt MzY3LDExICszNjcsMTEgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgIGVsdHR5cGUg PSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CiAg ICAgICBpZiAob3B0aW9ucy0+YWRkcmVzc3ByaW50KQogCXsKLQkgIENPUkVf QUREUiBhZGRyCisJICBjb25zdCBDT1JFX0FERFIgYWRkcjEKIAkgICAgPSBl eHRyYWN0X3R5cGVkX2FkZHJlc3MgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz ZXQsIHR5cGUpOwogCiAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJA Iik7Ci0JICBmcHV0c19maWx0ZXJlZCAocGFkZHJlc3MgKGdkYmFyY2gsIGFk ZHIpLCBzdHJlYW0pOworCSAgZnB1dHNfZmlsdGVyZWQgKHBhZGRyZXNzIChn ZGJhcmNoLCBhZGRyMSksIHN0cmVhbSk7CiAJICBpZiAob3B0aW9ucy0+ZGVy ZWZfcmVmKQogCSAgICBmcHV0c19maWx0ZXJlZCAoIjogIiwgc3RyZWFtKTsK IAl9CkBAIC00MTcsMTUgKzQxNywxNSBAQCBjX3ZhbF9wcmludCAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgLyog UHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiBOT1Qg dXNpbmcKIAkgICAgIC1mdnRhYmxlX3RodW5rcy4gIChPdGhlcndpc2UsIGxv b2sgdW5kZXIKIAkgICAgIFRZUEVfQ09ERV9QVFIuKSAgKi8KLQkgIGludCBv ZmZzZXQgPSAoZW1iZWRkZWRfb2Zmc2V0CisJICBjb25zdCBpbnQgb2Zmc2V0 ID0gKGVtYmVkZGVkX29mZnNldAogCQkJKyBUWVBFX0ZJRUxEX0JJVFBPUyAo dHlwZSwKIAkJCQkJICAgICBWVEJMX0ZOQUREUl9PRkZTRVQpIC8gOCk7CiAJ ICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZSA9IFRZUEVfRklFTERfVFlQRSAo dHlwZSwKIAkJCQkJCSAgICAgVlRCTF9GTkFERFJfT0ZGU0VUKTsKLQkgIENP UkVfQUREUiBhZGRyCisJICBjb25zdCBDT1JFX0FERFIgYWRkcjEKIAkgICAg PSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKHZhbGFkZHIgKyBvZmZzZXQsIGZp ZWxkX3R5cGUpOwogCi0JICBwcmludF9mdW5jdGlvbl9wb2ludGVyX2FkZHJl c3MgKGdkYmFyY2gsIGFkZHIsIHN0cmVhbSwKKwkgIHByaW50X2Z1bmN0aW9u X3BvaW50ZXJfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcjEsIHN0cmVhbSwKIAkJ CQkJICBvcHRpb25zLT5hZGRyZXNzcHJpbnQpOwogCX0KICAgICAgIGVsc2UK ZGlmZiAtLWdpdCBhL2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZyZWFkLmMK aW5kZXggY2Y4ZmI1NC4uZmM0ZGZlYyAxMDA2NDQKLS0tIGEvZ2RiL2NvZmZy ZWFkLmMKKysrIGIvZ2RiL2NvZmZyZWFkLmMKQEAgLTMyNSwxNSArMzI1LDE1 IEBAIGNzX3NlY3Rpb25fYWRkcmVzcyAoc3RydWN0IGNvZmZfc3ltYm9sICpj cywgYmZkICphYmZkKQogICAgb3IgZm9yIGFzc29jaWF0aW5nIGEgbmV3IHR5 cGUgd2l0aCB0aGUgaW5kZXguICAqLwogCiBzdGF0aWMgc3RydWN0IHR5cGUg KioKLWNvZmZfbG9va3VwX3R5cGUgKGludCBpbmRleCkKK2NvZmZfbG9va3Vw X3R5cGUgKGludCBpZHgpCiB7Ci0gIGlmIChpbmRleCA+PSB0eXBlX3ZlY3Rv cl9sZW5ndGgpCisgIGlmIChpZHggPj0gdHlwZV92ZWN0b3JfbGVuZ3RoKQog ICAgIHsKICAgICAgIGludCBvbGRfdmVjdG9yX2xlbmd0aCA9IHR5cGVfdmVj dG9yX2xlbmd0aDsKIAogICAgICAgdHlwZV92ZWN0b3JfbGVuZ3RoICo9IDI7 Ci0gICAgICBpZiAoaW5kZXggLyogaXMgc3RpbGwgKi8gID49IHR5cGVfdmVj dG9yX2xlbmd0aCkKLQl0eXBlX3ZlY3Rvcl9sZW5ndGggPSBpbmRleCAqIDI7 CisgICAgICBpZiAoaWR4IC8qIGlzIHN0aWxsICovICA+PSB0eXBlX3ZlY3Rv cl9sZW5ndGgpCisJdHlwZV92ZWN0b3JfbGVuZ3RoID0gaWR4ICogMjsKIAog ICAgICAgdHlwZV92ZWN0b3IgPSAoc3RydWN0IHR5cGUgKiopCiAJeHJlYWxs b2MgKChjaGFyICopIHR5cGVfdmVjdG9yLApAQCAtMzQxLDcgKzM0MSw3IEBA IGNvZmZfbG9va3VwX3R5cGUgKGludCBpbmRleCkKICAgICAgIG1lbXNldCAo JnR5cGVfdmVjdG9yW29sZF92ZWN0b3JfbGVuZ3RoXSwgMCwKIAkgKHR5cGVf dmVjdG9yX2xlbmd0aCAtIG9sZF92ZWN0b3JfbGVuZ3RoKSAqIHNpemVvZiAo c3RydWN0IHR5cGUgKikpOwogICAgIH0KLSAgcmV0dXJuICZ0eXBlX3ZlY3Rv cltpbmRleF07CisgIHJldHVybiAmdHlwZV92ZWN0b3JbaWR4XTsKIH0KIAog LyogTWFrZSBzdXJlIHRoZXJlIGlzIGEgdHlwZSBhbGxvY2F0ZWQgZm9yIHR5 cGUgbnVtYmVyIGluZGV4CkBAIC0zNDksOSArMzQ5LDkgQEAgY29mZl9sb29r dXBfdHlwZSAoaW50IGluZGV4KQogICAgVGhpcyBjYW4gY3JlYXRlIGFuIGVt cHR5ICh6ZXJvZWQpIHR5cGUgb2JqZWN0LiAgKi8KIAogc3RhdGljIHN0cnVj dCB0eXBlICoKLWNvZmZfYWxsb2NfdHlwZSAoaW50IGluZGV4KQorY29mZl9h bGxvY190eXBlIChpbnQgaWR4KQogewotICBzdHJ1Y3QgdHlwZSAqKnR5cGVf YWRkciA9IGNvZmZfbG9va3VwX3R5cGUgKGluZGV4KTsKKyAgc3RydWN0IHR5 cGUgKip0eXBlX2FkZHIgPSBjb2ZmX2xvb2t1cF90eXBlIChpZHgpOwogICBz dHJ1Y3QgdHlwZSAqdHlwZSA9ICp0eXBlX2FkZHI7CiAKICAgLyogSWYgd2Ug YXJlIHJlZmVycmluZyB0byBhIHR5cGUgbm90IGtub3duIGF0IGFsbCB5ZXQs CkBAIC01MTksNyArNTE5LDcgQEAgY29mZl9zeW1maWxlX3JlYWQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKIHsKICAg c3RydWN0IGNvZmZfc3ltZmlsZV9pbmZvICppbmZvOwogICBzdHJ1Y3QgZGJ4 X3N5bWZpbGVfaW5mbyAqZGJ4aW5mbzsKLSAgYmZkICphYmZkID0gb2JqZmls ZS0+b2JmZDsKKyAgc3RydWN0IGJmZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7 CiAgIGNvZmZfZGF0YV90eXBlICpjZGF0YSA9IGNvZmZfZGF0YSAoYWJmZCk7 CiAgIGNoYXIgKm5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKICAg aW50IHZhbDsKQEAgLTY1OCw5ICs2NTgsOSBAQCBjb2ZmX3N5bWZpbGVfcmVh ZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdz KQogCiAgICAgICBpZiAoZGVidWdmaWxlKQogCXsKLQkgIGJmZCAqYWJmZCA9 IHN5bWZpbGVfYmZkX29wZW4gKGRlYnVnZmlsZSk7CisJICBzdHJ1Y3QgYmZk ICpkYmdiZmQgPSBzeW1maWxlX2JmZF9vcGVuIChkZWJ1Z2ZpbGUpOwogCi0J ICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGFiZmQsIHN5bWZpbGVfZmxh Z3MsIG9iamZpbGUpOworCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChk YmdiZmQsIHN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOwogCSAgeGZyZWUgKGRl YnVnZmlsZSk7CiAJfQogICAgIH0KQEAgLTE5NzcsNyArMTk3Nyw3IEBAIGRl Y29kZV9iYXNlX3R5cGUgKHN0cnVjdCBjb2ZmX3N5bWJvbCAqY3MsCiAgICBv YmplY3QgZGVzY3JpYmluZyB0aGUgdHlwZS4gICovCiAKIHN0YXRpYyBzdHJ1 Y3QgdHlwZSAqCi1jb2ZmX3JlYWRfc3RydWN0X3R5cGUgKGludCBpbmRleCwg aW50IGxlbmd0aCwgaW50IGxhc3RzeW0sCitjb2ZmX3JlYWRfc3RydWN0X3R5 cGUgKGludCBpZHgsIGludCBsZW5ndGgsIGludCBsYXN0c3ltLAogCQkgICAg ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiB7CiAgIHN0cnVjdCBuZXh0 ZmllbGQKQEAgLTE5OTgsNyArMTk5OCw3IEBAIGNvZmZfcmVhZF9zdHJ1Y3Rf dHlwZSAoaW50IGluZGV4LCBpbnQgbGVuZ3RoLCBpbnQgbGFzdHN5bSwKICAg dW5pb24gaW50ZXJuYWxfYXV4ZW50IHN1Yl9hdXg7CiAgIGludCBkb25lID0g MDsKIAotICB0eXBlID0gY29mZl9hbGxvY190eXBlIChpbmRleCk7CisgIHR5 cGUgPSBjb2ZmX2FsbG9jX3R5cGUgKGlkeCk7CiAgIFRZUEVfQ09ERSAodHlw ZSkgPSBUWVBFX0NPREVfU1RSVUNUOwogICBJTklUX0NQTFVTX1NQRUNJRklD ICh0eXBlKTsKICAgVFlQRV9MRU5HVEggKHR5cGUpID0gbGVuZ3RoOwpAQCAt MjA3MCw3ICsyMDcwLDcgQEAgY29mZl9yZWFkX3N0cnVjdF90eXBlIChpbnQg aW5kZXgsIGludCBsZW5ndGgsIGludCBsYXN0c3ltLAogICAgQWxzbyBkZWZp bmVzIHRoZSBzeW1ib2xzIHRoYXQgcmVwcmVzZW50IHRoZSB2YWx1ZXMgb2Yg dGhlIHR5cGUuICAqLwogCiBzdGF0aWMgc3RydWN0IHR5cGUgKgotY29mZl9y ZWFkX2VudW1fdHlwZSAoaW50IGluZGV4LCBpbnQgbGVuZ3RoLCBpbnQgbGFz dHN5bSwKK2NvZmZfcmVhZF9lbnVtX3R5cGUgKGludCBpZHgsIGludCBsZW5n dGgsIGludCBsYXN0c3ltLAogCQkgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQogewogICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpm aWxlX2FyY2ggKG9iamZpbGUpOwpAQCAtMjA4OSw3ICsyMDg5LDcgQEAgY29m Zl9yZWFkX2VudW1fdHlwZSAoaW50IGluZGV4LCBpbnQgbGVuZ3RoLCBpbnQg bGFzdHN5bSwKICAgY2hhciAqbmFtZTsKICAgaW50IHVuc2lnbmVkX2VudW0g PSAxOwogCi0gIHR5cGUgPSBjb2ZmX2FsbG9jX3R5cGUgKGluZGV4KTsKKyAg dHlwZSA9IGNvZmZfYWxsb2NfdHlwZSAoaWR4KTsKICAgaWYgKHdpdGhpbl9m dW5jdGlvbikKICAgICBzeW1saXN0ID0gJmxvY2FsX3N5bWJvbHM7CiAgIGVs c2UKZGlmZiAtLWdpdCBhL2dkYi9jb21wbGFpbnRzLmMgYi9nZGIvY29tcGxh aW50cy5jCmluZGV4IDkxMjliOTguLjE0NDA4M2QgMTAwNjQ0Ci0tLSBhL2dk Yi9jb21wbGFpbnRzLmMKKysrIGIvZ2RiL2NvbXBsYWludHMuYwpAQCAtMTI0 LDM0ICsxMjQsMzQgQEAgc3RhdGljIHN0cnVjdCBjb21wbGFpbiAqIEFUVFJJ QlVURV9QUklOVEYgKDQsIDApCiBmaW5kX2NvbXBsYWludCAoc3RydWN0IGNv bXBsYWludHMgKmNvbXBsYWludHMsIGNvbnN0IGNoYXIgKmZpbGUsCiAJCWlu dCBsaW5lLCBjb25zdCBjaGFyICpmbXQpCiB7Ci0gIHN0cnVjdCBjb21wbGFp biAqY29tcGxhaW50OworICBzdHJ1Y3QgY29tcGxhaW4gKmNvbXBsOwogCiAg IC8qIEZpbmQgdGhlIGNvbXBsYWludCBpbiB0aGUgdGFibGUuICBBIG1vcmUg ZWZmaWNpZW50IHNlYXJjaAogICAgICBhbGdvcml0aG0gKGJhc2VkIG9uIGhh c2ggdGFibGUgb3Igc29tZXRoaW5nKSBjb3VsZCBiZSB1c2VkLiAgQnV0CiAg ICAgIHRoYXQgY2FuIHdhaXQgdW50aWwgc29tZW9uZSBzaG93cyBldmlkZW5j ZSB0aGF0IHRoaXMgbG9va3VwIGlzCiAgICAgIGEgcmVhbCBib3R0bGUgbmVj ay4gICovCi0gIGZvciAoY29tcGxhaW50ID0gY29tcGxhaW50cy0+cm9vdDsK LSAgICAgICBjb21wbGFpbnQgIT0gTlVMTDsKLSAgICAgICBjb21wbGFpbnQg PSBjb21wbGFpbnQtPm5leHQpCisgIGZvciAoY29tcGwgPSBjb21wbGFpbnRz LT5yb290OworICAgICAgIGNvbXBsICE9IE5VTEw7CisgICAgICAgY29tcGwg PSBjb21wbC0+bmV4dCkKICAgICB7Ci0gICAgICBpZiAoY29tcGxhaW50LT5m bXQgPT0gZm10Ci0JICAmJiBjb21wbGFpbnQtPmZpbGUgPT0gZmlsZQotCSAg JiYgY29tcGxhaW50LT5saW5lID09IGxpbmUpCi0JcmV0dXJuIGNvbXBsYWlu dDsKKyAgICAgIGlmIChjb21wbC0+Zm10ID09IGZtdAorCSAgJiYgY29tcGwt PmZpbGUgPT0gZmlsZQorCSAgJiYgY29tcGwtPmxpbmUgPT0gbGluZSkKKwly ZXR1cm4gY29tcGw7CiAgICAgfQogCiAgIC8qIE9vcHMgbm90IHNlZW4gYmVm b3JlLCBmaWxsIGluIGEgbmV3IGNvbXBsYWludC4gICovCi0gIGNvbXBsYWlu dCA9IFhNQUxMT0MgKHN0cnVjdCBjb21wbGFpbik7Ci0gIGNvbXBsYWludC0+ Zm10ID0gZm10OwotICBjb21wbGFpbnQtPmZpbGUgPSBmaWxlOwotICBjb21w bGFpbnQtPmxpbmUgPSBsaW5lOwotICBjb21wbGFpbnQtPmNvdW50ZXIgPSAw OwotICBjb21wbGFpbnQtPm5leHQgPSBOVUxMOworICBjb21wbCA9IFhNQUxM T0MgKHN0cnVjdCBjb21wbGFpbik7CisgIGNvbXBsLT5mbXQgPSBmbXQ7Cisg IGNvbXBsLT5maWxlID0gZmlsZTsKKyAgY29tcGwtPmxpbmUgPSBsaW5lOwor ICBjb21wbC0+Y291bnRlciA9IDA7CisgIGNvbXBsLT5uZXh0ID0gTlVMTDsK IAogICAvKiBGaWxlIGl0LCByZXR1cm4gaXQuICAqLwotICBjb21wbGFpbnQt Pm5leHQgPSBjb21wbGFpbnRzLT5yb290OwotICBjb21wbGFpbnRzLT5yb290 ID0gY29tcGxhaW50OwotICByZXR1cm4gY29tcGxhaW50OworICBjb21wbC0+ bmV4dCA9IGNvbXBsYWludHMtPnJvb3Q7CisgIGNvbXBsYWludHMtPnJvb3Qg PSBjb21wbDsKKyAgcmV0dXJuIGNvbXBsOwogfQogCiAKQEAgLTE3MCwxNCAr MTcwLDE0IEBAIHZjb21wbGFpbnQgKHN0cnVjdCBjb21wbGFpbnRzICoqYywg Y29uc3QgY2hhciAqZmlsZSwKIAkgICAgdmFfbGlzdCBhcmdzKQogewogICBz dHJ1Y3QgY29tcGxhaW50cyAqY29tcGxhaW50cyA9IGdldF9jb21wbGFpbnRz IChjKTsKLSAgc3RydWN0IGNvbXBsYWluICpjb21wbGFpbnQgPSBmaW5kX2Nv bXBsYWludCAoY29tcGxhaW50cywgZmlsZSwgCisgIHN0cnVjdCBjb21wbGFp biAqY29tcGwgPSBmaW5kX2NvbXBsYWludCAoY29tcGxhaW50cywgZmlsZSwg CiAJCQkJCSAgICAgICBsaW5lLCBmbXQpOwogICBlbnVtIGNvbXBsYWludF9z ZXJpZXMgc2VyaWVzOwogCiAgIGdkYl9hc3NlcnQgKGNvbXBsYWludHMgIT0g TlVMTCk7CiAKLSAgY29tcGxhaW50LT5jb3VudGVyKys7Ci0gIGlmIChjb21w bGFpbnQtPmNvdW50ZXIgPiBzdG9wX3doaW5pbmcpCisgIGNvbXBsLT5jb3Vu dGVyKys7CisgIGlmIChjb21wbC0+Y291bnRlciA+IHN0b3Bfd2hpbmluZykK ICAgICByZXR1cm47CiAKICAgaWYgKGluZm9fdmVyYm9zZSkKQEAgLTE4NSwy MSArMTg1LDIxIEBAIHZjb21wbGFpbnQgKHN0cnVjdCBjb21wbGFpbnRzICoq YywgY29uc3QgY2hhciAqZmlsZSwKICAgZWxzZQogICAgIHNlcmllcyA9IGNv bXBsYWludHMtPnNlcmllczsKIAotICBpZiAoY29tcGxhaW50LT5maWxlICE9 IE5VTEwpCi0gICAgaW50ZXJuYWxfdndhcm5pbmcgKGNvbXBsYWludC0+Zmls ZSwgY29tcGxhaW50LT5saW5lLCAKLQkJICAgICAgIGNvbXBsYWludC0+Zm10 LCBhcmdzKTsKKyAgaWYgKGNvbXBsLT5maWxlICE9IE5VTEwpCisgICAgaW50 ZXJuYWxfdndhcm5pbmcgKGNvbXBsLT5maWxlLCBjb21wbC0+bGluZSwgCisJ CSAgICAgICBjb21wbC0+Zm10LCBhcmdzKTsKICAgZWxzZSBpZiAoZGVwcmVj YXRlZF93YXJuaW5nX2hvb2spCi0gICAgKCpkZXByZWNhdGVkX3dhcm5pbmdf aG9vaykgKGNvbXBsYWludC0+Zm10LCBhcmdzKTsKKyAgICAoKmRlcHJlY2F0 ZWRfd2FybmluZ19ob29rKSAoY29tcGwtPmZtdCwgYXJncyk7CiAgIGVsc2UK ICAgICB7CiAgICAgICBpZiAoY29tcGxhaW50cy0+ZXhwbGFuYXRpb24gPT0g TlVMTCkKIAkvKiBBIFt2XXdhcm5pbmcoKSBjYWxsIGFsd2F5cyBhcHBlbmRz IGEgbmV3bGluZS4gICovCi0Jdndhcm5pbmcgKGNvbXBsYWludC0+Zm10LCBh cmdzKTsKKwl2d2FybmluZyAoY29tcGwtPmZtdCwgYXJncyk7CiAgICAgICBl bHNlCiAJewogCSAgY2hhciAqbXNnOwogCSAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXBzOwotCSAgbXNnID0geHN0cnZwcmludGYgKGNvbXBsYWludC0+Zm10 LCBhcmdzKTsKKwkgIG1zZyA9IHhzdHJ2cHJpbnRmIChjb21wbC0+Zm10LCBh cmdzKTsKIAkgIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgbXNn KTsKIAkgIHdyYXBfaGVyZSAoIiIpOwogCSAgaWYgKHNlcmllcyAhPSBTVUJT RVFVRU5UX01FU1NBR0UpCmRpZmYgLS1naXQgYS9nZGIvY29tcGxldGVyLmMg Yi9nZGIvY29tcGxldGVyLmMKaW5kZXggNjA2Zjc4Yi4uNTVhNGI3YSAxMDA2 NDQKLS0tIGEvZ2RiL2NvbXBsZXRlci5jCisrKyBiL2dkYi9jb21wbGV0ZXIu YwpAQCAtODYzLDcgKzg2Myw3IEBAIGxpbmVfY29tcGxldGlvbl9mdW5jdGlv biAoY29uc3QgY2hhciAqdGV4dCwgaW50IG1hdGNoZXMsCiAJCQkgIGNoYXIg KmxpbmVfYnVmZmVyLCBpbnQgcG9pbnQpCiB7CiAgIHN0YXRpYyBjaGFyICoq bGlzdCA9IChjaGFyICoqKSBOVUxMOwkvKiBDYWNoZSBvZiBjb21wbGV0aW9u cy4gICovCi0gIHN0YXRpYyBpbnQgaW5kZXg7CQkJLyogTmV4dCBjYWNoZWQg Y29tcGxldGlvbi4gICovCisgIHN0YXRpYyBpbnQgaWR4OwkJCS8qIE5leHQg Y2FjaGVkIGNvbXBsZXRpb24uICAqLwogICBjaGFyICpvdXRwdXQgPSBOVUxM OwogCiAgIGlmIChtYXRjaGVzID09IDApCkBAIC04ODEsNyArODgxLDcgQEAg bGluZV9jb21wbGV0aW9uX2Z1bmN0aW9uIChjb25zdCBjaGFyICp0ZXh0LCBp bnQgbWF0Y2hlcywKIAkgIHhmcmVlIChsaXN0KTsKIAkgIGxpc3QgPSBOVUxM OwogCX0KLSAgICAgIGluZGV4ID0gMDsKKyAgICAgIGlkeCA9IDA7CiAgICAg ICBsaXN0ID0gY29tcGxldGVfbGluZSAodGV4dCwgbGluZV9idWZmZXIsIHBv aW50KTsKICAgICB9CiAKQEAgLTg5MywxMCArODkzLDEwIEBAIGxpbmVfY29t cGxldGlvbl9mdW5jdGlvbiAoY29uc3QgY2hhciAqdGV4dCwgaW50IG1hdGNo ZXMsCiAKICAgaWYgKGxpc3QpCiAgICAgewotICAgICAgb3V0cHV0ID0gbGlz dFtpbmRleF07CisgICAgICBvdXRwdXQgPSBsaXN0W2lkeF07CiAgICAgICBp ZiAob3V0cHV0KQogCXsKLQkgIGluZGV4Kys7CisJICBpZHgrKzsKIAl9CiAg ICAgfQogCmRpZmYgLS1naXQgYS9nZGIvY3AtYWJpLmMgYi9nZGIvY3AtYWJp LmMKaW5kZXggODJhMTY0ZS4uOWZmNDlmOSAxMDA2NDQKLS0tIGEvZ2RiL2Nw LWFiaS5jCisrKyBiL2dkYi9jcC1hYmkuYwpAQCAtNzAsNyArNzAsNyBAQCBp c19vcGVyYXRvcl9uYW1lIChjb25zdCBjaGFyICpuYW1lKQogfQogCiBpbnQK LWJhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgaW5k ZXgsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorYmFzZWNsYXNzX29mZnNl dCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBpZHgsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAogCQkgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQURE UiBhZGRyZXNzLAogCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsKQogewpA QCAtODEsNyArODEsNyBAQCBiYXNlY2xhc3Nfb2Zmc2V0IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgaW50IGluZGV4LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK IAogICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKICAgICB7 Ci0gICAgICByZXMgPSAoKmN1cnJlbnRfY3BfYWJpLmJhc2VjbGFzc19vZmZz ZXQpICh0eXBlLCBpbmRleCwgdmFsYWRkciwKKyAgICAgIHJlcyA9ICgqY3Vy cmVudF9jcF9hYmkuYmFzZWNsYXNzX29mZnNldCkgKHR5cGUsIGlkeCwgdmFs YWRkciwKIAkJCQkJCWVtYmVkZGVkX29mZnNldCwKIAkJCQkJCWFkZHJlc3Ms IHZhbCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2RiL2NwLW5hbWUtcGFyc2Vy LnkgYi9nZGIvY3AtbmFtZS1wYXJzZXIueQppbmRleCBmMjU3MzcwLi42NWY2 MDdmIDEwMDY0NAotLS0gYS9nZGIvY3AtbmFtZS1wYXJzZXIueQorKysgYi9n ZGIvY3AtbmFtZS1wYXJzZXIueQpAQCAtMTI5NSw5ICsxMjk1LDkgQEAgZF9i aW5hcnkgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBkZW1hbmdsZV9jb21w b25lbnQgKmxocywgc3RydWN0IGRlbWFuZ2xlX2NvbXAKIC8qIEZpbmQgdGhl IGVuZCBvZiBhIHN5bWJvbCBuYW1lIHN0YXJ0aW5nIGF0IExFWFBUUi4gICov CiAKIHN0YXRpYyBjb25zdCBjaGFyICoKLXN5bWJvbF9lbmQgKGNvbnN0IGNo YXIgKmxleHB0cikKK3N5bWJvbF9lbmQgKGNvbnN0IGNoYXIgKmxleCkKIHsK LSAgY29uc3QgY2hhciAqcCA9IGxleHB0cjsKKyAgY29uc3QgY2hhciAqcCA9 IGxleDsKIAogICB3aGlsZSAoKnAgJiYgKElTQUxOVU0gKCpwKSB8fCAqcCA9 PSAnXycgfHwgKnAgPT0gJyQnIHx8ICpwID09ICcuJykpCiAgICAgcCsrOwpk aWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuYyBiL2dkYi9jcC1zdXBwb3J0 LmMKaW5kZXggOWUwMDFiMi4uZGMyNjlmZiAxMDA2NDQKLS0tIGEvZ2RiL2Nw LXN1cHBvcnQuYworKysgYi9nZGIvY3Atc3VwcG9ydC5jCkBAIC0yMDEsNyAr MjAxLDcgQEAgaW5zcGVjdF90eXBlIChzdHJ1Y3QgZGVtYW5nbGVfcGFyc2Vf aW5mbyAqaW5mbywKIAkgIGxvbmcgbGVuOwogCSAgaW50IGlzX2Fub247CiAJ ICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLQkgIHN0cnVjdCBkZW1hbmdsZV9wYXJz ZV9pbmZvICppOworCSAgc3RydWN0IGRlbWFuZ2xlX3BhcnNlX2luZm8gKnBh cnNlaW5mbzsKIAkgIHN0cnVjdCB1aV9maWxlICpidWY7CiAKIAkgIC8qIEdl dCB0aGUgcmVhbCB0eXBlIG9mIHRoZSB0eXBlZGVmLiAgKi8KQEAgLTI1Miwx MSArMjUyLDExIEBAIGluc3BlY3RfdHlwZSAoc3RydWN0IGRlbWFuZ2xlX3Bh cnNlX2luZm8gKmluZm8sCiAJICAgICB0cmVlIHdpbGwgY29udGFpbiBwb2lu dGVycyBpbnRvIE5BTUUsIHNvIE5BTUUgY2Fubm90CiAJICAgICBiZSBmcmVl J2QgdW50aWwgYWxsIHR5cGVkZWYgY29udmVyc2lvbiBpcyBkb25lIGFuZAog CSAgICAgdGhlIGZpbmFsIHJlc3VsdCBpcyBjb252ZXJ0ZWQgaW50byBhIHN0 cmluZy4gICovCi0JICBpID0gY3BfZGVtYW5nbGVkX25hbWVfdG9fY29tcCAo bmFtZSwgTlVMTCk7Ci0JICBpZiAoaSAhPSBOVUxMKQorCSAgcGFyc2VpbmZv ID0gY3BfZGVtYW5nbGVkX25hbWVfdG9fY29tcCAobmFtZSwgTlVMTCk7CisJ ICBpZiAocGFyc2VpbmZvICE9IE5VTEwpCiAJICAgIHsKIAkgICAgICAvKiBN ZXJnZSB0aGUgdHdvIHRyZWVzLiAgKi8KLQkgICAgICBjcF9tZXJnZV9kZW1h bmdsZV9wYXJzZV9pbmZvcyAoaW5mbywgcmV0X2NvbXAsIGkpOworCSAgICAg IGNwX21lcmdlX2RlbWFuZ2xlX3BhcnNlX2luZm9zIChpbmZvLCByZXRfY29t cCwgcGFyc2VpbmZvKTsKIAogCSAgICAgIC8qIFJlcGxhY2UgYW55IG5ld2x5 IGludHJvZHVjZWQgdHlwZWRlZnMgLS0gYnV0IG5vdAogCQkgaWYgdGhlIHR5 cGUgaXMgYW5vbnltb3VzICh0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUK QEAgLTg5OSw3ICs4OTksNyBAQCBjcF9maW5kX2ZpcnN0X2NvbXBvbmVudCAo Y29uc3QgY2hhciAqbmFtZSkKIHN0YXRpYyB1bnNpZ25lZCBpbnQKIGNwX2Zp bmRfZmlyc3RfY29tcG9uZW50X2F1eCAoY29uc3QgY2hhciAqbmFtZSwgaW50 IHBlcm1pc3NpdmUpCiB7Ci0gIHVuc2lnbmVkIGludCBpbmRleCA9IDA7Cisg IHVuc2lnbmVkIGludCBpZHggPSAwOwogICAvKiBPcGVyYXRvciBuYW1lcyBj YW4gc2hvdyB1cCBpbiB1bmV4cGVjdGVkIHBsYWNlcy4gIFNpbmNlIHRoZXNl IGNhbgogICAgICBjb250YWluIHBhcmVudGhlc2VzIG9yIGFuZ2xlIGJyYWNr ZXRzLCB0aGV5IGNhbiBzY3JldyB1cCB0aGUKICAgICAgcmVjdXJzaW9uLiAg QnV0IG5vdCBldmVyeSBzdHJpbmcgJ29wZXJhdG9yJyBpcyBwYXJ0IG9mIGFu CkBAIC05MDgsNDkgKzkwOCw0OSBAQCBjcF9maW5kX2ZpcnN0X2NvbXBvbmVu dF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGludCBwZXJtaXNzaXZlKQogICAg ICAnb3BlcmF0b3InIGFzIHN0YXJ0aW5nIGFuIG9wZXJhdG9yLiAgKi8KICAg aW50IG9wZXJhdG9yX3Bvc3NpYmxlID0gMTsKIAotICBmb3IgKDs7ICsraW5k ZXgpCisgIGZvciAoOzsgKytpZHgpCiAgICAgewotICAgICAgc3dpdGNoIChu YW1lW2luZGV4XSkKKyAgICAgIHN3aXRjaCAobmFtZVtpZHhdKQogCXsKIAlj YXNlICc8JzoKIAkgIC8qIFRlbXBsYXRlOyBlYXQgaXQgdXAuICBUaGUgY2Fs bHMgdG8gY3BfZmlyc3RfY29tcG9uZW50CiAJICAgICBzaG91bGQgb25seSBy ZXR1cm4gKEkgaG9wZSEpIHdoZW4gdGhleSByZWFjaCB0aGUgJz4nCiAJICAg ICB0ZXJtaW5hdGluZyB0aGUgY29tcG9uZW50IG9yIGEgJzo6JyBiZXR3ZWVu IHR3bwogCSAgICAgY29tcG9uZW50cy4gIChIZW5jZSB0aGUgJysgMicuKSAg Ki8KLQkgIGluZGV4ICs9IDE7Ci0JICBmb3IgKGluZGV4ICs9IGNwX2ZpbmRf Zmlyc3RfY29tcG9uZW50X2F1eCAobmFtZSArIGluZGV4LCAxKTsKLQkgICAg ICAgbmFtZVtpbmRleF0gIT0gJz4nOwotCSAgICAgICBpbmRleCArPSBjcF9m aW5kX2ZpcnN0X2NvbXBvbmVudF9hdXggKG5hbWUgKyBpbmRleCwgMSkpCisJ ICBpZHggKz0gMTsKKwkgIGZvciAoaWR4ICs9IGNwX2ZpbmRfZmlyc3RfY29t cG9uZW50X2F1eCAobmFtZSArIGlkeCwgMSk7CisJICAgICAgIG5hbWVbaWR4 XSAhPSAnPic7CisJICAgICAgIGlkeCArPSBjcF9maW5kX2ZpcnN0X2NvbXBv bmVudF9hdXggKG5hbWUgKyBpZHgsIDEpKQogCSAgICB7Ci0JICAgICAgaWYg KG5hbWVbaW5kZXhdICE9ICc6JykKKwkgICAgICBpZiAobmFtZVtpZHhdICE9 ICc6JykKIAkJewogCQkgIGRlbWFuZ2xlZF9uYW1lX2NvbXBsYWludCAobmFt ZSk7CiAJCSAgcmV0dXJuIHN0cmxlbiAobmFtZSk7CiAJCX0KLQkgICAgICBp bmRleCArPSAyOworCSAgICAgIGlkeCArPSAyOwogCSAgICB9CiAJICBvcGVy YXRvcl9wb3NzaWJsZSA9IDE7CiAJICBicmVhazsKIAljYXNlICcoJzoKIAkg IC8qIFNpbWlsYXIgY29tbWVudCBhcyB0byAnPCcuICAqLwotCSAgaW5kZXgg Kz0gMTsKLQkgIGZvciAoaW5kZXggKz0gY3BfZmluZF9maXJzdF9jb21wb25l bnRfYXV4IChuYW1lICsgaW5kZXgsIDEpOwotCSAgICAgICBuYW1lW2luZGV4 XSAhPSAnKSc7Ci0JICAgICAgIGluZGV4ICs9IGNwX2ZpbmRfZmlyc3RfY29t cG9uZW50X2F1eCAobmFtZSArIGluZGV4LCAxKSkKKwkgIGlkeCArPSAxOwor CSAgZm9yIChpZHggKz0gY3BfZmluZF9maXJzdF9jb21wb25lbnRfYXV4IChu YW1lICsgaWR4LCAxKTsKKwkgICAgICAgbmFtZVtpZHhdICE9ICcpJzsKKwkg ICAgICAgaWR4ICs9IGNwX2ZpbmRfZmlyc3RfY29tcG9uZW50X2F1eCAobmFt ZSArIGlkeCwgMSkpCiAJICAgIHsKLQkgICAgICBpZiAobmFtZVtpbmRleF0g IT0gJzonKQorCSAgICAgIGlmIChuYW1lW2lkeF0gIT0gJzonKQogCQl7CiAJ CSAgZGVtYW5nbGVkX25hbWVfY29tcGxhaW50IChuYW1lKTsKIAkJICByZXR1 cm4gc3RybGVuIChuYW1lKTsKIAkJfQotCSAgICAgIGluZGV4ICs9IDI7CisJ ICAgICAgaWR4ICs9IDI7CiAJICAgIH0KIAkgIG9wZXJhdG9yX3Bvc3NpYmxl ID0gMTsKIAkgIGJyZWFrOwogCWNhc2UgJz4nOgogCWNhc2UgJyknOgogCSAg aWYgKHBlcm1pc3NpdmUpCi0JICAgIHJldHVybiBpbmRleDsKKwkgICAgcmV0 dXJuIGlkeDsKIAkgIGVsc2UKIAkgICAgewogCSAgICAgIGRlbWFuZ2xlZF9u YW1lX2NvbXBsYWludCAobmFtZSk7CkBAIC05NTgsMzkgKzk1OCwzOSBAQCBj cF9maW5kX2ZpcnN0X2NvbXBvbmVudF9hdXggKGNvbnN0IGNoYXIgKm5hbWUs IGludCBwZXJtaXNzaXZlKQogCSAgICB9CiAJY2FzZSAnXDAnOgogCWNhc2Ug JzonOgotCSAgcmV0dXJuIGluZGV4OworCSAgcmV0dXJuIGlkeDsKIAljYXNl ICdvJzoKIAkgIC8qIE9wZXJhdG9yIG5hbWVzIGNhbiBzY3JldyB1cCB0aGUg cmVjdXJzaW9uLiAgKi8KIAkgIGlmIChvcGVyYXRvcl9wb3NzaWJsZQotCSAg ICAgICYmIHN0cm5jbXAgKG5hbWUgKyBpbmRleCwgIm9wZXJhdG9yIiwKKwkg ICAgICAmJiBzdHJuY21wIChuYW1lICsgaWR4LCAib3BlcmF0b3IiLAogCQkJ ICBMRU5HVEhfT0ZfT1BFUkFUT1IpID09IDApCiAJICAgIHsKLQkgICAgICBp bmRleCArPSBMRU5HVEhfT0ZfT1BFUkFUT1I7Ci0JICAgICAgd2hpbGUgKElT U1BBQ0UobmFtZVtpbmRleF0pKQotCQkrK2luZGV4OwotCSAgICAgIHN3aXRj aCAobmFtZVtpbmRleF0pCisJICAgICAgaWR4ICs9IExFTkdUSF9PRl9PUEVS QVRPUjsKKwkgICAgICB3aGlsZSAoSVNTUEFDRShuYW1lW2lkeF0pKQorCQkr K2lkeDsKKwkgICAgICBzd2l0Y2ggKG5hbWVbaWR4XSkKIAkJewogCQkgIC8q IFNraXAgb3ZlciBvbmUgbGVzcyB0aGFuIHRoZSBhcHByb3ByaWF0ZSBudW1i ZXIgb2YKIAkJICAgICBjaGFyYWN0ZXJzOiB0aGUgZm9yIGxvb3Agd2lsbCBz a2lwIG92ZXIgdGhlIGxhc3QKIAkJICAgICBvbmUuICAqLwogCQljYXNlICc8 JzoKLQkJICBpZiAobmFtZVtpbmRleCArIDFdID09ICc8JykKLQkJICAgIGlu ZGV4ICs9IDE7CisJCSAgaWYgKG5hbWVbaWR4ICsgMV0gPT0gJzwnKQorCQkg ICAgaWR4ICs9IDE7CiAJCSAgZWxzZQotCQkgICAgaW5kZXggKz0gMDsKKwkJ ICAgIGlkeCArPSAwOwogCQkgIGJyZWFrOwogCQljYXNlICc+JzoKIAkJY2Fz ZSAnLSc6Ci0JCSAgaWYgKG5hbWVbaW5kZXggKyAxXSA9PSAnPicpCi0JCSAg ICBpbmRleCArPSAxOworCQkgIGlmIChuYW1lW2lkeCArIDFdID09ICc+JykK KwkJICAgIGlkeCArPSAxOwogCQkgIGVsc2UKLQkJICAgIGluZGV4ICs9IDA7 CisJCSAgICBpZHggKz0gMDsKIAkJICBicmVhazsKIAkJY2FzZSAnKCc6Ci0J CSAgaW5kZXggKz0gMTsKKwkJICBpZHggKz0gMTsKIAkJICBicmVhazsKIAkJ ZGVmYXVsdDoKLQkJICBpbmRleCArPSAwOworCQkgIGlkeCArPSAwOwogCQkg IGJyZWFrOwogCQl9CiAJICAgIH0KZGlmZiAtLWdpdCBhL2dkYi9jcC12YWxw cmludC5jIGIvZ2RiL2NwLXZhbHByaW50LmMKaW5kZXggZjg1MTZkNS4uYWI0 ODRiYyAxMDA2NDQKLS0tIGEvZ2RiL2NwLXZhbHByaW50LmMKKysrIGIvZ2Ri L2NwLXZhbHByaW50LmMKQEAgLTM3NywyNCArMzc3LDI1IEBAIGNwX3ByaW50 X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBl ICpyZWFsX3R5cGUsCiAKICAgICAgIGlmIChkb250X3ByaW50X3N0YXRtZW0g PT0gMCkKIAl7Ci0JICBpbnQgb2JzdGFja19maW5hbF9zaXplID0KLSAgICAg ICAgICAgb2JzdGFja19vYmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdG1l bV9vYnN0YWNrKTsKLQotCSAgaWYgKG9ic3RhY2tfZmluYWxfc2l6ZSA+IHN0 YXRtZW1fb2JzdGFja19pbml0aWFsX3NpemUpCi0JICAgIHsKLQkgICAgICAv KiBJbiBlZmZlY3QsIGEgcG9wIG9mIHRoZSBwcmludGVkLXN0YXRpY3Mgc3Rh Y2suICAqLwotCi0JICAgICAgdm9pZCAqZnJlZV90b19wdHIgPQotCQlvYnN0 YWNrX25leHRfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKSAt Ci0JCShvYnN0YWNrX2ZpbmFsX3NpemUgLSBzdGF0bWVtX29ic3RhY2tfaW5p dGlhbF9zaXplKTsKLQotCSAgICAgIG9ic3RhY2tfZnJlZSAoJmRvbnRfcHJp bnRfc3RhdG1lbV9vYnN0YWNrLAotCQkJICAgIGZyZWVfdG9fcHRyKTsKLQkg ICAgfQotCisgICAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IG9i c3RhY2tfZmluYWxfc2l6ZSA9CisgICAgICAgICAgICAgIG9ic3RhY2tfb2Jq ZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjayk7CisKKyAg ICAgICAgICAgIGlmIChvYnN0YWNrX2ZpbmFsX3NpemUgPiBzdGF0bWVtX29i c3RhY2tfaW5pdGlhbF9zaXplKQorICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgLyogSW4gZWZmZWN0LCBhIHBvcCBvZiB0aGUgcHJpbnRlZC1z dGF0aWNzIHN0YWNrLiAgKi8KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICB2b2lkICpmcmVlX3RvX3B0ciA9CisgICAgICAgICAgICAgICAg ICBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0 YWNrKSAtCisgICAgICAgICAgICAgICAgICAob2JzdGFja19maW5hbF9zaXpl IC0gc3RhdG1lbV9vYnN0YWNrX2luaXRpYWxfc2l6ZSk7CisgICAgICAgICAg ICAgICAgCisgICAgICAgICAgICAgICAgb2JzdGFja19mcmVlICgmZG9udF9w cmludF9zdGF0bWVtX29ic3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmcmVlX3RvX3B0cik7CisgICAgICAgICAgICAgIH0KKyAgICAg ICAgICB9CiAJICBpZiAobGFzdF9zZXRfcmVjdXJzZSAhPSByZWN1cnNlKQog CSAgICB7Ci0JICAgICAgaW50IG9ic3RhY2tfZmluYWxfc2l6ZSA9CisJICAg ICAgY29uc3QgaW50IG9ic3RhY2tfZmluYWxfc2l6ZSA9CiAJCW9ic3RhY2tf b2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjayk7 CiAJICAgICAgCiAJICAgICAgaWYgKG9ic3RhY2tfZmluYWxfc2l6ZSA+IHN0 YXRfYXJyYXlfb2JzdGFja19pbml0aWFsX3NpemUpCkBAIC00OTYsNyArNDk3 LDcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgdHlwZSAqcmVhbF90eXBlLAogICAgICAgaW50IGJvZmZzZXQgPSAwOwog ICAgICAgaW50IHNraXA7CiAgICAgICBzdHJ1Y3QgdHlwZSAqYmFzZWNsYXNz ID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9CQVNFQ0xBU1MgKHR5cGUsIGkpKTsK LSAgICAgIGNoYXIgKmJhc2VuYW1lID0gVFlQRV9OQU1FIChiYXNlY2xhc3Mp OworICAgICAgY29uc3QgY2hhciAqYmFzZV9uYW1lID0gVFlQRV9OQU1FIChi YXNlY2xhc3MpOwogICAgICAgY29uc3QgZ2RiX2J5dGUgKmJhc2VfdmFsYWRk ciA9IE5VTEw7CiAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKmJhc2VfdmFs ID0gTlVMTDsKICAgICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGV4OwpAQCAtNTc3LDcgKzU3OCw3IEBAIGNwX3ByaW50X3ZhbHVlIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSwKICAgICAg IGZwdXRzX2ZpbHRlcmVkICgiPCIsIHN0cmVhbSk7CiAgICAgICAvKiBOb3Qg c3VyZSB3aGF0IHRoZSBiZXN0IG5vdGF0aW9uIGlzIGluIHRoZSBjYXNlIHdo ZXJlIHRoZXJlIGlzCiAgICAgICAgICBubyBiYXNlY2xhc3MgbmFtZS4gICov Ci0gICAgICBmcHV0c19maWx0ZXJlZCAoYmFzZW5hbWUgPyBiYXNlbmFtZSA6 ICIiLCBzdHJlYW0pOworICAgICAgZnB1dHNfZmlsdGVyZWQgKGJhc2VfbmFt ZSA/IGJhc2VfbmFtZSA6ICIiLCBzdHJlYW0pOwogICAgICAgZnB1dHNfZmls dGVyZWQgKCI+ID0gIiwgc3RyZWFtKTsKIAogICAgICAgaWYgKHNraXAgPCAw KQotLSAKMS43LjUuNAoK --14dae93a151b79eba004b0aa3bb6--