From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26156 invoked by alias); 17 Aug 2010 21:48:37 -0000 Received: (qmail 26138 invoked by uid 22791); 17 Aug 2010 21:48:36 -0000 X-SWARE-Spam-Status: No, hits=1.3 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from mail-bw0-f47.google.com (HELO mail-bw0-f47.google.com) (209.85.214.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 17 Aug 2010 21:48:30 +0000 Received: by bwz12 with SMTP id 12so26002bwz.20 for ; Tue, 17 Aug 2010 14:48:27 -0700 (PDT) MIME-Version: 1.0 Received: by 10.204.176.144 with SMTP id be16mr4883980bkb.53.1282081707065; Tue, 17 Aug 2010 14:48:27 -0700 (PDT) Received: by 10.204.143.154 with HTTP; Tue, 17 Aug 2010 14:48:27 -0700 (PDT) In-Reply-To: References: <4C6A3E58.40102@net-b.de> <4C6AF2D5.9020600@net-b.de> Date: Tue, 17 Aug 2010 22:47:00 -0000 Message-ID: Subject: Re: [Patch, Fortran, F08] PR45290: pointer initialization From: Janus Weil To: Tobias Burnus Cc: gfortran , gcc-patches Content-Type: multipart/mixed; boundary=001636c5a252b902b1048e0be8ec Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2010-08/txt/msg01322.txt.bz2 --001636c5a252b902b1048e0be8ec Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1799 > But adding this patchlet: > > > Index: gcc/fortran/primary.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- gcc/fortran/primary.c =A0 =A0 =A0 (revision 163310) > +++ gcc/fortran/primary.c =A0 =A0 =A0 (working copy) > @@ -2017,8 +2017,6 @@ gfc_variable_attr (gfc_expr *expr, gfc_typespec *t > =A0 =A0 } > > =A0 target =3D attr.target; > - =A0if (pointer || attr.proc_pointer) > - =A0 =A0target =3D 1; > > =A0 if (ts !=3D NULL && expr->ts.type =3D=3D BT_UNKNOWN) > =A0 =A0 *ts =3D sym->ts; > @@ -2074,8 +2072,6 @@ gfc_variable_attr (gfc_expr *expr, gfc_typespec *t > =A0 =A0 =A0 =A0 =A0 =A0pointer =3D comp->attr.pointer; > =A0 =A0 =A0 =A0 =A0 =A0allocatable =3D comp->attr.allocatable; > =A0 =A0 =A0 =A0 =A0} > - =A0 =A0 =A0 if (pointer || attr.proc_pointer) > - =A0 =A0 =A0 =A0 target =3D 1; > > =A0 =A0 =A0 =A0break; > > > gives me a couple of regressions: > > > FAIL: gfortran.fortran-torture/execute/ptr.f90 compilation, =A0-O0 > FAIL: gfortran.dg/c_loc_tests_14.f90 =A0-O =A0(test for excess errors) > FAIL: gfortran.dg/c_loc_tests_5.f03 =A0-O =A0(test for excess errors) > FAIL: gfortran.dg/pointer_assign_4.f90 =A0-O0 =A0(test for excess errors) > FAIL: gfortran.dg/pr43984.f90 =A0-O =A0(test for excess errors) > FAIL: gfortran.dg/subref_array_pointer_1.f90 =A0-O0 =A0(test for excess e= rrors) > > All of them, except the C_LOC ones, fail on pointer assignments. And I > think all of them are actually invalid. Here is an updated patch, which fixes the invalid test cases. It should be free of regressions. Ok so far? I will re-check for regressions and take care of implicit SAVE in PROGRAMS tomorrow. Cheers, Janus --001636c5a252b902b1048e0be8ec Content-Type: application/octet-stream; name="pr45290_v4.diff" Content-Disposition: attachment; filename="pr45290_v4.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gczaac231 Content-length: 25145 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZm9ydHJhbi10b3J0dXJl L2V4ZWN1dGUvcHRyLmY5MAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmZvcnRyYW4tdG9ydHVyZS9leGVjdXRl L3B0ci5mOTAJKHJldmlzaW9uIDE2MzMxMCkKKysrIGdjYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZm9ydHJhbi10b3J0dXJlL2V4ZWN1dGUvcHRyLmY5MAkod29y a2luZyBjb3B5KQpAQCAtMSwxMiArMSwxMCBAQAogcHJvZ3JhbSBwdHIKICAg IGltcGxpY2l0IG5vbmUKLSAgIGludGVnZXIsIHBvaW50ZXIsIGRpbWVuc2lv big6KSA6OiBhLCBiCisgICBpbnRlZ2VyLCBkaW1lbnNpb24oMTo2KSwgdGFy Z2V0IDo6IGEgPSAoLyAxLCAyLCAzLCA0LCA1LCA2IC8pCisgICBpbnRlZ2Vy LCBwb2ludGVyLCBkaW1lbnNpb24oOikgOjogYgogICAgaW50ZWdlciwgcG9p bnRlciA6OiBwCiAgICBpbnRlZ2VyLCB0YXJnZXQgOjogaQotCi0gICBhbGxv Y2F0ZSAoYSgxOjYpKQogICAKLSAgIGEgPSAoLyAxLCAyLCAzLCA0LCA1LCA2 IC8pCiAgICBiID0+IGEKICAgIGlmIChhbnkgKGIgLm5lLiAoLyAxLCAyLCAz LCA0LCA1LCA2IC8pKSkgY2FsbCBhYm9ydAogICAgYiA9PiBhKDE6NjoyKQpJ bmRleDogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjQzOTg0LmY5MAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL3ByNDM5ODQuZjkwCShyZXZpc2lvbiAxNjMzMTApCisrKyBnY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByNDM5ODQuZjkwCSh3b3JraW5nIGNv cHkpCkBAIC0xNSw3ICsxNSw2IEBAIHN1YnJvdXRpbmUgbWFrZV9lc3NzKHNl bGYsZXNzcykKICAgdHlwZShzaGVsbDFxdWFydGV0X3R5cGUpIDo6IHNlbGYK ICAgaW50ZW50KGluKSA6OiBzZWxmCiAgIHJlYWwoa2luZD1raW5kKDEuMGQw KSksIGRpbWVuc2lvbig6KSwgaW50ZW50KG91dCkgOjogZXNzcwotICByZWFs KGtpbmQ9a2luZCgxLjBkMCkpLCBkaW1lbnNpb24oOiksIHBvaW50ZXIgOjog SXp6CiAgIHJlYWwoa2luZD1raW5kKDEuMGQwKSksIGRpbWVuc2lvbig6LDop LCBwb2ludGVyIDo6IEl4LEl5LEl6LEl5egogICBpbnRlZ2VyKGtpbmQ9a2lu ZCgxKSksIGRpbWVuc2lvbig6KSwgcG9pbnRlciAgOjogZV94LGlpX2l2ZWMK ICAgaW50ZWdlcihraW5kPWtpbmQoMSkpIDo6IGRpbSwgZGltMSwgbnJvb3Rz LCBpaSx6LHkKQEAgLTM4LDEwICszNyw5IEBAIHN1YnJvdXRpbmUgbWFrZV9l c3NzKHNlbGYsZXNzcykKICAgICBlc3NzID0gWkVSTwogICAgIGlpID0gMAog ICAgIGRvIHo9MSxkaW0KLSAgICAgIEl6eiA9PiBJeig6LHopCiAgICAgICBk byB5PTEsZGltMS16CiAgICAgICAgIGlpID0gaWkgKyAxCi0gICAgICAgIEl5 eig6LGlpKSA9IEl6eiAqIEl5KDoseSkKKyAgICAgICAgSXl6KDosaWkpID0g SXooOix6KSAqIEl5KDoseSkKICAgICAgIGVuZCBkbwogICAgIGVuZCBkbwog ICAgIGVzc3MgPSBlc3NzICsgc3VtKEl4KDosZV94KSAqIEl5eig6LGlpX2l2 ZWMpLDEpCkluZGV4OiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NfbG9j X3Rlc3RzXzUuZjAzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY19sb2NfdGVzdHNfNS5mMDMJKHJldmlz aW9uIDE2MzMxMCkKKysrIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY19s b2NfdGVzdHNfNS5mMDMJKHdvcmtpbmcgY29weSkKQEAgLTYsMTMgKzYsMTEg QEAgY29udGFpbnMKICAgc3Vicm91dGluZSBzdWIwKCkgYmluZChjKQogICAg IHR5cGUoY19wdHIpIDo6IGZfcHRyLCBteV9jX3B0cgogICAgIGNoYXJhY3Rl cihraW5kPWNfY2hhciwgbGVuPTIwKSwgdGFyZ2V0IDo6IGZvcm1hdAotICAg IGludGVnZXIoY19pbnQpLCBkaW1lbnNpb24oOiksIHBvaW50ZXIgOjogaW50 X3B0cgogICAgIGludGVnZXIoY19pbnQpLCBkaW1lbnNpb24oMTApLCB0YXJn ZXQgOjogaW50X2FycmF5CiAKICAgICBmX3B0ciA9IGNfbG9jKGZvcm1hdCgx OjEpKQogCi0gICAgaW50X3B0ciA9PiBpbnRfYXJyYXkKLSAgICBteV9jX3B0 ciA9IGNfbG9jKGludF9wdHIoMCkpCisgICAgbXlfY19wdHIgPSBjX2xvYyhp bnRfYXJyYXkoMSkpCiAKICAgZW5kIHN1YnJvdXRpbmUgc3ViMAogZW5kIG1v ZHVsZSBjX2xvY190ZXN0c181CkluZGV4OiBnY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL3N1YnJlZl9hcnJheV9wb2ludGVyXzEuZjkwCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvc3Vi cmVmX2FycmF5X3BvaW50ZXJfMS5mOTAJKHJldmlzaW9uIDE2MzMxMCkKKysr IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvc3VicmVmX2FycmF5X3BvaW50 ZXJfMS5mOTAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAgY29u dGFpbnMKICAgICBUWVBFIGZvb19hcnJheQogICAgICAgVFlQRShmb28pLCBE SU1FTlNJT04oOiksIFBPSU5URVIgOjogYXJyYXkKICAgICBFTkQgVFlQRQot ICAgIFRZUEUoZm9vX2FycmF5KSAgICAgICAgICAgICAgICA6OiBhcnJheV9o b2xkZXIKKyAgICBUWVBFKGZvb19hcnJheSksVEFSR0VUICAgICAgICAgOjog YXJyYXlfaG9sZGVyCiAgICAgSU5URUdFUiwgRElNRU5TSU9OKDopLCBQT0lO VEVSIDo6IGFycmF5X3B0cgogICAgIEFMTE9DQVRFKCBhcnJheV9ob2xkZXIl YXJyYXkoMykgKQogICAgIGFycmF5X2hvbGRlciVhcnJheSA9ICgvIGZvbygx KSwgZm9vKDIpLCBmb28oMykgLykKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvcHJvY19wdHJfY29tcF8zLmY5MAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3Byb2NfcHRy X2NvbXBfMy5mOTAJKHJldmlzaW9uIDE2MzMxMCkKKysrIGdjYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvcHJvY19wdHJfY29tcF8zLmY5MAkod29ya2luZyBj b3B5KQpAQCAtMjIsNyArMjIsNiBAQCB0eXBlIDo6IHQKICAgcHJvY2VkdXJl KCksIHBvaW50ZXIsIG5vcGFzcyBwdHI0ICAgICAgICAgICAgICAhIHsgZGct ZXJyb3IgIkV4cGVjdGVkICc6OiciIH0KICAgcHJvY2VkdXJlKCksIHBvaW50 ZXIsIG5vcGFzcywgcG9pbnRlciA6OiBwdHI1ICAhIHsgZGctZXJyb3IgIkR1 cGxpY2F0ZSIgfQogICBwcm9jZWR1cmUsIHBvaW50ZXIsIG5vcGFzcyA6OiBw dHI2ICAgICAgICAgICAgICEgeyBkZy1lcnJvciAiU3ludGF4IGVycm9yIiB9 Ci0gIHByb2NlZHVyZSgpLCBwb2ludGVyLCBub3Bhc3MgOjogcHRyNyA9PiBw dHIyICAgISB7IGRnLWVycm9yICJyZXF1aXJlcyBhIE5VTEwiIH0KICAgcHJv Y2VkdXJlKCksIG5vcGFzcyA6OiBwdHI4ICAgICAgICAgICAgICAgICAgICAh IHsgZGctZXJyb3IgIlBPSU5URVIgYXR0cmlidXRlIGlzIHJlcXVpcmVkIiB9 CiAgIHByb2NlZHVyZShwcCksIHBvaW50ZXIsIG5vcGFzcyA6OiBwdHI5ICAg ICAgICAgISB7IGRnLWVycm9yICJkZWNsYXJlZCBpbiBhIGxhdGVyIFBST0NF RFVSRSBzdGF0ZW1lbnQiIH0KICAgcHJvY2VkdXJlKGFhYXJnaCksIHBvaW50 ZXIsIG5vcGFzcyA6OiBwdHIxMCAgICAhIHsgZGctZXJyb3IgIm11c3QgYmUg ZXhwbGljaXQiIH0KSW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv Y19sb2NfdGVzdHNfMTQuZjkwCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY19sb2NfdGVzdHNfMTQuZjkw CShyZXZpc2lvbiAxNjMzMTApCisrKyBnY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2NfbG9jX3Rlc3RzXzE0LmY5MAkod29ya2luZyBjb3B5KQpAQCAtMTgs NyArMTgsNyBAQAogICAgICAgICAgIFRZUEUodGVzdDIpLCBESU1FTlNJT04o MikgOjogYwogICBFTkQgVFlQRSB0ZXN0CiAKLSAgVFlQRSh0ZXN0KSA6OiBj aHJTY2FsYXIKKyAgVFlQRSh0ZXN0KSwgVEFSR0VUIDo6IGNoclNjYWxhcgog ICBUWVBFKENfUFRSKSA6OiBmX3B0cgogICBUWVBFKHRlc3QzKSwgVEFSR0VU IDo6IGQoMykKIApJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9w b2ludGVyX2Fzc2lnbl80LmY5MAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BvaW50ZXJfYXNzaWduXzQu ZjkwCShyZXZpc2lvbiAxNjMzMTApCisrKyBnY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL3BvaW50ZXJfYXNzaWduXzQuZjkwCSh3b3JraW5nIGNvcHkpCkBA IC0yOCw5ICsyOCw2IEBAIHByb2dyYW0gcHJvZwogICAgIGNhbGwgYWJvcnQo KQogICBpZigobGJvdW5kKHAyLGRpbT0xKSAvPSAxKSAub3IuICh1Ym91bmQo cDIsZGltPTEpIC89IDIxKSkgJgogICAgIGNhbGwgYWJvcnQoKQotICBwMiA9 PiBwKDopCi0gIGlmKChsYm91bmQocDIsZGltPTEpIC89IDEpIC5vci4gKHVi b3VuZChwMixkaW09MSkgLz0gMjEpKSAmCi0gICAgY2FsbCBhYm9ydCgpCiAg IGNhbGwgbXVsdGRpbSgpCiBjb250YWlucwogICBzdWJyb3V0aW5lIG11bHRk aW0oKQpJbmRleDogZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwko cmV2aXNpb24gMTYzMzEwKQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5j CSh3b3JraW5nIGNvcHkpCkBAIC01NTYsNyArNTU2LDcgQEAgZ2ZjX2NvbnZf dmFyaWFibGUgKGdmY19zZSAqIHNlLCBnZmNfZXhwciAqIGV4cHIpCiB7CiAg IGdmY19yZWYgKnJlZjsKICAgZ2ZjX3N5bWJvbCAqc3ltOwotICB0cmVlIHBh cmVudF9kZWNsOworICB0cmVlIHBhcmVudF9kZWNsID0gTlVMTF9UUkVFOwog ICBpbnQgcGFyZW50X2ZsYWc7CiAgIGJvb2wgcmV0dXJuX3ZhbHVlOwogICBi b29sIGFsdGVybmF0ZV9lbnRyeTsKQEAgLTU5MCw3ICs1OTAsOCBAQCBnZmNf Y29udl92YXJpYWJsZSAoZ2ZjX3NlICogc2UsIGdmY19leHByICogZXhwcikK ICAgICAgIGVudHJ5X21hc3RlciA9IHN5bS0+YXR0ci5yZXN1bHQKIAkJICAg ICAmJiBzeW0tPm5zLT5wcm9jX25hbWUtPmF0dHIuZW50cnlfbWFzdGVyCiAJ CSAgICAgJiYgIWdmY19yZXR1cm5fYnlfcmVmZXJlbmNlIChzeW0tPm5zLT5w cm9jX25hbWUpOwotICAgICAgcGFyZW50X2RlY2wgPSBERUNMX0NPTlRFWFQg KGN1cnJlbnRfZnVuY3Rpb25fZGVjbCk7CisgICAgICBpZiAoY3VycmVudF9m dW5jdGlvbl9kZWNsKQorCXBhcmVudF9kZWNsID0gREVDTF9DT05URVhUIChj dXJyZW50X2Z1bmN0aW9uX2RlY2wpOwogCiAgICAgICBpZiAoKHNlLT5leHBy ID09IHBhcmVudF9kZWNsICYmIHJldHVybl92YWx1ZSkKIAkgICB8fCAoc3lt LT5ucyAmJiBzeW0tPm5zLT5wcm9jX25hbWUKQEAgLTM5ODMsNyArMzk4NCwx NyBAQCBnZmNfY29udl9pbml0aWFsaXplciAoZ2ZjX2V4cHIgKiBleHByLCBn ZmNfdHlwZXNwZQogCXJldHVybiBnZmNfY29udl9hcnJheV9pbml0aWFsaXpl ciAodHlwZSwgZXhwcik7CiAgICAgfQogICBlbHNlIGlmIChwb2ludGVyKQot ICAgIHJldHVybiBmb2xkX2NvbnZlcnQgKHR5cGUsIG51bGxfcG9pbnRlcl9u b2RlKTsKKyAgICB7CisgICAgICBpZiAoIWV4cHIgfHwgZXhwci0+ZXhwcl90 eXBlID09IEVYUFJfTlVMTCkKKwlyZXR1cm4gZm9sZF9jb252ZXJ0ICh0eXBl LCBudWxsX3BvaW50ZXJfbm9kZSk7CisgICAgICBlbHNlCisJeworCSAgZ2Zj X2luaXRfc2UgKCZzZSwgTlVMTCk7CisJICBzZS53YW50X3BvaW50ZXIgPSAx OworCSAgZ2ZjX2NvbnZfZXhwciAoJnNlLCBleHByKTsKKwkgIHJldHVybiBz ZS5leHByOworCX0KKyAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBzd2l0 Y2ggKHRzLT50eXBlKQpJbmRleDogZ2NjL2ZvcnRyYW4vc3ltYm9sLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vc3ltYm9sLmMJ KHJldmlzaW9uIDE2MzMxMCkKKysrIGdjYy9mb3J0cmFuL3N5bWJvbC5jCSh3 b3JraW5nIGNvcHkpCkBAIC0xMDk1LDEzICsxMDk1LDE0IEBAIGdmY19hZGRf cmVzdWx0IChzeW1ib2xfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyCiAK IAogZ2ZjX3RyeQotZ2ZjX2FkZF9zYXZlIChzeW1ib2xfYXR0cmlidXRlICph dHRyLCBjb25zdCBjaGFyICpuYW1lLCBsb2N1cyAqd2hlcmUpCitnZmNfYWRk X3NhdmUgKHN5bWJvbF9hdHRyaWJ1dGUgKmF0dHIsIHNhdmVfc3RhdGUgcywg Y29uc3QgY2hhciAqbmFtZSwKKwkgICAgICBsb2N1cyAqd2hlcmUpCiB7CiAK ICAgaWYgKGNoZWNrX3VzZWQgKGF0dHIsIG5hbWUsIHdoZXJlKSkKICAgICBy ZXR1cm4gRkFJTFVSRTsKIAotICBpZiAoZ2ZjX3B1cmUgKE5VTEwpKQorICBp ZiAocyA9PSBTQVZFX0VYUExJQ0lUICYmIGdmY19wdXJlIChOVUxMKSkKICAg ICB7CiAgICAgICBnZmNfZXJyb3IKIAkoIlNBVkUgYXR0cmlidXRlIGF0ICVM IGNhbm5vdCBiZSBzcGVjaWZpZWQgaW4gYSBQVVJFIHByb2NlZHVyZSIsCkBA IC0xMTA5LDcgKzExMTAsNyBAQCBnZmNfdHJ5CiAgICAgICByZXR1cm4gRkFJ TFVSRTsKICAgICB9CiAKLSAgaWYgKGF0dHItPnNhdmUgPT0gU0FWRV9FWFBM SUNJVCAmJiAhYXR0ci0+dnRhYikKKyAgaWYgKHMgPT0gU0FWRV9FWFBMSUNJ VCAmJiBhdHRyLT5zYXZlID09IFNBVkVfRVhQTElDSVQpCiAgICAgewogCWlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9MRUdBQ1ksIAogCQkJICAgICJE dXBsaWNhdGUgU0FWRSBhdHRyaWJ1dGUgc3BlY2lmaWVkIGF0ICVMIiwKQEAg LTExMTgsNyArMTExOSw3IEBAIGdmY190cnkKIAkgIHJldHVybiBGQUlMVVJF OwogICAgIH0KIAotICBhdHRyLT5zYXZlID0gU0FWRV9FWFBMSUNJVDsKKyAg YXR0ci0+c2F2ZSA9IHM7CiAgIHJldHVybiBjaGVja19jb25mbGljdCAoYXR0 ciwgbmFtZSwgd2hlcmUpOwogfQogCkBAIC0xNzQwLDcgKzE3NDEsNyBAQCBn ZmNfY29weV9hdHRyIChzeW1ib2xfYXR0cmlidXRlICpkZXN0LCBzeW1ib2xf YXR0cgogICAgIGdvdG8gZmFpbDsKICAgaWYgKHNyYy0+aXNfcHJvdGVjdGVk ICYmIGdmY19hZGRfcHJvdGVjdGVkIChkZXN0LCBOVUxMLCB3aGVyZSkgPT0g RkFJTFVSRSkKICAgICBnb3RvIGZhaWw7Ci0gIGlmIChzcmMtPnNhdmUgJiYg Z2ZjX2FkZF9zYXZlIChkZXN0LCBOVUxMLCB3aGVyZSkgPT0gRkFJTFVSRSkK KyAgaWYgKHNyYy0+c2F2ZSAmJiBnZmNfYWRkX3NhdmUgKGRlc3QsIHNyYy0+ c2F2ZSwgTlVMTCwgd2hlcmUpID09IEZBSUxVUkUpCiAgICAgZ290byBmYWls OwogICBpZiAoc3JjLT52YWx1ZSAmJiBnZmNfYWRkX3ZhbHVlIChkZXN0LCBO VUxMLCB3aGVyZSkgPT0gRkFJTFVSRSkKICAgICBnb3RvIGZhaWw7CkBAIC0z NDMwLDcgKzM0MzEsNyBAQCBzYXZlX3N5bWJvbCAoZ2ZjX3N5bWJvbCAqc3lt KQogICAvKiBBdXRvbWF0aWMgb2JqZWN0cyBhcmUgbm90IHNhdmVkLiAgKi8K ICAgaWYgKGdmY19pc192YXJfYXV0b21hdGljIChzeW0pKQogICAgIHJldHVy bjsKLSAgZ2ZjX2FkZF9zYXZlICgmc3ltLT5hdHRyLCBzeW0tPm5hbWUsICZz eW0tPmRlY2xhcmVkX2F0KTsKKyAgZ2ZjX2FkZF9zYXZlICgmc3ltLT5hdHRy LCBTQVZFX0VYUExJQ0lULCBzeW0tPm5hbWUsICZzeW0tPmRlY2xhcmVkX2F0 KTsKIH0KIAogCkluZGV4OiBnY2MvZm9ydHJhbi9kZWNsLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vZGVjbC5jCShyZXZpc2lv biAxNjMzMTApCisrKyBnY2MvZm9ydHJhbi9kZWNsLmMJKHdvcmtpbmcgY29w eSkKQEAgLTEzMTIsOSArMTMxMiwxMCBAQCBhZGRfaW5pdF9leHByX3RvX3N5 bSAoY29uc3QgY2hhciAqbmFtZSwgZ2ZjX2V4cHIgKgogCX0KIAogICAgICAg LyogQ2hlY2sgaWYgdGhlIGFzc2lnbm1lbnQgY2FuIGhhcHBlbi4gVGhpcyBo YXMgdG8gYmUgcHV0IG9mZgotCSB1bnRpbCBsYXRlciBmb3IgYSBkZXJpdmVk IHR5cGUgdmFyaWFibGUuICAqLworCSB1bnRpbCBsYXRlciBmb3IgZGVyaXZl ZCB0eXBlIHZhcmlhYmxlcyBhbmQgcHJvY2VkdXJlIHBvaW50ZXJzLiAgKi8K ICAgICAgIGlmIChzeW0tPnRzLnR5cGUgIT0gQlRfREVSSVZFRCAmJiBpbml0 LT50cy50eXBlICE9IEJUX0RFUklWRUQKIAkgICYmIHN5bS0+dHMudHlwZSAh PSBCVF9DTEFTUyAmJiBpbml0LT50cy50eXBlICE9IEJUX0NMQVNTCisJICAm JiAhc3ltLT5hdHRyLnByb2NfcG9pbnRlciAKIAkgICYmIGdmY19jaGVja19h c3NpZ25fc3ltYm9sIChzeW0sIGluaXQpID09IEZBSUxVUkUpCiAJcmV0dXJu IEZBSUxVUkU7CiAKQEAgLTE2NTIsNiArMTY1Myw0OCBAQCBnZmNfbWF0Y2hf bnVsbCAoZ2ZjX2V4cHIgKipyZXN1bHQpCiB9CiAKIAorLyogTWF0Y2ggdGhl IGluaXRpYWxpemF0aW9uIGV4cHIgZm9yIGEgZGF0YSBwb2ludGVyIG9yIHBy b2NlZHVyZSBwb2ludGVyLiAgKi8KKworc3RhdGljIG1hdGNoCittYXRjaF9w b2ludGVyX2luaXQgKGdmY19leHByICoqaW5pdCwgaW50IHByb2NwdHIpCit7 CisgIG1hdGNoIG07CisKKyAgaWYgKGdmY19wdXJlIChOVUxMKSAmJiBnZmNf c3RhdGVfc3RhY2stPnN0YXRlICE9IENPTVBfREVSSVZFRCkKKyAgICB7Cisg ICAgICBnZmNfZXJyb3IgKCJJbml0aWFsaXphdGlvbiBvZiBwb2ludGVyIGF0 ICVDIGlzIG5vdCBhbGxvd2VkIGluICIKKwkJICJhIFBVUkUgcHJvY2VkdXJl Iik7CisgICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisgICAgfQorCisgIC8q IE1hdGNoIE5VTEwoKSBpbml0aWxpemF0aW9uLiAgKi8KKyAgbSA9IGdmY19t YXRjaF9udWxsIChpbml0KTsKKyAgaWYgKG0gIT0gTUFUQ0hfTk8pCisgICAg cmV0dXJuIG07CisKKyAgLyogTWF0Y2ggbm9uLU5VTEwgaW5pdGlhbGl6YXRp b24uICAqLworICBnZmNfbWF0Y2hpbmdfcHJvY3B0cl9hc3NpZ25tZW50ID0g cHJvY3B0cjsKKyAgbSA9IGdmY19tYXRjaF9ydmFsdWUgKGluaXQpOworICBn ZmNfbWF0Y2hpbmdfcHJvY3B0cl9hc3NpZ25tZW50ID0gMDsKKyAgaWYgKG0g PT0gTUFUQ0hfRVJST1IpCisgICAgcmV0dXJuIE1BVENIX0VSUk9SOworICBl bHNlIGlmIChtID09IE1BVENIX05PKQorICAgIHsKKyAgICAgIGdmY19lcnJv ciAoIkVycm9yIGluIHBvaW50ZXIgaW5pdGlhbGl6YXRpb24gYXQgJUMiKTsK KyAgICAgIHJldHVybiBNQVRDSF9FUlJPUjsKKyAgICB9CisKKyAgaWYgKCFw cm9jcHRyKQorICAgIGdmY19yZXNvbHZlX2V4cHIgKCppbml0KTsKKyAgCisg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkZvcnRyYW4g MjAwODogbm9uLU5VTEwgcG9pbnRlciAiCisJCSAgICAgICJpbml0aWFsaXph dGlvbiBhdCAlQyIpID09IEZBSUxVUkUpCisgICAgcmV0dXJuIE1BVENIX0VS Uk9SOworCisgIHJldHVybiBNQVRDSF9ZRVM7Cit9CisKKwogLyogTWF0Y2gg YSB2YXJpYWJsZSBuYW1lIHdpdGggYW4gb3B0aW9uYWwgaW5pdGlhbGl6ZXIu ICBXaGVuIHRoaXMKICAgIHN1YnJvdXRpbmUgaXMgY2FsbGVkLCBhIHZhcmlh YmxlIGlzIGV4cGVjdGVkIHRvIGJlIHBhcnNlZCBuZXh0LgogICAgRGVwZW5k aW5nIG9uIHdoYXQgaXMgaGFwcGVuaW5nIGF0IHRoZSBtb21lbnQsIHVwZGF0 ZXMgZWl0aGVyIHRoZQpAQCAtMTg5OSwyMyArMTk0Miw5IEBAIHZhcmlhYmxl X2RlY2wgKGludCBlbGVtKQogCSAgICAgIGdvdG8gY2xlYW51cDsKIAkgICAg fQogCi0JICBtID0gZ2ZjX21hdGNoX251bGwgKCZpbml0aWFsaXplcik7Ci0J ICBpZiAobSA9PSBNQVRDSF9OTykKLQkgICAgewotCSAgICAgIGdmY19lcnJv ciAoIlBvaW50ZXIgaW5pdGlhbGl6YXRpb24gcmVxdWlyZXMgYSBOVUxMKCkg YXQgJUMiKTsKLQkgICAgICBtID0gTUFUQ0hfRVJST1I7Ci0JICAgIH0KLQot CSAgaWYgKGdmY19wdXJlIChOVUxMKSAmJiBnZmNfc3RhdGVfc3RhY2stPnN0 YXRlICE9IENPTVBfREVSSVZFRCkKLQkgICAgewotCSAgICAgIGdmY19lcnJv ciAoIkluaXRpYWxpemF0aW9uIG9mIHBvaW50ZXIgYXQgJUMgaXMgbm90IGFs bG93ZWQgaW4gIgotCQkJICJhIFBVUkUgcHJvY2VkdXJlIik7Ci0JICAgICAg bSA9IE1BVENIX0VSUk9SOwotCSAgICB9Ci0KKwkgIG0gPSBtYXRjaF9wb2lu dGVyX2luaXQgKCZpbml0aWFsaXplciwgMCk7CiAJICBpZiAobSAhPSBNQVRD SF9ZRVMpCiAJICAgIGdvdG8gY2xlYW51cDsKLQogCX0KICAgICAgIGVsc2Ug aWYgKGdmY19tYXRjaF9jaGFyICgnPScpID09IE1BVENIX1lFUykKIAl7CkBA IC0zNTExLDcgKzM1NDAsNyBAQCBtYXRjaF9hdHRyX3NwZWMgKHZvaWQpCiAJ ICBicmVhazsKIAogCWNhc2UgREVDTF9TQVZFOgotCSAgdCA9IGdmY19hZGRf c2F2ZSAoJmN1cnJlbnRfYXR0ciwgTlVMTCwgJnNlZW5fYXRbZF0pOworCSAg dCA9IGdmY19hZGRfc2F2ZSAoJmN1cnJlbnRfYXR0ciwgU0FWRV9FWFBMSUNJ VCwgTlVMTCwgJnNlZW5fYXRbZF0pOwogCSAgYnJlYWs7CiAKIAljYXNlIERF Q0xfVEFSR0VUOgpAQCAtMzU1MSw2ICszNTgwLDEwIEBAIG1hdGNoX2F0dHJf c3BlYyAodm9pZCkKIAl9CiAgICAgfQogCisgIC8qIE1vZHVsZSB2YXJpYWJs ZXMgaW1wbGljaXRseSBoYXZlIHRoZSBTQVZFIGF0dHJpYnV0ZS4gICovCisg IGlmIChnZmNfY3VycmVudF9zdGF0ZSAoKSA9PSBDT01QX01PRFVMRSAmJiAh Y3VycmVudF9hdHRyLnNhdmUpCisgICAgY3VycmVudF9hdHRyLnNhdmUgPSBT QVZFX0lNUExJQ0lUOworCiAgIGNvbG9uX3NlZW4gPSAxOwogICByZXR1cm4g TUFUQ0hfWUVTOwogCkBAIC00Njc1LDIwICs0NzA4LDcgQEAgbWF0Y2hfcHJv Y2VkdXJlX2RlY2wgKHZvaWQpCiAJICAgICAgZ290byBjbGVhbnVwOwogCSAg ICB9CiAKLQkgIG0gPSBnZmNfbWF0Y2hfbnVsbCAoJmluaXRpYWxpemVyKTsK LQkgIGlmIChtID09IE1BVENIX05PKQotCSAgICB7Ci0JICAgICAgZ2ZjX2Vy cm9yICgiUG9pbnRlciBpbml0aWFsaXphdGlvbiByZXF1aXJlcyBhIE5VTEwo KSBhdCAlQyIpOwotCSAgICAgIG0gPSBNQVRDSF9FUlJPUjsKLQkgICAgfQot Ci0JICBpZiAoZ2ZjX3B1cmUgKE5VTEwpKQotCSAgICB7Ci0JICAgICAgZ2Zj X2Vycm9yICgiSW5pdGlhbGl6YXRpb24gb2YgcG9pbnRlciBhdCAlQyBpcyBu b3QgYWxsb3dlZCBpbiAiCi0JCQkgImEgUFVSRSBwcm9jZWR1cmUiKTsKLQkg ICAgICBtID0gTUFUQ0hfRVJST1I7Ci0JICAgIH0KLQorCSAgbSA9IG1hdGNo X3BvaW50ZXJfaW5pdCAoJmluaXRpYWxpemVyLCAxKTsKIAkgIGlmIChtICE9 IE1BVENIX1lFUykKIAkgICAgZ290byBjbGVhbnVwOwogCkBAIC00ODE1LDE4 ICs0ODM1LDcgQEAgbWF0Y2hfcHBjX2RlY2wgKHZvaWQpCiAKICAgICAgIGlm IChnZmNfbWF0Y2ggKCIgPT4iKSA9PSBNQVRDSF9ZRVMpCiAJewotCSAgbSA9 IGdmY19tYXRjaF9udWxsICgmaW5pdGlhbGl6ZXIpOwotCSAgaWYgKG0gPT0g TUFUQ0hfTk8pCi0JICAgIHsKLQkgICAgICBnZmNfZXJyb3IgKCJQb2ludGVy IGluaXRpYWxpemF0aW9uIHJlcXVpcmVzIGEgTlVMTCgpIGF0ICVDIik7Ci0J ICAgICAgbSA9IE1BVENIX0VSUk9SOwotCSAgICB9Ci0JICBpZiAoZ2ZjX3B1 cmUgKE5VTEwpKQotCSAgICB7Ci0JICAgICAgZ2ZjX2Vycm9yICgiSW5pdGlh bGl6YXRpb24gb2YgcG9pbnRlciBhdCAlQyBpcyBub3QgYWxsb3dlZCBpbiAi Ci0JCQkgImEgUFVSRSBwcm9jZWR1cmUiKTsKLQkgICAgICBtID0gTUFUQ0hf RVJST1I7Ci0JICAgIH0KKwkgIG0gPSBtYXRjaF9wb2ludGVyX2luaXQgKCZp bml0aWFsaXplciwgMSk7CiAJICBpZiAobSAhPSBNQVRDSF9ZRVMpCiAJICAg IHsKIAkgICAgICBnZmNfZnJlZV9leHByIChpbml0aWFsaXplcik7CkBAIC02 NzIwLDggKzY3MjksOCBAQCBnZmNfbWF0Y2hfc2F2ZSAodm9pZCkKICAgICAg IHN3aXRjaCAobSkKIAl7CiAJY2FzZSBNQVRDSF9ZRVM6Ci0JICBpZiAoZ2Zj X2FkZF9zYXZlICgmc3ltLT5hdHRyLCBzeW0tPm5hbWUsICZnZmNfY3VycmVu dF9sb2N1cykKLQkgICAgICA9PSBGQUlMVVJFKQorCSAgaWYgKGdmY19hZGRf c2F2ZSAoJnN5bS0+YXR0ciwgU0FWRV9FWFBMSUNJVCwgc3ltLT5uYW1lLAor CQkJICAgICZnZmNfY3VycmVudF9sb2N1cykgPT0gRkFJTFVSRSkKIAkgICAg cmV0dXJuIE1BVENIX0VSUk9SOwogCSAgZ290byBuZXh0X2l0ZW07CiAKSW5k ZXg6IGdjYy9mb3J0cmFuL2dmb3J0cmFuLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAkocmV2aXNpb24gMTYz MzEwKQorKysgZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAkod29ya2luZyBjb3B5 KQpAQCAtMjQ2Niw3ICsyNDY2LDcgQEAgZ2ZjX3RyeSBnZmNfYWRkX2NyYXlf cG9pbnRlZSAoc3ltYm9sX2F0dHJpYnV0ZSAqLAogbWF0Y2ggZ2ZjX21vZF9w b2ludGVlX2FzIChnZmNfYXJyYXlfc3BlYyAqKTsKIGdmY190cnkgZ2ZjX2Fk ZF9wcm90ZWN0ZWQgKHN5bWJvbF9hdHRyaWJ1dGUgKiwgY29uc3QgY2hhciAq LCBsb2N1cyAqKTsKIGdmY190cnkgZ2ZjX2FkZF9yZXN1bHQgKHN5bWJvbF9h dHRyaWJ1dGUgKiwgY29uc3QgY2hhciAqLCBsb2N1cyAqKTsKLWdmY190cnkg Z2ZjX2FkZF9zYXZlIChzeW1ib2xfYXR0cmlidXRlICosIGNvbnN0IGNoYXIg KiwgbG9jdXMgKik7CitnZmNfdHJ5IGdmY19hZGRfc2F2ZSAoc3ltYm9sX2F0 dHJpYnV0ZSAqLCBzYXZlX3N0YXRlLCBjb25zdCBjaGFyICosIGxvY3VzICop OwogZ2ZjX3RyeSBnZmNfYWRkX3RocmVhZHByaXZhdGUgKHN5bWJvbF9hdHRy aWJ1dGUgKiwgY29uc3QgY2hhciAqLCBsb2N1cyAqKTsKIGdmY190cnkgZ2Zj X2FkZF9zYXZlZF9jb21tb24gKHN5bWJvbF9hdHRyaWJ1dGUgKiwgbG9jdXMg Kik7CiBnZmNfdHJ5IGdmY19hZGRfdGFyZ2V0IChzeW1ib2xfYXR0cmlidXRl ICosIGxvY3VzICopOwpJbmRleDogZ2NjL2ZvcnRyYW4vZXhwci5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9mb3J0cmFuL2V4cHIuYwkocmV2 aXNpb24gMTYzMzEwKQorKysgZ2NjL2ZvcnRyYW4vZXhwci5jCSh3b3JraW5n IGNvcHkpCkBAIC0zNTUyLDcgKzM1NTIsMzUgQEAgZ2ZjX2NoZWNrX2Fzc2ln bl9zeW1ib2wgKGdmY19zeW1ib2wgKnN5bSwgZ2ZjX2V4cHIKIAogICBnZmNf ZnJlZSAobHZhbHVlLnN5bXRyZWUpOwogCi0gIHJldHVybiByOworICBpZiAo ciA9PSBGQUlMVVJFKQorICAgIHJldHVybiByOworICAKKyAgaWYgKHN5bS0+ YXR0ci5wb2ludGVyICYmIHJ2YWx1ZS0+ZXhwcl90eXBlICE9IEVYUFJfTlVM TCkKKyAgICB7CisgICAgICAvKiBGMDg6QzQ2MS4gQWRkaXRpb25hbCBjaGVj a3MgZm9yIHBvaW50ZXIgaW5pdGlhbGl6YXRpb24uICAqLworICAgICAgc3lt Ym9sX2F0dHJpYnV0ZSBhdHRyOworICAgICAgYXR0ciA9IGdmY19leHByX2F0 dHIgKHJ2YWx1ZSk7CisgICAgICBpZiAoYXR0ci5hbGxvY2F0YWJsZSkKKwl7 CisJICBnZmNfZXJyb3IgKCJQb2ludGVyIGluaXRpYWxpemF0aW9uIHRhcmdl dCBhdCAlQyAiCisJICAgICAgICAgICAgICJtdXN0IG5vdCBiZSBBTExPQ0FU QUJMRSAiKTsKKwkgIHJldHVybiBGQUlMVVJFOworCX0KKyAgICAgIGlmICgh YXR0ci50YXJnZXQpCisJeworCSAgZ2ZjX2Vycm9yICgiUG9pbnRlciBpbml0 aWFsaXphdGlvbiB0YXJnZXQgYXQgJUMgIgorCQkgICAgICJtdXN0IGhhdmUg dGhlIFRBUkdFVCBhdHRyaWJ1dGUiKTsKKwkgIHJldHVybiBGQUlMVVJFOwor CX0KKyAgICAgIGlmICghYXR0ci5zYXZlKQorCXsKKwkgIGdmY19lcnJvciAo IlBvaW50ZXIgaW5pdGlhbGl6YXRpb24gdGFyZ2V0IGF0ICVDICIKKwkJICAg ICAibXVzdCBoYXZlIHRoZSBTQVZFIGF0dHJpYnV0ZSIpOworCSAgcmV0dXJu IEZBSUxVUkU7CisJfQorICAgIH0KKworICByZXR1cm4gU1VDQ0VTUzsKIH0K IAogCkluZGV4OiBnY2MvZm9ydHJhbi9yZXNvbHZlLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCShyZXZpc2lv biAxNjMzMTApCisrKyBnY2MvZm9ydHJhbi9yZXNvbHZlLmMJKHdvcmtpbmcg Y29weSkKQEAgLTgzMywxMCArODMzLDExIEBAIHJlc29sdmVfY29udGFpbmVk X2Z1bmN0aW9ucyAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAKIAogLyogUmVzb2x2 ZSBhbGwgb2YgdGhlIGVsZW1lbnRzIG9mIGEgc3RydWN0dXJlIGNvbnN0cnVj dG9yIGFuZCBtYWtlIHN1cmUgdGhhdAotICAgdGhlIHR5cGVzIGFyZSBjb3Jy ZWN0LiAgKi8KKyAgIHRoZSB0eXBlcyBhcmUgY29ycmVjdC4gVGhlICdpbml0 JyBmbGFnIGluZGljYXRlcyB0aGF0IHRoZSBnaXZlbgorICAgY29uc3RydWN0 b3IgaXMgYW4gaW5pdGlhbGl6ZXIuICAqLwogCiBzdGF0aWMgZ2ZjX3RyeQot cmVzb2x2ZV9zdHJ1Y3R1cmVfY29ucyAoZ2ZjX2V4cHIgKmV4cHIpCityZXNv bHZlX3N0cnVjdHVyZV9jb25zIChnZmNfZXhwciAqZXhwciwgaW50IGluaXQp CiB7CiAgIGdmY19jb25zdHJ1Y3RvciAqY29uczsKICAgZ2ZjX2NvbXBvbmVu dCAqY29tcDsKQEAgLTg5Niw3ICs4OTcsOCBAQCBzdGF0aWMgZ2ZjX3RyeQog CiAgICAgICAvKiBJZiB3ZSBkb24ndCBoYXZlIHRoZSByaWdodCB0eXBlLCB0 cnkgdG8gY29udmVydCBpdC4gICovCiAKLSAgICAgIGlmICghZ2ZjX2NvbXBh cmVfdHlwZXMgKCZjb25zLT5leHByLT50cywgJmNvbXAtPnRzKSkKKyAgICAg IGlmICghY29tcC0+YXR0ci5wcm9jX3BvaW50ZXIgJiYKKwkgICFnZmNfY29t cGFyZV90eXBlcyAoJmNvbnMtPmV4cHItPnRzLCAmY29tcC0+dHMpKQogCXsK IAkgIHQgPSBGQUlMVVJFOwogCSAgaWYgKHN0cmNtcCAoY29tcC0+bmFtZSwg IiRleHRlbmRzIikgPT0gMCkKQEAgLTEwMDUsNiArMTAwNywyMyBAQCBzdGF0 aWMgZ2ZjX3RyeQogCQkgICAgICJhIFRBUkdFVCIsICZjb25zLT5leHByLT53 aGVyZSwgY29tcC0+bmFtZSk7CiAJfQogCisgICAgICBpZiAoaW5pdCkKKwl7 CisJICAvKiBGMDg6QzQ2MS4gQWRkaXRpb25hbCBjaGVja3MgZm9yIHBvaW50 ZXIgaW5pdGlhbGl6YXRpb24uICAqLworCSAgaWYgKGEuYWxsb2NhdGFibGUp CisJICAgIHsKKwkgICAgICB0ID0gRkFJTFVSRTsKKwkgICAgICBnZmNfZXJy b3IgKCJQb2ludGVyIGluaXRpYWxpemF0aW9uIHRhcmdldCBhdCAlTCAiCisJ CQkibXVzdCBub3QgYmUgQUxMT0NBVEFCTEUgIiwgJmNvbnMtPmV4cHItPndo ZXJlKTsKKwkgICAgfQorCSAgaWYgKCFhLnNhdmUpCisJICAgIHsKKwkgICAg ICB0ID0gRkFJTFVSRTsKKwkgICAgICBnZmNfZXJyb3IgKCJQb2ludGVyIGlu aXRpYWxpemF0aW9uIHRhcmdldCBhdCAlTCBtdXN0IGJlIFNBVkUiLAorCQkJ JmNvbnMtPmV4cHItPndoZXJlKTsKKwkgICAgfQorCX0KKwogICAgICAgLyog RjIwMDMsIEMxMjcyICgzKS4gICovCiAgICAgICBpZiAoZ2ZjX3B1cmUgKE5V TEwpICYmIGNvbnMtPmV4cHItPmV4cHJfdHlwZSA9PSBFWFBSX1ZBUklBQkxF CiAJICAmJiAoZ2ZjX2ltcHVyZV92YXJpYWJsZSAoY29ucy0+ZXhwci0+c3lt dHJlZS0+bi5zeW0pCkBAIC0xMDE1LDYgKzEwMzQsNyBAQCBzdGF0aWMgZ2Zj X3RyeQogCQkgICAgICJwb2ludGVyIGNvbXBvbmVudCAnJXMnIGF0ICVMIGlu IFBVUkUgcHJvY2VkdXJlIiwKIAkJICAgICBjb21wLT5uYW1lLCAmY29ucy0+ ZXhwci0+d2hlcmUpOwogCX0KKwogICAgIH0KIAogICByZXR1cm4gdDsKQEAg LTU5NzcsNyArNTk5Nyw3IEBAIGdmY19yZXNvbHZlX2V4cHIgKGdmY19leHBy ICplKQogICAgICAgaWYgKHQgPT0gRkFJTFVSRSkKIAlicmVhazsKIAotICAg ICAgdCA9IHJlc29sdmVfc3RydWN0dXJlX2NvbnMgKGUpOworICAgICAgdCA9 IHJlc29sdmVfc3RydWN0dXJlX2NvbnMgKGUsIDApOwogICAgICAgaWYgKHQg PT0gRkFJTFVSRSkKIAlicmVhazsKIApAQCAtODkyNCwxMCArODk0NCwxNyBA QCByZXNvbHZlX2NvZGUgKGdmY19jb2RlICpjb2RlLCBnZmNfbmFtZXNwYWNl ICpucykKIHN0YXRpYyB2b2lkCiByZXNvbHZlX3ZhbHVlcyAoZ2ZjX3N5bWJv bCAqc3ltKQogeworICBnZmNfdHJ5IHQ7CisKICAgaWYgKHN5bS0+dmFsdWUg PT0gTlVMTCkKICAgICByZXR1cm47CiAKLSAgaWYgKGdmY19yZXNvbHZlX2V4 cHIgKHN5bS0+dmFsdWUpID09IEZBSUxVUkUpCisgIGlmIChzeW0tPnZhbHVl LT5leHByX3R5cGUgPT0gRVhQUl9TVFJVQ1RVUkUpCisgICAgdD0gcmVzb2x2 ZV9zdHJ1Y3R1cmVfY29ucyAoc3ltLT52YWx1ZSwgMSk7CisgIGVsc2UgCisg ICAgdCA9IGdmY19yZXNvbHZlX2V4cHIgKHN5bS0+dmFsdWUpOworCisgIGlm ICh0ID09IEZBSUxVUkUpCiAgICAgcmV0dXJuOwogCiAgIGdmY19jaGVja19h c3NpZ25fc3ltYm9sIChzeW0sIHN5bS0+dmFsdWUpOwpAQCAtOTYzNiw3ICs5 NjYzLDcgQEAgcmVzb2x2ZV9mbF92YXJpYWJsZSAoZ2ZjX3N5bWJvbCAqc3lt LCBpbnQgbXBfZmxhZykKIAkgIHJldHVybiBGQUlMVVJFOwogCX0KIAotICAg ICAgaWYgKGUgJiYgc3ltLT5hdHRyLnNhdmUgJiYgIWdmY19pc19jb25zdGFu dF9leHByIChlKSkKKyAgICAgIGlmIChlICYmIHN5bS0+YXR0ci5zYXZlID09 IFNBVkVfRVhQTElDSVQgJiYgIWdmY19pc19jb25zdGFudF9leHByIChlKSkK IAl7CiAJICBnZmNfZXJyb3IgKGF1dG9fc2F2ZV9tc2csIHN5bS0+bmFtZSwg JnN5bS0+ZGVjbGFyZWRfYXQpOwogCSAgcmV0dXJuIEZBSUxVUkU7CkluZGV4 OiBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCShyZXZpc2lvbiAx NjMzMTApCisrKyBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMJKHdvcmtpbmcg Y29weSkKQEAgLTM1ODcsNyArMzU4Nyw3IEBAIGdmY19jcmVhdGVfbW9kdWxl X3ZhcmlhYmxlIChnZmNfc3ltYm9sICogc3ltKQogICAgICAgJiYgKHN5bS0+ ZXF1aXZfYnVpbHQgfHwgc3ltLT5hdHRyLmluX2VxdWl2YWxlbmNlKSkKICAg ICByZXR1cm47CiAKLSAgaWYgKHN5bS0+YmFja2VuZF9kZWNsICYmICFzeW0t PmF0dHIudnRhYikKKyAgaWYgKHN5bS0+YmFja2VuZF9kZWNsICYmICFzeW0t PmF0dHIudnRhYiAmJiAhc3ltLT5hdHRyLnRhcmdldCkKICAgICBpbnRlcm5h bF9lcnJvciAoImJhY2tlbmQgZGVjbCBmb3IgbW9kdWxlIHZhcmlhYmxlICVz IGFscmVhZHkgZXhpc3RzIiwKIAkJICAgIHN5bS0+bmFtZSk7CiAKSW5kZXg6 IGdjYy9mb3J0cmFuL3ByaW1hcnkuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvZm9ydHJhbi9wcmltYXJ5LmMJKHJldmlzaW9uIDE2MzMxMCkK KysrIGdjYy9mb3J0cmFuL3ByaW1hcnkuYwkod29ya2luZyBjb3B5KQpAQCAt MjAxNiwxMCArMjAxNiw2IEBAIGdmY192YXJpYWJsZV9hdHRyIChnZmNfZXhw ciAqZXhwciwgZ2ZjX3R5cGVzcGVjICp0CiAgICAgICBhbGxvY2F0YWJsZSA9 IGF0dHIuYWxsb2NhdGFibGU7CiAgICAgfQogCi0gIHRhcmdldCA9IGF0dHIu dGFyZ2V0OwotICBpZiAocG9pbnRlciB8fCBhdHRyLnByb2NfcG9pbnRlcikK LSAgICB0YXJnZXQgPSAxOwotCiAgIGlmICh0cyAhPSBOVUxMICYmIGV4cHIt PnRzLnR5cGUgPT0gQlRfVU5LTk9XTikKICAgICAqdHMgPSBzeW0tPnRzOwog CkBAIC0yMDc0LDggKzIwNzAsNiBAQCBnZmNfdmFyaWFibGVfYXR0ciAoZ2Zj X2V4cHIgKmV4cHIsIGdmY190eXBlc3BlYyAqdAogCSAgICBwb2ludGVyID0g Y29tcC0+YXR0ci5wb2ludGVyOwogCSAgICBhbGxvY2F0YWJsZSA9IGNvbXAt PmF0dHIuYWxsb2NhdGFibGU7CiAJICB9Ci0JaWYgKHBvaW50ZXIgfHwgYXR0 ci5wcm9jX3BvaW50ZXIpCi0JICB0YXJnZXQgPSAxOwogCiAJYnJlYWs7CiAK QEAgLTIwODcsNyArMjA4MSw4IEBAIGdmY192YXJpYWJsZV9hdHRyIChnZmNf ZXhwciAqZXhwciwgZ2ZjX3R5cGVzcGVjICp0CiAgIGF0dHIuZGltZW5zaW9u ID0gZGltZW5zaW9uOwogICBhdHRyLnBvaW50ZXIgPSBwb2ludGVyOwogICBh dHRyLmFsbG9jYXRhYmxlID0gYWxsb2NhdGFibGU7Ci0gIGF0dHIudGFyZ2V0 ID0gdGFyZ2V0OworICBhdHRyLnRhcmdldCA9IHN5bS0+YXR0ci50YXJnZXQ7 CisgIGF0dHIuc2F2ZSA9IHN5bS0+YXR0ci5zYXZlOwogCiAgIHJldHVybiBh dHRyOwogfQo= --001636c5a252b902b1048e0be8ec--