From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2203 invoked by alias); 23 Mar 2011 14:07:44 -0000 Received: (qmail 1736 invoked by uid 22791); 23 Mar 2011 14:07:27 -0000 X-SWARE-Spam-Status: No, hits=1.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_BJ,TW_CP,TW_DB X-Spam-Check-By: sourceware.org Received: from mail-qw0-f41.google.com (HELO mail-qw0-f41.google.com) (209.85.216.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 23 Mar 2011 14:07:04 +0000 Received: by qwa26 with SMTP id 26so7616779qwa.0 for ; Wed, 23 Mar 2011 07:07:02 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.18.77 with SMTP id v13mr5660598qca.56.1300889221869; Wed, 23 Mar 2011 07:07:01 -0700 (PDT) Received: by 10.229.97.206 with HTTP; Wed, 23 Mar 2011 07:07:01 -0700 (PDT) In-Reply-To: <201103231244.33842.pedro@codesourcery.com> References: <83tyfkw00f.fsf@gnu.org> <201103231244.33842.pedro@codesourcery.com> Date: Wed, 23 Mar 2011 14:18:00 -0000 Message-ID: Subject: Re: [patch gdb]: Fix some DOS-path related issues in gdb From: Kai Tietz To: Pedro Alves Cc: gdb-patches@sourceware.org, Eli Zaretskii , Joel Brobecker Content-Type: multipart/mixed; boundary=0015176f0bb8f631ce049f26df35 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-03/txt/msg01022.txt.bz2 --0015176f0bb8f631ce049f26df35 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5590 2011/3/23 Pedro Alves : > On Wednesday 23 March 2011 10:39:33, Kai Tietz wrote: >> --- gdb.orig/source.c =A0 2011-03-23 10:30:42.614811600 +0100 >> +++ gdb/source.c =A0 =A0 =A0 =A02011-03-23 10:56:17.194745900 +0100 >> @@ -569,15 +569,10 @@ add_path (char *dirname, char **which_pa >> =A0 =A0 =A0 =A0 p =3D *which_path; >> =A0 =A0 =A0 =A0 while (1) >> =A0 =A0 =A0 =A0 =A0 { >> - =A0 =A0 =A0 =A0 =A0 /* FIXME: strncmp loses in interesting ways on MS-= DOS and >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0MS-Windows because of case-insensitivity an= d two different >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0but functionally identical slash characters= . =A0We need a >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0special filesystem-dependent file-name comp= arison function. >> - >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0Actually, even on Unix I would use realpath= () or its work- >> + =A0 =A0 =A0 =A0 =A0 /* Actually, even on Unix I would use realpath() o= r its work- >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0alike before comparing. =A0Then all the c= ode above which >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0removes excess slashes and dots could sim= ply go away. =A0*/ >> - =A0 =A0 =A0 =A0 =A0 if (!strncmp (p, name, len) >> + =A0 =A0 =A0 =A0 =A0 if (!filename_ncmp (p, name, len) >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 && (p[len] =3D=3D '\0' || p[len] =3D=3D = DIRNAME_SEPARATOR)) > > Without the previous paragraph, the comment left now doesn't make > sense on its own as is. =A0The "Actually, even on Unix" appears out of > the blue. Ok, adjusted comment so that it doesn't seems to be falling out of heaven. >> --- gdb.orig/xml-support.c =A0 =A0 =A02011-03-23 10:30:42.620811600 +0100 >> +++ gdb/xml-support.c =A0 2011-03-23 10:56:17.265754900 +0100 >> @@ -25,6 +25,7 @@ >> >> =A0#include "gdb_string.h" >> =A0#include "safe-ctype.h" >> +#include "filenames.h" >> >> =A0/* Debugging flag. =A0*/ >> =A0static int debug_xml; >> @@ -946,7 +947,7 @@ fetch_xml_builtin (const char *filename) >> =A0 =A0const char *(*p)[2]; >> >> =A0 =A0for (p =3D xml_builtin; (*p)[0]; p++) >> - =A0 =A0if (strcmp ((*p)[0], filename) =3D=3D 0) >> + =A0 =A0if (filename_cmp ((*p)[0], filename) =3D=3D 0) >> =A0 =A0 =A0 =A0return (*p)[1]; >> >> =A0 =A0return NULL; > > I don't think this one makes sense to behave different depending > on host. =A0These are files that are built into the GDB binary, with > filenames hardcoded, and always basenamed. =A0No need to do case > insensitive, or path separator style sensitive match. Well, as the names are hard-coded it seems to be superflous to do here case-insensitive compare. I removed this part from patch. >> --- gdb.orig/dwarf2read.c =A0 =A0 =A0 2011-03-23 10:32:00.336248300 +0100 >> +++ gdb/dwarf2read.c =A0 =A02011-03-23 10:56:17.285257400 +0100 >> @@ -5211,7 +5211,8 @@ find_file_and_directory (struct die_info >> =A0 =A0 =A0 =A0 =A0directory, get rid of it. =A0*/ >> =A0 =A0 =A0 =A0char *cp =3D strchr (*comp_dir, ':'); >> >> - =A0 =A0 =A0if (cp && cp !=3D *comp_dir && cp[-1] =3D=3D '.' && cp[1] = =3D=3D '/') >> + =A0 =A0 =A0if (cp && cp !=3D *comp_dir && cp[-1] =3D=3D '.' >> + =A0 =A0 =A0 =A0 && IS_ABSOLUTE_PATH (&cp[1])) >> =A0 =A0 =A0 =A0 *comp_dir =3D cp + 1; >> =A0 =A0 =A0} >> > > I've already told you in another thread that this one is wrong. > We do not want to match anything other than '/' here, even > on Windows. =A0On a Windows x Irix gdb, we'd want to check for '/', > literally. =A0The Irix native cc compiler is not going to > use '\' or drive names: > > =A0if (*comp_dir !=3D NULL) > =A0 =A0{ > =A0 =A0 =A0/* Irix 6.2 native cc prepends .: to the compilation > =A0 =A0 =A0 =A0 directory, get rid of it. =A0*/ > =A0 =A0 =A0char *cp =3D strchr (*comp_dir, ':'); > > =A0 =A0 =A0if (cp && cp !=3D *comp_dir && cp[-1] =3D=3D '.' && cp[1] =3D= =3D '/') > =A0 =A0 =A0 =A0*comp_dir =3D cp + 1; > =A0 =A0} Ok, removed this part of the patch, too. 2011-03-23 Kai Tietz * breakpoint.c (clear_command): Use filename_cmp instead of strcmp for comparision. * buildsym.c (watch_main_source_file_lossage): Likewise. (patch_subfile_names): Use IS_DIR_SEPARATOR instead of checking just for slash. * dbxread.c (read_dbx_symtab): Use lbasename instead of strrchr and filename_cmp instead of strcmp for filenames. (add_old_header_file): Use filename_cmp instead of strcmp for comparision. * exec.c (exec_set_section_address): Likewise. * macrotab.c (macro_lookup_inclusion): Likewise. (macro_lookup_inclusion): Likewise. * elfread.c (_initialize_elfread): Likewise. (elfstab_offset_sections): Likewise. (elfstab_offset_sections): Use lbasename instead of strrchr. * mdebugread.c (parse_partial_symbols): Likewise. (arse_partial_symbols): Use filename_(n)cmp instead of str(n)cmp for comparision. * minsyms.c (lookup_minimal_symbol): Likewise. * psymtab.c (read_psymtabs_with_filename): Likewise. * solib.c (solib_read_symbols): Likewise. (reload_shared_libraries_1): Likewise. * symmisc.c (maintenance_print_symbols): Likewise. * symfile.c (separate_debug_file_exists): Likewise. (reread_symbols): Likewise. (find_separate_debug_file_by_debuglink): Likewise. * remote-fileio.c (remote_fileio_func_rename): Likewise. * source.c (add_path): Likewise. * symtab.c (filename_seen): Likewise. (file_matches): Likewise. (print_symbol_info): Likewise. (maybe_add_partial_symtab_filename): Likewise. (make_source_files_completion_list): Likewise. * xml-syscall.c (init_sysinfo): Likewise. * windows-nat.c (_initialize_check_for_gdb_ini): Use IS_DIR_SEPARATOR for checking for trailing path separator. Updated patch attached. Regards, Kai --0015176f0bb8f631ce049f26df35 Content-Type: text/plain; charset=US-ASCII; name="gdb_filename.txt" Content-Disposition: attachment; filename="gdb_filename.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_glmbunzn0 Content-length: 29529 SW5kZXg6IGdkYi9icmVha3BvaW50LmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2RiLm9yaWcvYnJlYWtwb2ludC5jCTIwMTEtMDMtMjMgMTQ6MDM6 MzAuNTMxODExNjAwICswMTAwCisrKyBnZGIvYnJlYWtwb2ludC5jCTIwMTEt MDMtMjMgMTQ6MDg6NDcuNDA0NDM2MjAwICswMTAwCkBAIC0zOSw2ICszOSw3 IEBACiAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJnZGJfc3Ry aW5nLmgiCiAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKKyNpbmNsdWRlICJmaWxl bmFtZXMuaCIKICNpbmNsdWRlICJhbm5vdGF0ZS5oIgogI2luY2x1ZGUgInN5 bWZpbGUuaCIKICNpbmNsdWRlICJvYmpmaWxlcy5oIgpAQCAtOTUyNCw4ICs5 NTI1LDggQEAgY2xlYXJfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90 dHkpCiAJCQkJICAgICYmIGItPnNvdXJjZV9maWxlICE9IE5VTEwKIAkJCQkg ICAgJiYgc2FsLnN5bXRhYiAhPSBOVUxMCiAJCQkJICAgICYmIHNhbC5wc3Bh Y2UgPT0gbG9jLT5wc3BhY2UKLQkJCQkgICAgJiYgc3RyY21wIChiLT5zb3Vy Y2VfZmlsZSwKLQkJCQkJICAgICAgIHNhbC5zeW10YWItPmZpbGVuYW1lKSA9 PSAwCisJCQkJICAgICYmIGZpbGVuYW1lX2NtcCAoYi0+c291cmNlX2ZpbGUs CisJCQkJCQkgICAgIHNhbC5zeW10YWItPmZpbGVuYW1lKSA9PSAwCiAJCQkJ ICAgICYmIGItPmxpbmVfbnVtYmVyID09IHNhbC5saW5lKTsKIAkJICBpZiAo cGNfbWF0Y2ggfHwgbGluZV9tYXRjaCkKIAkJICAgIHsKSW5kZXg6IGdkYi9i dWlsZHN5bS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmln L2J1aWxkc3ltLmMJMjAxMS0wMy0yMyAxNDowMzozMC41MzI4MTE2MDAgKzAx MDAKKysrIGdkYi9idWlsZHN5bS5jCTIwMTEtMDMtMjMgMTQ6MDg6NDcuNDQ4 NDQxODAwICswMTAwCkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZAogcGF0Y2hf c3ViZmlsZV9uYW1lcyAoc3RydWN0IHN1YmZpbGUgKnN1YmZpbGUsIGNoYXIg Km5hbWUpCiB7CiAgIGlmIChzdWJmaWxlICE9IE5VTEwgJiYgc3ViZmlsZS0+ ZGlybmFtZSA9PSBOVUxMICYmIHN1YmZpbGUtPm5hbWUgIT0gTlVMTAotICAg ICAgJiYgc3ViZmlsZS0+bmFtZVtzdHJsZW4gKHN1YmZpbGUtPm5hbWUpIC0g MV0gPT0gJy8nKQorICAgICAgJiYgSVNfRElSX1NFUEFSQVRPUiAoc3ViZmls ZS0+bmFtZVtzdHJsZW4gKHN1YmZpbGUtPm5hbWUpIC0gMV0pKQogICAgIHsK ICAgICAgIHN1YmZpbGUtPmRpcm5hbWUgPSBzdWJmaWxlLT5uYW1lOwogICAg ICAgc3ViZmlsZS0+bmFtZSA9IHhzdHJkdXAgKG5hbWUpOwpAQCAtODc4LDcg Kzg3OCw3IEBAIHdhdGNoX21haW5fc291cmNlX2ZpbGVfbG9zc2FnZSAodm9p ZCkKIAkgICBzdWJmaWxlLT5uZXh0OwogCSAgIHN1YmZpbGUgPSBzdWJmaWxl LT5uZXh0KQogCXsKLQkgIGlmIChzdHJjbXAgKGxiYXNlbmFtZSAoc3ViZmls ZS0+bmFtZSksIG1haW5iYXNlKSA9PSAwKQorCSAgaWYgKGZpbGVuYW1lX2Nt cCAobGJhc2VuYW1lIChzdWJmaWxlLT5uYW1lKSwgbWFpbmJhc2UpID09IDAp CiAJICAgIHsKIAkgICAgICArK25yX21hdGNoZXM7CiAJICAgICAgbWFpbnN1 Yl9hbGlhcyA9IHN1YmZpbGU7CkluZGV4OiBnZGIvZGJ4cmVhZC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL2RieHJlYWQuYwkyMDEx LTAzLTIzIDE0OjAzOjMwLjUzMzgxMTYwMCArMDEwMAorKysgZ2RiL2RieHJl YWQuYwkyMDExLTAzLTIzIDE0OjA4OjQ3LjQ1OTQ0MzIwMCArMDEwMApAQCAt NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUg ImdkYmNvcmUuaCIJCS8qIGZvciBiZmQgc3R1ZmYgKi8KICNpbmNsdWRlICJs aWJhb3V0LmgiCQkvKiBGSVhNRSBTZWNyZXQgaW50ZXJuYWwgQkZEIHN0dWZm IGZvciBhLm91dCAqLworI2luY2x1ZGUgImZpbGVuYW1lcy5oIgogI2luY2x1 ZGUgIm9iamZpbGVzLmgiCiAjaW5jbHVkZSAiYnVpbGRzeW0uaCIKICNpbmNs dWRlICJzdGFic3JlYWQuaCIKQEAgLTM0Niw3ICszNDcsNyBAQCBhZGRfb2xk X2hlYWRlcl9maWxlIChjaGFyICpuYW1lLCBpbnQgaW5zCiAgIGludCBpOwog CiAgIGZvciAoaSA9IDA7IGkgPCBOX0hFQURFUl9GSUxFUyAoY3VycmVudF9v YmpmaWxlKTsgaSsrKQotICAgIGlmIChzdHJjbXAgKHBbaV0ubmFtZSwgbmFt ZSkgPT0gMCAmJiBpbnN0YW5jZSA9PSBwW2ldLmluc3RhbmNlKQorICAgIGlm IChmaWxlbmFtZV9jbXAgKHBbaV0ubmFtZSwgbmFtZSkgPT0gMCAmJiBpbnN0 YW5jZSA9PSBwW2ldLmluc3RhbmNlKQogICAgICAgewogCWFkZF90aGlzX29i amVjdF9oZWFkZXJfZmlsZSAoaSk7CiAJcmV0dXJuOwpAQCAtMTQ2NSw3ICsx NDY2LDcgQEAgcmVhZF9kYnhfc3ltdGFiIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZQogCSAgICBDT1JFX0FERFIgdmFsdTsKIAkgICAgc3RhdGljIGludCBw cmV2X3NvX3N5bW51bSA9IC0xMDsKIAkgICAgc3RhdGljIGludCBmaXJzdF9z b19zeW1udW07Ci0JICAgIGNoYXIgKnA7CisJICAgIGNvbnN0IGNoYXIgKnA7 CiAJICAgIHN0YXRpYyBjaGFyICpkaXJuYW1lX25zbzsKIAkgICAgaW50IHBy ZXZfdGV4dGxvd19ub3Rfc2V0OwogCkBAIC0xNTIyLDggKzE1MjMsOCBAQCBy ZWFkX2RieF9zeW10YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCiAJICAg ICAgIElmIHBzdCBleGlzdHMsIGlzIGVtcHR5LCBhbmQgaGFzIGEgZmlsZW5h bWUgZW5kaW5nIGluICcvJywKIAkgICAgICAgd2UgYXNzdW1lIHRoZSBwcmV2 aW91cyBOX1NPIHdhcyBhIGRpcmVjdG9yeSBuYW1lLiAgKi8KIAotCSAgICBw ID0gc3RycmNociAobmFtZXN0cmluZywgJy8nKTsKLQkgICAgaWYgKHAgJiYg KihwICsgMSkgPT0gJ1wwMDAnKQorCSAgICBwID0gbGJhc2VuYW1lIChuYW1l c3RyaW5nKTsKKwkgICAgaWYgKHAgIT0gbmFtZXN0cmluZyAmJiAqcCA9PSAn XDAwMCcpCiAJICAgICAgewogCQkvKiBTYXZlIHRoZSBkaXJlY3RvcnkgbmFt ZSBTT3MgbG9jYWxseSwgdGhlbiBzYXZlIGl0IGludG8KIAkJICAgdGhlIHBz eW10YWIgd2hlbiBpdCdzIGNyZWF0ZWQgYmVsb3cuICAqLwpAQCAtMTYxMiwx MyArMTYxMywxMyBAQCByZWFkX2RieF9zeW10YWIgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlCiAJICAgICAgIHRoaW5ncyBsaWtlICJicmVhayBjLWV4cC55 OjQzNSIgbmVlZCB0byB3b3JrIChJCiAJICAgICAgIHN1cHBvc2UgdGhlIHBz eW10YWJfaW5jbHVkZV9saXN0IGNvdWxkIGJlIGhhc2hlZCBvciBwdXQKIAkg ICAgICAgaW4gYSBiaW5hcnkgdHJlZSwgaWYgcHJvZmlsaW5nIHNob3dzIHRo aXMgaXMgYSBtYWpvciBob2cpLiAgKi8KLQkgICAgaWYgKHBzdCAmJiBzdHJj bXAgKG5hbWVzdHJpbmcsIHBzdC0+ZmlsZW5hbWUpID09IDApCisJICAgIGlm IChwc3QgJiYgZmlsZW5hbWVfY21wIChuYW1lc3RyaW5nLCBwc3QtPmZpbGVu YW1lKSA9PSAwKQogCSAgICAgIGNvbnRpbnVlOwogCSAgICB7CiAJICAgICAg aW50IGk7CiAKIAkgICAgICBmb3IgKGkgPSAwOyBpIDwgaW5jbHVkZXNfdXNl ZDsgaSsrKQotCQlpZiAoc3RyY21wIChuYW1lc3RyaW5nLCBwc3ltdGFiX2lu Y2x1ZGVfbGlzdFtpXSkgPT0gMCkKKwkJaWYgKGZpbGVuYW1lX2NtcCAobmFt ZXN0cmluZywgcHN5bXRhYl9pbmNsdWRlX2xpc3RbaV0pID09IDApCiAJCSAg ewogCQkgICAgaSA9IC0xOwogCQkgICAgYnJlYWs7CkluZGV4OiBnZGIvZWxm cmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL2Vs ZnJlYWQuYwkyMDExLTAzLTIzIDE0OjAzOjMwLjUzNTgxMTYwMCArMDEwMAor KysgZ2RiL2VsZnJlYWQuYwkyMDExLTAzLTIzIDE0OjA4OjQ3LjQ3OTk0NTgw MCArMDEwMApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNvbXBsYWlu dHMuaCIKICNpbmNsdWRlICJkZW1hbmdsZS5oIgogI2luY2x1ZGUgInBzeW1w cml2LmgiCisjaW5jbHVkZSAiZmlsZW5hbWVzLmgiCiAKIGV4dGVybiB2b2lk IF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwogCkBAIC03MDcsNyArNzA4 LDggQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0 cgogICAgICAgYnVpbGRfaWRfbmFtZSA9IGJ1aWxkX2lkX3RvX2RlYnVnX2Zp bGVuYW1lIChidWlsZF9pZCk7CiAgICAgICB4ZnJlZSAoYnVpbGRfaWQpOwog ICAgICAgLyogUHJldmVudCBsb29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVn IGZpbGUuICAqLwotICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCAm JiBzdHJjbXAgKGJ1aWxkX2lkX25hbWUsIG9iamZpbGUtPm5hbWUpID09IDAp CisgICAgICBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMCisJICAmJiBmaWxl bmFtZV9jbXAgKGJ1aWxkX2lkX25hbWUsIG9iamZpbGUtPm5hbWUpID09IDAp CiAgICAgICAgIHsKIAkgIHdhcm5pbmcgKF8oIlwiJXNcIjogc2VwYXJhdGUg ZGVidWcgaW5mbyBmaWxlIGhhcyBubyBkZWJ1ZyBpbmZvIiksCiAJCSAgIGJ1 aWxkX2lkX25hbWUpOwpAQCAtMTAyMywxMiArMTAyNSwxMyBAQCBlbGZzdGFi X29mZnNldF9zZWN0aW9ucyAoc3RydWN0IG9iamZpbGUKICAgc3RydWN0IHN0 YWJfc2VjdGlvbl9pbmZvICptYXliZSA9IGRieC0+c3RhYl9zZWN0aW9uX2lu Zm87CiAgIHN0cnVjdCBzdGFiX3NlY3Rpb25faW5mbyAqcXVlc3Rpb25hYmxl ID0gMDsKICAgaW50IGk7Ci0gIGNoYXIgKnA7CisgIGNvbnN0IGNoYXIgKnA7 CiAKICAgLyogVGhlIEVMRiBzeW1ib2wgaW5mbyBkb2Vzbid0IGluY2x1ZGUg cGF0aCBuYW1lcywgc28gc3RyaXAgdGhlIHBhdGgKICAgICAgKGlmIGFueSkg ZnJvbSB0aGUgcHN5bXRhYiBmaWxlbmFtZS4gICovCi0gIHdoaWxlICgwICE9 IChwID0gc3RyY2hyIChmaWxlbmFtZSwgJy8nKSkpCi0gICAgZmlsZW5hbWUg PSBwICsgMTsKKyAgcCA9IGxiYXNlbmFtZSAoZmlsZW5hbWUpOworICBpZiAo cCAhPSBmaWxlbmFtZSkKKyAgICBmaWxlbmFtZSA9IHA7CiAKICAgLyogRklY TUU6ICBUaGlzIGxpbmVhciBzZWFyY2ggY291bGQgc3BlZWQgdXAgc2lnbmlm aWNhbnRseQogICAgICBpZiBpdCB3YXMgY2hhaW5lZCBpbiB0aGUgcmlnaHQg b3JkZXIgdG8gbWF0Y2ggaG93IHdlIHNlYXJjaCBpdCwKQEAgLTEwMzYsNyAr MTAzOSw3IEBAIGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2Jq ZmlsZQogICBmb3IgKDsgbWF5YmU7IG1heWJlID0gbWF5YmUtPm5leHQpCiAg ICAgewogICAgICAgaWYgKGZpbGVuYW1lWzBdID09IG1heWJlLT5maWxlbmFt ZVswXQotCSAgJiYgc3RyY21wIChmaWxlbmFtZSwgbWF5YmUtPmZpbGVuYW1l KSA9PSAwKQorCSAgJiYgZmlsZW5hbWVfY21wIChmaWxlbmFtZSwgbWF5YmUt PmZpbGVuYW1lKSA9PSAwKQogCXsKIAkgIC8qIFdlIGZvdW5kIGEgbWF0Y2gu ICBCdXQgdGhlcmUgbWlnaHQgYmUgc2V2ZXJhbCBzb3VyY2UgZmlsZXMKIAkg ICAgIChmcm9tIGRpZmZlcmVudCBkaXJlY3Rvcmllcykgd2l0aCB0aGUgc2Ft ZSBuYW1lLiAgKi8KSW5kZXg6IGdkYi9leGVjLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2RiLm9yaWcvZXhlYy5jCTIwMTEtMDMtMjMgMTQ6MDM6 MzAuNTM2ODExNjAwICswMTAwCisrKyBnZGIvZXhlYy5jCTIwMTEtMDMtMjMg MTQ6MDg6NDcuNDg4OTQ3MDAwICswMTAwCkBAIC0yNSw2ICsyNSw3IEBACiAj aW5jbHVkZSAidGFyZ2V0LmgiCiAjaW5jbHVkZSAiZ2RiY21kLmgiCiAjaW5j bHVkZSAibGFuZ3VhZ2UuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNp bmNsdWRlICJzeW1maWxlLmgiCiAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICNp bmNsdWRlICJjb21wbGV0ZXIuaCIKQEAgLTg0NSw3ICs4NDYsNyBAQCBleGVj X3NldF9zZWN0aW9uX2FkZHJlc3MgKGNvbnN0IGNoYXIgKmZpCiAgIHRhYmxl ID0gY3VycmVudF90YXJnZXRfc2VjdGlvbnM7CiAgIGZvciAocCA9IHRhYmxl LT5zZWN0aW9uczsgcCA8IHRhYmxlLT5zZWN0aW9uc19lbmQ7IHArKykKICAg ICB7Ci0gICAgICBpZiAoc3RyY21wIChmaWxlbmFtZSwgcC0+YmZkLT5maWxl bmFtZSkgPT0gMAorICAgICAgaWYgKGZpbGVuYW1lX2NtcCAoZmlsZW5hbWUs IHAtPmJmZC0+ZmlsZW5hbWUpID09IDAKIAkgICYmIGluZGV4ID09IHAtPnRo ZV9iZmRfc2VjdGlvbi0+aW5kZXgpCiAJewogCSAgcC0+ZW5kYWRkciArPSBh ZGRyZXNzIC0gcC0+YWRkcjsKSW5kZXg6IGdkYi9tYWNyb3RhYi5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL21hY3JvdGFiLmMJMjAx MS0wMy0yMyAxNDowMzozMC41Mzc4MTE2MDAgKzAxMDAKKysrIGdkYi9tYWNy b3RhYi5jCTIwMTEtMDMtMjMgMTQ6MDg6NDcuNDk2NDQ3OTAwICswMTAwCkBA IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiZGVmcy5oIgogI2luY2x1ZGUg ImdkYl9vYnN0YWNrLmgiCiAjaW5jbHVkZSAic3BsYXktdHJlZS5oIgorI2lu Y2x1ZGUgImZpbGVuYW1lcy5oIgogI2luY2x1ZGUgInN5bXRhYi5oIgogI2lu Y2x1ZGUgInN5bWZpbGUuaCIKICNpbmNsdWRlICJvYmpmaWxlcy5oIgpAQCAt NTAwLDcgKzUwMSw3IEBAIHN0cnVjdCBtYWNyb19zb3VyY2VfZmlsZSAqCiBt YWNyb19sb29rdXBfaW5jbHVzaW9uIChzdHJ1Y3QgbWFjcm9fc291cmNlX2Zp bGUgKnNvdXJjZSwgY29uc3QgY2hhciAqbmFtZSkKIHsKICAgLyogSXMgU09V UkNFIGl0c2VsZiBuYW1lZCBOQU1FPyAgKi8KLSAgaWYgKHN0cmNtcCAobmFt ZSwgc291cmNlLT5maWxlbmFtZSkgPT0gMCkKKyAgaWYgKGZpbGVuYW1lX2Nt cCAobmFtZSwgc291cmNlLT5maWxlbmFtZSkgPT0gMCkKICAgICByZXR1cm4g c291cmNlOwogCiAgIC8qIFRoZSBmaWxlbmFtZSBpbiB0aGUgc291cmNlIHN0 cnVjdHVyZSBpcyBwcm9iYWJseSBhIGZ1bGwgcGF0aCwgYnV0CkBAIC01MTAs MTEgKzUxMSwxMiBAQCBtYWNyb19sb29rdXBfaW5jbHVzaW9uIChzdHJ1Y3Qg bWFjcm9fc291CiAgICAgaW50IHNyY19uYW1lX2xlbiA9IHN0cmxlbiAoc291 cmNlLT5maWxlbmFtZSk7CiAKICAgICAvKiBXZSBkbyBtZWFuIDwgaGVyZSwg YW5kIG5vdCA8PTsgaWYgdGhlIGxlbmd0aHMgYXJlIHRoZSBzYW1lLAotICAg ICAgIHRoZW4gdGhlIHN0cmNtcCBhYm92ZSBzaG91bGQgaGF2ZSB0cmlnZ2Vy ZWQsIGFuZCB3ZSBuZWVkIHRvCisgICAgICAgdGhlbiB0aGUgZmlsZW5hbWVf Y21wIGFib3ZlIHNob3VsZCBoYXZlIHRyaWdnZXJlZCwgYW5kIHdlIG5lZWQg dG8KICAgICAgICBjaGVjayBmb3IgYSBzbGFzaCBoZXJlLiAgKi8KICAgICBp ZiAobmFtZV9sZW4gPCBzcmNfbmFtZV9sZW4KLSAgICAgICAgJiYgc291cmNl LT5maWxlbmFtZVtzcmNfbmFtZV9sZW4gLSBuYW1lX2xlbiAtIDFdID09ICcv JwotICAgICAgICAmJiBzdHJjbXAgKG5hbWUsIHNvdXJjZS0+ZmlsZW5hbWUg KyBzcmNfbmFtZV9sZW4gLSBuYW1lX2xlbikgPT0gMCkKKyAgICAgICAgJiYg SVNfRElSX1NFUEFSQVRPUiAoc291cmNlLT5maWxlbmFtZVtzcmNfbmFtZV9s ZW4gLSBuYW1lX2xlbiAtIDFdKQorICAgICAgICAmJiBmaWxlbmFtZV9jbXAg KG5hbWUsCisJCQkgc291cmNlLT5maWxlbmFtZSArIHNyY19uYW1lX2xlbiAt IG5hbWVfbGVuKSA9PSAwKQogICAgICAgcmV0dXJuIHNvdXJjZTsKICAgfQog CkluZGV4OiBnZGIvbWRlYnVncmVhZC5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdkYi5vcmlnL21kZWJ1Z3JlYWQuYwkyMDExLTAzLTIzIDE0OjAz OjMwLjUzODgxMTYwMCArMDEwMAorKysgZ2RiL21kZWJ1Z3JlYWQuYwkyMDEx LTAzLTIzIDE0OjA4OjQ3LjUwNjQ0OTIwMCArMDEwMApAQCAtNDUsNiArNDUs NyBAQAogI2luY2x1ZGUgInN5bXRhYi5oIgogI2luY2x1ZGUgImdkYnR5cGVz LmgiCiAjaW5jbHVkZSAiZ2RiY29yZS5oIgorI2luY2x1ZGUgImZpbGVuYW1l cy5oIgogI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAjaW5jbHVkZSAiZ2RiX29i c3RhY2suaCIKICNpbmNsdWRlICJidWlsZHN5bS5oIgpAQCAtMjk1OSw3ICsy OTYwLDcgQEAgcGFyc2VfcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3Qgb2JqZmls ZSAqbwogCQkgICAgICBDT1JFX0FERFIgdmFsdTsKIAkJICAgICAgc3RhdGlj IGludCBwcmV2X3NvX3N5bW51bSA9IC0xMDsKIAkJICAgICAgc3RhdGljIGlu dCBmaXJzdF9zb19zeW1udW07Ci0JCSAgICAgIGNoYXIgKnA7CisJCSAgICAg IGNvbnN0IGNoYXIgKnA7CiAJCSAgICAgIGludCBwcmV2X3RleHRsb3dfbm90 X3NldDsKIAogCQkgICAgICB2YWx1ID0gc2gudmFsdWUgKyBBTk9GRlNFVCAo b2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLApAQCAtMzAxMiw5ICszMDEzLDgg QEAgcGFyc2VfcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAqbwog CQkJIHRoZSBzZWNvbmQgdGhlIGZpbGUgbmFtZS4gIElmIHBzdCBleGlzdHMs IGlzCiAJCQkgZW1wdHksIGFuZCBoYXMgYSBmaWxlbmFtZSBlbmRpbmcgaW4g Jy8nLCB3ZSBhc3N1bWUKIAkJCSB0aGUgcHJldmlvdXMgTl9TTyB3YXMgYSBk aXJlY3RvcnkgbmFtZS4gICovCi0KLQkJICAgICAgcCA9IHN0cnJjaHIgKG5h bWVzdHJpbmcsICcvJyk7Ci0JCSAgICAgIGlmIChwICYmICoocCArIDEpID09 ICdcMDAwJykKKwkJICAgICAgcCA9IGxiYXNlbmFtZSAobmFtZXN0cmluZyk7 CisJCSAgICAgIGlmIChwICE9IG5hbWVzdHJpbmcgJiYgKnAgPT0gJ1wwMDAn KQogCQkJY29udGludWU7CQkvKiBTaW1wbHkgaWdub3JlIGRpcmVjdG9yeQog CQkJCQkJICAgbmFtZSBTT3MuICAqLwogCkBAIC0zMDY1LDE1ICszMDY1LDE1 IEBAIHBhcnNlX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IG9iamZpbGUgKm8K IAkJCSB3b3JrIChJIHN1cHBvc2UgdGhlIHBzeW10YWJfaW5jbHVkZV9saXN0 IGNvdWxkIGJlCiAJCQkgaGFzaGVkIG9yIHB1dCBpbiBhIGJpbmFyeSB0cmVl LCBpZiBwcm9maWxpbmcgc2hvd3MKIAkJCSB0aGlzIGlzIGEgbWFqb3IgaG9n KS4gICovCi0JCSAgICAgIGlmIChwc3QgJiYgc3RyY21wIChuYW1lc3RyaW5n LCBwc3QtPmZpbGVuYW1lKSA9PSAwKQorCQkgICAgICBpZiAocHN0ICYmIGZp bGVuYW1lX2NtcCAobmFtZXN0cmluZywgcHN0LT5maWxlbmFtZSkgPT0gMCkK IAkJCWNvbnRpbnVlOwogCiAJCSAgICAgIHsKIAkJCWludCBpOwogCiAJCQlm b3IgKGkgPSAwOyBpIDwgaW5jbHVkZXNfdXNlZDsgaSsrKQotCQkJICBpZiAo c3RyY21wIChuYW1lc3RyaW5nLAotCQkJCSAgICAgIHBzeW10YWJfaW5jbHVk ZV9saXN0W2ldKSA9PSAwKQorCQkJICBpZiAoZmlsZW5hbWVfY21wIChuYW1l c3RyaW5nLAorCQkJCQkgICAgcHN5bXRhYl9pbmNsdWRlX2xpc3RbaV0pID09 IDApCiAJCQkgICAgewogCQkJICAgICAgaSA9IC0xOwogCQkJICAgICAgYnJl YWs7CkluZGV4OiBnZGIvbWluc3ltcy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdkYi5vcmlnL21pbnN5bXMuYwkyMDExLTAzLTIzIDE0OjAzOjMw LjUzOTgxMTYwMCArMDEwMAorKysgZ2RiL21pbnN5bXMuYwkyMDExLTAzLTIz IDE0OjA4OjQ3LjUyOTQ1MjEwMCArMDEwMApAQCAtNDMsNiArNDMsNyBAQAog I2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKICNpbmNsdWRlICJzeW10YWIuaCIK ICNpbmNsdWRlICJiZmQuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNp bmNsdWRlICJzeW1maWxlLmgiCiAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICNp bmNsdWRlICJkZW1hbmdsZS5oIgpAQCAtMjU1LDcgKzI1Niw3IEBAIGxvb2t1 cF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAg ICAgICAgICAgICAgICBjYXNlIG1zdF9maWxlX2RhdGE6CiAgICAgICAgICAg ICAgICAgICAgICAgY2FzZSBtc3RfZmlsZV9ic3M6CiAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoc2ZpbGUgPT0gTlVMTAotCQkJICAgIHx8IHN0cmNt cCAobXN5bWJvbC0+ZmlsZW5hbWUsIHNmaWxlKSA9PSAwKQorCQkJICAgIHx8 IGZpbGVuYW1lX2NtcCAobXN5bWJvbC0+ZmlsZW5hbWUsIHNmaWxlKSA9PSAw KQogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9maWxlX3N5bWJv bCA9IG1zeW1ib2w7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK IApJbmRleDogZ2RiL3BzeW10YWIuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnZGIub3JpZy9wc3ltdGFiLmMJMjAxMS0wMy0yMyAxNDowMzozMC41 NDA4MTE2MDAgKzAxMDAKKysrIGdkYi9wc3ltdGFiLmMJMjAxMS0wMy0yMyAx NDowODo0Ny41Mzg5NTMzMDAgKzAxMDAKQEAgLTEwNjcsNyArMTA2Nyw3IEBA IHJlYWRfcHN5bXRhYnNfd2l0aF9maWxlbmFtZSAoc3RydWN0IG9iamYKIAog ICBBTExfT0JKRklMRV9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwgcCkK ICAgICB7Ci0gICAgICBpZiAoc3RyY21wIChmaWxlbmFtZSwgcC0+ZmlsZW5h bWUpID09IDApCisgICAgICBpZiAoZmlsZW5hbWVfY21wIChmaWxlbmFtZSwg cC0+ZmlsZW5hbWUpID09IDApCiAJUFNZTVRBQl9UT19TWU1UQUIgKHApOwog ICAgIH0KIH0KQEAgLTE3MzUsNyArMTczNSw3IEBAIHByaW50LXBzeW1ib2xz IHRha2VzIGFuIG91dHB1dCBmaWxlIG5hbWUKIAogICBpbW1lZGlhdGVfcXVp dCsrOwogICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQotICAgIGlmIChz eW1uYW1lID09IE5VTEwgfHwgc3RyY21wIChzeW1uYW1lLCBwcy0+ZmlsZW5h bWUpID09IDApCisgICAgaWYgKHN5bW5hbWUgPT0gTlVMTCB8fCBmaWxlbmFt ZV9jbXAgKHN5bW5hbWUsIHBzLT5maWxlbmFtZSkgPT0gMCkKICAgICBkdW1w X3BzeW10YWIgKG9iamZpbGUsIHBzLCBvdXRmaWxlKTsKICAgaW1tZWRpYXRl X3F1aXQtLTsKICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKSW5kZXg6IGdk Yi9yZW1vdGUtZmlsZWlvLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Z2RiLm9yaWcvcmVtb3RlLWZpbGVpby5jCTIwMTEtMDMtMjMgMTQ6MDM6MzAu NTQxODExNjAwICswMTAwCisrKyBnZGIvcmVtb3RlLWZpbGVpby5jCTIwMTEt MDMtMjMgMTQ6MDg6NDcuNTUwNDU0ODAwICswMTAwCkBAIC0zMSw2ICszMSw3 IEBACiAjaW5jbHVkZSAicmVtb3RlLWZpbGVpby5oIgogI2luY2x1ZGUgImV2 ZW50LWxvb3AuaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKKyNpbmNsdWRlICJm aWxlbmFtZXMuaCIKIAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8 c3lzL3RpbWUuaD4KQEAgLTEwMjAsOCArMTAyMSw4IEBAIHJlbW90ZV9maWxl aW9fZnVuY19yZW5hbWUgKGNoYXIgKmJ1ZikKIAkJICBjeWd3aW5fY29udl9w YXRoIChDQ1BfV0lOX0FfVE9fUE9TSVgsIG5ld3BhdGgsIG5ld2Z1bGxwYXRo LAogCQkJCSAgICBQQVRIX01BWCk7CiAJCSAgbGVuID0gc3RybGVuIChvbGRm dWxscGF0aCk7Ci0JCSAgaWYgKG5ld2Z1bGxwYXRoW2xlbl0gPT0gJy8nCi0J CSAgICAgICYmICFzdHJuY21wIChvbGRmdWxscGF0aCwgbmV3ZnVsbHBhdGgs IGxlbikpCisJCSAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKG5ld2Z1bGxwYXRo W2xlbl0pCisJCSAgICAgICYmICFmaWxlbmFtZV9uY21wIChvbGRmdWxscGF0 aCwgbmV3ZnVsbHBhdGgsIGxlbikpCiAJCSAgICBlcnJubyA9IEVJTlZBTDsK IAkJICBlbHNlCiAJCSAgICBlcnJubyA9IEVFWElTVDsKSW5kZXg6IGdkYi9z b2xpYi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL3Nv bGliLmMJMjAxMS0wMy0yMyAxNDowMzozMC41NDI4MTE2MDAgKzAxMDAKKysr IGdkYi9zb2xpYi5jCTIwMTEtMDMtMjMgMTQ6MDg6NDcuNTYwNDU2MDAwICsw MTAwCkBAIC02MzgsNyArNjM4LDcgQEAgc29saWJfcmVhZF9zeW1ib2xzIChz dHJ1Y3Qgc29fbGlzdCAqc28sCiAJICAvKiBIYXZlIHdlIGFscmVhZHkgbG9h ZGVkIHRoaXMgc2hhcmVkIG9iamVjdD8gICovCiAJICBBTExfT0JKRklMRVMg KHNvLT5vYmpmaWxlKQogCSAgICB7Ci0JICAgICAgaWYgKHN0cmNtcCAoc28t Pm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1lKSA9PSAwCisJICAgICAgaWYg KGZpbGVuYW1lX2NtcCAoc28tPm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1l KSA9PSAwCiAJCSAgJiYgc28tPm9iamZpbGUtPmFkZHJfbG93ID09IHNvLT5h ZGRyX2xvdykKIAkJYnJlYWs7CiAJICAgIH0KQEAgLTc2Miw3ICs3NjIsNyBA QCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QKIAkg ICAgfQogCSAgZWxzZQogCSAgICB7Ci0JICAgICAgaWYgKCEgc3RyY21wIChn ZGItPnNvX29yaWdpbmFsX25hbWUsIGktPnNvX29yaWdpbmFsX25hbWUpKQor CSAgICAgIGlmICghIGZpbGVuYW1lX2NtcCAoZ2RiLT5zb19vcmlnaW5hbF9u YW1lLCBpLT5zb19vcmlnaW5hbF9uYW1lKSkKIAkJYnJlYWs7CSAgICAgIAog CSAgICB9CiAKQEAgLTEzMzksNyArMTMzOSw3IEBAIHJlbG9hZF9zaGFyZWRf bGlicmFyaWVzXzEgKGludCBmcm9tX3R0eSkKIAkgc3ltYm9sIGZpbGUsIGNs b3NlIHRoYXQuICAqLwogICAgICAgaWYgKChmb3VuZF9wYXRobmFtZSA9PSBO VUxMICYmIHdhc19sb2FkZWQpCiAJICB8fCAoZm91bmRfcGF0aG5hbWUgIT0g TlVMTAotCSAgICAgICYmIHN0cmNtcCAoZm91bmRfcGF0aG5hbWUsIHNvLT5z b19uYW1lKSAhPSAwKSkKKwkgICAgICAmJiBmaWxlbmFtZV9jbXAgKGZvdW5k X3BhdGhuYW1lLCBzby0+c29fbmFtZSkgIT0gMCkpCiAJewogCSAgaWYgKHNv LT5vYmpmaWxlICYmICEgKHNvLT5vYmpmaWxlLT5mbGFncyAmIE9CSkZfVVNF UkxPQURFRCkpCiAJICAgIGZyZWVfb2JqZmlsZSAoc28tPm9iamZpbGUpOwpA QCAtMTM1MSw3ICsxMzUxLDcgQEAgcmVsb2FkX3NoYXJlZF9saWJyYXJpZXNf MSAoaW50IGZyb21fdHR5KQogCSBmaWxlLCBvcGVuIGl0LiAgKi8KICAgICAg IGlmIChmb3VuZF9wYXRobmFtZSAhPSBOVUxMCiAJICAmJiAoIXdhc19sb2Fk ZWQKLQkgICAgICB8fCBzdHJjbXAgKGZvdW5kX3BhdGhuYW1lLCBzby0+c29f bmFtZSkgIT0gMCkpCisJICAgICAgfHwgZmlsZW5hbWVfY21wIChmb3VuZF9w YXRobmFtZSwgc28tPnNvX25hbWUpICE9IDApKQogCXsKIAkgIHZvbGF0aWxl IHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CiAKSW5kZXg6IGdkYi9zb3VyY2Uu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnZGIub3JpZy9zb3VyY2Uu YwkyMDExLTAzLTIzIDE0OjAzOjMwLjU0MzgxMTYwMCArMDEwMAorKysgZ2Ri L3NvdXJjZS5jCTIwMTEtMDMtMjMgMTQ6NTk6MTEuOTY3NTA3MDAwICswMTAw CkBAIC01NjksMTUgKzU2OSwxMCBAQCBhZGRfcGF0aCAoY2hhciAqZGlybmFt ZSwgY2hhciAqKndoaWNoX3BhCiAJcCA9ICp3aGljaF9wYXRoOwogCXdoaWxl ICgxKQogCSAgewotCSAgICAvKiBGSVhNRTogc3RybmNtcCBsb3NlcyBpbiBp bnRlcmVzdGluZyB3YXlzIG9uIE1TLURPUyBhbmQKLQkgICAgICAgTVMtV2lu ZG93cyBiZWNhdXNlIG9mIGNhc2UtaW5zZW5zaXRpdml0eSBhbmQgdHdvIGRp ZmZlcmVudAotCSAgICAgICBidXQgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCBz bGFzaCBjaGFyYWN0ZXJzLiAgV2UgbmVlZCBhCi0JICAgICAgIHNwZWNpYWwg ZmlsZXN5c3RlbS1kZXBlbmRlbnQgZmlsZS1uYW1lIGNvbXBhcmlzb24gZnVu Y3Rpb24uCi0KLQkgICAgICAgQWN0dWFsbHksIGV2ZW4gb24gVW5peCBJIHdv dWxkIHVzZSByZWFscGF0aCgpIG9yIGl0cyB3b3JrLQotCSAgICAgICBhbGlr ZSBiZWZvcmUgY29tcGFyaW5nLiAgVGhlbiBhbGwgdGhlIGNvZGUgYWJvdmUg d2hpY2gKKwkgICAgLyogRklYTUU6IHdlIHNob3VsZCB1c2UgcmVhbHBhdGgo KSBvciBpdHMgd29yay1hbGlrZQorCSAgICAgICBiZWZvcmUgY29tcGFyaW5n LiAgVGhlbiBhbGwgdGhlIGNvZGUgYWJvdmUgd2hpY2gKIAkgICAgICAgcmVt b3ZlcyBleGNlc3Mgc2xhc2hlcyBhbmQgZG90cyBjb3VsZCBzaW1wbHkgZ28g YXdheS4gICovCi0JICAgIGlmICghc3RybmNtcCAocCwgbmFtZSwgbGVuKQor CSAgICBpZiAoIWZpbGVuYW1lX25jbXAgKHAsIG5hbWUsIGxlbikKIAkJJiYg KHBbbGVuXSA9PSAnXDAnIHx8IHBbbGVuXSA9PSBESVJOQU1FX1NFUEFSQVRP UikpCiAJICAgICAgewogCQkvKiBGb3VuZCBpdCBpbiB0aGUgc2VhcmNoIHBh dGgsIHJlbW92ZSBvbGQgY29weS4gICovCkluZGV4OiBnZGIvc3ltZmlsZS5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL3N5bWZpbGUu YwkyMDExLTAzLTIzIDE0OjAzOjMwLjU0NDgxMTYwMCArMDEwMAorKysgZ2Ri L3N5bWZpbGUuYwkyMDExLTAzLTIzIDE0OjA4OjQ3LjU4NDQ1OTEwMCArMDEw MApAQCAtMTMyNSw3ICsxMzI1LDcgQEAgc2VwYXJhdGVfZGVidWdfZmlsZV9l eGlzdHMgKGNvbnN0IGNoYXIgKgogICAgICAiLmRlYnVnIiBzdWZmaXggYXMg Ii91c3IvbGliL2RlYnVnL3BhdGgvdG8vZmlsZSIgaXMgYSBzZXBhcmF0ZSB0 cmVlIHdoZXJlCiAgICAgIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvcyB3aXRo IHRoZSBzYW1lIGJhc2VuYW1lIGNhbiBleGlzdC4gICovCiAKLSAgaWYgKHN0 cmNtcCAobmFtZSwgcGFyZW50X29iamZpbGUtPm5hbWUpID09IDApCisgIGlm IChmaWxlbmFtZV9jbXAgKG5hbWUsIHBhcmVudF9vYmpmaWxlLT5uYW1lKSA9 PSAwKQogICAgIHJldHVybiAwOwogCiAgIGFiZmQgPSBiZmRfb3Blbl9tYXli ZV9yZW1vdGUgKG5hbWUpOwpAQCAtMTMzMyw3ICsxMzMzLDcgQEAgc2VwYXJh dGVfZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKgogICBpZiAoIWFi ZmQpCiAgICAgcmV0dXJuIDA7CiAKLSAgLyogVmVyaWZ5IHN5bWxpbmtzIHdl cmUgbm90IHRoZSBjYXVzZSBvZiBzdHJjbXAgbmFtZSBkaWZmZXJlbmNlIGFi b3ZlLgorICAvKiBWZXJpZnkgc3ltbGlua3Mgd2VyZSBub3QgdGhlIGNhdXNl IG9mIGZpbGVuYW1lX2NtcCBuYW1lIGRpZmZlcmVuY2UgYWJvdmUuCiAKICAg ICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcywgZS5nLiBXaW5kb3dzLCBkbyBu b3QgcHJvdmlkZSBhIG1lYW5pbmdmdWwKICAgICAgc3RfaW5vOyB0aGV5IGFs d2F5cyBzZXQgaXQgdG8gemVyby4gIChXaW5kb3dzIGRvZXMgcHJvdmlkZSBh CkBAIC0xNDcxLDcgKzE0NzEsOCBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGVfYnlfZGVidWdsaW5rIChzCiAgICAgICAvKiBJZiB0aGUgZmlsZSBpcyBp biB0aGUgc3lzcm9vdCwgdHJ5IHVzaW5nIGl0cyBiYXNlIHBhdGggaW4gdGhl CiAJIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAgKi8KICAgICAgIGlm IChjYW5vbl9uYW1lCi0JICAmJiBzdHJuY21wIChjYW5vbl9uYW1lLCBnZGJf c3lzcm9vdCwgc3RybGVuIChnZGJfc3lzcm9vdCkpID09IDAKKwkgICYmIGZp bGVuYW1lX25jbXAgKGNhbm9uX25hbWUsIGdkYl9zeXNyb290LAorCQkJICAg IHN0cmxlbiAoZ2RiX3N5c3Jvb3QpKSA9PSAwCiAJICAmJiBJU19ESVJfU0VQ QVJBVE9SIChjYW5vbl9uYW1lW3N0cmxlbiAoZ2RiX3N5c3Jvb3QpXSkpCiAJ ewogCSAgbWVtY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnZGlyLCBkZWJ1Z2Rpcl9l bmQgLSBkZWJ1Z2Rpcik7CkBAIC0yMzc1LDggKzIzNzYsOSBAQCByZXJlYWRf c3ltYm9scyAodm9pZCkKIAkgIC8qIFdlIG5lZWQgdG8gZG8gdGhpcyB3aGVu ZXZlciBhbnkgc3ltYm9scyBnbyBhd2F5LiAgKi8KIAkgIG1ha2VfY2xlYW51 cCAoY2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAsIDAgLyppZ25vcmUqLyk7 CiAKLQkgIGlmIChleGVjX2JmZCAhPSBOVUxMICYmIHN0cmNtcCAoYmZkX2dl dF9maWxlbmFtZSAob2JqZmlsZS0+b2JmZCksCi0JCQkJCSAgYmZkX2dldF9m aWxlbmFtZSAoZXhlY19iZmQpKSA9PSAwKQorCSAgaWYgKGV4ZWNfYmZkICE9 IE5VTEwKKwkgICAgICAmJiBmaWxlbmFtZV9jbXAgKGJmZF9nZXRfZmlsZW5h bWUgKG9iamZpbGUtPm9iZmQpLAorCQkJICAgICAgIGJmZF9nZXRfZmlsZW5h bWUgKGV4ZWNfYmZkKSkgPT0gMCkKIAkgICAgewogCSAgICAgIC8qIFJlbG9h ZCBFWEVDX0JGRCB3aXRob3V0IGFza2luZyBhbnl0aGluZy4gICovCiAKSW5k ZXg6IGdkYi9zeW1taXNjLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Z2RiLm9yaWcvc3ltbWlzYy5jCTIwMTEtMDMtMjMgMTQ6MDM6MzAuNTQ1ODEx NjAwICswMTAwCisrKyBnZGIvc3ltbWlzYy5jCTIwMTEtMDMtMjMgMTQ6MDg6 NDcuNjA1NDYxODAwICswMTAwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk ZSAic3ltdGFiLmgiCiAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKICNpbmNsdWRl ICJiZmQuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNpbmNsdWRlICJz eW1maWxlLmgiCiAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICNpbmNsdWRlICJi cmVha3BvaW50LmgiCkBAIC00NzUsNyArNDc2LDcgQEAgbWFpbnRlbmFuY2Vf cHJpbnRfc3ltYm9scyAoY2hhciAqYXJncywgaQogCiAgIGltbWVkaWF0ZV9x dWl0Kys7CiAgIEFMTF9TWU1UQUJTIChvYmpmaWxlLCBzKQotICAgIGlmIChz eW1uYW1lID09IE5VTEwgfHwgc3RyY21wIChzeW1uYW1lLCBzLT5maWxlbmFt ZSkgPT0gMCkKKyAgICBpZiAoc3ltbmFtZSA9PSBOVUxMIHx8IGZpbGVuYW1l X2NtcCAoc3ltbmFtZSwgcy0+ZmlsZW5hbWUpID09IDApCiAgICAgZHVtcF9z eW10YWIgKG9iamZpbGUsIHMsIG91dGZpbGUpOwogICBpbW1lZGlhdGVfcXVp dC0tOwogICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwpJbmRleDogZ2RiL3N5 bXRhYi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL3N5 bXRhYi5jCTIwMTEtMDMtMjMgMTQ6MDM6MzAuNTQ2ODExNjAwICswMTAwCisr KyBnZGIvc3ltdGFiLmMJMjAxMS0wMy0yMyAxNDowODo0Ny42MTQ0NjI5MDAg KzAxMDAKQEAgLTI3NjEsNyArMjc2MSw3IEBAIGZpbGVuYW1lX3NlZW4gKGNv bnN0IGNoYXIgKmZpbGUsIGludCBhZGQKIAogICAvKiBJcyBGSUxFIGluIHRh Yj8gICovCiAgIGZvciAocCA9IHRhYjsgcCA8IHRhYiArIHRhYl9jdXJfc2l6 ZTsgcCsrKQotICAgIGlmIChzdHJjbXAgKCpwLCBmaWxlKSA9PSAwKQorICAg IGlmIChmaWxlbmFtZV9jbXAgKCpwLCBmaWxlKSA9PSAwKQogICAgICAgcmV0 dXJuIDE7CiAKICAgLyogTm87IG1heWJlIGFkZCBpdCB0byB0YWIuICAqLwpA QCAtMjg2Miw3ICsyODYyLDcgQEAgZmlsZV9tYXRjaGVzIChjb25zdCBjaGFy ICpmaWxlLCBjaGFyICpmaQogICAgIHsKICAgICAgIGZvciAoaSA9IDA7IGkg PCBuZmlsZXM7IGkrKykKIAl7Ci0JICBpZiAoc3RyY21wIChmaWxlc1tpXSwg bGJhc2VuYW1lIChmaWxlKSkgPT0gMCkKKwkgIGlmIChmaWxlbmFtZV9jbXAg KGZpbGVzW2ldLCBsYmFzZW5hbWUgKGZpbGUpKSA9PSAwKQogCSAgICByZXR1 cm4gMTsKIAl9CiAgICAgfQpAQCAtMzI2MCw3ICszMjYwLDcgQEAgc3RhdGlj IHZvaWQKIHByaW50X3N5bWJvbF9pbmZvIChkb21haW5fZW51bSBraW5kLCBz dHJ1Y3Qgc3ltdGFiICpzLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAJCSAgIGlu dCBibG9jaywgY2hhciAqbGFzdCkKIHsKLSAgaWYgKGxhc3QgPT0gTlVMTCB8 fCBzdHJjbXAgKGxhc3QsIHMtPmZpbGVuYW1lKSAhPSAwKQorICBpZiAobGFz dCA9PSBOVUxMIHx8IGZpbGVuYW1lX2NtcCAobGFzdCwgcy0+ZmlsZW5hbWUp ICE9IDApCiAgICAgewogICAgICAgZnB1dHNfZmlsdGVyZWQgKCJcbkZpbGUg IiwgZ2RiX3N0ZG91dCk7CiAgICAgICBmcHV0c19maWx0ZXJlZCAocy0+Zmls ZW5hbWUsIGdkYl9zdGRvdXQpOwpAQCAtNDA3Myw3ICs0MDczLDcgQEAgbm90 X2ludGVyZXN0aW5nX2ZuYW1lIChjb25zdCBjaGFyICpmbmFtZQogCiAgIGZv ciAoaSA9IDA7IGlsbGVnYWxfYWxpZW5zW2ldOyBpKyspCiAgICAgewotICAg ICAgaWYgKHN0cmNtcCAoZm5hbWUsIGlsbGVnYWxfYWxpZW5zW2ldKSA9PSAw KQorICAgICAgaWYgKGZpbGVuYW1lX2NtcCAoZm5hbWUsIGlsbGVnYWxfYWxp ZW5zW2ldKSA9PSAwKQogCXJldHVybiAxOwogICAgIH0KICAgcmV0dXJuIDA7 CkBAIC00MTAyLDEyICs0MTAyLDcgQEAgbWF5YmVfYWRkX3BhcnRpYWxfc3lt dGFiX2ZpbGVuYW1lIChjb25zdAogICBpZiAobm90X2ludGVyZXN0aW5nX2Zu YW1lIChmaWxlbmFtZSkpCiAgICAgcmV0dXJuOwogICBpZiAoIWZpbGVuYW1l X3NlZW4gKGZpbGVuYW1lLCAxLCBkYXRhLT5maXJzdCkKLSNpZiBIQVZFX0RP U19CQVNFRF9GSUxFX1NZU1RFTQotICAgICAgJiYgc3RybmNhc2VjbXAgKGZp bGVuYW1lLCBkYXRhLT50ZXh0LCBkYXRhLT50ZXh0X2xlbikgPT0gMAotI2Vs c2UKLSAgICAgICYmIHN0cm5jbXAgKGZpbGVuYW1lLCBkYXRhLT50ZXh0LCBk YXRhLT50ZXh0X2xlbikgPT0gMAotI2VuZGlmCi0gICAgICApCisgICAgICAm JiBmaWxlbmFtZV9uY21wIChmaWxlbmFtZSwgZGF0YS0+dGV4dCwgZGF0YS0+ dGV4dF9sZW4pID09IDApCiAgICAgewogICAgICAgLyogVGhpcyBmaWxlIG1h dGNoZXMgZm9yIGEgY29tcGxldGlvbjsgYWRkIGl0IHRvIHRoZQogCSBjdXJy ZW50IGxpc3Qgb2YgbWF0Y2hlcy4gICovCkBAIC00MTIwLDEyICs0MTE1LDcg QEAgbWF5YmVfYWRkX3BhcnRpYWxfc3ltdGFiX2ZpbGVuYW1lIChjb25zdAog CiAgICAgICBpZiAoYmFzZV9uYW1lICE9IGZpbGVuYW1lCiAJICAmJiAhZmls ZW5hbWVfc2VlbiAoYmFzZV9uYW1lLCAxLCBkYXRhLT5maXJzdCkKLSNpZiBI QVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQotCSAgJiYgc3RybmNhc2VjbXAg KGJhc2VfbmFtZSwgZGF0YS0+dGV4dCwgZGF0YS0+dGV4dF9sZW4pID09IDAK LSNlbHNlCi0JICAmJiBzdHJuY21wIChiYXNlX25hbWUsIGRhdGEtPnRleHQs IGRhdGEtPnRleHRfbGVuKSA9PSAwCi0jZW5kaWYKLQkgICkKKwkgICYmIGZp bGVuYW1lX25jbXAgKGJhc2VfbmFtZSwgZGF0YS0+dGV4dCwgZGF0YS0+dGV4 dF9sZW4pID09IDApCiAJYWRkX2ZpbGVuYW1lX3RvX2xpc3QgKGJhc2VfbmFt ZSwgZGF0YS0+dGV4dCwgZGF0YS0+d29yZCwKIAkJCSAgICAgIGRhdGEtPmxp c3QsIGRhdGEtPmxpc3RfdXNlZCwgZGF0YS0+bGlzdF9hbGxvY2VkKTsKICAg ICB9CkBAIC00MTU5LDEyICs0MTQ5LDcgQEAgbWFrZV9zb3VyY2VfZmlsZXNf Y29tcGxldGlvbl9saXN0IChjaGFyCiAgICAgICBpZiAobm90X2ludGVyZXN0 aW5nX2ZuYW1lIChzLT5maWxlbmFtZSkpCiAJY29udGludWU7CiAgICAgICBp ZiAoIWZpbGVuYW1lX3NlZW4gKHMtPmZpbGVuYW1lLCAxLCAmZmlyc3QpCi0j aWYgSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0KLQkgICYmIHN0cm5jYXNl Y21wIChzLT5maWxlbmFtZSwgdGV4dCwgdGV4dF9sZW4pID09IDAKLSNlbHNl Ci0JICAmJiBzdHJuY21wIChzLT5maWxlbmFtZSwgdGV4dCwgdGV4dF9sZW4p ID09IDAKLSNlbmRpZgotCSAgKQorCSAgJiYgZmlsZW5hbWVfbmNtcCAocy0+ ZmlsZW5hbWUsIHRleHQsIHRleHRfbGVuKSA9PSAwKQogCXsKIAkgIC8qIFRo aXMgZmlsZSBtYXRjaGVzIGZvciBhIGNvbXBsZXRpb247IGFkZCBpdCB0byB0 aGUgY3VycmVudAogCSAgICAgbGlzdCBvZiBtYXRjaGVzLiAgKi8KQEAgLTQx ODAsMTIgKzQxNjUsNyBAQCBtYWtlX3NvdXJjZV9maWxlc19jb21wbGV0aW9u X2xpc3QgKGNoYXIKIAkgIGJhc2VfbmFtZSA9IGxiYXNlbmFtZSAocy0+Zmls ZW5hbWUpOwogCSAgaWYgKGJhc2VfbmFtZSAhPSBzLT5maWxlbmFtZQogCSAg ICAgICYmICFmaWxlbmFtZV9zZWVuIChiYXNlX25hbWUsIDEsICZmaXJzdCkK LSNpZiBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQotCSAgICAgICYmIHN0 cm5jYXNlY21wIChiYXNlX25hbWUsIHRleHQsIHRleHRfbGVuKSA9PSAwCi0j ZWxzZQotCSAgICAgICYmIHN0cm5jbXAgKGJhc2VfbmFtZSwgdGV4dCwgdGV4 dF9sZW4pID09IDAKLSNlbmRpZgotCSAgICAgICkKKwkgICAgICAmJiBmaWxl bmFtZV9uY21wIChiYXNlX25hbWUsIHRleHQsIHRleHRfbGVuKSA9PSAwKQog CSAgICBhZGRfZmlsZW5hbWVfdG9fbGlzdCAoYmFzZV9uYW1lLCB0ZXh0LCB3 b3JkLAogCQkJCSAgJmxpc3QsICZsaXN0X3VzZWQsICZsaXN0X2FsbG9jZWQp OwogCX0KSW5kZXg6IGdkYi94bWwtc3lzY2FsbC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdkYi5vcmlnL3htbC1zeXNjYWxsLmMJMjAxMS0wMy0y MyAxNDowMzozMC41ODM4MTE2MDAgKzAxMDAKKysrIGdkYi94bWwtc3lzY2Fs bC5jCTIwMTEtMDMtMjMgMTQ6MDg6NDcuNjM2OTY1ODAwICswMTAwCkBAIC0y ODEsNyArMjgxLDcgQEAgc3RhdGljIHZvaWQKIGluaXRfc3lzaW5mbyAodm9p ZCkKIHsKICAgLyogU2hvdWxkIHdlIHJlLXJlYWQgdGhlIFhNTCBpbmZvIGZv ciB0aGlzIHRhcmdldD8gICovCi0gIGlmIChteV9nZGJfZGF0YWRpciAmJiBz dHJjbXAgKG15X2dkYl9kYXRhZGlyLCBnZGJfZGF0YWRpcikgIT0gMCkKKyAg aWYgKG15X2dkYl9kYXRhZGlyICYmIGZpbGVuYW1lX2NtcCAobXlfZ2RiX2Rh dGFkaXIsIGdkYl9kYXRhZGlyKSAhPSAwKQogICAgIHsKICAgICAgIC8qIFRo ZSBkYXRhLWRpcmVjdG9yeSBjaGFuZ2VkIGZyb20gdGhlIGxhc3QgdGltZSB3 ZSB1c2VkIGl0LgogCSBJdCBtZWFucyB0aGF0IHdlIGhhdmUgdG8gcmUtcmVh ZCB0aGUgWE1MIGluZm8uICAqLwpJbmRleDogZ2RiL3dpbmRvd3MtbmF0LmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcvd2luZG93cy1u YXQuYwkyMDExLTAzLTIzIDE0OjAzOjMwLjU0NzgxMTYwMCArMDEwMAorKysg Z2RiL3dpbmRvd3MtbmF0LmMJMjAxMS0wMy0yMyAxNDowODo0Ny42NDI5NjY1 MDAgKzAxMDAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxzaWduYWwu aD4KIAogI2luY2x1ZGUgImJ1aWxkc3ltLmgiCisjaW5jbHVkZSAiZmlsZW5h bWVzLmgiCiAjaW5jbHVkZSAic3ltZmlsZS5oIgogI2luY2x1ZGUgIm9iamZp bGVzLmgiCiAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKQEAgLTI1ODYsNyAr MjU4Nyw3IEBAIF9pbml0aWFsaXplX2NoZWNrX2Zvcl9nZGJfaW5pICh2b2lk KQogCQkJCSAgICAgIHNpemVvZiAoIi9nZGIuaW5pIikpOwogICAgICAgc3Ry Y3B5IChvbGRpbmksIGhvbWVkaXIpOwogICAgICAgcCA9IHN0cmNociAob2xk aW5pLCAnXDAnKTsKLSAgICAgIGlmIChwID4gb2xkaW5pICYmIHBbLTFdICE9 ICcvJykKKyAgICAgIGlmIChwID4gb2xkaW5pICYmICFJU19ESVJfU0VQQVJB VE9SIChwWy0xXSkpCiAJKnArKyA9ICcvJzsKICAgICAgIHN0cmNweSAocCwg ImdkYi5pbmkiKTsKICAgICAgIGlmIChhY2Nlc3MgKG9sZGluaSwgMCkgPT0g MCkK --0015176f0bb8f631ce049f26df35--