From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21007 invoked by alias); 7 Oct 2009 00:27:17 -0000 Received: (qmail 20992 invoked by uid 22791); 7 Oct 2009 00:27:12 -0000 X-SWARE-Spam-Status: No, hits=-0.3 required=5.0 tests=AWL,BAYES_00,HK_OBFDOM,HK_OBFDOMREQ,SARE_MSGID_LONG40,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.33.17) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 07 Oct 2009 00:27:05 +0000 Received: from zps36.corp.google.com (zps36.corp.google.com [172.25.146.36]) by smtp-out.google.com with ESMTP id n970R1qL004088 for ; Wed, 7 Oct 2009 01:27:02 +0100 Received: from ywh14 (ywh14.prod.google.com [10.192.8.14]) by zps36.corp.google.com with ESMTP id n970Qwba007258 for ; Tue, 6 Oct 2009 17:26:59 -0700 Received: by ywh14 with SMTP id 14so4443734ywh.26 for ; Tue, 06 Oct 2009 17:26:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.101.111.12 with SMTP id o12mr2308696anm.51.1254875218489; Tue, 06 Oct 2009 17:26:58 -0700 (PDT) In-Reply-To: <200910070044.24367.pedro@codesourcery.com> References: <20090902163344.833F476568@localhost> <200910042132.23246.pedro@codesourcery.com> <8ac60eac0910061608w4d5d2697vbb1b23138f7d95be@mail.gmail.com> <200910070044.24367.pedro@codesourcery.com> Date: Wed, 07 Oct 2009 00:27:00 -0000 Message-ID: <8ac60eac0910061726n18f8fa9cnea4ddd25d55fe315@mail.gmail.com> Subject: Re: [patch] Allow gdbserver to dynamically lookup libthread_db.so.1 From: Paul Pluzhnikov To: Pedro Alves Cc: gdb-patches@sourceware.org, dje@google.com Content-Type: multipart/mixed; boundary=001636ed7070a2b21c04754d679c X-System-Of-Record: true 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: 2009-10/txt/msg00149.txt.bz2 --001636ed7070a2b21c04754d679c Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2000 On Tue, Oct 6, 2009 at 4:44 PM, Pedro Alves wrote: >> Perhaps a better fix is to skip this check altogether, and always use >> dlopen on Linux? > > I guess your patch's already doing that. It did that IFF it could find some libthread_db. Now it will just always use libdl. If libthread_db usable by the inferior is found at runtime, it will be used; if not, tough luck. > Could you tweak the interface a bit, to return a boolean indicating > if the command was handled or not? Good call. Patch attached. > Might want to > force a whitespace after "set libthread-db-search-path", so that > "set libthread-db-search-pathfoofoo" isn't accepted while at it. Done and re-tested. Thanks, -- Paul Pluzhnikov doc/ 2009-10-06 Paul Pluzhnikov * gdb.texinfo (Server): Document libthread-db-search-path. gdbserver/ 2009-10-06 Paul Pluzhnikov * acinclude.m4: (SRV_CHECK_THREAD_DB, SRV_CHECK_TLS_GET_ADDR): Remove. * configure.ac: Adjust. * linux-low.h (struct process_info_private): Move members to struct thread_db. (thread_db_free): New prototype. * linux-low.c (linux_remove_process): Adjust. (linux_wait_for_event_1, linux_look_up_symbols): Likewise. * server.c (handle_query): Move code ... (handle_monitor_command): ... here. New function. * target.h (struct target_ops): New member. * thread-db.c (struct thread_db): New. (libthread_db_search_path): New variable. (thread_db_create_event, thread_db_enable_reporting) (find_one_thread, maybe_attach_thread, find_new_threads_callback) (thread_db_find_new_threads, (thread_db_get_tls_address): Adjust. (try_thread_db_load_1, dladdr_to_soname): New functions. (try_thread_db_load, thread_db_load_search): New functions. (thread_db_init): Search for libthread_db. (thread_db_free): New function. (thread_db_handle_monitor_command): Likewise. --001636ed7070a2b21c04754d679c Content-Type: text/plain; charset=US-ASCII; name="gdb-gdbserver-threaddb-search-20091006-2.txt" Content-Disposition: attachment; filename="gdb-gdbserver-threaddb-search-20091006-2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0hc8uor0 Content-length: 40106 SW5kZXg6IGRvYy9nZGIudGV4aW5mbwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2RvYy9nZGIudGV4aW5mbyx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS42MzEKZGlmZiAtdSAtcCAtdSAtcjEu NjMxIGdkYi50ZXhpbmZvCi0tLSBkb2MvZ2RiLnRleGluZm8JNiBPY3QgMjAw OSAxODowMjozNiAtMDAwMAkxLjYzMQorKysgZG9jL2dkYi50ZXhpbmZvCTcg T2N0IDIwMDkgMDA6MDk6MzcgLTAwMDAKQEAgLTE0OTAzLDYgKzE0OTAzLDEz IEBAIERpc2FibGUgb3IgZW5hYmxlIGdlbmVyYWwgZGVidWdnaW5nIG1lc3MK IERpc2FibGUgb3IgZW5hYmxlIHNwZWNpZmljIGRlYnVnZ2luZyBtZXNzYWdl cyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZQogcHJvdG9jb2wgKEBweHJl ZntSZW1vdGUgUHJvdG9jb2x9KS4KIAorQGl0ZW0gbW9uaXRvciBzZXQgbGli dGhyZWFkLWRiLXNlYXJjaC1wYXRoIFtQQVRIXQorQGNpbmRleCBnZGJzZXJ2 ZXIsIHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9CitXaGVu IHRoaXMgY29tbWFuZCBpcyBpc3N1ZWQsIEB2YXJ7cGF0aH0gaXMgYSBjb2xv bi1zZXBhcmF0ZWQgbGlzdCBvZgorZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZv ciBAY29kZXtsaWJ0aHJlYWRfZGJ9IChAcHhyZWZ7VGhyZWFkcywsc2V0Cits aWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9KS4gIElmIHlvdSBvbWl0IEB2YXJ7 cGF0aH0sCitAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9IHdpbGwg YmUgcmVzZXQgdG8gYW4gZW1wdHkgbGlzdC4KKwogQGl0ZW0gbW9uaXRvciBl eGl0CiBUZWxsIGdkYnNlcnZlciB0byBleGl0IGltbWVkaWF0ZWx5LiAgVGhp cyBjb21tYW5kIHNob3VsZCBiZSBmb2xsb3dlZCBieQogQGNvZGV7ZGlzY29u bmVjdH0gdG8gY2xvc2UgdGhlIGRlYnVnZ2luZyBzZXNzaW9uLiAgQGNvZGV7 Z2Ric2VydmVyfSB3aWxsCkluZGV4OiBnZGJzZXJ2ZXIvYWNpbmNsdWRlLm00 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvZ2Ric2VydmVyL2FjaW5jbHVkZS5tNCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS43CmRpZmYgLXUgLXAgLXUgLXIxLjcgYWNpbmNsdWRlLm00Ci0t LSBnZGJzZXJ2ZXIvYWNpbmNsdWRlLm00CTUgSnVuIDIwMDggMjI6MzY6NTcg LTAwMDAJMS43CisrKyBnZGJzZXJ2ZXIvYWNpbmNsdWRlLm00CTcgT2N0IDIw MDkgMDA6MDk6MzcgLTAwMDAKQEAgLTcsNjMgKzcsMyBAQCBzaW5jbHVkZSgu Li8uLi9jb25maWcvb3ZlcnJpZGUubTQpCiBkbmwgRm9yIEFDWF9QS0dWRVJT SU9OIGFuZCBBQ1hfQlVHVVJMLgogc2luY2x1ZGUoLi4vLi4vY29uZmlnL2Fj eC5tNCkKIAotQUNfREVGVU4oW1NSVl9DSEVDS19USFJFQURfREJdLAotW0FD X0NBQ0hFX0NIRUNLKFtmb3IgbGlidGhyZWFkX2RiXSxbc3J2X2N2X3RocmVh ZF9kYl0sCi0gW29sZF9MSUJTPSIkTElCUyIKLSAgTElCUz0iJExJQlMgLWx0 aHJlYWRfZGIiCi0gIEFDX1RSWV9MSU5LKAotICBbdm9pZCBwc19wZ2xvYmFs X2xvb2t1cCgpIHt9Ci0gICB2b2lkIHBzX3BkcmVhZCgpIHt9Ci0gICB2b2lk IHBzX3Bkd3JpdGUoKSB7fQotICAgdm9pZCBwc19sZ2V0cmVncygpIHt9Ci0g ICB2b2lkIHBzX2xzZXRyZWdzKCkge30KLSAgIHZvaWQgcHNfbGdldGZwcmVn cygpIHt9Ci0gICB2b2lkIHBzX2xzZXRmcHJlZ3MoKSB7fQotICAgdm9pZCBw c19nZXRfdGhyZWFkX2FyZWEoKSB7fQotICAgdm9pZCBwc19nZXRwaWQoKSB7 fV0sCi0gIFt0ZF90YV9uZXcoKTtdLAotICBbc3J2X2N2X3RocmVhZF9kYj0i LWx0aHJlYWRfZGIiXSwKLSAgW3Nydl9jdl90aHJlYWRfZGI9bm8KLQotIGlm IHRlc3QgIiRwcmVmaXgiID0gIi91c3IiIHx8IHRlc3QgIiRwcmVmaXgiID0g Ik5PTkUiOyB0aGVuCi0gIHRocmVhZF9kYj0iL2xpYi9saWJ0aHJlYWRfZGIu c28uMSIKLSBlbHNlCi0gIHRocmVhZF9kYj0nJHByZWZpeC9saWIvbGlidGhy ZWFkX2RiLnNvLjEnCi0gZmkKLSBMSUJTPSIkb2xkX0xJQlMgYGV2YWwgZWNo byAiJHRocmVhZF9kYiJgIgotIEFDX1RSWV9MSU5LKAotICBbdm9pZCBwc19w Z2xvYmFsX2xvb2t1cCgpIHt9Ci0gICB2b2lkIHBzX3BkcmVhZCgpIHt9Ci0g ICB2b2lkIHBzX3Bkd3JpdGUoKSB7fQotICAgdm9pZCBwc19sZ2V0cmVncygp IHt9Ci0gICB2b2lkIHBzX2xzZXRyZWdzKCkge30KLSAgIHZvaWQgcHNfbGdl dGZwcmVncygpIHt9Ci0gICB2b2lkIHBzX2xzZXRmcHJlZ3MoKSB7fQotICAg dm9pZCBwc19nZXRfdGhyZWFkX2FyZWEoKSB7fQotICAgdm9pZCBwc19nZXRw aWQoKSB7fV0sCi0gIFt0ZF90YV9uZXcoKTtdLAotICBbc3J2X2N2X3RocmVh ZF9kYj0iJHRocmVhZF9kYiJdLAotICBbc3J2X2N2X3RocmVhZF9kYj1ub10p Ci0gIF0pCi0gTElCUz0iJG9sZF9MSUJTIgotXSldKQotCi1BQ19ERUZVTihb U1JWX0NIRUNLX1RMU19HRVRfQUREUl0sCi1bQUNfQ0FDSEVfQ0hFQ0soW2Zv ciB0aHJlYWRfZGJfdGxzX2dldF9hZGRyXSxbc3J2X2N2X3Rsc19nZXRfYWRk cl0sCi0gW29sZF9MSUJTPSIkTElCUyIKLSAgTElCUz0iJExJQlMgJHNydl9j dl90aHJlYWRfZGIiCi0gIEFDX1RSWV9MSU5LKAotICAgW3ZvaWQgcHNfcGds b2JhbF9sb29rdXAoKSB7fQotICAgIHZvaWQgcHNfcGRyZWFkKCkge30KLSAg ICB2b2lkIHBzX3Bkd3JpdGUoKSB7fQotICAgIHZvaWQgcHNfbGdldHJlZ3Mo KSB7fQotICAgIHZvaWQgcHNfbHNldHJlZ3MoKSB7fQotICAgIHZvaWQgcHNf bGdldGZwcmVncygpIHt9Ci0gICAgdm9pZCBwc19sc2V0ZnByZWdzKCkge30K LSAgICB2b2lkIHBzX2dldF90aHJlYWRfYXJlYSgpIHt9Ci0gICAgdm9pZCBw c19nZXRwaWQoKSB7fV0sCi0gICBbdGRfdGhyX3Rsc19nZXRfYWRkcigpO10s Ci0gICBbc3J2X2N2X3Rsc19nZXRfYWRkcj15ZXNdLAotICAgW3Nydl9jdl90 bHNfZ2V0X2FkZHI9bm9dKQotICBMSUJTPSIkb2xkX0xJQlMiCi1dKV0pCklu ZGV4OiBnZGJzZXJ2ZXIvY29uZmlndXJlLmFjCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ric2VydmVyL2Nv bmZpZ3VyZS5hYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNgpkaWZmIC11 IC1wIC11IC1yMS4yNiBjb25maWd1cmUuYWMKLS0tIGdkYnNlcnZlci9jb25m aWd1cmUuYWMJNiBKdWwgMjAwOSAxODozMToxOSAtMDAwMAkxLjI2CisrKyBn ZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTcgT2N0IDIwMDkgMDA6MDk6MzcgLTAw MDAKQEAgLTE0MCwyMyArMTQwLDEzIEBAIHNydl9saWJzPQogVVNFX1RIUkVB RF9EQj0KIAogaWYgdGVzdCAiJHNydl9saW51eF90aHJlYWRfZGIiID0gInll cyI7IHRoZW4KLSAgU1JWX0NIRUNLX1RIUkVBRF9EQgotICBpZiB0ZXN0ICIk c3J2X2N2X3RocmVhZF9kYiIgPSBubzsgdGhlbgotICAgIEFDX1dBUk4oW0Nv dWxkIG5vdCBmaW5kIGxpYnRocmVhZF9kYi5dKQotICAgIEFDX1dBUk4oW0Rp c2FibGluZyB0aHJlYWQgc3VwcG9ydCBpbiBnZGJzZXJ2ZXIuXSkKLSAgICBz cnZfbGludXhfdGhyZWFkX2RiPW5vCi0gIGVsc2UKLSAgICBzcnZfbGlicz0i JHNydl9jdl90aHJlYWRfZGIiCi0gICAgU1JWX0NIRUNLX1RMU19HRVRfQURE UgotICBmaQorICBzcnZfbGlicz0iLWxkbCIKICAgb2xkX0xERkxBR1M9IiRM REZMQUdTIgogICBMREZMQUdTPSIkTERGTEFHUyAtcmR5bmFtaWMiCiAgIEFD X1RSWV9MSU5LKFtdLCBbXSwgW1JEWU5BTUlDPS1yZHluYW1pY10sIFtSRFlO QU1JQz1dKQogICBBQ19TVUJTVChSRFlOQU1JQykKICAgTERGTEFHUz0iJG9s ZF9MREZMQUdTIgotZmkKIAotaWYgdGVzdCAiJHNydl9saW51eF90aHJlYWRf ZGIiID0gInllcyI7IHRoZW4KICAgc3J2X3RocmVhZF9kZXBmaWxlcz0idGhy ZWFkLWRiLm8gcHJvYy1zZXJ2aWNlLm8iCiAgIFVTRV9USFJFQURfREI9Ii1E VVNFX1RIUkVBRF9EQiIKICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBURF9WRVJT SU9OXSwgZ2Ric3J2X2N2X2hhdmVfdGRfdmVyc2lvbiwKQEAgLTE2NiwxMCAr MTU2LDYgQEAgaWYgdGVzdCAiJHNydl9saW51eF90aHJlYWRfZGIiID0gInll cyI7IAogICBpZiB0ZXN0ICRnZGJzcnZfY3ZfaGF2ZV90ZF92ZXJzaW9uID0g eWVzOyB0aGVuCiAgICAgQUNfREVGSU5FKEhBVkVfVERfVkVSU0lPTiwgMSwg W0RlZmluZSBpZiBURF9WRVJTSU9OIGlzIGF2YWlsYWJsZS5dKQogICBmaQot Ci0gIGlmIHRlc3QgIiRzcnZfY3ZfdGxzX2dldF9hZGRyIiA9IHllczsgdGhl bgotICAgIEFDX0RFRklORShIQVZFX1REX1RIUl9UTFNfR0VUX0FERFIsIDEs IFtEZWZpbmUgaWYgdGRfdGhyX3Rsc19nZXRfYWRkciBpcyBhdmFpbGFibGUu XSkKLSAgZmkKIGZpCiAKIGlmIHRlc3QgIiRzcnZfeG1sZmlsZXMiICE9ICIi OyB0aGVuCkluZGV4OiBnZGJzZXJ2ZXIvbGludXgtbG93LmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9nZGJz ZXJ2ZXIvbGludXgtbG93LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEy CmRpZmYgLXUgLXAgLXUgLXIxLjExMiBsaW51eC1sb3cuYwotLS0gZ2Ric2Vy dmVyL2xpbnV4LWxvdy5jCTMxIEp1bCAyMDA5IDE1OjI1OjIyIC0wMDAwCTEu MTEyCisrKyBnZGJzZXJ2ZXIvbGludXgtbG93LmMJNyBPY3QgMjAwOSAwMDow OTozNyAtMDAwMApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPGRpcmVu dC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3Zm cy5oPgorI2luY2x1ZGUgPGRsZmNuLmg+CiAKICNpZm5kZWYgU1BVRlNfTUFH SUMKICNkZWZpbmUgU1BVRlNfTUFHSUMgMHgyM2M5YjY0ZQpAQCAtMTE4LDYg KzExOSwxMSBAQCBpbnQgc3RvcHBpbmdfdGhyZWFkczsKIC8qIEZJWE1FIG1h a2UgaW50byBhIHRhcmdldCBtZXRob2Q/ICAqLwogaW50IHVzaW5nX3RocmVh ZHMgPSAxOwogCisjaWZkZWYgVVNFX1RIUkVBRF9EQgorLyogRnJvbSB0aHJl YWQtZGIuYyAgKi8KK2V4dGVybiBpbnQgdGhyZWFkX2RiX2hhbmRsZV9tb25p dG9yX2NvbW1hbmQgKGNoYXIgKik7CisjZW5kaWYKKwogLyogVGhpcyBmbGFn IGlzIHRydWUgaWZmIHdlJ3ZlIGp1c3QgY3JlYXRlZCBvciBhdHRhY2hlZCB0 byBvdXIgZmlyc3QKICAgIGluZmVyaW9yIGJ1dCBpdCBoYXMgbm90IHN0b3Bw ZWQgeWV0LiAgQXMgc29vbiBhcyBpdCBkb2VzLCB3ZSBuZWVkCiAgICB0byBj YWxsIHRoZSBsb3cgdGFyZ2V0J3MgYXJjaF9zZXR1cCBjYWxsYmFjay4gIERv aW5nIHRoaXMgb25seSBvbgpAQCAtMjYxLDggKzI2NywxMSBAQCBsaW51eF9h ZGRfcHJvY2VzcyAoaW50IHBpZCwgaW50IGF0dGFjaGVkCiBzdGF0aWMgdm9p ZAogbGludXhfcmVtb3ZlX3Byb2Nlc3MgKHN0cnVjdCBwcm9jZXNzX2luZm8g KnByb2Nlc3MpCiB7Ci0gIGZyZWUgKHByb2Nlc3MtPnByaXZhdGUtPmFyY2hf cHJpdmF0ZSk7Ci0gIGZyZWUgKHByb2Nlc3MtPnByaXZhdGUpOworICBzdHJ1 Y3QgcHJvY2Vzc19pbmZvX3ByaXZhdGUgKnByaXYgPSBwcm9jZXNzLT5wcml2 YXRlOworCisgIHRocmVhZF9kYl9mcmVlIChwcm9jZXNzKTsKKyAgZnJlZSAo cHJpdi0+YXJjaF9wcml2YXRlKTsKKyAgZnJlZSAocHJpdik7CiAgIHJlbW92 ZV9wcm9jZXNzIChwcm9jZXNzKTsKIH0KIApAQCAtMTEyMiw3ICsxMTMxLDcg QEAgbGludXhfd2FpdF9mb3JfZXZlbnRfMSAocHRpZF90IHB0aWQsIGludAog CSAgJiYgIWV2ZW50X2NoaWxkLT5zdGVwcGluZwogCSAgJiYgKAogI2lmZGVm IFVTRV9USFJFQURfREIKLQkgICAgICAoY3VycmVudF9wcm9jZXNzICgpLT5w cml2YXRlLT50aHJlYWRfZGJfYWN0aXZlCisJICAgICAgKGN1cnJlbnRfcHJv Y2VzcyAoKS0+cHJpdmF0ZS0+dGhyZWFkX2RiICE9IE5VTEwKIAkgICAgICAg JiYgKFdTVE9QU0lHICgqd3N0YXQpID09IF9fU0lHUlRNSU4KIAkJICAgfHwg V1NUT1BTSUcgKCp3c3RhdCkgPT0gX19TSUdSVE1JTiArIDEpKQogCSAgICAg IHx8CkBAIC0yNjQyLDExICsyNjUxLDEwIEBAIGxpbnV4X2xvb2tfdXBfc3lt Ym9scyAodm9pZCkKICNpZmRlZiBVU0VfVEhSRUFEX0RCCiAgIHN0cnVjdCBw cm9jZXNzX2luZm8gKnByb2MgPSBjdXJyZW50X3Byb2Nlc3MgKCk7CiAKLSAg aWYgKHByb2MtPnByaXZhdGUtPnRocmVhZF9kYl9hY3RpdmUpCisgIGlmIChw cm9jLT5wcml2YXRlLT50aHJlYWRfZGIgIT0gTlVMTCkKICAgICByZXR1cm47 CiAKLSAgcHJvYy0+cHJpdmF0ZS0+dGhyZWFkX2RiX2FjdGl2ZQotICAgID0g dGhyZWFkX2RiX2luaXQgKCFsaW51eF9zdXBwb3J0c190cmFjZWZvcmtfZmxh Zyk7CisgIHRocmVhZF9kYl9pbml0ICghbGludXhfc3VwcG9ydHNfdHJhY2Vm b3JrX2ZsYWcpOwogI2VuZGlmCiB9CiAKQEAgLTMxNzEsNyArMzE3OSwxMiBA QCBzdGF0aWMgc3RydWN0IHRhcmdldF9vcHMgbGludXhfdGFyZ2V0X29wCiAg IGxpbnV4X3N1cHBvcnRzX25vbl9zdG9wLAogICBsaW51eF9hc3luYywKICAg bGludXhfc3RhcnRfbm9uX3N0b3AsCi0gIGxpbnV4X3N1cHBvcnRzX211bHRp X3Byb2Nlc3MKKyAgbGludXhfc3VwcG9ydHNfbXVsdGlfcHJvY2VzcywKKyNp ZmRlZiBVU0VfVEhSRUFEX0RCCisgIHRocmVhZF9kYl9oYW5kbGVfbW9uaXRv cl9jb21tYW5kCisjZWxzZQorICBOVUxMCisjZW5kaWYKIH07CiAKIHN0YXRp YyB2b2lkCkluZGV4OiBnZGJzZXJ2ZXIvbGludXgtbG93LmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9nZGJz ZXJ2ZXIvbGludXgtbG93LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzIK ZGlmZiAtdSAtcCAtdSAtcjEuMzIgbGludXgtbG93LmgKLS0tIGdkYnNlcnZl ci9saW51eC1sb3cuaAkzMCBKdW4gMjAwOSAxNjozNToyNSAtMDAwMAkxLjMy CisrKyBnZGJzZXJ2ZXIvbGludXgtbG93LmgJNyBPY3QgMjAwOSAwMDowOToz NyAtMDAwMApAQCAtNDcsMTggKzQ3LDEyIEBAIHN0cnVjdCBzaWdpbmZvOwog CiBzdHJ1Y3QgcHJvY2Vzc19pbmZvX3ByaXZhdGUKIHsKLSAgLyogVHJ1ZSBp ZiB0aGlzIHByb2Nlc3MgaGFzIGxvYWRlZCB0aHJlYWRfZGIsIGFuZCBpdCBp cyBhY3RpdmUuICAqLwotICBpbnQgdGhyZWFkX2RiX2FjdGl2ZTsKLQotICAv KiBTdHJ1Y3R1cmUgdGhhdCBpZGVudGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNz IGZvciB0aGUKLSAgICAgPHByb2Nfc2VydmljZS5oPiBpbnRlcmZhY2UuICAq LwotICBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSBwcm9jX2hhbmRsZTsKLQotICAv KiBDb25uZWN0aW9uIHRvIHRoZSBsaWJ0aHJlYWRfZGIgbGlicmFyeS4gICov Ci0gIHRkX3RocmFnZW50X3QgKnRocmVhZF9hZ2VudDsKLQogICAvKiBBcmNo LXNwZWNpZmljIGFkZGl0aW9ucy4gICovCiAgIHN0cnVjdCBhcmNoX3Byb2Nl c3NfaW5mbyAqYXJjaF9wcml2YXRlOworCisgIC8qIGxpYnRocmVhZF9kYi1z cGVjaWZpYyBhZGRpdGlvbnMuICBOb3QgTlVMTCBpZiB0aGlzIHByb2Nlc3Mg aGFzIGxvYWRlZAorICAgICB0aHJlYWRfZGIsIGFuZCBpdCBpcyBhY3RpdmUu ICAqLworICBzdHJ1Y3QgdGhyZWFkX2RiICp0aHJlYWRfZGI7CiB9OwogCiBz dHJ1Y3QgbHdwX2luZm87CkBAIC0yMDUsNiArMTk5LDcgQEAgaW50IGVsZl82 NF9maWxlX3AgKGNvbnN0IGNoYXIgKmZpbGUpOwogdm9pZCBsaW51eF9hdHRh Y2hfbHdwICh1bnNpZ25lZCBsb25nIHBpZCk7CiAKIGludCB0aHJlYWRfZGJf aW5pdCAoaW50IHVzZV9ldmVudHMpOwordm9pZCB0aHJlYWRfZGJfZnJlZSAo c3RydWN0IHByb2Nlc3NfaW5mbyAqKTsKIGludCB0aHJlYWRfZGJfZ2V0X3Rs c19hZGRyZXNzIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgQ09SRV9B RERSIG9mZnNldCwKIAkJCSAgICAgICBDT1JFX0FERFIgbG9hZF9tb2R1bGUs IENPUkVfQUREUiAqYWRkcmVzcyk7CiAKSW5kZXg6IGdkYnNlcnZlci9zZXJ2 ZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Ny Yy9zcmMvZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYyx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xMDIKZGlmZiAtdSAtcCAtdSAtcjEuMTAyIHNlcnZlci5jCi0t LSBnZGJzZXJ2ZXIvc2VydmVyLmMJMzAgSnVuIDIwMDkgMTY6MzU6MjUgLTAw MDAJMS4xMDIKKysrIGdkYnNlcnZlci9zZXJ2ZXIuYwk3IE9jdCAyMDA5IDAw OjA5OjM3IC0wMDAwCkBAIC02NjAsNiArNjYwLDUzIEBAIGhhbmRsZV9zZWFy Y2hfbWVtb3J5IChjaGFyICpvd25fYnVmLCBpbnQKICAgICAgIHJldHVybjsJ CQkJCVwKICAgICB9CiAKKy8qIEhhbmRsZSBtb25pdG9yIGNvbW1hbmRzIG5v dCBoYW5kbGVkIGJ5IHRhcmdldC1zcGVjaWZpYyBoYW5kbGVycy4gICovCisK K3N0YXRpYyB2b2lkCitoYW5kbGVfbW9uaXRvcl9jb21tYW5kIChjaGFyICpt b24pCit7CisgIGlmIChzdHJjbXAgKG1vbiwgInNldCBkZWJ1ZyAxIikgPT0g MCkKKyAgICB7CisgICAgICBkZWJ1Z190aHJlYWRzID0gMTsKKyAgICAgIG1v bml0b3Jfb3V0cHV0ICgiRGVidWcgb3V0cHV0IGVuYWJsZWQuXG4iKTsKKyAg ICB9CisgIGVsc2UgaWYgKHN0cmNtcCAobW9uLCAic2V0IGRlYnVnIDAiKSA9 PSAwKQorICAgIHsKKyAgICAgIGRlYnVnX3RocmVhZHMgPSAwOworICAgICAg bW9uaXRvcl9vdXRwdXQgKCJEZWJ1ZyBvdXRwdXQgZGlzYWJsZWQuXG4iKTsK KyAgICB9CisgIGVsc2UgaWYgKHN0cmNtcCAobW9uLCAic2V0IGRlYnVnLWh3 LXBvaW50cyAxIikgPT0gMCkKKyAgICB7CisgICAgICBkZWJ1Z19od19wb2lu dHMgPSAxOworICAgICAgbW9uaXRvcl9vdXRwdXQgKCJIL1cgcG9pbnQgZGVi dWdnaW5nIG91dHB1dCBlbmFibGVkLlxuIik7CisgICAgfQorICBlbHNlIGlm IChzdHJjbXAgKG1vbiwgInNldCBkZWJ1Zy1ody1wb2ludHMgMCIpID09IDAp CisgICAgeworICAgICAgZGVidWdfaHdfcG9pbnRzID0gMDsKKyAgICAgIG1v bml0b3Jfb3V0cHV0ICgiSC9XIHBvaW50IGRlYnVnZ2luZyBvdXRwdXQgZGlz YWJsZWQuXG4iKTsKKyAgICB9CisgIGVsc2UgaWYgKHN0cmNtcCAobW9uLCAi c2V0IHJlbW90ZS1kZWJ1ZyAxIikgPT0gMCkKKyAgICB7CisgICAgICByZW1v dGVfZGVidWcgPSAxOworICAgICAgbW9uaXRvcl9vdXRwdXQgKCJQcm90b2Nv bCBkZWJ1ZyBvdXRwdXQgZW5hYmxlZC5cbiIpOworICAgIH0KKyAgZWxzZSBp ZiAoc3RyY21wIChtb24sICJzZXQgcmVtb3RlLWRlYnVnIDAiKSA9PSAwKQor ICAgIHsKKyAgICAgIHJlbW90ZV9kZWJ1ZyA9IDA7CisgICAgICBtb25pdG9y X291dHB1dCAoIlByb3RvY29sIGRlYnVnIG91dHB1dCBkaXNhYmxlZC5cbiIp OworICAgIH0KKyAgZWxzZSBpZiAoc3RyY21wIChtb24sICJoZWxwIikgPT0g MCkKKyAgICBtb25pdG9yX3Nob3dfaGVscCAoKTsKKyAgZWxzZSBpZiAoc3Ry Y21wIChtb24sICJleGl0IikgPT0gMCkKKyAgICBleGl0X3JlcXVlc3RlZCA9 IDE7CisgIGVsc2UKKyAgICB7CisgICAgICBtb25pdG9yX291dHB1dCAoIlVu a25vd24gbW9uaXRvciBjb21tYW5kLlxuXG4iKTsKKyAgICAgIG1vbml0b3Jf c2hvd19oZWxwICgpOworICAgICAgd3JpdGVfZW5uIChvd25fYnVmKTsKKyAg ICB9Cit9CisKIC8qIEhhbmRsZSBhbGwgb2YgdGhlIGV4dGVuZGVkICdxJyBw YWNrZXRzLiAgKi8KIHZvaWQKIGhhbmRsZV9xdWVyeSAoY2hhciAqb3duX2J1 ZiwgaW50IHBhY2tldF9sZW4sIGludCAqbmV3X3BhY2tldF9sZW5fcCkKQEAg LTEyMTEsNDYgKzEyNTgsMTAgQEAgaGFuZGxlX3F1ZXJ5IChjaGFyICpvd25f YnVmLCBpbnQgcGFja2V0XwogCiAgICAgICB3cml0ZV9vayAob3duX2J1Zik7 CiAKLSAgICAgIGlmIChzdHJjbXAgKG1vbiwgInNldCBkZWJ1ZyAxIikgPT0g MCkKLQl7Ci0JICBkZWJ1Z190aHJlYWRzID0gMTsKLQkgIG1vbml0b3Jfb3V0 cHV0ICgiRGVidWcgb3V0cHV0IGVuYWJsZWQuXG4iKTsKLQl9Ci0gICAgICBl bHNlIGlmIChzdHJjbXAgKG1vbiwgInNldCBkZWJ1ZyAwIikgPT0gMCkKLQl7 Ci0JICBkZWJ1Z190aHJlYWRzID0gMDsKLQkgIG1vbml0b3Jfb3V0cHV0ICgi RGVidWcgb3V0cHV0IGRpc2FibGVkLlxuIik7Ci0JfQotICAgICAgZWxzZSBp ZiAoc3RyY21wIChtb24sICJzZXQgZGVidWctaHctcG9pbnRzIDEiKSA9PSAw KQotCXsKLQkgIGRlYnVnX2h3X3BvaW50cyA9IDE7Ci0JICBtb25pdG9yX291 dHB1dCAoIkgvVyBwb2ludCBkZWJ1Z2dpbmcgb3V0cHV0IGVuYWJsZWQuXG4i KTsKLQl9Ci0gICAgICBlbHNlIGlmIChzdHJjbXAgKG1vbiwgInNldCBkZWJ1 Zy1ody1wb2ludHMgMCIpID09IDApCi0JewotCSAgZGVidWdfaHdfcG9pbnRz ID0gMDsKLQkgIG1vbml0b3Jfb3V0cHV0ICgiSC9XIHBvaW50IGRlYnVnZ2lu ZyBvdXRwdXQgZGlzYWJsZWQuXG4iKTsKLQl9Ci0gICAgICBlbHNlIGlmIChz dHJjbXAgKG1vbiwgInNldCByZW1vdGUtZGVidWcgMSIpID09IDApCi0Jewot CSAgcmVtb3RlX2RlYnVnID0gMTsKLQkgIG1vbml0b3Jfb3V0cHV0ICgiUHJv dG9jb2wgZGVidWcgb3V0cHV0IGVuYWJsZWQuXG4iKTsKLQl9Ci0gICAgICBl bHNlIGlmIChzdHJjbXAgKG1vbiwgInNldCByZW1vdGUtZGVidWcgMCIpID09 IDApCi0JewotCSAgcmVtb3RlX2RlYnVnID0gMDsKLQkgIG1vbml0b3Jfb3V0 cHV0ICgiUHJvdG9jb2wgZGVidWcgb3V0cHV0IGRpc2FibGVkLlxuIik7Ci0J fQotICAgICAgZWxzZSBpZiAoc3RyY21wIChtb24sICJoZWxwIikgPT0gMCkK LQltb25pdG9yX3Nob3dfaGVscCAoKTsKLSAgICAgIGVsc2UgaWYgKHN0cmNt cCAobW9uLCAiZXhpdCIpID09IDApCi0JZXhpdF9yZXF1ZXN0ZWQgPSAxOwot ICAgICAgZWxzZQotCXsKLQkgIG1vbml0b3Jfb3V0cHV0ICgiVW5rbm93biBt b25pdG9yIGNvbW1hbmQuXG5cbiIpOwotCSAgbW9uaXRvcl9zaG93X2hlbHAg KCk7Ci0JICB3cml0ZV9lbm4gKG93bl9idWYpOwotCX0KKyAgICAgIGlmICh0 aGVfdGFyZ2V0LT5oYW5kbGVfbW9uaXRvcl9jb21tYW5kID09IE5VTEwKKwkg IHx8ICgqdGhlX3RhcmdldC0+aGFuZGxlX21vbml0b3JfY29tbWFuZCkgKG1v bikgPT0gMCkKKwkvKiBEZWZhdWx0IHByb2Nlc3NpbmcuICAqLworCWhhbmRs ZV9tb25pdG9yX2NvbW1hbmQgKG1vbik7CiAKICAgICAgIGZyZWUgKG1vbik7 CiAgICAgICByZXR1cm47CkluZGV4OiBnZGJzZXJ2ZXIvdGFyZ2V0LmgKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dk Yi9nZGJzZXJ2ZXIvdGFyZ2V0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MzkKZGlmZiAtdSAtcCAtdSAtcjEuMzkgdGFyZ2V0LmgKLS0tIGdkYnNlcnZl ci90YXJnZXQuaAkyNSBKdW4gMjAwOSAyMjoxMzo1MyAtMDAwMAkxLjM5Cisr KyBnZGJzZXJ2ZXIvdGFyZ2V0LmgJNyBPY3QgMjAwOSAwMDowOTozNyAtMDAw MApAQCAtMjc5LDYgKzI3OSwxMCBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogCiAg IC8qIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIG11bHRp LXByb2Nlc3MgZGVidWdnaW5nLiAgKi8KICAgaW50ICgqc3VwcG9ydHNfbXVs dGlfcHJvY2VzcykgKHZvaWQpOworCisgIC8qIElmIG5vdCBOVUxMLCB0YXJn ZXQtc3BlY2lmaWMgcm91dGluZSB0byBwcm9jZXNzIG1vbml0b3IgY29tbWFu ZC4KKyAgICAgUmV0dXJucyAxIGlmIGhhbmRsZWQsIG9yIDAgdG8gcGVyZm9y bSBkZWZhdWx0IHByb2Nlc3NpbmcuICAqLworICBpbnQgKCpoYW5kbGVfbW9u aXRvcl9jb21tYW5kKSAoY2hhciAqKTsKIH07CiAKIGV4dGVybiBzdHJ1Y3Qg dGFyZ2V0X29wcyAqdGhlX3RhcmdldDsKSW5kZXg6IGdkYnNlcnZlci90aHJl YWQtZGIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2dkYnNlcnZlci90aHJlYWQtZGIuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4yMwpkaWZmIC11IC1wIC11IC1yMS4yMyB0aHJlYWQt ZGIuYwotLS0gZ2Ric2VydmVyL3RocmVhZC1kYi5jCTMgQXByIDIwMDkgMjA6 MTU6NTEgLTAwMDAJMS4yMworKysgZ2Ric2VydmVyL3RocmVhZC1kYi5jCTcg T2N0IDIwMDkgMDA6MDk6MzcgLTAwMDAKQEAgLTI3LDEzICsyNyw1MSBAQCBl eHRlcm4gaW50IGRlYnVnX3RocmVhZHM7CiAKIHN0YXRpYyBpbnQgdGhyZWFk X2RiX3VzZV9ldmVudHM7CiAKLSNpZmRlZiBIQVZFX1RIUkVBRF9EQl9ICi0j aW5jbHVkZSA8dGhyZWFkX2RiLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgImdk Yl9wcm9jX3NlcnZpY2UuaCIKKyNpbmNsdWRlICIuLi9nZGJfdGhyZWFkX2Ri LmgiCiAKKyNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGludC5o PgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisK K3N0cnVjdCB0aHJlYWRfZGIKK3sKKyAgLyogU3RydWN0dXJlIHRoYXQgaWRl bnRpZmllcyB0aGUgY2hpbGQgcHJvY2VzcyBmb3IgdGhlCisgICAgIDxwcm9j X3NlcnZpY2UuaD4gaW50ZXJmYWNlLiAgKi8KKyAgc3RydWN0IHBzX3Byb2No YW5kbGUgcHJvY19oYW5kbGU7CisKKyAgLyogQ29ubmVjdGlvbiB0byB0aGUg bGlidGhyZWFkX2RiIGxpYnJhcnkuICAqLworICB0ZF90aHJhZ2VudF90ICp0 aHJlYWRfYWdlbnQ7CisKKyAgLyogSGFuZGxlIG9mIHRoZSBsaWJ0aHJlYWRf ZGIgZnJvbSBkbG9wZW4uICAqLworICB2b2lkICpoYW5kbGU7CisKKyAgLyog QWRkcmVzc2VzIG9mIGxpYnRocmVhZF9kYiBmdW5jdGlvbnMuICAqLworICB0 ZF9lcnJfZSAoKnRkX3RhX25ld19wKSAoc3RydWN0IHBzX3Byb2NoYW5kbGUg KiBwcywgdGRfdGhyYWdlbnRfdCAqKnRhKTsKKyAgdGRfZXJyX2UgKCp0ZF90 YV9ldmVudF9nZXRtc2dfcCkgKGNvbnN0IHRkX3RocmFnZW50X3QgKnRhLAor CQkJCSAgICB0ZF9ldmVudF9tc2dfdCAqbXNnKTsKKyAgdGRfZXJyX2UgKCp0 ZF90YV9zZXRfZXZlbnRfcCkgKGNvbnN0IHRkX3RocmFnZW50X3QgKnRhLAor CQkJCSB0ZF90aHJfZXZlbnRzX3QgKmV2ZW50KTsKKyAgdGRfZXJyX2UgKCp0 ZF90YV9ldmVudF9hZGRyX3ApIChjb25zdCB0ZF90aHJhZ2VudF90ICp0YSwK KwkJCQkgIHRkX2V2ZW50X2UgZXZlbnQsIHRkX25vdGlmeV90ICpwdHIpOwor ICB0ZF9lcnJfZSAoKnRkX3RhX21hcF9sd3AydGhyX3ApIChjb25zdCB0ZF90 aHJhZ2VudF90ICp0YSwgbHdwaWRfdCBsd3BpZCwKKwkJCQkgICB0ZF90aHJo YW5kbGVfdCAqdGgpOworICB0ZF9lcnJfZSAoKnRkX3Rocl9nZXRfaW5mb19w KSAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKnRoLAorCQkJCSB0ZF90aHJpbmZv X3QgKmluZm9wKTsKKyAgdGRfZXJyX2UgKCp0ZF90aHJfZXZlbnRfZW5hYmxl X3ApIChjb25zdCB0ZF90aHJoYW5kbGVfdCAqdGgsIGludCBldmVudCk7Cisg IHRkX2Vycl9lICgqdGRfdGFfdGhyX2l0ZXJfcCkgKGNvbnN0IHRkX3RocmFn ZW50X3QgKnRhLAorCQkJCXRkX3Rocl9pdGVyX2YgKmNhbGxiYWNrLCB2b2lk ICpjYmRhdGFfcCwKKwkJCQl0ZF90aHJfc3RhdGVfZSBzdGF0ZSwgaW50IHRp X3ByaSwKKwkJCQlzaWdzZXRfdCAqdGlfc2lnbWFza19wLAorCQkJCXVuc2ln bmVkIGludCB0aV91c2VyX2ZsYWdzKTsKKyAgdGRfZXJyX2UgKCp0ZF90aHJf dGxzX2dldF9hZGRyX3ApIChjb25zdCB0ZF90aHJoYW5kbGVfdCAqdGgsCisJ CQkJICAgICB2b2lkICptYXBfYWRkcmVzcywKKwkJCQkgICAgIHNpemVfdCBv ZmZzZXQsIHZvaWQgKiphZGRyZXNzKTsKKyAgY29uc3QgY2hhciAqKiAoKnRk X3N5bWJvbF9saXN0X3ApICh2b2lkKTsKK307CisKK3N0YXRpYyBjaGFyICps aWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGg7CiAKIHN0YXRpYyBpbnQgZmluZF9v bmVfdGhyZWFkIChwdGlkX3QpOwogc3RhdGljIGludCBmaW5kX25ld190aHJl YWRzX2NhbGxiYWNrIChjb25zdCB0ZF90aHJoYW5kbGVfdCAqdGhfcCwgdm9p ZCAqZGF0YSk7CkBAIC0xMzAsNyArMTY4LDExIEBAIHRocmVhZF9kYl9jcmVh dGVfZXZlbnQgKENPUkVfQUREUiB3aGVyZSkKICAgdGRfZXZlbnRfbXNnX3Qg bXNnOwogICB0ZF9lcnJfZSBlcnI7CiAgIHN0cnVjdCBsd3BfaW5mbyAqbHdw OwotICBzdHJ1Y3QgcHJvY2Vzc19pbmZvX3ByaXZhdGUgKnByb2MgPSBjdXJy ZW50X3Byb2Nlc3MoKS0+cHJpdmF0ZTsKKyAgc3RydWN0IHRocmVhZF9kYiAq dGhyZWFkX2RiID0gY3VycmVudF9wcm9jZXNzICgpLT5wcml2YXRlLT50aHJl YWRfZGI7CisKKyAgaWYgKHRocmVhZF9kYi0+dGRfdGFfZXZlbnRfZ2V0bXNn X3AgPT0gTlVMTCkKKyAgICAvKiBXZSBzaG91bGRuJ3QgaGF2ZSBldmVyIGJl IGhlcmUgaW4gdGhlIGZpcnN0IHBsYWNlLiAgKi8KKyAgICByZXR1cm4gVERf RVJSOwogCiAgIGlmIChkZWJ1Z190aHJlYWRzKQogICAgIGZwcmludGYgKHN0 ZGVyciwgIlRocmVhZCBjcmVhdGlvbiBldmVudC5cbiIpOwpAQCAtMTM5LDcg KzE4MSw3IEBAIHRocmVhZF9kYl9jcmVhdGVfZXZlbnQgKENPUkVfQUREUiB3 aGVyZSkKICAgICAgSW4gdGhlIExpbnV4VGhyZWFkcyBpbXBsZW1lbnRhdGlv biwgdGhpcyBpcyBzYWZlLAogICAgICBiZWNhdXNlIGFsbCBldmVudHMgY29t ZSBmcm9tIHRoZSBtYW5hZ2VyIHRocmVhZAogICAgICAoZXhjZXB0IGZvciBp dHMgb3duIGNyZWF0aW9uLCBvZiBjb3Vyc2UpLiAgKi8KLSAgZXJyID0gdGRf dGFfZXZlbnRfZ2V0bXNnIChwcm9jLT50aHJlYWRfYWdlbnQsICZtc2cpOwor ICBlcnIgPSB0aHJlYWRfZGItPnRkX3RhX2V2ZW50X2dldG1zZ19wICh0aHJl YWRfZGItPnRocmVhZF9hZ2VudCwgJm1zZyk7CiAgIGlmIChlcnIgIT0gVERf T0spCiAgICAgZnByaW50ZiAoc3RkZXJyLCAidGhyZWFkIGdldG1zZyBlcnI6 ICVzXG4iLAogCSAgICAgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwpAQCAt MTU4LDM2ICsyMDAsMjUgQEAgdGhyZWFkX2RiX2NyZWF0ZV9ldmVudCAoQ09S RV9BRERSIHdoZXJlKQogICByZXR1cm4gMDsKIH0KIAotI2lmIDAKLXN0YXRp YyBpbnQKLXRocmVhZF9kYl9kZWF0aF9ldmVudCAoQ09SRV9BRERSIHdoZXJl KQotewotICBpZiAoZGVidWdfdGhyZWFkcykKLSAgICBmcHJpbnRmIChzdGRl cnIsICJUaHJlYWQgZGVhdGggZXZlbnQuXG4iKTsKLQotICByZXR1cm4gMDsK LX0KLSNlbmRpZgotCiBzdGF0aWMgaW50CiB0aHJlYWRfZGJfZW5hYmxlX3Jl cG9ydGluZyAoKQogewogICB0ZF90aHJfZXZlbnRzX3QgZXZlbnRzOwogICB0 ZF9ub3RpZnlfdCBub3RpZnk7CiAgIHRkX2Vycl9lIGVycjsKLSAgc3RydWN0 IHByb2Nlc3NfaW5mb19wcml2YXRlICpwcm9jID0gY3VycmVudF9wcm9jZXNz KCktPnByaXZhdGU7CisgIHN0cnVjdCB0aHJlYWRfZGIgKnRocmVhZF9kYiA9 IGN1cnJlbnRfcHJvY2VzcyAoKS0+cHJpdmF0ZS0+dGhyZWFkX2RiOworCisg IGlmICh0aHJlYWRfZGItPnRkX3RhX3NldF9ldmVudF9wID09IE5VTEwKKyAg ICAgIHx8IHRocmVhZF9kYi0+dGRfdGFfZXZlbnRfYWRkcl9wID09IE5VTEwK KyAgICAgIHx8IHRocmVhZF9kYi0+dGRfdGFfZXZlbnRfZ2V0bXNnX3AgPT0g TlVMTCkKKyAgICAvKiBUaGlzIGxpYnRocmVhZF9kYiBpcyBtaXNzaW5nIHJl cXVpcmVkIHN1cHBvcnQuICAqLworICAgIHJldHVybiBURF9FUlI7CiAKICAg LyogU2V0IHRoZSBwcm9jZXNzIHdpZGUgbWFzayBzYXlpbmcgd2hpY2ggZXZl bnRzIHdlJ3JlIGludGVyZXN0ZWQgaW4uICAqLwogICB0ZF9ldmVudF9lbXB0 eXNldCAoJmV2ZW50cyk7CiAgIHRkX2V2ZW50X2FkZHNldCAoJmV2ZW50cywg VERfQ1JFQVRFKTsKIAotI2lmIDAKLSAgLyogVGhpcyBpcyByZXBvcnRlZCB0 byBiZSBicm9rZW4gaW4gZ2xpYmMgMi4xLjMuICBBIGRpZmZlcmVudCBhcHBy b2FjaAotICAgICB3aWxsIGJlIG5lY2Vzc2FyeSB0byBzdXBwb3J0IHRoYXQu ICAqLwotICB0ZF9ldmVudF9hZGRzZXQgKCZldmVudHMsIFREX0RFQVRIKTsK LSNlbmRpZgotCi0gIGVyciA9IHRkX3RhX3NldF9ldmVudCAocHJvYy0+dGhy ZWFkX2FnZW50LCAmZXZlbnRzKTsKKyAgZXJyID0gdGhyZWFkX2RiLT50ZF90 YV9zZXRfZXZlbnRfcCAodGhyZWFkX2RiLT50aHJlYWRfYWdlbnQsICZldmVu dHMpOwogICBpZiAoZXJyICE9IFREX09LKQogICAgIHsKICAgICAgIHdhcm5p bmcgKCJVbmFibGUgdG8gc2V0IGdsb2JhbCB0aHJlYWQgZXZlbnQgbWFzazog JXMiLApAQCAtMTk2LDcgKzIyNyw4IEBAIHRocmVhZF9kYl9lbmFibGVfcmVw b3J0aW5nICgpCiAgICAgfQogCiAgIC8qIEdldCBhZGRyZXNzIGZvciB0aHJl YWQgY3JlYXRpb24gYnJlYWtwb2ludC4gICovCi0gIGVyciA9IHRkX3RhX2V2 ZW50X2FkZHIgKHByb2MtPnRocmVhZF9hZ2VudCwgVERfQ1JFQVRFLCAmbm90 aWZ5KTsKKyAgZXJyID0gdGhyZWFkX2RiLT50ZF90YV9ldmVudF9hZGRyX3Ag KHRocmVhZF9kYi0+dGhyZWFkX2FnZW50LCBURF9DUkVBVEUsCisJCQkJICAg ICAgICZub3RpZnkpOwogICBpZiAoZXJyICE9IFREX09LKQogICAgIHsKICAg ICAgIHdhcm5pbmcgKCJVbmFibGUgdG8gZ2V0IGxvY2F0aW9uIGZvciB0aHJl YWQgY3JlYXRpb24gYnJlYWtwb2ludDogJXMiLApAQCAtMjA2LDIyICsyMzgs NiBAQCB0aHJlYWRfZGJfZW5hYmxlX3JlcG9ydGluZyAoKQogICBzZXRfYnJl YWtwb2ludF9hdCAoKENPUkVfQUREUikgKHVuc2lnbmVkIGxvbmcpIG5vdGlm eS51LmJwdGFkZHIsCiAJCSAgICAgdGhyZWFkX2RiX2NyZWF0ZV9ldmVudCk7 CiAKLSNpZiAwCi0gIC8qIERvbid0IGNvbmNlcm4gb3Vyc2VsdmVzIHdpdGgg cmVwb3J0ZWQgdGhyZWFkIGRlYXRocywgb25seQotICAgICB3aXRoIGFjdHVh bCB0aHJlYWQgZGVhdGhzICh2aWEgd2FpdCkuICAqLwotCi0gIC8qIEdldCBh ZGRyZXNzIGZvciB0aHJlYWQgZGVhdGggYnJlYWtwb2ludC4gICovCi0gIGVy ciA9IHRkX3RhX2V2ZW50X2FkZHIgKHByb2MtPnRocmVhZF9hZ2VudCwgVERf REVBVEgsICZub3RpZnkpOwotICBpZiAoZXJyICE9IFREX09LKQotICAgIHsK LSAgICAgIHdhcm5pbmcgKCJVbmFibGUgdG8gZ2V0IGxvY2F0aW9uIGZvciB0 aHJlYWQgZGVhdGggYnJlYWtwb2ludDogJXMiLAotCSAgICAgICB0aHJlYWRf ZGJfZXJyX3N0ciAoZXJyKSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICBz ZXRfYnJlYWtwb2ludF9hdCAoKENPUkVfQUREUikgKHVuc2lnbmVkIGxvbmcp IG5vdGlmeS51LmJwdGFkZHIsCi0JCSAgICAgdGhyZWFkX2RiX2RlYXRoX2V2 ZW50KTsKLSNlbmRpZgotCiAgIHJldHVybiAxOwogfQogCkBAIC0yMzMsNyAr MjQ5LDcgQEAgZmluZF9vbmVfdGhyZWFkIChwdGlkX3QgcHRpZCkKICAgdGRf ZXJyX2UgZXJyOwogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKmluZmVyaW9yOwog ICBzdHJ1Y3QgbHdwX2luZm8gKmx3cDsKLSAgc3RydWN0IHByb2Nlc3NfaW5m b19wcml2YXRlICpwcm9jOworICBzdHJ1Y3QgdGhyZWFkX2RiICp0aHJlYWRf ZGIgPSBjdXJyZW50X3Byb2Nlc3MgKCktPnByaXZhdGUtPnRocmVhZF9kYjsK ICAgaW50IGx3cGlkID0gcHRpZF9nZXRfbHdwIChwdGlkKTsKIAogICBpbmZl cmlvciA9IChzdHJ1Y3QgdGhyZWFkX2luZm8gKikgZmluZF9pbmZlcmlvcl9p ZCAoJmFsbF90aHJlYWRzLCBwdGlkKTsKQEAgLTI0MiwxMyArMjU4LDEyIEBA IGZpbmRfb25lX3RocmVhZCAocHRpZF90IHB0aWQpCiAgICAgcmV0dXJuIDE7 CiAKICAgLyogR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoaXMgdGhyZWFkLiAg Ki8KLSAgcHJvYyA9IGdldF90aHJlYWRfcHJvY2VzcyAoaW5mZXJpb3IpLT5w cml2YXRlOwotICBlcnIgPSB0ZF90YV9tYXBfbHdwMnRociAocHJvYy0+dGhy ZWFkX2FnZW50LCBsd3BpZCwgJnRoKTsKKyAgZXJyID0gdGhyZWFkX2RiLT50 ZF90YV9tYXBfbHdwMnRocl9wICh0aHJlYWRfZGItPnRocmVhZF9hZ2VudCwg bHdwaWQsICZ0aCk7CiAgIGlmIChlcnIgIT0gVERfT0spCiAgICAgZXJyb3Ig KCJDYW5ub3QgZ2V0IHRocmVhZCBoYW5kbGUgZm9yIExXUCAlZDogJXMiLAog CSAgIGx3cGlkLCB0aHJlYWRfZGJfZXJyX3N0ciAoZXJyKSk7CiAKLSAgZXJy ID0gdGRfdGhyX2dldF9pbmZvICgmdGgsICZ0aSk7CisgIGVyciA9IHRocmVh ZF9kYi0+dGRfdGhyX2dldF9pbmZvX3AgKCZ0aCwgJnRpKTsKICAgaWYgKGVy ciAhPSBURF9PSykKICAgICBlcnJvciAoIkNhbm5vdCBnZXQgdGhyZWFkIGlu Zm8gZm9yIExXUCAlZDogJXMiLAogCSAgIGx3cGlkLCB0aHJlYWRfZGJfZXJy X3N0ciAoZXJyKSk7CkBAIC0yNjYsNyArMjgxLDcgQEAgZmluZF9vbmVfdGhy ZWFkIChwdGlkX3QgcHRpZCkKIAogICBpZiAodGhyZWFkX2RiX3VzZV9ldmVu dHMpCiAgICAgewotICAgICAgZXJyID0gdGRfdGhyX2V2ZW50X2VuYWJsZSAo JnRoLCAxKTsKKyAgICAgIGVyciA9IHRocmVhZF9kYi0+dGRfdGhyX2V2ZW50 X2VuYWJsZV9wICgmdGgsIDEpOwogICAgICAgaWYgKGVyciAhPSBURF9PSykK IAllcnJvciAoIkNhbm5vdCBlbmFibGUgdGhyZWFkIGV2ZW50IHJlcG9ydGlu ZyBmb3IgJWQ6ICVzIiwKIAkgICAgICAgdGkudGlfbGlkLCB0aHJlYWRfZGJf ZXJyX3N0ciAoZXJyKSk7CkBAIC0zMTAsNyArMzI1LDggQEAgbWF5YmVfYXR0 YWNoX3RocmVhZCAoY29uc3QgdGRfdGhyaGFuZGxlXwogCiAgIGlmICh0aHJl YWRfZGJfdXNlX2V2ZW50cykKICAgICB7Ci0gICAgICBlcnIgPSB0ZF90aHJf ZXZlbnRfZW5hYmxlICh0aF9wLCAxKTsKKyAgICAgIHN0cnVjdCB0aHJlYWRf ZGIgKnRocmVhZF9kYiA9IGN1cnJlbnRfcHJvY2VzcyAoKS0+cHJpdmF0ZS0+ dGhyZWFkX2RiOworICAgICAgZXJyID0gdGhyZWFkX2RiLT50ZF90aHJfZXZl bnRfZW5hYmxlX3AgKHRoX3AsIDEpOwogICAgICAgaWYgKGVyciAhPSBURF9P SykKIAllcnJvciAoIkNhbm5vdCBlbmFibGUgdGhyZWFkIGV2ZW50IHJlcG9y dGluZyBmb3IgJWQ6ICVzIiwKIAkgICAgICAgdGlfcC0+dGlfbGlkLCB0aHJl YWRfZGJfZXJyX3N0ciAoZXJyKSk7CkBAIC0zMjIsOCArMzM4LDkgQEAgZmlu ZF9uZXdfdGhyZWFkc19jYWxsYmFjayAoY29uc3QgdGRfdGhyaAogewogICB0 ZF90aHJpbmZvX3QgdGk7CiAgIHRkX2Vycl9lIGVycjsKKyAgc3RydWN0IHRo cmVhZF9kYiAqdGhyZWFkX2RiID0gY3VycmVudF9wcm9jZXNzICgpLT5wcml2 YXRlLT50aHJlYWRfZGI7CiAKLSAgZXJyID0gdGRfdGhyX2dldF9pbmZvICh0 aF9wLCAmdGkpOworICBlcnIgPSB0aHJlYWRfZGItPnRkX3Rocl9nZXRfaW5m b19wICh0aF9wLCAmdGkpOwogICBpZiAoZXJyICE9IFREX09LKQogICAgIGVy cm9yICgiQ2Fubm90IGdldCB0aHJlYWQgaW5mbzogJXMiLCB0aHJlYWRfZGJf ZXJyX3N0ciAoZXJyKSk7CiAKQEAgLTM0MSw3ICszNTgsNyBAQCB0aHJlYWRf ZGJfZmluZF9uZXdfdGhyZWFkcyAodm9pZCkKIHsKICAgdGRfZXJyX2UgZXJy OwogICBwdGlkX3QgcHRpZCA9ICgoc3RydWN0IGluZmVyaW9yX2xpc3RfZW50 cnkgKikgY3VycmVudF9pbmZlcmlvciktPmlkOwotICBzdHJ1Y3QgcHJvY2Vz c19pbmZvX3ByaXZhdGUgKnByb2MgPSBjdXJyZW50X3Byb2Nlc3MoKS0+cHJp dmF0ZTsKKyAgc3RydWN0IHRocmVhZF9kYiAqdGhyZWFkX2RiID0gY3VycmVu dF9wcm9jZXNzICgpLT5wcml2YXRlLT50aHJlYWRfZGI7CiAKICAgLyogVGhp cyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCB3aGVuIHdlIGZpcnN0IGluaXRp YWxpemUgdGhyZWFkX2RiLgogICAgICBGaXJzdCBsb2NhdGUgdGhlIGluaXRp YWwgdGhyZWFkLiAgSWYgaXQgaXMgbm90IHJlYWR5IGZvcgpAQCAtMzUwLDEw ICszNjcsMTAgQEAgdGhyZWFkX2RiX2ZpbmRfbmV3X3RocmVhZHMgKHZvaWQp CiAgICAgcmV0dXJuOwogCiAgIC8qIEl0ZXJhdGUgb3ZlciBhbGwgdXNlci1z cGFjZSB0aHJlYWRzIHRvIGRpc2NvdmVyIG5ldyB0aHJlYWRzLiAgKi8KLSAg ZXJyID0gdGRfdGFfdGhyX2l0ZXIgKHByb2MtPnRocmVhZF9hZ2VudCwKLQkJ CWZpbmRfbmV3X3RocmVhZHNfY2FsbGJhY2ssIE5VTEwsCi0JCQlURF9USFJf QU5ZX1NUQVRFLCBURF9USFJfTE9XRVNUX1BSSU9SSVRZLAotCQkJVERfU0lH Tk9fTUFTSywgVERfVEhSX0FOWV9VU0VSX0ZMQUdTKTsKKyAgZXJyID0gdGhy ZWFkX2RiLT50ZF90YV90aHJfaXRlcl9wICh0aHJlYWRfZGItPnRocmVhZF9h Z2VudCwKKwkJCQkgICAgIGZpbmRfbmV3X3RocmVhZHNfY2FsbGJhY2ssIE5V TEwsCisJCQkJICAgICBURF9USFJfQU5ZX1NUQVRFLCBURF9USFJfTE9XRVNU X1BSSU9SSVRZLAorCQkJCSAgICAgVERfU0lHTk9fTUFTSywgVERfVEhSX0FO WV9VU0VSX0ZMQUdTKTsKICAgaWYgKGVyciAhPSBURF9PSykKICAgICBlcnJv ciAoIkNhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiAlcyIsIHRocmVhZF9kYl9l cnJfc3RyIChlcnIpKTsKIH0KQEAgLTM2NiwxMCArMzgzLDExIEBAIHRocmVh ZF9kYl9maW5kX25ld190aHJlYWRzICh2b2lkKQogc3RhdGljIHZvaWQKIHRo cmVhZF9kYl9sb29rX3VwX3N5bWJvbHMgKHZvaWQpCiB7Ci0gIGNvbnN0IGNo YXIgKipzeW1fbGlzdCA9IHRkX3N5bWJvbF9saXN0ICgpOworICBzdHJ1Y3Qg dGhyZWFkX2RiICp0aHJlYWRfZGIgPSBjdXJyZW50X3Byb2Nlc3MgKCktPnBy aXZhdGUtPnRocmVhZF9kYjsKKyAgY29uc3QgY2hhciAqKnN5bV9saXN0Owog ICBDT1JFX0FERFIgdW51c2VkOwogCi0gIGZvciAoc3ltX2xpc3QgPSB0ZF9z eW1ib2xfbGlzdCAoKTsgKnN5bV9saXN0OyBzeW1fbGlzdCsrKQorICBmb3Ig KHN5bV9saXN0ID0gdGhyZWFkX2RiLT50ZF9zeW1ib2xfbGlzdF9wICgpOyAq c3ltX2xpc3Q7IHN5bV9saXN0KyspCiAgICAgbG9va191cF9vbmVfc3ltYm9s ICgqc3ltX2xpc3QsICZ1bnVzZWQpOwogfQogCkBAIC0zNzcsMTYgKzM5NSwy MyBAQCBpbnQKIHRocmVhZF9kYl9nZXRfdGxzX2FkZHJlc3MgKHN0cnVjdCB0 aHJlYWRfaW5mbyAqdGhyZWFkLCBDT1JFX0FERFIgb2Zmc2V0LAogCQkJICAg Q09SRV9BRERSIGxvYWRfbW9kdWxlLCBDT1JFX0FERFIgKmFkZHJlc3MpCiB7 Ci0jaWYgSEFWRV9URF9USFJfVExTX0dFVF9BRERSCiAgIHBzYWRkcl90IGFk ZHI7CiAgIHRkX2Vycl9lIGVycjsKICAgc3RydWN0IGx3cF9pbmZvICpsd3A7 CiAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqc2F2ZWRfaW5mZXJpb3I7CisgIHN0 cnVjdCBwcm9jZXNzX2luZm8gKnByb2M7CisgIHN0cnVjdCB0aHJlYWRfZGIg KnRocmVhZF9kYjsKKworICBwcm9jID0gZ2V0X3RocmVhZF9wcm9jZXNzICh0 aHJlYWQpOworICB0aHJlYWRfZGIgPSBwcm9jLT5wcml2YXRlLT50aHJlYWRf ZGI7CiAKICAgLyogSWYgdGhlIHRocmVhZCBsYXllciBpcyBub3QgKHlldCkg aW5pdGlhbGl6ZWQsIGZhaWwuICAqLwotICBpZiAoIWdldF90aHJlYWRfcHJv Y2VzcyAodGhyZWFkKS0+YWxsX3N5bWJvbHNfbG9va2VkX3VwKQorICBpZiAo IXByb2MtPmFsbF9zeW1ib2xzX2xvb2tlZF91cCkKICAgICByZXR1cm4gVERf RVJSOwogCisgIGlmICh0aHJlYWRfZGItPnRkX3Rocl90bHNfZ2V0X2FkZHJf cCA9PSBOVUxMKQorICAgIHJldHVybiAtMTsKKwogICBsd3AgPSBnZXRfdGhy ZWFkX2x3cCAodGhyZWFkKTsKICAgaWYgKCFsd3AtPnRocmVhZF9rbm93bikK ICAgICBmaW5kX29uZV90aHJlYWQgKGx3cC0+aGVhZC5pZCk7CkBAIC0zOTgs OCArNDIzLDkgQEAgdGhyZWFkX2RiX2dldF90bHNfYWRkcmVzcyAoc3RydWN0 IHRocmVhZAogICAvKiBOb3RlIHRoZSBjYXN0IHRocm91Z2ggdWludHB0cl90 OiB0aGlzIGludGVyZmFjZSBvbmx5IHdvcmtzIGlmCiAgICAgIGEgdGFyZ2V0 IGFkZHJlc3MgZml0cyBpbiBhIHBzYWRkcl90LCB3aGljaCBpcyBhIGhvc3Qg cG9pbnRlci4KICAgICAgU28gYSAzMi1iaXQgZGVidWdnZXIgY2FuIG5vdCBh Y2Nlc3MgNjQtYml0IFRMUyB0aHJvdWdoIHRoaXMuICAqLwotICBlcnIgPSB0 ZF90aHJfdGxzX2dldF9hZGRyICgmbHdwLT50aCwgKHBzYWRkcl90KSAodWlu dHB0cl90KSBsb2FkX21vZHVsZSwKLQkJCSAgICAgb2Zmc2V0LCAmYWRkcik7 CisgIGVyciA9IHRocmVhZF9kYi0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wICgm bHdwLT50aCwKKwkJCQkJICAocHNhZGRyX3QpICh1aW50cHRyX3QpIGxvYWRf bW9kdWxlLAorCQkJCQkgIG9mZnNldCwgJmFkZHIpOwogICBjdXJyZW50X2lu ZmVyaW9yID0gc2F2ZWRfaW5mZXJpb3I7CiAgIGlmIChlcnIgPT0gVERfT0sp CiAgICAgewpAQCAtNDA4LDE3ICs0MzQsMTk1IEBAIHRocmVhZF9kYl9nZXRf dGxzX2FkZHJlc3MgKHN0cnVjdCB0aHJlYWQKICAgICB9CiAgIGVsc2UKICAg ICByZXR1cm4gZXJyOwotI2Vsc2UKLSAgcmV0dXJuIC0xOwotI2VuZGlmCit9 CisKK3N0YXRpYyBpbnQKK3RyeV90aHJlYWRfZGJfbG9hZF8xICh2b2lkICpo YW5kbGUpCit7CisgIHRkX2Vycl9lIGVycjsKKyAgc3RydWN0IHRocmVhZF9k YiB0ZGI7CisgIHN0cnVjdCBwcm9jZXNzX2luZm8gKnByb2MgPSBjdXJyZW50 X3Byb2Nlc3MgKCk7CisKKyAgaWYgKHByb2MtPnByaXZhdGUtPnRocmVhZF9k YiAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIklu dGVybmFsIGVycm9yOiB0aHJlYWRfZGIgIT0gTlVMTCBpbiAlczolZFxuIiwK KwkgICAgICAgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgIHJldHVybiAw OworICAgIH0KKworICB0ZGIuaGFuZGxlID0gaGFuZGxlOworCisgIC8qIElu aXRpYWxpemUgcG9pbnRlcnMgdG8gdGhlIGR5bmFtaWMgbGlicmFyeSBmdW5j dGlvbnMgd2Ugd2lsbCB1c2UuCisgICAgIEVzc2VudGlhbCBmdW5jdGlvbnMg Zmlyc3QuICAqLworCisjZGVmaW5lIENISyhyZXF1aXJlZCwgYSkJCQkJCVwK KyAgZG8JCQkJCQkJCVwKKyAgICB7CQkJCQkJCQlcCisgICAgICBpZiAoKGEp ID09IE5VTEwpCQkJCQkJXAorCXsJCQkJCQkJXAorCSAgaWYgKGRlYnVnX3Ro cmVhZHMpCQkJCQlcCisJICAgIGZwcmludGYgKHN0ZGVyciwgImRsc3ltOiAl c1xuIiwgZGxlcnJvciAoKSk7CVwKKwkgIGlmIChyZXF1aXJlZCkJCQkJCQlc CisJICAgIHJldHVybiAwOwkJCQkJCVwKKwl9CQkJCQkJCVwKKyAgICB9CQkJ CQkJCQlcCisgIHdoaWxlICgwKQorCisgIENISyAoMSwgdGRiLnRkX3RhX25l d19wID0gZGxzeW0gKGhhbmRsZSwgInRkX3RhX25ldyIpKTsKKworICAvKiBB dHRlbXB0IHRvIG9wZW4gYSBjb25uZWN0aW9uIHRvIHRoZSB0aHJlYWQgbGli cmFyeS4gICovCisgIGVyciA9IHRkYi50ZF90YV9uZXdfcCAoJnRkYi5wcm9j X2hhbmRsZSwgJnRkYi50aHJlYWRfYWdlbnQpOworICBpZiAoZXJyICE9IFRE X09LKQorICAgIHsKKyAgICAgIGlmIChkZWJ1Z190aHJlYWRzKQorCWZwcmlu dGYgKHN0ZGVyciwgInRkX3RhX25ldygpOiAlc1xuIiwgdGhyZWFkX2RiX2Vy cl9zdHIgKGVycikpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIENI SyAoMSwgdGRiLnRkX3RhX21hcF9sd3AydGhyX3AgPSBkbHN5bSAoaGFuZGxl LCAidGRfdGFfbWFwX2x3cDJ0aHIiKSk7CisgIENISyAoMSwgdGRiLnRkX3Ro cl9nZXRfaW5mb19wID0gZGxzeW0gKGhhbmRsZSwgInRkX3Rocl9nZXRfaW5m byIpKTsKKyAgQ0hLICgxLCB0ZGIudGRfdGFfdGhyX2l0ZXJfcCA9IGRsc3lt IChoYW5kbGUsICJ0ZF90YV90aHJfaXRlciIpKTsKKyAgQ0hLICgxLCB0ZGIu dGRfc3ltYm9sX2xpc3RfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF9zeW1ib2xf bGlzdCIpKTsKKworICAvKiBUaGlzIGlzIHJlcXVpcmVkIG9ubHkgd2hlbiB0 aHJlYWRfZGJfdXNlX2V2ZW50cyBpcyBvbi4gICovCisgIENISyAodGhyZWFk X2RiX3VzZV9ldmVudHMsCisgICAgICAgdGRiLnRkX3Rocl9ldmVudF9lbmFi bGVfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF90aHJfZXZlbnRfZW5hYmxlIikp OworCisgIC8qIFRoZXNlIGFyZSBub3QgZXNzZW50aWFsLiAgKi8KKyAgQ0hL ICgwLCB0ZGIudGRfdGFfZXZlbnRfYWRkcl9wID0gZGxzeW0gKGhhbmRsZSwg InRkX3RhX2V2ZW50X2FkZHIiKSk7CisgIENISyAoMCwgdGRiLnRkX3RhX3Nl dF9ldmVudF9wID0gZGxzeW0gKGhhbmRsZSwgInRkX3RhX3NldF9ldmVudCIp KTsKKyAgQ0hLICgwLCB0ZGIudGRfdGFfZXZlbnRfZ2V0bXNnX3AgPSBkbHN5 bSAoaGFuZGxlLCAidGRfdGFfZXZlbnRfZ2V0bXNnIikpOworICBDSEsgKDAs IHRkYi50ZF90aHJfdGxzX2dldF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAi dGRfdGhyX3Rsc19nZXRfYWRkciIpKTsKKworI3VuZGVmIENISworCisgIHBy b2MtPnByaXZhdGUtPnRocmVhZF9kYiA9IG1hbGxvYyAoc2l6ZW9mICh0ZGIp KTsKKyAgbWVtY3B5IChwcm9jLT5wcml2YXRlLT50aHJlYWRfZGIsICZ0ZGIs IHNpemVvZiAodGRiKSk7CisKKyAgcmV0dXJuIDE7Cit9CisKKy8qIExvb2t1 cCBhIGxpYnJhcnkgaW4gd2hpY2ggZ2l2ZW4gc3ltYm9sIHJlc2lkZXMuCisg ICBOb3RlOiB0aGlzIGlzIGxvb2tpbmcgaW4gdGhlIEdEQlNFUlZFUiBwcm9j ZXNzLCBub3QgaW4gdGhlIGluZmVyaW9yLgorICAgUmV0dXJucyBsaWJyYXJ5 IG5hbWUsIG9yIE5VTEwuICAqLworCitzdGF0aWMgY29uc3QgY2hhciAqCitk bGFkZHJfdG9fc29uYW1lIChjb25zdCB2b2lkICphZGRyKQoreworICBEbF9p bmZvIGluZm87CisKKyAgaWYgKGRsYWRkciAoYWRkciwgJmluZm8pICE9IDAp CisgICAgcmV0dXJuIGluZm8uZGxpX2ZuYW1lOworICByZXR1cm4gTlVMTDsK K30KKworc3RhdGljIGludAordHJ5X3RocmVhZF9kYl9sb2FkIChjb25zdCBj aGFyICpsaWJyYXJ5KQoreworICB2b2lkICpoYW5kbGU7CisKKyAgaWYgKGRl YnVnX3RocmVhZHMpCisgICAgZnByaW50ZiAoc3RkZXJyLCAiVHJ5aW5nIGhv c3QgbGlidGhyZWFkX2RiIGxpYnJhcnk6ICVzLlxuIiwKKwkgICAgIGxpYnJh cnkpOworICBoYW5kbGUgPSBkbG9wZW4gKGxpYnJhcnksIFJUTERfTk9XKTsK KyAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAgIHsKKyAgICAgIGlmIChkZWJ1 Z190aHJlYWRzKQorCWZwcmludGYgKHN0ZGVyciwgImRsb3BlbiBmYWlsZWQ6 ICVzLlxuIiwgZGxlcnJvciAoKSk7CisgICAgICByZXR1cm4gMDsKKyAgICB9 CisKKyAgaWYgKGRlYnVnX3RocmVhZHMgJiYgc3RyY2hyIChsaWJyYXJ5LCAn LycpID09IE5VTEwpCisgICAgeworICAgICAgdm9pZCAqdGRfaW5pdDsKKwor ICAgICAgdGRfaW5pdCA9IGRsc3ltIChoYW5kbGUsICJ0ZF9pbml0Iik7Cisg ICAgICBpZiAodGRfaW5pdCAhPSBOVUxMKQorICAgICAgICB7CisgICAgICAg ICAgY29uc3QgY2hhciAqY29uc3QgbGlicGF0aCA9IGRsYWRkcl90b19zb25h bWUgKHRkX2luaXQpOworCisgICAgICAgICAgaWYgKGxpYnBhdGggIT0gTlVM TCkKKyAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIkhvc3QgJXMgcmVz b2x2ZWQgdG86ICVzLlxuIiwKKwkJICAgICBsaWJyYXJ5LCBsaWJwYXRoKTsK KyAgICAgICAgfQorICAgIH0KKworICBpZiAodHJ5X3RocmVhZF9kYl9sb2Fk XzEgKGhhbmRsZSkpCisgICAgcmV0dXJuIDE7CisKKyAgLyogVGhpcyBsaWJy YXJ5ICJyZWZ1c2VkIiB0byB3b3JrIG9uIGN1cnJlbnQgaW5mZXJpb3IuICAq LworICBkbGNsb3NlIChoYW5kbGUpOworICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludAordGhyZWFkX2RiX2xvYWRfc2VhcmNoICh2b2lkKQoreworICBj aGFyIHBhdGhbUEFUSF9NQVhdOworICBjb25zdCBjaGFyICpzZWFyY2hfcGF0 aDsKKyAgaW50IHJjID0gMDsKKworCisgIGlmIChsaWJ0aHJlYWRfZGJfc2Vh cmNoX3BhdGggPT0gTlVMTCkKKyAgICBsaWJ0aHJlYWRfZGJfc2VhcmNoX3Bh dGggPSB4c3RyZHVwIChMSUJUSFJFQURfREJfU0VBUkNIX1BBVEgpOworCisg IHNlYXJjaF9wYXRoID0gbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoOworICB3 aGlsZSAoKnNlYXJjaF9wYXRoKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIg KmVuZCA9IHN0cmNociAoc2VhcmNoX3BhdGgsICc6Jyk7CisgICAgICBpZiAo ZW5kKQorCXsKKwkgIHNpemVfdCBsZW4gPSBlbmQgLSBzZWFyY2hfcGF0aDsK KyAgICAgICAgICBpZiAobGVuICsgMSArIHN0cmxlbiAoTElCVEhSRUFEX0RC X1NPKSArIDEgPiBzaXplb2YgKHBhdGgpKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICBjaGFyICpjcCA9IHhtYWxsb2MgKGxlbiArIDEpOworICAg ICAgICAgICAgICBtZW1jcHkgKGNwLCBzZWFyY2hfcGF0aCwgbGVuKTsKKyAg ICAgICAgICAgICAgY3BbbGVuXSA9ICdcMCc7CisgICAgICAgICAgICAgIHdh cm5pbmcgKCJsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggY29tcG9uZW50IHRv byBsb25nLCAiCisJCSAgICAgICAiaWdub3JlZDogJXMuIiwgY3ApOworICAg ICAgICAgICAgICBmcmVlIChjcCk7CisgICAgICAgICAgICAgIHNlYXJjaF9w YXRoICs9IGxlbiArIDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg ICAgICAgICAgfQorCSAgbWVtY3B5IChwYXRoLCBzZWFyY2hfcGF0aCwgbGVu KTsKKwkgIHBhdGhbbGVuXSA9ICdcMCc7CisJICBzZWFyY2hfcGF0aCArPSBs ZW4gKyAxOworCX0KKyAgICAgIGVsc2UKKwl7CisgICAgICAgICAgc2l6ZV90 IGxlbiA9IHN0cmxlbiAoc2VhcmNoX3BhdGgpOworCisgICAgICAgICAgaWYg KGxlbiArIDEgKyBzdHJsZW4gKExJQlRIUkVBRF9EQl9TTykgKyAxID4gc2l6 ZW9mIChwYXRoKSkKKyAgICAgICAgICAgIHsKKwkgICAgICB3YXJuaW5nICgi bGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoIGNvbXBvbmVudCB0b28gbG9uZywi CisJCSAgICAgICAiIGlnbm9yZWQ6ICVzLiIsIHNlYXJjaF9wYXRoKTsKKyAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisJICBtZW1jcHkg KHBhdGgsIHNlYXJjaF9wYXRoLCBsZW4gKyAxKTsKKwkgIHNlYXJjaF9wYXRo ICs9IGxlbjsKKwl9CisgICAgICBzdHJjYXQgKHBhdGgsICIvIik7CisgICAg ICBzdHJjYXQgKHBhdGgsIExJQlRIUkVBRF9EQl9TTyk7CisgICAgICBpZiAo ZGVidWdfdGhyZWFkcykKKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAidGhy ZWFkX2RiX2xvYWRfc2VhcmNoIHRyeWluZyAlc1xuIiwgcGF0aCk7CisgICAg ICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKSkKKwl7CisJICByYyA9 IDE7CisJICBicmVhazsKKwl9CisgICAgfQorICBpZiAocmMgPT0gMCkKKyAg ICByYyA9IHRyeV90aHJlYWRfZGJfbG9hZCAoTElCVEhSRUFEX0RCX1NPKTsK KworICBpZiAoZGVidWdfdGhyZWFkcykKKyAgICBmcHJpbnRmIChzdGRlcnIs ICJ0aHJlYWRfZGJfbG9hZF9zZWFyY2ggcmV0dXJuaW5nICVkXG4iLCByYyk7 CisgIHJldHVybiByYzsKIH0KIAogaW50CiB0aHJlYWRfZGJfaW5pdCAoaW50 IHVzZV9ldmVudHMpCiB7Ci0gIGludCBlcnI7CiAgIHN0cnVjdCBwcm9jZXNz X2luZm8gKnByb2MgPSBjdXJyZW50X3Byb2Nlc3MgKCk7Ci0gIHN0cnVjdCBw cm9jZXNzX2luZm9fcHJpdmF0ZSAqcHJpdiA9IHByb2MtPnByaXZhdGU7CiAK ICAgLyogRklYTUUgZHJvdy8yMDA0LTEwLTE2OiBUaGlzIGlzIHRoZSAib3Zl cmFsbCBwcm9jZXNzIElEIiwgd2hpY2gKICAgICAgR05VL0xpbnV4IGNhbGxz IHRnaWQsICJ0aHJlYWQgZ3JvdXAgSUQiLiAgV2hlbiB3ZSBzdXBwb3J0CkBA IC00MzMsMjcgKzYzNyw2NCBAQCB0aHJlYWRfZGJfaW5pdCAoaW50IHVzZV9l dmVudHMpCiAKICAgdGhyZWFkX2RiX3VzZV9ldmVudHMgPSB1c2VfZXZlbnRz OwogCi0gIGVyciA9IHRkX3RhX25ldyAoJnByaXYtPnByb2NfaGFuZGxlLCAm cHJpdi0+dGhyZWFkX2FnZW50KTsKLSAgc3dpdGNoIChlcnIpCisgIGlmICh0 aHJlYWRfZGJfbG9hZF9zZWFyY2ggKCkpCiAgICAgewotICAgIGNhc2UgVERf Tk9MSUJUSFJFQUQ6Ci0gICAgICAvKiBObyB0aHJlYWQgbGlicmFyeSB3YXMg ZGV0ZWN0ZWQuICAqLwotICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjYXNlIFRE X09LOgotICAgICAgLyogVGhlIHRocmVhZCBsaWJyYXJ5IHdhcyBkZXRlY3Rl ZC4gICovCi0KICAgICAgIGlmICh1c2VfZXZlbnRzICYmIHRocmVhZF9kYl9l bmFibGVfcmVwb3J0aW5nICgpID09IDApCiAJcmV0dXJuIDA7CiAgICAgICB0 aHJlYWRfZGJfZmluZF9uZXdfdGhyZWFkcyAoKTsKICAgICAgIHRocmVhZF9k Yl9sb29rX3VwX3N5bWJvbHMgKCk7CiAgICAgICBwcm9jLT5hbGxfc3ltYm9s c19sb29rZWRfdXAgPSAxOwogICAgICAgcmV0dXJuIDE7CisgICAgfQogCi0g ICAgZGVmYXVsdDoKLSAgICAgIHdhcm5pbmcgKCJlcnJvciBpbml0aWFsaXpp bmcgdGhyZWFkX2RiIGxpYnJhcnk6ICVzIiwKLQkgICAgICAgdGhyZWFkX2Ri X2Vycl9zdHIgKGVycikpOworICByZXR1cm4gMDsKK30KKworLyogRGlzY29u bmVjdCBmcm9tIGxpYnRocmVhZF9kYiBhbmQgZnJlZSByZXNvdXJjZXMuICAq LworCit2b2lkCit0aHJlYWRfZGJfZnJlZSAoc3RydWN0IHByb2Nlc3NfaW5m byAqcHJvYykKK3sKKyAgc3RydWN0IHRocmVhZF9kYiAqdGhyZWFkX2RiID0g cHJvYy0+cHJpdmF0ZS0+dGhyZWFkX2RiOworICBpZiAodGhyZWFkX2RiKQor ICAgIHsKKyAgICAgIHRkX2Vycl9lICgqdGRfdGFfZGVsZXRlX3ApICh0ZF90 aHJhZ2VudF90ICopOworCisgICAgICB0ZF90YV9kZWxldGVfcCA9IGRsc3lt ICh0aHJlYWRfZGItPmhhbmRsZSwgInRkX3RhX2RlbGV0ZSIpOworICAgICAg aWYgKHRkX3RhX2RlbGV0ZV9wICE9IE5VTEwpCisJKCp0ZF90YV9kZWxldGVf cCkgKHRocmVhZF9kYi0+dGhyZWFkX2FnZW50KTsKKworICAgICAgZGxjbG9z ZSAodGhyZWFkX2RiLT5oYW5kbGUpOworICAgICAgZnJlZSAodGhyZWFkX2Ri KTsKKyAgICAgIHByb2MtPnByaXZhdGUtPnRocmVhZF9kYiA9IE5VTEw7Cisg ICAgfQorfQorCisvKiBIYW5kbGUgInNldCBsaWJ0aHJlYWQtZGItc2VhcmNo LXBhdGgiIG1vbml0b3IgY29tbWFuZCBhbmQgcmV0dXJuIDEuCisgICBGb3Ig YW55IG90aGVyIGNvbW1hbmQsIHJldHVybiAwLiAgKi8KKworaW50Cit0aHJl YWRfZGJfaGFuZGxlX21vbml0b3JfY29tbWFuZCAoY2hhciAqbW9uKQorewor ICBpZiAoc3RybmNtcCAobW9uLCAic2V0IGxpYnRocmVhZC1kYi1zZWFyY2gt cGF0aCAiLCAyOSkgPT0gMCkKKyAgICB7CisgICAgICBjb25zdCBjaGFyICpj cCA9IG1vbiArIDI5OworCisgICAgICBpZiAobGlidGhyZWFkX2RiX3NlYXJj aF9wYXRoICE9IE5VTEwpCisJZnJlZSAobGlidGhyZWFkX2RiX3NlYXJjaF9w YXRoKTsKKworICAgICAgLyogU2tpcCBsZWFkaW5nIHNwYWNlIChpZiBhbnkp LiAgKi8KKyAgICAgIHdoaWxlIChpc3NwYWNlICgqY3ApKQorCSsrY3A7CisK KyAgICAgIGxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCA9IHhzdHJkdXAgKGNw KTsKKworICAgICAgbW9uaXRvcl9vdXRwdXQgKCJsaWJ0aHJlYWQtZGItc2Vh cmNoLXBhdGggc2V0IHRvIGAiKTsKKyAgICAgIG1vbml0b3Jfb3V0cHV0IChs aWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGgpOworICAgICAgbW9uaXRvcl9vdXRw dXQgKCInXG4iKTsKKyAgICAgIHJldHVybiAxOwogICAgIH0KIAorICAvKiBU ZWxsIHNlcnZlci5jIHRvIHBlcmZvcm0gZGVmYXVsdCBwcm9jZXNzaW5nLiAg Ki8KICAgcmV0dXJuIDA7CiB9Cg== --001636ed7070a2b21c04754d679c--