From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27565 invoked by alias); 3 Mar 2011 12:10:32 -0000 Received: (qmail 27552 invoked by uid 22791); 3 Mar 2011 12:10:27 -0000 X-SWARE-Spam-Status: No, hits=1.9 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,TW_OC,TW_TR,T_TO_NO_BRKTS_FREEMAIL 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; Thu, 03 Mar 2011 12:10:16 +0000 Received: by qyk30 with SMTP id 30so953723qyk.0 for ; Thu, 03 Mar 2011 04:10:14 -0800 (PST) MIME-Version: 1.0 Received: by 10.229.221.17 with SMTP id ia17mr859083qcb.6.1299154214011; Thu, 03 Mar 2011 04:10:14 -0800 (PST) Received: by 10.229.89.197 with HTTP; Thu, 3 Mar 2011 04:10:13 -0800 (PST) In-Reply-To: References: Date: Thu, 03 Mar 2011 12:10:00 -0000 Message-ID: Subject: [patch gdb]: Fix some DOS-path related issues in gdb From: Kai Tietz To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0016362842986f429e049d92e9ce 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/msg00166.txt.bz2 --0016362842986f429e049d92e9ce Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4199 Hello, Sorry, first post were sent to wrong list. This patch fixes some issues related to DOS file-system filenames and paths. I am not sure, if I hit all places, nevertheless I am sure I hit most. This patch uses the libiberty functions & macros about directory-separator checks, absolute-path checks, and the filename-comparision functions. ChangeLog gdb/ 2011-03-03 =A0Kai Tietz =A0 =A0 =A0 =A0* breakpoint.c (clear_command): Use filename_(n)cmp =A0 =A0 =A0 =A0for source-file comparision. =A0 =A0 =A0 =A0* bsd-kvm.c (bsd_kvm_open): Use IS_ABSOLUTE_PATH check =A0 =A0 =A0 =A0for filename. =A0 =A0 =A0 =A0(bsd_kvm_files_info): Use filename_cmp for core-file =A0 =A0 =A0 =A0comparision. =A0 =A0 =A0 =A0* buildsym.c (patch_subfile_names): Use IS_DIR_SEPRARATOR =A0 =A0 =A0 =A0for trailing directory-separator check. =A0 =A0 =A0 =A0(watch_main_source_file): Use filename_cmp for mainbase =A0 =A0 =A0 =A0comparision. =A0 =A0 =A0 =A0* dbxread.c (add_old_header_file): Use filename_cmp for file= -name =A0 =A0 =A0 =A0comparision. =A0 =A0 =A0 =A0(read_dbx_symtab): Handle DOS path-separators. And use filen= ame_cmp =A0 =A0 =A0 =A0for filename comparision. =A0 =A0 =A0 =A0* elfread.c (find_separate_debug_file_by_buildid): Use =A0 =A0 =A0 =A0filename_cmp for object-filename comparision. =A0 =A0 =A0 =A0(elfstab_offset_sections): Handle DOS path-separators. And u= se =A0 =A0 =A0 =A0filename_cmp for filename comparision. =A0 =A0 =A0 =A0* exec.c (exec_set_section_address): Use filename_cmp =A0 =A0 =A0 =A0for file-name comparision. =A0 =A0 =A0 =A0* macrotab.c (macro_lookup_inclusion): Likewise. =A0 =A0 =A0 =A0* mdebugread.c (pase_partial_symbols): Handle DOS =A0 =A0 =A0 =A0path-separators. And use filename_cmp for file-name comparis= ion. =A0 =A0 =A0 =A0* minsyms.c (lookup_minimal_symbol): Likewise. =A0 =A0 =A0 =A0* nto-procfs.c (procfs_open): Likewise. =A0 =A0 =A0 =A0* psymtab.c (read_psymtabs_with_filename): Use filename_cmp =A0 =A0 =A0 =A0for file-name comparision. =A0 =A0 =A0 =A0* remote-fileio.c (remote_fileio_extract_ptr_w_len): Handle =A0 =A0 =A0 =A0DOS path-separators. =A0 =A0 =A0 =A0(remote_fileio_func_rename): Use IS_DIR_SEPARATOR and filena= me_ncmp =A0 =A0 =A0 =A0for path comparision. =A0 =A0 =A0 =A0* rs6000-nat.c (add_vmap): Use filename_cmp for file-name co= mparision. =A0 =A0 =A0 =A0* solib-som.c (match_main): Likewise. =A0 =A0 =A0 =A0* solib.c (solib_read_symbols): Likewise. =A0 =A0 =A0 =A0(reload_shared_libraries_1): Likewise. =A0 =A0 =A0 =A0* source.c (add_path): Use filename_ncmp for path comparisio= n. =A0 =A0 =A0 =A0* symfile.c (separate_debug_file_exists): Use filename_(n)cm= p for =A0 =A0 =A0 =A0filename comparision. =A0 =A0 =A0 =A0(separate_debug_file_exists): Likewise. =A0 =A0 =A0 =A0(find_separate_debug_file_by_debuglink): Likewise. =A0 =A0 =A0 =A0(reread_symbols): Likewise. =A0 =A0 =A0 =A0* symmisc.c (maintenance_print_symbols): Likewise. =A0 =A0 =A0 =A0* symtab.c (filename_seen): Likewise. =A0 =A0 =A0 =A0(file_matches): Likewise. =A0 =A0 =A0 =A0(print_symbol_info): Likewise. =A0 =A0 =A0 =A0(not_interesting_fname): Likewise. =A0 =A0 =A0 =A0(maybe_add_partial_symtab_filename): Likewise. =A0 =A0 =A0 =A0(make_source_files_completion_list): Likewise. =A0 =A0 =A0 =A0* xcoffread.c (process_linenos): Likewise. =A0 =A0 =A0 =A0(scan_xcoff_symtab): Likewise. =A0 =A0 =A0 =A0* xml-support.c (fetch_xml_builtin): Likewise. =A0 =A0 =A0 =A0* xml-syscall.c (init_sysinfo): Likewise. =A0 =A0 =A0 =A0* coffread.c (coff_getfilename): Handle DOS path-separators. =A0 =A0 =A0 =A0* dwarf2read.c (find_file_and_directory): Handle DOS absolute =A0 =A0 =A0 =A0paths. =A0 =A0 =A0 =A0* fbsd-nat.c (fbsd_make_corefile_notes): Handle DOS path-sep= arators. =A0 =A0 =A0 =A0* linux-fork.c (info_checkpoints_command): Likewise. =A0 =A0 =A0 =A0* linux-nat.c (linux_nat_make_corefile_notes): Likewise. =A0 =A0 =A0 =A0* linux-thread-db.c (try_thread_db_load): Likewise. =A0 =A0 =A0 =A0* nto-tdep.c (nto_find_and_open_solib): Likewise. =A0 =A0 =A0 =A0* windows-nat.c (_initialize_check_for_gdb_ini): Use =A0 =A0 =A0 =A0IS_DIR_SEPARATOR for path-separator check. Patch was tested for x86_64-w64-mingw32, i686-pc-cygwin, and x86_64-pc-linux-gnu. Ok for apply? Regards, Kai --0016362842986f429e049d92e9ce 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_gktmj8qa0 Content-length: 45206 SW5kZXg6IGdkYi9icmVha3BvaW50LmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2RiLm9yaWcvYnJlYWtwb2ludC5jCTIwMTEtMDMtMDEgMDk6MDM6 MjAuMDAwMDAwMDAwICswMTAwCisrKyBnZGIvYnJlYWtwb2ludC5jCTIwMTEt MDMtMDIgMTI6MTI6NDAuMDI3OTEzMDAwICswMTAwCkBAIC0zOSw2ICszOSw3 IEBACiAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJnZGJfc3Ry aW5nLmgiCiAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKKyNpbmNsdWRlICJmaWxl bmFtZXMuaCIKICNpbmNsdWRlICJhbm5vdGF0ZS5oIgogI2luY2x1ZGUgInN5 bWZpbGUuaCIKICNpbmNsdWRlICJvYmpmaWxlcy5oIgpAQCAtOTUxMCw4ICs5 NTExLDggQEAgY2xlYXJfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90 dHkpCiAJCQkJICAgICYmIGItPnNvdXJjZV9maWxlICE9IE5VTEwKIAkJCQkg ICAgJiYgc2FsLnN5bXRhYiAhPSBOVUxMCiAJCQkJICAgICYmIHNhbC5wc3Bh Y2UgPT0gbG9jLT5wc3BhY2UKLQkJCQkgICAgJiYgc3RyY21wIChiLT5zb3Vy Y2VfZmlsZSwKLQkJCQkJICAgICAgIHNhbC5zeW10YWItPmZpbGVuYW1lKSA9 PSAwCisJCQkJICAgICYmIGZpbGVuYW1lX2NtcCAoYi0+c291cmNlX2ZpbGUs CisJCQkJCQkgICAgIHNhbC5zeW10YWItPmZpbGVuYW1lKSA9PSAwCiAJCQkJ ICAgICYmIGItPmxpbmVfbnVtYmVyID09IHNhbC5saW5lKTsKIAkJICBpZiAo cGNfbWF0Y2ggfHwgbGluZV9tYXRjaCkKIAkJICAgIHsKSW5kZXg6IGdkYi9i c2Qta3ZtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcv YnNkLWt2bS5jCTIwMTEtMDEtMDcgMjA6MzY6MTUuMDAwMDAwMDAwICswMTAw CisrKyBnZGIvYnNkLWt2bS5jCTIwMTEtMDMtMDMgMTA6NDg6NTQuNzUwMjgw NzAwICswMTAwCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKICNpbmNsdWRl IDxwYXRocy5oPgogI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCisj aW5jbHVkZSAiZmlsZW5hbWVzLmgiCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+ CiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4KICNpbmNsdWRlIDxzeXMvdXNlci5o PgpAQCAtNzcsNyArNzgsNyBAQCBic2Rfa3ZtX29wZW4gKGNoYXIgKmZpbGVu YW1lLCBpbnQgZnJvbV90CiAgICAgICBjaGFyICp0ZW1wOwogCiAgICAgICBm aWxlbmFtZSA9IHRpbGRlX2V4cGFuZCAoZmlsZW5hbWUpOwotICAgICAgaWYg KGZpbGVuYW1lWzBdICE9ICcvJykKKyAgICAgIGlmICghSVNfQUJTT0xVVEVf UEFUSCAoZmlsZW5hbWUpKQogCXsKIAkgIHRlbXAgPSBjb25jYXQgKGN1cnJl bnRfZGlyZWN0b3J5LCAiLyIsIGZpbGVuYW1lLCAoY2hhciAqKU5VTEwpOwog CSAgeGZyZWUgKGZpbGVuYW1lKTsKQEAgLTE1MSw3ICsxNTIsNyBAQCBic2Rf a3ZtX3hmZXJfcGFydGlhbCAoc3RydWN0IHRhcmdldF9vcHMKIHN0YXRpYyB2 b2lkCiBic2Rfa3ZtX2ZpbGVzX2luZm8gKHN0cnVjdCB0YXJnZXRfb3BzICpv cHMpCiB7Ci0gIGlmIChic2Rfa3ZtX2NvcmVmaWxlICYmIHN0cmNtcCAoYnNk X2t2bV9jb3JlZmlsZSwgX1BBVEhfTUVNKSAhPSAwKQorICBpZiAoYnNkX2t2 bV9jb3JlZmlsZSAmJiBmaWxlbmFtZV9jbXAgKGJzZF9rdm1fY29yZWZpbGUs IF9QQVRIX01FTSkgIT0gMCkKICAgICBwcmludGZfZmlsdGVyZWQgKF8oIlx0 VXNpbmcgdGhlIGtlcm5lbCBjcmFzaCBkdW1wICVzLlxuIiksCiAJCSAgICAg YnNkX2t2bV9jb3JlZmlsZSk7CiAgIGVsc2UKSW5kZXg6IGdkYi9idWlsZHN5 bS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL2J1aWxk c3ltLmMJMjAxMS0wMS0wNSAyMzoyMjo0Ny4wMDAwMDAwMDAgKzAxMDAKKysr IGdkYi9idWlsZHN5bS5jCTIwMTEtMDMtMDMgMTA6NDU6NTYuNTQzMTUxMjAw ICswMTAwCkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZAogcGF0Y2hfc3ViZmls ZV9uYW1lcyAoc3RydWN0IHN1YmZpbGUgKnN1YmZpbGUsIGNoYXIgKm5hbWUp CiB7CiAgIGlmIChzdWJmaWxlICE9IE5VTEwgJiYgc3ViZmlsZS0+ZGlybmFt ZSA9PSBOVUxMICYmIHN1YmZpbGUtPm5hbWUgIT0gTlVMTAotICAgICAgJiYg c3ViZmlsZS0+bmFtZVtzdHJsZW4gKHN1YmZpbGUtPm5hbWUpIC0gMV0gPT0g Jy8nKQorICAgICAgJiYgSVNfRElSX1NFUEFSQVRPUiAoc3ViZmlsZS0+bmFt ZVtzdHJsZW4gKHN1YmZpbGUtPm5hbWUpIC0gMV0pKQogICAgIHsKICAgICAg IHN1YmZpbGUtPmRpcm5hbWUgPSBzdWJmaWxlLT5uYW1lOwogICAgICAgc3Vi ZmlsZS0+bmFtZSA9IHhzdHJkdXAgKG5hbWUpOwpAQCAtODc4LDcgKzg3OCw3 IEBAIHdhdGNoX21haW5fc291cmNlX2ZpbGVfbG9zc2FnZSAodm9pZCkKIAkg ICBzdWJmaWxlLT5uZXh0OwogCSAgIHN1YmZpbGUgPSBzdWJmaWxlLT5uZXh0 KQogCXsKLQkgIGlmIChzdHJjbXAgKGxiYXNlbmFtZSAoc3ViZmlsZS0+bmFt ZSksIG1haW5iYXNlKSA9PSAwKQorCSAgaWYgKGZpbGVuYW1lX2NtcCAobGJh c2VuYW1lIChzdWJmaWxlLT5uYW1lKSwgbWFpbmJhc2UpID09IDApCiAJICAg IHsKIAkgICAgICArK25yX21hdGNoZXM7CiAJICAgICAgbWFpbnN1Yl9hbGlh cyA9IHN1YmZpbGU7CkluZGV4OiBnZGIvZGJ4cmVhZC5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL2RieHJlYWQuYwkyMDExLTAzLTAx IDA5OjAzOjIwLjAwMDAwMDAwMCArMDEwMAorKysgZ2RiL2RieHJlYWQuYwky MDExLTAzLTAzIDEwOjU2OjE0LjQ5NzEyMTQwMCArMDEwMApAQCAtNDcsNiAr NDcsNyBAQAogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUgImdkYmNv cmUuaCIJCS8qIGZvciBiZmQgc3R1ZmYgKi8KICNpbmNsdWRlICJsaWJhb3V0 LmgiCQkvKiBGSVhNRSBTZWNyZXQgaW50ZXJuYWwgQkZEIHN0dWZmIGZvciBh Lm91dCAqLworI2luY2x1ZGUgImZpbGVuYW1lcy5oIgogI2luY2x1ZGUgIm9i amZpbGVzLmgiCiAjaW5jbHVkZSAiYnVpbGRzeW0uaCIKICNpbmNsdWRlICJz dGFic3JlYWQuaCIKQEAgLTM0Niw3ICszNDcsNyBAQCBhZGRfb2xkX2hlYWRl cl9maWxlIChjaGFyICpuYW1lLCBpbnQgaW5zCiAgIGludCBpOwogCiAgIGZv ciAoaSA9IDA7IGkgPCBOX0hFQURFUl9GSUxFUyAoY3VycmVudF9vYmpmaWxl KTsgaSsrKQotICAgIGlmIChzdHJjbXAgKHBbaV0ubmFtZSwgbmFtZSkgPT0g MCAmJiBpbnN0YW5jZSA9PSBwW2ldLmluc3RhbmNlKQorICAgIGlmIChmaWxl bmFtZV9jbXAgKHBbaV0ubmFtZSwgbmFtZSkgPT0gMCAmJiBpbnN0YW5jZSA9 PSBwW2ldLmluc3RhbmNlKQogICAgICAgewogCWFkZF90aGlzX29iamVjdF9o ZWFkZXJfZmlsZSAoaSk7CiAJcmV0dXJuOwpAQCAtMTUzMSw2ICsxNTMyLDEz IEBAIHJlYWRfZGJ4X3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUK IAkgICAgICAgd2UgYXNzdW1lIHRoZSBwcmV2aW91cyBOX1NPIHdhcyBhIGRp cmVjdG9yeSBuYW1lLiAgKi8KIAogCSAgICBwID0gc3RycmNociAobmFtZXN0 cmluZywgJy8nKTsKKyNpZmRlZiBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RF TQorCSAgICB7CisJICAgICAgY2hhciAqcDIgPSBzdHJyY2hyIChuYW1lc3Ry aW5nLCAnXFwnKTsKKwkgICAgICBpZiAoIXAgfHwgKHAyICYmIHAyID4gcCkp CisJICAgICAgICBwID0gcDI7CisJICAgIH0KKyNlbmRpZgogCSAgICBpZiAo cCAmJiAqKHAgKyAxKSA9PSAnXDAwMCcpCiAJICAgICAgewogCQkvKiBTYXZl IHRoZSBkaXJlY3RvcnkgbmFtZSBTT3MgbG9jYWxseSwgdGhlbiBzYXZlIGl0 IGludG8KQEAgLTE2MjAsMTMgKzE2MjgsMTMgQEAgcmVhZF9kYnhfc3ltdGFi IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogCSAgICAgICB0aGluZ3MgbGlr ZSAiYnJlYWsgYy1leHAueTo0MzUiIG5lZWQgdG8gd29yayAoSQogCSAgICAg ICBzdXBwb3NlIHRoZSBwc3ltdGFiX2luY2x1ZGVfbGlzdCBjb3VsZCBiZSBo YXNoZWQgb3IgcHV0CiAJICAgICAgIGluIGEgYmluYXJ5IHRyZWUsIGlmIHBy b2ZpbGluZyBzaG93cyB0aGlzIGlzIGEgbWFqb3IgaG9nKS4gICovCi0JICAg IGlmIChwc3QgJiYgc3RyY21wIChuYW1lc3RyaW5nLCBwc3QtPmZpbGVuYW1l KSA9PSAwKQorCSAgICBpZiAocHN0ICYmIGZpbGVuYW1lX2NtcCAobmFtZXN0 cmluZywgcHN0LT5maWxlbmFtZSkgPT0gMCkKIAkgICAgICBjb250aW51ZTsK IAkgICAgewogCSAgICAgIGludCBpOwogCiAJICAgICAgZm9yIChpID0gMDsg aSA8IGluY2x1ZGVzX3VzZWQ7IGkrKykKLQkJaWYgKHN0cmNtcCAobmFtZXN0 cmluZywgcHN5bXRhYl9pbmNsdWRlX2xpc3RbaV0pID09IDApCisJCWlmIChm aWxlbmFtZV9jbXAgKG5hbWVzdHJpbmcsIHBzeW10YWJfaW5jbHVkZV9saXN0 W2ldKSA9PSAwKQogCQkgIHsKIAkJICAgIGkgPSAtMTsKIAkJICAgIGJyZWFr OwpJbmRleDogZ2RiL2VsZnJlYWQuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnZGIub3JpZy9lbGZyZWFkLmMJMjAxMS0wMS0wNyAyMDozNjoxNi4w MDAwMDAwMDAgKzAxMDAKKysrIGdkYi9lbGZyZWFkLmMJMjAxMS0wMy0wMyAx MTowODo1OC4zNTQxMTg5MDAgKzAxMDAKQEAgLTM3LDYgKzM3LDcgQEAKICNp bmNsdWRlICJjb21wbGFpbnRzLmgiCiAjaW5jbHVkZSAiZGVtYW5nbGUuaCIK ICNpbmNsdWRlICJwc3ltcHJpdi5oIgorI2luY2x1ZGUgImZpbGVuYW1lcy5o IgogCiBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsK IApAQCAtNzA0LDcgKzcwNSw4IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZV9ieV9idWlsZGlkIChzdHIKICAgICAgIGJ1aWxkX2lkX25hbWUgPSBidWls ZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoYnVpbGRfaWQpOwogICAgICAgeGZy ZWUgKGJ1aWxkX2lkKTsKICAgICAgIC8qIFByZXZlbnQgbG9vcGluZyBvbiBh IHN0cmlwcGVkIC5kZWJ1ZyBmaWxlLiAgKi8KLSAgICAgIGlmIChidWlsZF9p ZF9uYW1lICE9IE5VTEwgJiYgc3RyY21wIChidWlsZF9pZF9uYW1lLCBvYmpm aWxlLT5uYW1lKSA9PSAwKQorICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0g TlVMTAorCSAgJiYgZmlsZW5hbWVfY21wIChidWlsZF9pZF9uYW1lLCBvYmpm aWxlLT5uYW1lKSA9PSAwKQogICAgICAgICB7CiAJICB3YXJuaW5nIChfKCJc IiVzXCI6IHNlcGFyYXRlIGRlYnVnIGluZm8gZmlsZSBoYXMgbm8gZGVidWcg aW5mbyIpLAogCQkgICBidWlsZF9pZF9uYW1lKTsKQEAgLTEwMDUsNyArMTAw NywxNSBAQCBlbGZzdGFiX29mZnNldF9zZWN0aW9ucyAoc3RydWN0IG9iamZp bGUKIAogICAvKiBUaGUgRUxGIHN5bWJvbCBpbmZvIGRvZXNuJ3QgaW5jbHVk ZSBwYXRoIG5hbWVzLCBzbyBzdHJpcCB0aGUgcGF0aAogICAgICAoaWYgYW55 KSBmcm9tIHRoZSBwc3ltdGFiIGZpbGVuYW1lLiAgKi8KLSAgd2hpbGUgKDAg IT0gKHAgPSBzdHJjaHIgKGZpbGVuYW1lLCAnLycpKSkKKyAgcCA9IHN0cnJj aHIgKGZpbGVuYW1lLCAnLycpOworI2lmZGVmIEhBVkVfRE9TX0JBU0VEX0ZJ TEVfU1lTVEVNCisgIHsKKyAgICBjaGFyICpwMiA9IHN0cnJjaHIgKGZpbGVu YW1lLCAnXFwnKTsKKyAgICBpZiAoIXAgfHwgKHAyICYmIHAyID4gcCkpCisg ICAgICBwID0gcDI7CisgIH0KKyNlbmRpZgorICBpZiAocCkKICAgICBmaWxl bmFtZSA9IHAgKyAxOwogCiAgIC8qIEZJWE1FOiAgVGhpcyBsaW5lYXIgc2Vh cmNoIGNvdWxkIHNwZWVkIHVwIHNpZ25pZmljYW50bHkKQEAgLTEwMTQsNyAr MTAyNCw3IEBAIGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2Jq ZmlsZQogICBmb3IgKDsgbWF5YmU7IG1heWJlID0gbWF5YmUtPm5leHQpCiAg ICAgewogICAgICAgaWYgKGZpbGVuYW1lWzBdID09IG1heWJlLT5maWxlbmFt ZVswXQotCSAgJiYgc3RyY21wIChmaWxlbmFtZSwgbWF5YmUtPmZpbGVuYW1l KSA9PSAwKQorCSAgJiYgZmlsZW5hbWVfY21wIChmaWxlbmFtZSwgbWF5YmUt PmZpbGVuYW1lKSA9PSAwKQogCXsKIAkgIC8qIFdlIGZvdW5kIGEgbWF0Y2gu ICBCdXQgdGhlcmUgbWlnaHQgYmUgc2V2ZXJhbCBzb3VyY2UgZmlsZXMKIAkg ICAgIChmcm9tIGRpZmZlcmVudCBkaXJlY3Rvcmllcykgd2l0aCB0aGUgc2Ft ZSBuYW1lLiAgKi8KSW5kZXg6IGdkYi9leGVjLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2RiLm9yaWcvZXhlYy5jCTIwMTEtMDItMTcgMjI6MTk6 MzEuMDAwMDAwMDAwICswMTAwCisrKyBnZGIvZXhlYy5jCTIwMTEtMDMtMDIg MTI6MTY6NTIuNTI1OTc2MjAwICswMTAwCkBAIC0yNSw2ICsyNSw3IEBACiAj aW5jbHVkZSAidGFyZ2V0LmgiCiAjaW5jbHVkZSAiZ2RiY21kLmgiCiAjaW5j bHVkZSAibGFuZ3VhZ2UuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNp bmNsdWRlICJzeW1maWxlLmgiCiAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICNp bmNsdWRlICJjb21wbGV0ZXIuaCIKQEAgLTg0NSw3ICs4NDYsNyBAQCBleGVj X3NldF9zZWN0aW9uX2FkZHJlc3MgKGNvbnN0IGNoYXIgKmZpCiAgIHRhYmxl ID0gY3VycmVudF90YXJnZXRfc2VjdGlvbnM7CiAgIGZvciAocCA9IHRhYmxl LT5zZWN0aW9uczsgcCA8IHRhYmxlLT5zZWN0aW9uc19lbmQ7IHArKykKICAg ICB7Ci0gICAgICBpZiAoc3RyY21wIChmaWxlbmFtZSwgcC0+YmZkLT5maWxl bmFtZSkgPT0gMAorICAgICAgaWYgKGZpbGVuYW1lX2NtcCAoZmlsZW5hbWUs IHAtPmJmZC0+ZmlsZW5hbWUpID09IDAKIAkgICYmIGluZGV4ID09IHAtPnRo ZV9iZmRfc2VjdGlvbi0+aW5kZXgpCiAJewogCSAgcC0+ZW5kYWRkciArPSBh ZGRyZXNzIC0gcC0+YWRkcjsKSW5kZXg6IGdkYi9tYWNyb3RhYi5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL21hY3JvdGFiLmMJMjAx MS0wMS0wOSAwNDoyMDozMy4wMDAwMDAwMDAgKzAxMDAKKysrIGdkYi9tYWNy b3RhYi5jCTIwMTEtMDMtMDMgMTA6NDE6NTguNzk2OTYxMzAwICswMTAwCkBA 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 PT0KLS0tIGdkYi5vcmlnL21kZWJ1Z3JlYWQuYwkyMDExLTAzLTAxIDA5OjAz OjIxLjAwMDAwMDAwMCArMDEwMAorKysgZ2RiL21kZWJ1Z3JlYWQuYwkyMDEx LTAzLTAzIDExOjQ1OjE4LjEwOTkxMjgwMCArMDEwMApAQCAtNDUsNiArNDUs NyBAQAogI2luY2x1ZGUgInN5bXRhYi5oIgogI2luY2x1ZGUgImdkYnR5cGVz LmgiCiAjaW5jbHVkZSAiZ2RiY29yZS5oIgorI2luY2x1ZGUgImZpbGVuYW1l cy5oIgogI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAjaW5jbHVkZSAiZ2RiX29i c3RhY2suaCIKICNpbmNsdWRlICJidWlsZHN5bS5oIgpAQCAtMzAxNCw2ICsz MDE1LDEzIEBAIHBhcnNlX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IG9iamZp bGUgKm8KIAkJCSB0aGUgcHJldmlvdXMgTl9TTyB3YXMgYSBkaXJlY3Rvcnkg bmFtZS4gICovCiAKIAkJICAgICAgcCA9IHN0cnJjaHIgKG5hbWVzdHJpbmcs ICcvJyk7CisjaWZkZWYgSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0KKwkJ ICAgICAgeworCQkJY2hhciAqcDIgPSBzdHJyY2hyIChuYW1lc3RyaW5nLCAn XFwnKTsKKwkJCWlmICghcCB8fCAocDIgJiYgcDIgPiBwKSkKKwkJCSAgcCA9 IHAyOworCQkgICAgICB9CisjZW5kaWYKIAkJICAgICAgaWYgKHAgJiYgKihw ICsgMSkgPT0gJ1wwMDAnKQogCQkJY29udGludWU7CQkvKiBTaW1wbHkgaWdu b3JlIGRpcmVjdG9yeQogCQkJCQkJICAgbmFtZSBTT3MuICAqLwpAQCAtMzA2 NSwxNSArMzA3MywxNSBAQCBwYXJzZV9wYXJ0aWFsX3N5bWJvbHMgKHN0cnVj dCBvYmpmaWxlICpvCiAJCQkgd29yayAoSSBzdXBwb3NlIHRoZSBwc3ltdGFi X2luY2x1ZGVfbGlzdCBjb3VsZCBiZQogCQkJIGhhc2hlZCBvciBwdXQgaW4g YSBiaW5hcnkgdHJlZSwgaWYgcHJvZmlsaW5nIHNob3dzCiAJCQkgdGhpcyBp cyBhIG1ham9yIGhvZykuICAqLwotCQkgICAgICBpZiAocHN0ICYmIHN0cmNt cCAobmFtZXN0cmluZywgcHN0LT5maWxlbmFtZSkgPT0gMCkKKwkJICAgICAg aWYgKHBzdCAmJiBmaWxlbmFtZV9jbXAgKG5hbWVzdHJpbmcsIHBzdC0+Zmls ZW5hbWUpID09IDApCiAJCQljb250aW51ZTsKIAogCQkgICAgICB7CiAJCQlp bnQgaTsKIAogCQkJZm9yIChpID0gMDsgaSA8IGluY2x1ZGVzX3VzZWQ7IGkr KykKLQkJCSAgaWYgKHN0cmNtcCAobmFtZXN0cmluZywKLQkJCQkgICAgICBw c3ltdGFiX2luY2x1ZGVfbGlzdFtpXSkgPT0gMCkKKwkJCSAgaWYgKGZpbGVu YW1lX2NtcCAobmFtZXN0cmluZywKKwkJCQkJICAgIHBzeW10YWJfaW5jbHVk ZV9saXN0W2ldKSA9PSAwKQogCQkJICAgIHsKIAkJCSAgICAgIGkgPSAtMTsK IAkJCSAgICAgIGJyZWFrOwpJbmRleDogZ2RiL21pbnN5bXMuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnZGIub3JpZy9taW5zeW1zLmMJMjAxMS0w MS0wOSAwNDoyMDozMy4wMDAwMDAwMDAgKzAxMDAKKysrIGdkYi9taW5zeW1z LmMJMjAxMS0wMy0wMyAxMDozNzo1NS45ODk2Mjg3MDAgKzAxMDAKQEAgLTQz LDYgKzQzLDcgQEAKICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCiAjaW5jbHVk ZSAic3ltdGFiLmgiCiAjaW5jbHVkZSAiYmZkLmgiCisjaW5jbHVkZSAiZmls ZW5hbWVzLmgiCiAjaW5jbHVkZSAic3ltZmlsZS5oIgogI2luY2x1ZGUgIm9i amZpbGVzLmgiCiAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKQEAgLTIwMCw2ICsy MDEsMTMgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpu YW1lLAogICBpZiAoc2ZpbGUgIT0gTlVMTCkKICAgICB7CiAgICAgICBjaGFy ICpwID0gc3RycmNociAoc2ZpbGUsICcvJyk7CisjaWZkZWYgSEFWRV9ET1Nf QkFTRURfRklMRV9TWVNURU0KKyAgICAgIHsKKwljaGFyICpwMiA9IHN0cnJj aHIgKHNmaWxlLCAnXFwnKTsKKwlpZiAoIXAgfHwgKHAyICYmIHAyID4gcCkp CisJICBwID0gcDI7CisgICAgICB9CisjZW5kaWYKIAogICAgICAgaWYgKHAg IT0gTlVMTCkKIAlzZmlsZSA9IHAgKyAxOwpAQCAtMjYwLDcgKzI2OCw3IEBA IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwKICAg ICAgICAgICAgICAgICAgICAgICBjYXNlIG1zdF9maWxlX2RhdGE6CiAgICAg ICAgICAgICAgICAgICAgICAgY2FzZSBtc3RfZmlsZV9ic3M6CiAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoc2ZpbGUgPT0gTlVMTAotCQkJICAgIHx8 IHN0cmNtcCAobXN5bWJvbC0+ZmlsZW5hbWUsIHNmaWxlKSA9PSAwKQorCQkJ ICAgIHx8IGZpbGVuYW1lX2NtcCAobXN5bWJvbC0+ZmlsZW5hbWUsIHNmaWxl KSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9maWxl X3N5bWJvbCA9IG1zeW1ib2w7CiAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKIApJbmRleDogZ2RiL250by1wcm9jZnMuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnZGIub3JpZy9udG8tcHJvY2ZzLmMJMjAxMS0wMS0x MSAxNjoxMDowMS4wMDAwMDAwMDAgKzAxMDAKKysrIGdkYi9udG8tcHJvY2Zz LmMJMjAxMS0wMy0wMyAxMDozNTo1Mi44NjE5OTM1MDAgKzAxMDAKQEAgLTM3 LDYgKzM3LDcgQEAKICNpbmNsdWRlICJnZGJjb3JlLmgiCiAjaW5jbHVkZSAi aW5mZXJpb3IuaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKKyNpbmNsdWRlICJm aWxlbmFtZXMuaCIKICNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUg ImdkYnRocmVhZC5oIgogI2luY2x1ZGUgIm50by10ZGVwLmgiCkBAIC0xNDks NyArMTUwLDcgQEAgcHJvY2ZzX29wZW4gKGNoYXIgKmFyZywgaW50IGZyb21f dHR5KQogCX0KICAgICAgIGVsc2UgaWYgKCplbmRzdHIpCiAJewotCSAgaWYg KCooZW5kc3RyIC0gMSkgPT0gJy8nKQorCSAgaWYgKElTX0RJUl9TRVBBUkFU T1IgKCooZW5kc3RyIC0gMSkpKQogCSAgICAqKGVuZHN0ciAtIDEpID0gMDsK IAkgIGVsc2UKIAkgICAgKmVuZHN0ciA9IDA7CkBAIC01NDUsNyArNTQ2LDcg QEAgcHJvY2ZzX21lbWluZm8gKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eQog CSAgICAgIGlmIChlcnIgIT0gRU9LKQogCQljb250aW51ZTsKIAotCSAgICAg IGlmIChzdHJjbXAgKG1hcC5pbmZvLnBhdGgsIHByaW50bWUubmFtZSkpCisJ ICAgICAgaWYgKGZpbGVuYW1lX2NtcCAobWFwLmluZm8ucGF0aCwgcHJpbnRt ZS5uYW1lKSkKIAkJY29udGludWU7CiAKIAkgICAgICAvKiBMb3dlciBkZWJ1 Z192YWRkciBpcyBhbHdheXMgdGV4dCwgaWYgbmVzc2Vzc2FyeSwgc3dhcC4g ICovCkluZGV4OiBnZGIvcHN5bXRhYi5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdkYi5vcmlnL3BzeW10YWIuYwkyMDExLTAzLTAxIDA5OjAzOjIx LjAwMDAwMDAwMCArMDEwMAorKysgZ2RiL3BzeW10YWIuYwkyMDExLTAzLTAy IDExOjAyOjU4LjEwOTg3NjkwMCArMDEwMApAQCAtOTQ2LDcgKzk0Niw3IEBA IHJlYWRfcHN5bXRhYnNfd2l0aF9maWxlbmFtZSAoc3RydWN0IG9iamYKIAog ICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwgcCkKICAgICB7Ci0g ICAgICBpZiAoc3RyY21wIChmaWxlbmFtZSwgcC0+ZmlsZW5hbWUpID09IDAp CisgICAgICBpZiAoZmlsZW5hbWVfY21wIChmaWxlbmFtZSwgcC0+ZmlsZW5h bWUpID09IDApCiAJUFNZTVRBQl9UT19TWU1UQUIgKHApOwogICAgIH0KIH0K QEAgLTE2MTQsNyArMTYxNCw3IEBAIHByaW50LXBzeW1ib2xzIHRha2VzIGFu IG91dHB1dCBmaWxlIG5hbWUKIAogICBpbW1lZGlhdGVfcXVpdCsrOwogICBB TExfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQotICAgIGlmIChzeW1uYW1lID09 IE5VTEwgfHwgc3RyY21wIChzeW1uYW1lLCBwcy0+ZmlsZW5hbWUpID09IDAp CisgICAgaWYgKHN5bW5hbWUgPT0gTlVMTCB8fCBmaWxlbmFtZV9jbXAgKHN5 bW5hbWUsIHBzLT5maWxlbmFtZSkgPT0gMCkKICAgICBkdW1wX3BzeW10YWIg KG9iamZpbGUsIHBzLCBvdXRmaWxlKTsKICAgaW1tZWRpYXRlX3F1aXQtLTsK ICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKSW5kZXg6IGdkYi9yZW1vdGUt ZmlsZWlvLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcv cmVtb3RlLWZpbGVpby5jCTIwMTEtMDItMTcgMjI6MTk6MzEuMDAwMDAwMDAw ICswMTAwCisrKyBnZGIvcmVtb3RlLWZpbGVpby5jCTIwMTEtMDMtMDMgMTA6 MjQ6MjQuNDQxNTc1MjAwICswMTAwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j bHVkZSAicmVtb3RlLWZpbGVpby5oIgogI2luY2x1ZGUgImV2ZW50LWxvb3Au aCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMu aCIKIAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWUu aD4KQEAgLTM3OCw2ICszNzksMTUgQEAgcmVtb3RlX2ZpbGVpb19leHRyYWN0 X3B0cl93X2xlbiAoY2hhciAqKgogICBpZiAoIWJ1ZiB8fCAhKmJ1ZiB8fCAh KipidWYgfHwgIXB0cnZhbCB8fCAhbGVuZ3RoKQogICAgIHJldHVybiAtMTsK ICAgYyA9IHN0cmNociAoKmJ1ZiwgJy8nKTsKKyNpZmRlZiBIQVZFX0RPU19C QVNFRF9GSUxFX1NZU1RFTQorICB7CisgICAgY2hhciAqYzIgPSBzdHJjaHIg KCpidWYsICdcXCcpOworICAgIGlmICghYykKKyAgICAgIGMgPSBjMjsKKyAg ICBlbHNlIGlmIChjMiAmJiBjMiA8IGMpCisgICAgICBjID0gYzI7CisgIH0K KyNlbmRpZgogICBpZiAoIWMpCiAgICAgcmV0dXJuIC0xOwogICAqYysrID0g J1wwJzsKQEAgLTEwMjAsOCArMTAzMCw4IEBAIHJlbW90ZV9maWxlaW9fZnVu Y19yZW5hbWUgKGNoYXIgKmJ1ZikKIAkJICBjeWd3aW5fY29udl9wYXRoIChD Q1BfV0lOX0FfVE9fUE9TSVgsIG5ld3BhdGgsIG5ld2Z1bGxwYXRoLAogCQkJ CSAgICBQQVRIX01BWCk7CiAJCSAgbGVuID0gc3RybGVuIChvbGRmdWxscGF0 aCk7Ci0JCSAgaWYgKG5ld2Z1bGxwYXRoW2xlbl0gPT0gJy8nCi0JCSAgICAg ICYmICFzdHJuY21wIChvbGRmdWxscGF0aCwgbmV3ZnVsbHBhdGgsIGxlbikp CisJCSAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKG5ld2Z1bGxwYXRoW2xlbl0p CisJCSAgICAgICYmICFmaWxlbmFtZV9uY21wIChvbGRmdWxscGF0aCwgbmV3 ZnVsbHBhdGgsIGxlbikpCiAJCSAgICBlcnJubyA9IEVJTlZBTDsKIAkJICBl bHNlCiAJCSAgICBlcnJubyA9IEVFWElTVDsKSW5kZXg6IGdkYi9yczYwMDAt bmF0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcvcnM2 MDAwLW5hdC5jCTIwMTEtMDEtMTEgMTY6MTA6MDEuMDAwMDAwMDAwICswMTAw CisrKyBnZGIvcnM2MDAwLW5hdC5jCTIwMTEtMDMtMDMgMTI6MDQ6MzkuMTYw MzQ3NDAwICswMTAwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAidGFy Z2V0LmgiCiAjaW5jbHVkZSAiZ2RiY29yZS5oIgogI2luY2x1ZGUgInhjb2Zm c29saWIuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNpbmNsdWRlICJz eW1maWxlLmgiCiAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICNpbmNsdWRlICJs aWJiZmQuaCIJCS8qIEZvciBiZmRfZGVmYXVsdF9zZXRfYXJjaF9tYWNoIChG SVhNRSkgKi8KQEAgLTc2OSw3ICs3NzAsNyBAQCBhZGRfdm1hcCAoTGRJbmZv ICpsZGkpCiAgICAgICBsYXN0ID0gMDsKICAgICAgIC8qIEZJWE1FPz8/IGFt IEkgdG9zc2luZyBCRkRzPyAgYmZkPyAgKi8KICAgICAgIHdoaWxlICgobGFz dCA9IGJmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUgKGFiZmQsIGxhc3Qp KSkKLQlpZiAoc3RyY21wIChtZW0sIGxhc3QtPmZpbGVuYW1lKSA9PSAwKQor CWlmIChmaWxlbmFtZV9jbXAgKG1lbSwgbGFzdC0+ZmlsZW5hbWUpID09IDAp CiAJICBicmVhazsKIAogICAgICAgaWYgKCFsYXN0KQpAQCAtODUzLDggKzg1 NCw4IEBAIHZtYXBfbGRpbmZvIChMZEluZm8gKmxkaSkKIAogCSAgLyogVGhl IGZpbGVuYW1lcyBhcmUgbm90IGFsd2F5cyBzdWZmaWNpZW50IHRvIG1hdGNo IG9uLiAgKi8KIAotCSAgaWYgKChuYW1lWzBdID09ICcvJyAmJiBzdHJjbXAg KG5hbWUsIHZwLT5uYW1lKSAhPSAwKQotCSAgICAgIHx8IChtZW1iWzBdICYm IHN0cmNtcCAobWVtYiwgdnAtPm1lbWJlcikgIT0gMCkpCisJICBpZiAoKG5h bWVbMF0gPT0gJy8nICYmIGZpbGVuYW1lX2NtcCAobmFtZSwgdnAtPm5hbWUp ICE9IDApCisJICAgICAgfHwgKG1lbWJbMF0gJiYgZmlsZW5hbWVfY21wICht ZW1iLCB2cC0+bWVtYmVyKSAhPSAwKSkKIAkgICAgY29udGludWU7CiAKIAkg IC8qIFNlZSBpZiB3ZSBhcmUgcmVmZXJyaW5nIHRvIHRoZSBzYW1lIGZpbGUu CkluZGV4OiBnZGIvc29saWItc29tLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2RiLm9yaWcvc29saWItc29tLmMJMjAxMS0wMS0xNCAxOTozOToz MS4wMDAwMDAwMDAgKzAxMDAKKysrIGdkYi9zb2xpYi1zb20uYwkyMDExLTAz LTAzIDEyOjA1OjI4LjI0MzU4MDIwMCArMDEwMApAQCAtMjEsNiArMjEsNyBA QAogI2luY2x1ZGUgImRlZnMuaCIKICNpbmNsdWRlICJzeW10YWIuaCIKICNp bmNsdWRlICJiZmQuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNpbmNs dWRlICJzeW1maWxlLmgiCiAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICNpbmNs dWRlICJnZGJjb3JlLmgiCkBAIC01NjgsNyArNTY5LDcgQEAgbGlua19tYXBf c3RhcnQgKHZvaWQpCiBzdGF0aWMgaW50CiBtYXRjaF9tYWluIChjb25zdCBj aGFyICpuYW1lKQogewotICByZXR1cm4gc3RyY21wIChuYW1lLCBzeW1maWxl X29iamZpbGUtPm5hbWUpID09IDA7CisgIHJldHVybiBmaWxlbmFtZV9jbXAg KG5hbWUsIHN5bWZpbGVfb2JqZmlsZS0+bmFtZSkgPT0gMDsKIH0KIAogc3Rh dGljIHN0cnVjdCBzb19saXN0ICoKSW5kZXg6IGdkYi9zb2xpYi5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL3NvbGliLmMJMjAxMS0w Mi0xNyAyMjoxOTozMi4wMDAwMDAwMDAgKzAxMDAKKysrIGdkYi9zb2xpYi5j CTIwMTEtMDMtMDIgMTE6MDY6MjkuNzE3NzQ3NzAwICswMTAwCkBAIC02Mzgs NyArNjM4LDcgQEAgc29saWJfcmVhZF9zeW1ib2xzIChzdHJ1Y3Qgc29fbGlz dCAqc28sCiAJICAvKiBIYXZlIHdlIGFscmVhZHkgbG9hZGVkIHRoaXMgc2hh cmVkIG9iamVjdD8gICovCiAJICBBTExfT0JKRklMRVMgKHNvLT5vYmpmaWxl KQogCSAgICB7Ci0JICAgICAgaWYgKHN0cmNtcCAoc28tPm9iamZpbGUtPm5h bWUsIHNvLT5zb19uYW1lKSA9PSAwCisJICAgICAgaWYgKGZpbGVuYW1lX2Nt cCAoc28tPm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1lKSA9PSAwCiAJCSAg JiYgc28tPm9iamZpbGUtPmFkZHJfbG93ID09IHNvLT5hZGRyX2xvdykKIAkJ YnJlYWs7CiAJICAgIH0KQEAgLTc2Miw3ICs3NjIsNyBAQCB1cGRhdGVfc29s aWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QKIAkgICAgfQogCSAgZWxz ZQogCSAgICB7Ci0JICAgICAgaWYgKCEgc3RyY21wIChnZGItPnNvX29yaWdp bmFsX25hbWUsIGktPnNvX29yaWdpbmFsX25hbWUpKQorCSAgICAgIGlmICgh IGZpbGVuYW1lX2NtcCAoZ2RiLT5zb19vcmlnaW5hbF9uYW1lLCBpLT5zb19v cmlnaW5hbF9uYW1lKSkKIAkJYnJlYWs7CSAgICAgIAogCSAgICB9CiAKQEAg LTEzMzgsNyArMTMzOCw3IEBAIHJlbG9hZF9zaGFyZWRfbGlicmFyaWVzXzEg KGludCBmcm9tX3R0eSkKIAkgc3ltYm9sIGZpbGUsIGNsb3NlIHRoYXQuICAq LwogICAgICAgaWYgKChmb3VuZF9wYXRobmFtZSA9PSBOVUxMICYmIHdhc19s b2FkZWQpCiAJICB8fCAoZm91bmRfcGF0aG5hbWUgIT0gTlVMTAotCSAgICAg ICYmIHN0cmNtcCAoZm91bmRfcGF0aG5hbWUsIHNvLT5zb19uYW1lKSAhPSAw KSkKKwkgICAgICAmJiBmaWxlbmFtZV9jbXAgKGZvdW5kX3BhdGhuYW1lLCBz by0+c29fbmFtZSkgIT0gMCkpCiAJewogCSAgaWYgKHNvLT5vYmpmaWxlICYm ICEgKHNvLT5vYmpmaWxlLT5mbGFncyAmIE9CSkZfVVNFUkxPQURFRCkpCiAJ ICAgIGZyZWVfb2JqZmlsZSAoc28tPm9iamZpbGUpOwpAQCAtMTM1MCw3ICsx MzUwLDcgQEAgcmVsb2FkX3NoYXJlZF9saWJyYXJpZXNfMSAoaW50IGZyb21f dHR5KQogCSBmaWxlLCBvcGVuIGl0LiAgKi8KICAgICAgIGlmIChmb3VuZF9w YXRobmFtZSAhPSBOVUxMCiAJICAmJiAoIXdhc19sb2FkZWQKLQkgICAgICB8 fCBzdHJjbXAgKGZvdW5kX3BhdGhuYW1lLCBzby0+c29fbmFtZSkgIT0gMCkp CisJICAgICAgfHwgZmlsZW5hbWVfY21wIChmb3VuZF9wYXRobmFtZSwgc28t PnNvX25hbWUpICE9IDApKQogCXsKIAkgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGU7CiAKSW5kZXg6IGdkYi9zb3VyY2UuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBnZGIub3JpZy9zb3VyY2UuYwkyMDExLTAxLTEx IDIyOjUzOjI0LjAwMDAwMDAwMCArMDEwMAorKysgZ2RiL3NvdXJjZS5jCTIw MTEtMDMtMDIgMTE6MDg6MjkuMzI0OTM1OTAwICswMTAwCkBAIC01NjksMTUg KzU2OSwxMCBAQCBhZGRfcGF0aCAoY2hhciAqZGlybmFtZSwgY2hhciAqKndo aWNoX3BhCiAJcCA9ICp3aGljaF9wYXRoOwogCXdoaWxlICgxKQogCSAgewot CSAgICAvKiBGSVhNRTogc3RybmNtcCBsb3NlcyBpbiBpbnRlcmVzdGluZyB3 YXlzIG9uIE1TLURPUyBhbmQKLQkgICAgICAgTVMtV2luZG93cyBiZWNhdXNl IG9mIGNhc2UtaW5zZW5zaXRpdml0eSBhbmQgdHdvIGRpZmZlcmVudAotCSAg ICAgICBidXQgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCBzbGFzaCBjaGFyYWN0 ZXJzLiAgV2UgbmVlZCBhCi0JICAgICAgIHNwZWNpYWwgZmlsZXN5c3RlbS1k ZXBlbmRlbnQgZmlsZS1uYW1lIGNvbXBhcmlzb24gZnVuY3Rpb24uCi0KLQkg ICAgICAgQWN0dWFsbHksIGV2ZW4gb24gVW5peCBJIHdvdWxkIHVzZSByZWFs cGF0aCgpIG9yIGl0cyB3b3JrLQorCSAgICAvKiBBY3R1YWxseSwgZXZlbiBv biBVbml4IEkgd291bGQgdXNlIHJlYWxwYXRoKCkgb3IgaXRzIHdvcmstCiAJ ICAgICAgIGFsaWtlIGJlZm9yZSBjb21wYXJpbmcuICBUaGVuIGFsbCB0aGUg Y29kZSBhYm92ZSB3aGljaAogCSAgICAgICByZW1vdmVzIGV4Y2VzcyBzbGFz aGVzIGFuZCBkb3RzIGNvdWxkIHNpbXBseSBnbyBhd2F5LiAgKi8KLQkgICAg aWYgKCFzdHJuY21wIChwLCBuYW1lLCBsZW4pCisJICAgIGlmICghZmlsZW5h bWVfbmNtcCAocCwgbmFtZSwgbGVuKQogCQkmJiAocFtsZW5dID09ICdcMCcg fHwgcFtsZW5dID09IERJUk5BTUVfU0VQQVJBVE9SKSkKIAkgICAgICB7CiAJ CS8qIEZvdW5kIGl0IGluIHRoZSBzZWFyY2ggcGF0aCwgcmVtb3ZlIG9sZCBj b3B5LiAgKi8KSW5kZXg6IGdkYi9zeW1maWxlLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2RiLm9yaWcvc3ltZmlsZS5jCTIwMTEtMDMtMDEgMDk6 MDM6MjIuMDAwMDAwMDAwICswMTAwCisrKyBnZGIvc3ltZmlsZS5jCTIwMTEt MDMtMDIgMDk6NDA6NDIuMTU2NTkwNDAwICswMTAwCkBAIC0xMzE3LDcgKzEz MTcsNyBAQCBzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hh ciAqCiAgICAgICIuZGVidWciIHN1ZmZpeCBhcyAiL3Vzci9saWIvZGVidWcv cGF0aC90by9maWxlIiBpcyBhIHNlcGFyYXRlIHRyZWUgd2hlcmUKICAgICAg dGhlIHNlcGFyYXRlIGRlYnVnIGluZm9zIHdpdGggdGhlIHNhbWUgYmFzZW5h bWUgY2FuIGV4aXN0LiAgKi8KIAotICBpZiAoc3RyY21wIChuYW1lLCBwYXJl bnRfb2JqZmlsZS0+bmFtZSkgPT0gMCkKKyAgaWYgKGZpbGVuYW1lX2NtcCAo bmFtZSwgcGFyZW50X29iamZpbGUtPm5hbWUpID09IDApCiAgICAgcmV0dXJu IDA7CiAKICAgYWJmZCA9IGJmZF9vcGVuX21heWJlX3JlbW90ZSAobmFtZSk7 CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCBzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4 aXN0cyAoY29uc3QgY2hhciAqCiAgIGlmICghYWJmZCkKICAgICByZXR1cm4g MDsKIAotICAvKiBWZXJpZnkgc3ltbGlua3Mgd2VyZSBub3QgdGhlIGNhdXNl IG9mIHN0cmNtcCBuYW1lIGRpZmZlcmVuY2UgYWJvdmUuCisgIC8qIFZlcmlm eSBzeW1saW5rcyB3ZXJlIG5vdCB0aGUgY2F1c2Ugb2YgZmlsZW5hbWVfY21w IG5hbWUgZGlmZmVyZW5jZSBhYm92ZS4KIAogICAgICBTb21lIG9wZXJhdGlu ZyBzeXN0ZW1zLCBlLmcuIFdpbmRvd3MsIGRvIG5vdCBwcm92aWRlIGEgbWVh bmluZ2Z1bAogICAgICBzdF9pbm87IHRoZXkgYWx3YXlzIHNldCBpdCB0byB6 ZXJvLiAgKFdpbmRvd3MgZG9lcyBwcm92aWRlIGEKQEAgLTE0NjMsNyArMTQ2 Myw4IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xpbmsg KHMKICAgICAgIC8qIElmIHRoZSBmaWxlIGlzIGluIHRoZSBzeXNyb290LCB0 cnkgdXNpbmcgaXRzIGJhc2UgcGF0aCBpbiB0aGUKIAkgZ2xvYmFsIGRlYnVn ZmlsZSBkaXJlY3RvcnkuICAqLwogICAgICAgaWYgKGNhbm9uX25hbWUKLQkg ICYmIHN0cm5jbXAgKGNhbm9uX25hbWUsIGdkYl9zeXNyb290LCBzdHJsZW4g KGdkYl9zeXNyb290KSkgPT0gMAorCSAgJiYgZmlsZW5hbWVfbmNtcCAoY2Fu b25fbmFtZSwgZ2RiX3N5c3Jvb3QsCisJCQkgICAgc3RybGVuIChnZGJfc3lz cm9vdCkpID09IDAKIAkgICYmIElTX0RJUl9TRVBBUkFUT1IgKGNhbm9uX25h bWVbc3RybGVuIChnZGJfc3lzcm9vdCldKSkKIAl7CiAJICBtZW1jcHkgKGRl YnVnZmlsZSwgZGVidWdkaXIsIGRlYnVnZGlyX2VuZCAtIGRlYnVnZGlyKTsK QEAgLTIzNjcsOCArMjM2OCw5IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQog CSAgLyogV2UgbmVlZCB0byBkbyB0aGlzIHdoZW5ldmVyIGFueSBzeW1ib2xz IGdvIGF3YXkuICAqLwogCSAgbWFrZV9jbGVhbnVwIChjbGVhcl9zeW10YWJf dXNlcnNfY2xlYW51cCwgMCAvKmlnbm9yZSovKTsKIAotCSAgaWYgKGV4ZWNf YmZkICE9IE5VTEwgJiYgc3RyY21wIChiZmRfZ2V0X2ZpbGVuYW1lIChvYmpm aWxlLT5vYmZkKSwKLQkJCQkJICBiZmRfZ2V0X2ZpbGVuYW1lIChleGVjX2Jm ZCkpID09IDApCisJICBpZiAoZXhlY19iZmQgIT0gTlVMTAorCSAgICAgICYm IGZpbGVuYW1lX2NtcCAoYmZkX2dldF9maWxlbmFtZSAob2JqZmlsZS0+b2Jm ZCksCisJCQkgICAgICAgYmZkX2dldF9maWxlbmFtZSAoZXhlY19iZmQpKSA9 PSAwKQogCSAgICB7CiAJICAgICAgLyogUmVsb2FkIEVYRUNfQkZEIHdpdGhv dXQgYXNraW5nIGFueXRoaW5nLiAgKi8KIApJbmRleDogZ2RiL3N5bW1pc2Mu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnZGIub3JpZy9zeW1taXNj LmMJMjAxMS0wMS0xMSAyMjo1MzoyNC4wMDAwMDAwMDAgKzAxMDAKKysrIGdk Yi9zeW1taXNjLmMJMjAxMS0wMy0wMiAxMjoxNDoyMS43NjgzMzI0MDAgKzAx MDAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJzeW10YWIuaCIKICNp bmNsdWRlICJnZGJ0eXBlcy5oIgogI2luY2x1ZGUgImJmZC5oIgorI2luY2x1 ZGUgImZpbGVuYW1lcy5oIgogI2luY2x1ZGUgInN5bWZpbGUuaCIKICNpbmNs dWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIKQEAg LTQ3NSw3ICs0NzYsNyBAQCBtYWludGVuYW5jZV9wcmludF9zeW1ib2xzIChj aGFyICphcmdzLCBpCiAKICAgaW1tZWRpYXRlX3F1aXQrKzsKICAgQUxMX1NZ TVRBQlMgKG9iamZpbGUsIHMpCi0gICAgaWYgKHN5bW5hbWUgPT0gTlVMTCB8 fCBzdHJjbXAgKHN5bW5hbWUsIHMtPmZpbGVuYW1lKSA9PSAwKQorICAgIGlm IChzeW1uYW1lID09IE5VTEwgfHwgZmlsZW5hbWVfY21wIChzeW1uYW1lLCBz LT5maWxlbmFtZSkgPT0gMCkKICAgICBkdW1wX3N5bXRhYiAob2JqZmlsZSwg cywgb3V0ZmlsZSk7CiAgIGltbWVkaWF0ZV9xdWl0LS07CiAgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7CkluZGV4OiBnZGIvc3ltdGFiLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcvc3ltdGFiLmMJMjAxMS0wMy0w MSAwOTowMzoyMi4wMDAwMDAwMDAgKzAxMDAKKysrIGdkYi9zeW10YWIuYwky MDExLTAzLTAyIDA5OjQ4OjAwLjEzNzcwNzAwMCArMDEwMApAQCAtMjc2MSw3 ICsyNzYxLDcgQEAgZmlsZW5hbWVfc2VlbiAoY29uc3QgY2hhciAqZmlsZSwg aW50IGFkZAogCiAgIC8qIElzIEZJTEUgaW4gdGFiPyAgKi8KICAgZm9yIChw ID0gdGFiOyBwIDwgdGFiICsgdGFiX2N1cl9zaXplOyBwKyspCi0gICAgaWYg KHN0cmNtcCAoKnAsIGZpbGUpID09IDApCisgICAgaWYgKGZpbGVuYW1lX2Nt cCAoKnAsIGZpbGUpID09IDApCiAgICAgICByZXR1cm4gMTsKIAogICAvKiBO bzsgbWF5YmUgYWRkIGl0IHRvIHRhYi4gICovCkBAIC0yODYyLDcgKzI4NjIs NyBAQCBmaWxlX21hdGNoZXMgKGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKmZp CiAgICAgewogICAgICAgZm9yIChpID0gMDsgaSA8IG5maWxlczsgaSsrKQog CXsKLQkgIGlmIChzdHJjbXAgKGZpbGVzW2ldLCBsYmFzZW5hbWUgKGZpbGUp KSA9PSAwKQorCSAgaWYgKGZpbGVuYW1lX2NtcCAoZmlsZXNbaV0sIGxiYXNl bmFtZSAoZmlsZSkpID09IDApCiAJICAgIHJldHVybiAxOwogCX0KICAgICB9 CkBAIC0zMjYwLDcgKzMyNjAsNyBAQCBzdGF0aWMgdm9pZAogcHJpbnRfc3lt Ym9sX2luZm8gKGRvbWFpbl9lbnVtIGtpbmQsIHN0cnVjdCBzeW10YWIgKnMs IHN0cnVjdCBzeW1ib2wgKnN5bSwKIAkJICAgaW50IGJsb2NrLCBjaGFyICps YXN0KQogewotICBpZiAobGFzdCA9PSBOVUxMIHx8IHN0cmNtcCAobGFzdCwg cy0+ZmlsZW5hbWUpICE9IDApCisgIGlmIChsYXN0ID09IE5VTEwgfHwgZmls ZW5hbWVfY21wIChsYXN0LCBzLT5maWxlbmFtZSkgIT0gMCkKICAgICB7CiAg ICAgICBmcHV0c19maWx0ZXJlZCAoIlxuRmlsZSAiLCBnZGJfc3Rkb3V0KTsK ICAgICAgIGZwdXRzX2ZpbHRlcmVkIChzLT5maWxlbmFtZSwgZ2RiX3N0ZG91 dCk7CkBAIC00MDczLDcgKzQwNzMsNyBAQCBub3RfaW50ZXJlc3RpbmdfZm5h bWUgKGNvbnN0IGNoYXIgKmZuYW1lCiAKICAgZm9yIChpID0gMDsgaWxsZWdh bF9hbGllbnNbaV07IGkrKykKICAgICB7Ci0gICAgICBpZiAoc3RyY21wIChm bmFtZSwgaWxsZWdhbF9hbGllbnNbaV0pID09IDApCisgICAgICBpZiAoZmls ZW5hbWVfY21wIChmbmFtZSwgaWxsZWdhbF9hbGllbnNbaV0pID09IDApCiAJ cmV0dXJuIDE7CiAgICAgfQogICByZXR1cm4gMDsKQEAgLTQxMDIsMTIgKzQx MDIsNyBAQCBtYXliZV9hZGRfcGFydGlhbF9zeW10YWJfZmlsZW5hbWUgKGNv bnN0CiAgIGlmIChub3RfaW50ZXJlc3RpbmdfZm5hbWUgKGZpbGVuYW1lKSkK ICAgICByZXR1cm47CiAgIGlmICghZmlsZW5hbWVfc2VlbiAoZmlsZW5hbWUs IDEsIGRhdGEtPmZpcnN0KQotI2lmIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lT VEVNCi0gICAgICAmJiBzdHJuY2FzZWNtcCAoZmlsZW5hbWUsIGRhdGEtPnRl eHQsIGRhdGEtPnRleHRfbGVuKSA9PSAwCi0jZWxzZQotICAgICAgJiYgc3Ry bmNtcCAoZmlsZW5hbWUsIGRhdGEtPnRleHQsIGRhdGEtPnRleHRfbGVuKSA9 PSAwCi0jZW5kaWYKLSAgICAgICkKKyAgICAgICYmIGZpbGVuYW1lX25jbXAg KGZpbGVuYW1lLCBkYXRhLT50ZXh0LCBkYXRhLT50ZXh0X2xlbikgPT0gMCkK ICAgICB7CiAgICAgICAvKiBUaGlzIGZpbGUgbWF0Y2hlcyBmb3IgYSBjb21w bGV0aW9uOyBhZGQgaXQgdG8gdGhlCiAJIGN1cnJlbnQgbGlzdCBvZiBtYXRj aGVzLiAgKi8KQEAgLTQxMjAsMTIgKzQxMTUsNyBAQCBtYXliZV9hZGRfcGFy dGlhbF9zeW10YWJfZmlsZW5hbWUgKGNvbnN0CiAKICAgICAgIGlmIChiYXNl X25hbWUgIT0gZmlsZW5hbWUKIAkgICYmICFmaWxlbmFtZV9zZWVuIChiYXNl X25hbWUsIDEsIGRhdGEtPmZpcnN0KQotI2lmIEhBVkVfRE9TX0JBU0VEX0ZJ TEVfU1lTVEVNCi0JICAmJiBzdHJuY2FzZWNtcCAoYmFzZV9uYW1lLCBkYXRh LT50ZXh0LCBkYXRhLT50ZXh0X2xlbikgPT0gMAotI2Vsc2UKLQkgICYmIHN0 cm5jbXAgKGJhc2VfbmFtZSwgZGF0YS0+dGV4dCwgZGF0YS0+dGV4dF9sZW4p ID09IDAKLSNlbmRpZgotCSAgKQorCSAgJiYgZmlsZW5hbWVfbmNtcCAoYmFz ZV9uYW1lLCBkYXRhLT50ZXh0LCBkYXRhLT50ZXh0X2xlbikgPT0gMCkKIAlh ZGRfZmlsZW5hbWVfdG9fbGlzdCAoYmFzZV9uYW1lLCBkYXRhLT50ZXh0LCBk YXRhLT53b3JkLAogCQkJICAgICAgZGF0YS0+bGlzdCwgZGF0YS0+bGlzdF91 c2VkLCBkYXRhLT5saXN0X2FsbG9jZWQpOwogICAgIH0KQEAgLTQxNTksMTIg KzQxNDksNyBAQCBtYWtlX3NvdXJjZV9maWxlc19jb21wbGV0aW9uX2xpc3Qg KGNoYXIKICAgICAgIGlmIChub3RfaW50ZXJlc3RpbmdfZm5hbWUgKHMtPmZp bGVuYW1lKSkKIAljb250aW51ZTsKICAgICAgIGlmICghZmlsZW5hbWVfc2Vl biAocy0+ZmlsZW5hbWUsIDEsICZmaXJzdCkKLSNpZiBIQVZFX0RPU19CQVNF RF9GSUxFX1NZU1RFTQotCSAgJiYgc3RybmNhc2VjbXAgKHMtPmZpbGVuYW1l LCB0ZXh0LCB0ZXh0X2xlbikgPT0gMAotI2Vsc2UKLQkgICYmIHN0cm5jbXAg KHMtPmZpbGVuYW1lLCB0ZXh0LCB0ZXh0X2xlbikgPT0gMAotI2VuZGlmCi0J ICApCisJICAmJiBmaWxlbmFtZV9uY21wIChzLT5maWxlbmFtZSwgdGV4dCwg dGV4dF9sZW4pID09IDApCiAJewogCSAgLyogVGhpcyBmaWxlIG1hdGNoZXMg Zm9yIGEgY29tcGxldGlvbjsgYWRkIGl0IHRvIHRoZSBjdXJyZW50CiAJICAg ICBsaXN0IG9mIG1hdGNoZXMuICAqLwpAQCAtNDE4MCwxMiArNDE2NSw3IEBA IG1ha2Vfc291cmNlX2ZpbGVzX2NvbXBsZXRpb25fbGlzdCAoY2hhcgogCSAg YmFzZV9uYW1lID0gbGJhc2VuYW1lIChzLT5maWxlbmFtZSk7CiAJICBpZiAo YmFzZV9uYW1lICE9IHMtPmZpbGVuYW1lCiAJICAgICAgJiYgIWZpbGVuYW1l X3NlZW4gKGJhc2VfbmFtZSwgMSwgJmZpcnN0KQotI2lmIEhBVkVfRE9TX0JB U0VEX0ZJTEVfU1lTVEVNCi0JICAgICAgJiYgc3RybmNhc2VjbXAgKGJhc2Vf bmFtZSwgdGV4dCwgdGV4dF9sZW4pID09IDAKLSNlbHNlCi0JICAgICAgJiYg c3RybmNtcCAoYmFzZV9uYW1lLCB0ZXh0LCB0ZXh0X2xlbikgPT0gMAotI2Vu ZGlmCi0JICAgICAgKQorCSAgICAgICYmIGZpbGVuYW1lX25jbXAgKGJhc2Vf bmFtZSwgdGV4dCwgdGV4dF9sZW4pID09IDApCiAJICAgIGFkZF9maWxlbmFt ZV90b19saXN0IChiYXNlX25hbWUsIHRleHQsIHdvcmQsCiAJCQkJICAmbGlz dCwgJmxpc3RfdXNlZCwgJmxpc3RfYWxsb2NlZCk7CiAJfQpJbmRleDogZ2Ri L3hjb2ZmcmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5v cmlnL3hjb2ZmcmVhZC5jCTIwMTEtMDEtMTIgMDI6MjM6MjkuMDAwMDAwMDAw ICswMTAwCisrKyBnZGIveGNvZmZyZWFkLmMJMjAxMS0wMy0wMyAxMjowNjoz OS45MzgxODQzMDAgKzAxMDAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl ICJjb2ZmL3JzNjAwMC5oIgogI2luY2x1ZGUgInhjb2ZmcmVhZC5oIgogCisj aW5jbHVkZSAiZmlsZW5hbWVzLmgiCiAjaW5jbHVkZSAic3ltdGFiLmgiCiAj aW5jbHVkZSAiZ2RidHlwZXMuaCIKIC8qIEZJWE1FOiBlemFubm9uaS8yMDA0 LTAyLTEzIFZlcmlmeSBpZiB0aGUgaW5jbHVkZSBiZWxvdyBpcyByZWFsbHkg bmVlZGVkLiAgKi8KQEAgLTYwOSw3ICs2MTAsNyBAQCBwcm9jZXNzX2xpbmVu b3MgKENPUkVfQUREUiBzdGFydCwgQ09SRV9BCiAJCSBzdGFydCwgMCwgJm1h aW5fc291cmNlX2Jhc2VsaW5lKTsKIAkgICAgfQogCi0JICBpZiAoc3RyY21w IChpbmNsVGFibGVbaWldLm5hbWUsIGxhc3Rfc291cmNlX2ZpbGUpID09IDAp CisJICBpZiAoZmlsZW5hbWVfY21wIChpbmNsVGFibGVbaWldLm5hbWUsIGxh c3Rfc291cmNlX2ZpbGUpID09IDApCiAJICAgIHsKICAgICAgICAgICAgICAg LyogVGhlIGVudHJ5IGluIHRoZSBpbmNsdWRlIHRhYmxlIHJlZmVycyB0byB0 aGUgbWFpbiBzb3VyY2UKICAgICAgICAgICAgICAgICAgZmlsZS4gIEFkZCB0 aGUgbGluZXMgdG8gdGhlIG1haW4gc3ViZmlsZS4gICovCkBAIC0yNTc1LDE0 ICsyNTc2LDE0IEBAIHNjYW5feGNvZmZfc3ltdGFiIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmkKIAkgICAgICAgdGhpbmdzIGxpa2UgImJyZWFrIGMtZXhwLnk6 NDM1IiBuZWVkIHRvIHdvcmsgKEkKIAkgICAgICAgc3VwcG9zZSB0aGUgcHN5 bXRhYl9pbmNsdWRlX2xpc3QgY291bGQgYmUgaGFzaGVkIG9yIHB1dAogCSAg ICAgICBpbiBhIGJpbmFyeSB0cmVlLCBpZiBwcm9maWxpbmcgc2hvd3MgdGhp cyBpcyBhIG1ham9yIGhvZykuICAqLwotCSAgICBpZiAocHN0ICYmIHN0cmNt cCAobmFtZXN0cmluZywgcHN0LT5maWxlbmFtZSkgPT0gMCkKKwkgICAgaWYg KHBzdCAmJiBmaWxlbmFtZV9jbXAgKG5hbWVzdHJpbmcsIHBzdC0+ZmlsZW5h bWUpID09IDApCiAJICAgICAgY29udGludWU7CiAKIAkgICAgewogCSAgICAg IGludCBpOwogCiAJICAgICAgZm9yIChpID0gMDsgaSA8IGluY2x1ZGVzX3Vz ZWQ7IGkrKykKLQkJaWYgKHN0cmNtcCAobmFtZXN0cmluZywgcHN5bXRhYl9p bmNsdWRlX2xpc3RbaV0pID09IDApCisJCWlmIChmaWxlbmFtZV9jbXAgKG5h bWVzdHJpbmcsIHBzeW10YWJfaW5jbHVkZV9saXN0W2ldKSA9PSAwKQogCQkg IHsKIAkJICAgIGkgPSAtMTsKIAkJICAgIGJyZWFrOwpJbmRleDogZ2RiL3ht bC1zdXBwb3J0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9y aWcveG1sLXN1cHBvcnQuYwkyMDExLTAyLTE3IDIyOjE5OjMyLjAwMDAwMDAw MCArMDEwMAorKysgZ2RiL3htbC1zdXBwb3J0LmMJMjAxMS0wMy0wMiAwOTo1 MTowNi41ODc4ODMxMDAgKzAxMDAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu Y2x1ZGUgImdkYl9zdHJpbmcuaCIKICNpbmNsdWRlICJzYWZlLWN0eXBlLmgi CisjaW5jbHVkZSAiZmlsZW5hbWVzLmgiCiAKIC8qIERlYnVnZ2luZyBmbGFn LiAgKi8KIHN0YXRpYyBpbnQgZGVidWdfeG1sOwpAQCAtOTQ2LDcgKzk0Nyw3 IEBAIGZldGNoX3htbF9idWlsdGluIChjb25zdCBjaGFyICpmaWxlbmFtZSkK ICAgY29uc3QgY2hhciAqKCpwKVsyXTsKIAogICBmb3IgKHAgPSB4bWxfYnVp bHRpbjsgKCpwKVswXTsgcCsrKQotICAgIGlmIChzdHJjbXAgKCgqcClbMF0s IGZpbGVuYW1lKSA9PSAwKQorICAgIGlmIChmaWxlbmFtZV9jbXAgKCgqcClb MF0sIGZpbGVuYW1lKSA9PSAwKQogICAgICAgcmV0dXJuICgqcClbMV07CiAK ICAgcmV0dXJuIE5VTEw7CkluZGV4OiBnZGIveG1sLXN5c2NhbGwuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBnZGIub3JpZy94bWwtc3lzY2FsbC5j CTIwMTEtMDItMTcgMjI6MTk6MzIuMDAwMDAwMDAwICswMTAwCisrKyBnZGIv eG1sLXN5c2NhbGwuYwkyMDExLTAzLTAyIDExOjE2OjAyLjM3MTk2NTUwMCAr MDEwMApAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyB2b2lkCiBpbml0X3N5 c2luZm8gKHZvaWQpCiB7CiAgIC8qIFNob3VsZCB3ZSByZS1yZWFkIHRoZSBY TUwgaW5mbyBmb3IgdGhpcyB0YXJnZXQ/ICAqLwotICBpZiAobXlfZ2RiX2Rh dGFkaXIgJiYgc3RyY21wIChteV9nZGJfZGF0YWRpciwgZ2RiX2RhdGFkaXIp ICE9IDApCisgIGlmIChteV9nZGJfZGF0YWRpciAmJiBmaWxlbmFtZV9jbXAg KG15X2dkYl9kYXRhZGlyLCBnZGJfZGF0YWRpcikgIT0gMCkKICAgICB7CiAg ICAgICAvKiBUaGUgZGF0YS1kaXJlY3RvcnkgY2hhbmdlZCBmcm9tIHRoZSBs YXN0IHRpbWUgd2UgdXNlZCBpdC4KIAkgSXQgbWVhbnMgdGhhdCB3ZSBoYXZl IHRvIHJlLXJlYWQgdGhlIFhNTCBpbmZvLiAgKi8KSW5kZXg6IGdkYi9jb2Zm cmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5vcmlnL2Nv ZmZyZWFkLmMJMjAxMS0wMy0wMSAwOTowMzoyMC4wMDAwMDAwMDAgKzAxMDAK KysrIGdkYi9jb2ZmcmVhZC5jCTIwMTEtMDMtMDMgMTA6NTM6NTMuNjc2MjM5 NDAwICswMTAwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJjb2Zm L2ludGVybmFsLmgiCS8qIEludGVybmFsIGZvcm1hdCBvZiBDT0ZGIHN5bWJv bHMgaW4gQkZEICovCiAjaW5jbHVkZSAibGliY29mZi5oIgkJLyogRklYTUUg c2VjcmV0IGludGVybmFsIGRhdGEgZnJvbSBCRkQgKi8KKyNpbmNsdWRlICJm aWxlbmFtZXMuaCIKICNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUg ImJ1aWxkc3ltLmgiCiAjaW5jbHVkZSAiZ2RiLXN0YWJzLmgiCkBAIC0xMzMx LDggKzEzMzIsMTggQEAgY29mZl9nZXRmaWxlbmFtZSAodW5pb24gaW50ZXJu YWxfYXV4ZW50CiAgIC8qIEZJWE1FOiBXZSBzaG91bGQgbm90IGJlIHRocm93 aW5nIGF3YXkgdGhlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQKICAgICAgZGly ZWN0b3J5LiAgSXQgc2hvdWxkIGdvIGludG8gZGlybmFtZSBvZiB0aGUgc3lt dGFiLCBvciBzb21lIHN1Y2gKICAgICAgcGxhY2UuICAqLwotICBpZiAoKHRl bXAgPSBzdHJyY2hyIChyZXN1bHQsICcvJykpICE9IE5VTEwpCisgIHRlbXAg PSBzdHJyY2hyIChyZXN1bHQsICcvJyk7CisjaWZkZWYgSEFWRV9ET1NfQkFT RURfRklMRV9TWVNURU0KKyAgeworICAgIGNoYXIgKnAyID0gc3RycmNociAo cmVzdWx0LCAnXFwnKTsKKworICAgIGlmICghdGVtcCB8fCAocDIgJiYgcDIg PiB0ZW1wKSkKKyAgICAgIHRlbXAgPSBwMjsKKyAgfQorI2VuZGlmCisgIGlm ICh0ZW1wICE9IE5VTEwpCiAgICAgcmVzdWx0ID0gdGVtcCArIDE7CisKICAg cmV0dXJuIChyZXN1bHQpOwogfQogDApJbmRleDogZ2RiL2R3YXJmMnJlYWQu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnZGIub3JpZy9kd2FyZjJy ZWFkLmMJMjAxMS0wMy0wMSAwOTowMzoyMS4wMDAwMDAwMDAgKzAxMDAKKysr IGdkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMy0wMyAxMTowNDoxMy4wMjI4ODY1 MDAgKzAxMDAKQEAgLTUyMDcsNyArNTIwNyw4IEBAIGZpbmRfZmlsZV9hbmRf ZGlyZWN0b3J5IChzdHJ1Y3QgZGllX2luZm8KIAkgZGlyZWN0b3J5LCBnZXQg cmlkIG9mIGl0LiAgKi8KICAgICAgIGNoYXIgKmNwID0gc3RyY2hyICgqY29t cF9kaXIsICc6Jyk7CiAKLSAgICAgIGlmIChjcCAmJiBjcCAhPSAqY29tcF9k aXIgJiYgY3BbLTFdID09ICcuJyAmJiBjcFsxXSA9PSAnLycpCisgICAgICBp ZiAoY3AgJiYgY3AgIT0gKmNvbXBfZGlyICYmIGNwWy0xXSA9PSAnLicKKwkg ICYmIElTX0FCU09MVVRFX1BBVEggKCZjcFsxXSkpCiAJKmNvbXBfZGlyID0g Y3AgKyAxOwogICAgIH0KIApJbmRleDogZ2RiL2Zic2QtbmF0LmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcvZmJzZC1uYXQuYwkyMDEx LTAzLTAxIDA5OjAzOjIxLjAwMDAwMDAwMCArMDEwMAorKysgZ2RiL2Zic2Qt bmF0LmMJMjAxMS0wMy0wMyAxMToxMzo0Ny4xMzAyODg4MDAgKzAxMDAKQEAg LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJyZWdjYWNoZS5oIgogI2luY2x1 ZGUgInJlZ3NldC5oIgogI2luY2x1ZGUgImdkYnRocmVhZC5oIgorI2luY2x1 ZGUgImZpbGVuYW1lcy5oIgogCiAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgog I2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKQEAgLTIwMiw4ICsyMDMsMTYgQEAg ZmJzZF9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQsIGludAogCiAg IGlmIChnZXRfZXhlY19maWxlICgwKSkKICAgICB7Ci0gICAgICBjaGFyICpm bmFtZSA9IHN0cnJjaHIgKGdldF9leGVjX2ZpbGUgKDApLCAnLycpICsgMTsK LSAgICAgIGNoYXIgKnBzYXJncyA9IHhzdHJkdXAgKGZuYW1lKTsKKyAgICAg IGNoYXIgKmZuYW1lID0gc3RycmNociAoZ2V0X2V4ZWNfZmlsZSAoMCksICcv Jyk7CisgICAgICBjaGFyICpwc2FyZ3M7CisjaWZkZWYgSEFWRV9ET1NfQkFT RURfRklMRV9TWVNURU0KKyAgICAgIGNoYXIgKmZuYW1lMiA9IHN0cnJjaHIg KGdldF9leGVjX2ZpbGUgKDApLCAnXFwnKTsKKworICAgICAgaWYgKCFmbmFt ZSB8fCAoZm5hbWUyICYmIGZuYW1lMiA+IGZuYW1lKSkKKyAgICAgICAgZm5h bWUgPSBmbmFtZTI7CisjZW5kaWYKKyAgICAgICsrZm5hbWU7CisgICAgICBw c2FyZ3MgPSB4c3RyZHVwIChmbmFtZSk7CiAKICAgICAgIGlmIChnZXRfaW5m ZXJpb3JfYXJncyAoKSkKIAlwc2FyZ3MgPSByZWNvbmNhdCAocHNhcmdzLCBw c2FyZ3MsICIgIiwgZ2V0X2luZmVyaW9yX2FyZ3MgKCksCkluZGV4OiBnZGIv bGludXgtZm9yay5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdkYi5v cmlnL2xpbnV4LWZvcmsuYwkyMDExLTAxLTA5IDA0OjA4OjU3LjAwMDAwMDAw MCArMDEwMAorKysgZ2RiL2xpbnV4LWZvcmsuYwkyMDExLTAzLTAzIDExOjE2 OjQ5LjA5NjM5NTYwMCArMDEwMApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1 ZGUgInJlZ2NhY2hlLmgiCiAjaW5jbHVkZSAiZ2RiY21kLmgiCiAjaW5jbHVk ZSAiaW5mY2FsbC5oIgorI2luY2x1ZGUgImZpbGVuYW1lcy5oIgogI2luY2x1 ZGUgIm9iamZpbGVzLmgiCiAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogI2lu Y2x1ZGUgImdkYl9zdHJpbmcuaCIKQEAgLTU4Niw3ICs1ODcsMTIgQEAgaW5m b19jaGVja3BvaW50c19jb21tYW5kIChjaGFyICphcmcsIGludAogICAgICAg aWYgKHNhbC5zeW10YWIpCiAJewogCSAgY2hhciAqdG1wID0gc3RycmNociAo c2FsLnN5bXRhYi0+ZmlsZW5hbWUsICcvJyk7CisjaWZkZWYgSEFWRV9ET1Nf QkFTRURfRklMRV9TWVNURU0KKwkgIGNoYXIgKnRtcDIgPSBzdHJyY2hyIChz YWxfc3ltdGFiLT5maWxlbmFtZSwgJ1xcJyk7CiAKKwkgIGlmICghdG1wIHx8 ICh0bXAyICYmIHRtcDIgPiB0bXApKQorCSAgICB0bXAgPSB0bXAyOworI2Vu ZGlmCiAJICBpZiAodG1wKQogCSAgICBwcmludGZfZmlsdGVyZWQgKF8oIiwg ZmlsZSAlcyIpLCB0bXAgKyAxKTsKIAkgIGVsc2UKSW5kZXg6IGdkYi9saW51 eC1uYXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnZGIub3JpZy9s aW51eC1uYXQuYwkyMDExLTAzLTAxIDA5OjAzOjIxLjAwMDAwMDAwMCArMDEw MAorKysgZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDMtMDMgMTE6MjA6MDAuNzM4 MjMxMDAwICswMTAwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAidGVy bWluYWwuaCIKICNpbmNsdWRlIDxzeXMvdmZzLmg+CiAjaW5jbHVkZSAic29s aWIuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKIAogI2lmbmRlZiBTUFVG U19NQUdJQwogI2RlZmluZSBTUFVGU19NQUdJQyAweDIzYzliNjRlCkBAIC00 NDkxLDcgKzQ0OTIsMTQgQEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90 ZXMgKGJmZCAqb2JmZAogCiAgIGlmIChnZXRfZXhlY19maWxlICgwKSkKICAg ICB7Ci0gICAgICBzdHJuY3B5IChmbmFtZSwgc3RycmNociAoZ2V0X2V4ZWNf ZmlsZSAoMCksICcvJykgKyAxLCBzaXplb2YgKGZuYW1lKSk7CisgICAgICBj aGFyICp0bXAgPSBzdHJyY2hyIChnZXRfZXhlY19maWxlICgwKSwgJy8nKTsK KyNpZmRlZiBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQorICAgICAgY2hh ciAqdG1wMiA9IHN0cnJjaHIgKGdldF9leGVjX2ZpbGUgKDApLCAnXFwnKTsK KworICAgICAgaWYgKCF0bXAgfHwgKHRtcDIgJiYgdG1wMiA+IHRtcCkpCisg ICAgICAgIHRtcCA9IHRtcDI7CisjZW5kaWYKKyAgICAgIHN0cm5jcHkgKGZu YW1lLCB0bXAgKyAxLCBzaXplb2YgKGZuYW1lKSk7CiAgICAgICBzdHJuY3B5 IChwc2FyZ3MsIGdldF9leGVjX2ZpbGUgKDApLCBzaXplb2YgKHBzYXJncykp OwogICAgICAgaWYgKGdldF9pbmZlcmlvcl9hcmdzICgpKQogCXsKSW5kZXg6 IGdkYi9saW51eC10aHJlYWQtZGIuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnZGIub3JpZy9saW51eC10aHJlYWQtZGIuYwkyMDExLTAzLTAxIDA5 OjAzOjIxLjAwMDAwMDAwMCArMDEwMAorKysgZ2RiL2xpbnV4LXRocmVhZC1k Yi5jCTIwMTEtMDMtMDMgMTE6MjQ6MjguNTg0NzQzMjAwICswMTAwCkBAIC0z MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiZ2RiY21kLmgiCiAjaW5jbHVkZSAi Z2RidGhyZWFkLmgiCiAjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKyNpbmNsdWRl ICJmaWxlbmFtZXMuaCIKICNpbmNsdWRlICJzeW1maWxlLmgiCiAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKQEAgLTc3Nyw3 ICs3NzgsMTEgQEAgdHJ5X3RocmVhZF9kYl9sb2FkIChjb25zdCBjaGFyICps aWJyYXJ5KQogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gIGlmIChsaWJ0 aHJlYWRfZGJfZGVidWcgJiYgc3RyY2hyIChsaWJyYXJ5LCAnLycpID09IE5V TEwpCisgIGlmIChsaWJ0aHJlYWRfZGJfZGVidWcgJiYgc3RyY2hyIChsaWJy YXJ5LCAnLycpID09IE5VTEwKKyNpZmRlZiBIQVZFX0RPU19CQVNFRF9GSUxF X1NZU1RFTQorICAgICAgJiYgc3RyY2hyIChsaWJyYXJ5LCAnXFwnKSA9PSBO VUxMCisjZW5kaWYKKyAgICAgKQogICAgIHsKICAgICAgIHZvaWQgKnRkX2lu aXQ7CiAKQEAgLTkwMSw3ICs5MDYsMTQgQEAgdGhyZWFkX2RiX2xvYWQgKHZv aWQpCiAJZ2RiX2Fzc2VydCAoc3RybGVuIChvYmotPm5hbWUpIDwgc2l6ZW9m IChwYXRoKSk7CiAJc3RyY3B5IChwYXRoLCBvYmotPm5hbWUpOwogCWNwID0g c3RycmNociAocGF0aCwgJy8nKTsKKyNpZmRlZiBIQVZFX0RPU19CQVNFRF9G SUxFX1NZU1RFTQorCXsKKwkgIGNoYXIgKmNwMiA9IHN0cnJjaHIgKHBhdGgs ICdcXCcpOwogCisJICBpZiAoIWNwIHx8IChjcDIgJiYgY3AyID4gY3ApKQor CSAgICBjcCA9IGNwMjsKKwl9CisjZW5kaWYKIAlpZiAoY3AgPT0gTlVMTCkK IAkgIHsKIAkgICAgd2FybmluZyAoXygiRXhwZWN0ZWQgYWJzb2x1dGUgcGF0 aG5hbWUgZm9yIGxpYnB0aHJlYWQgaW4gdGhlIgpJbmRleDogZ2RiL250by10 ZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcvbnRv LXRkZXAuYwkyMDExLTAxLTEwIDIxOjM4OjQ5LjAwMDAwMDAwMCArMDEwMAor KysgZ2RiL250by10ZGVwLmMJMjAxMS0wMy0wMyAxMDozMzozOS43OTE1OTU3 MDAgKzAxMDAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJlbGYtYmZk LmgiCiAjaW5jbHVkZSAic29saWItc3ZyNC5oIgogI2luY2x1ZGUgImdkYmNv cmUuaCIKKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICNpbmNsdWRlICJvYmpm aWxlcy5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0xMjksNiArMTMw LDEzIEBAIG50b19maW5kX2FuZF9vcGVuX3NvbGliIChjaGFyICpzb2xpYiwg dW4KIAogICAvKiBEb24ndCBhc3N1bWUgYmFzZW5hbWUoKSBpc24ndCBkZXN0 cnVjdGl2ZS4gICovCiAgIGJhc2UgPSBzdHJyY2hyIChzb2xpYiwgJy8nKTsK KyNpZmRlZiBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQorICB7CisgICAg Y2hhciAqYmFzZTIgPSBzdHJyY2hyIChzb2xpYiwgJ1xcJyk7CisgICAgaWYg KCFiYXNlIHx8IChiYXNlMiAmJiBiYXNlMiA+IGJhc2UpKQorICAgICAgYmFz ZSA9IGJhc2UyOworICB9CisjZW5kaWYKICAgaWYgKCFiYXNlKQogICAgIGJh c2UgPSBzb2xpYjsKICAgZWxzZQpJbmRleDogZ2RiL3dpbmRvd3MtbmF0LmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2RiLm9yaWcvd2luZG93cy1u YXQuYwkyMDExLTAxLTEyIDAyOjIzOjI5LjAwMDAwMDAwMCArMDEwMAorKysg Z2RiL3dpbmRvd3MtbmF0LmMJMjAxMS0wMy0wMyAxMDoxMjo1Mi43NDkyNDE0 MDAgKzAxMDAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxzaWduYWwu aD4KIAogI2luY2x1ZGUgImJ1aWxkc3ltLmgiCisjaW5jbHVkZSAiZmlsZW5h bWVzLmgiCiAjaW5jbHVkZSAic3ltZmlsZS5oIgogI2luY2x1ZGUgIm9iamZp bGVzLmgiCiAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKQEAgLTI1ODYsNyAr MjU4Nyw3IEBAIF9pbml0aWFsaXplX2NoZWNrX2Zvcl9nZGJfaW5pICh2b2lk KQogCQkJCSAgICAgIHNpemVvZiAoIi9nZGIuaW5pIikpOwogICAgICAgc3Ry Y3B5IChvbGRpbmksIGhvbWVkaXIpOwogICAgICAgcCA9IHN0cmNociAob2xk aW5pLCAnXDAnKTsKLSAgICAgIGlmIChwID4gb2xkaW5pICYmIHBbLTFdICE9 ICcvJykKKyAgICAgIGlmIChwID4gb2xkaW5pICYmICFJU19ESVJfU0VQQVJB VE9SIChwWy0xXSkpCiAJKnArKyA9ICcvJzsKICAgICAgIHN0cmNweSAocCwg ImdkYi5pbmkiKTsKICAgICAgIGlmIChhY2Nlc3MgKG9sZGluaSwgMCkgPT0g MCkK --0016362842986f429e049d92e9ce--