From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13756 invoked by alias); 11 May 2009 18:09:03 -0000 Received: (qmail 13743 invoked by uid 22791); 11 May 2009 18:09:00 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_102,J_CHICKENPOX_37,SARE_MSGID_LONG40,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; Mon, 11 May 2009 18:08:54 +0000 Received: from wpaz13.hot.corp.google.com (wpaz13.hot.corp.google.com [172.24.198.77]) by smtp-out.google.com with ESMTP id n4BI8naT000303 for ; Mon, 11 May 2009 19:08:49 +0100 Received: from qyk42 (qyk42.prod.google.com [10.241.83.170]) by wpaz13.hot.corp.google.com with ESMTP id n4BI8lcI018589 for ; Mon, 11 May 2009 11:08:48 -0700 Received: by qyk42 with SMTP id 42so4447706qyk.7 for ; Mon, 11 May 2009 11:08:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.91.13 with SMTP id k13mr1019417qcm.98.1242065327029; Mon, 11 May 2009 11:08:47 -0700 (PDT) In-Reply-To: <200905111412.59493.pedro@codesourcery.com> References: <8ac60eac0904201019g7ba8056bx5e84e6bfdf5935d8@mail.gmail.com> <8ac60eac0904301618j61051e9du38b34afbc7ed64a3@mail.gmail.com> <8ac60eac0904301719w33175de2w8d1d0fd80bf0feb4@mail.gmail.com> <200905111412.59493.pedro@codesourcery.com> Date: Mon, 11 May 2009 18:09:00 -0000 Message-ID: <8ac60eac0905111108g26096302lb902cd414b5a6790@mail.gmail.com> Subject: Re: [patch][rfc] Allow GDB to search for the right libthread_db.so.1 From: Paul Pluzhnikov To: Pedro Alves Cc: gdb-patches@sourceware.org, Joel Brobecker , Hui Zhu , tromey@redhat.com, Thiago Jung Bauermann , Eli Zaretskii , Daniel Jacobowitz Content-Type: multipart/mixed; boundary=0016361e81349b81cf0469a6de2e 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-05/txt/msg00221.txt.bz2 --0016361e81349b81cf0469a6de2e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1346 On Mon, May 11, 2009 at 6:12 AM, Pedro Alves wrote: >> handle =3D dlopen (library, RTLD_NOW); > > I wonder if making this RTLD_LAZY until you found the correct one > wouldn't make sense? I don't believe so. AFAICT, the reason for RTLD_NOW is to make sure that this libthread_db is really compatible with this GDB (doesn't require any symbols GDB doesn't provide); and also to prevent GDB from dying half way through with "unable to resolve symbol ...". Both of these still apply to whatever the "final" libthread_db is going to be. Why would we want to dlopen(... RTLD_LAZY) and try to initialize libthread_db if we are going to reject it as unusable in the end? >> +static int >> +thread_db_load_search () > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ^ (void) Fixed, thanks. > =A0(this function could be made to use `openat' at some point, but > =A0 gdb is already assumes PATH_MAX is largest path possible elsewhere > =A0 anyway) > > I also wonder if `set sysroot' should affect this search path: I think > not, but I'm not 100% sure. I don't believe it makes sense for 'set sysroot' to affect this search path. >> +int libpthread_name_p (const char *name) >> +{ > > =A0 =A0 =A0^ function name at column 0, please. Fixed, thanks. Anxiously waiting for Daniel's verdict now ... --=20 Paul Pluzhnikov --0016361e81349b81cf0469a6de2e Content-Type: text/plain; charset=US-ASCII; name="gdb-thread-db.20090511.txt" Content-Disposition: attachment; filename="gdb-thread-db.20090511.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fulhh8070 Content-length: 29768 SW5kZXg6IE5FV1MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9ORVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjMxMApkaWZmIC11IC1wIC11IC1yMS4zMTAgTkVXUwotLS0gTkVXUwk2IE1h eSAyMDA5IDAyOjMyOjQyIC0wMDAwCTEuMzEwCisrKyBORVdTCTExIE1heSAy MDA5IDE3OjU2OjEzIC0wMDAwCkBAIC0zMDAsNiArMzAwLDExIEBAIHNob3cg dGNwIGNvbm5lY3QtdGltZW91dAogICB3aXRoIGEgc3BlY2lmaWVkIHRpbWVv dXQgcGVyaW9kOyB0aGlzIGlzIHVzZWZ1bCBpZiB0aGUgc3R1YiBpcyBsYXVu Y2hlZAogICBpbiBwYXJhbGxlbCB3aXRoIEdEQiBidXQgbWF5IG5vdCBiZSBy ZWFkeSB0byBhY2NlcHQgY29ubmVjdGlvbnMgaW1tZWRpYXRlbHkuCiAKK3Nl dCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgKK3Nob3cgbGlidGhyZWFkLWRi LXNlYXJjaC1wYXRoCisgIENvbnRyb2wgbGlzdCBvZiBkaXJlY3RvcmllcyB3 aGljaCBHREIgd2lsbCBzZWFyY2ggZm9yIGFwcHJvcHJpYXRlCisgIGxpYnRo cmVhZF9kYi4KKwogKiBOZXcgbmF0aXZlIGNvbmZpZ3VyYXRpb25zCiAKIHg4 Ni94ODZfNjQgRGFyd2luCQlpWzM0NTY3XTg2LSotZGFyd2luKgpJbmRleDog Z2RiX3RocmVhZF9kYi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2RiX3RocmVhZF9kYi5oLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjEyCmRpZmYgLXUgLXAgLXUgLXIxLjEyIGdkYl90 aHJlYWRfZGIuaAotLS0gZ2RiX3RocmVhZF9kYi5oCTE4IE1hciAyMDA5IDA4 OjUxOjExIC0wMDAwCTEuMTIKKysrIGdkYl90aHJlYWRfZGIuaAkxMSBNYXkg MjAwOSAxNzo1NjoxMyAtMDAwMApAQCAtMSw1ICsxLDE0IEBACiAjaWZkZWYg SEFWRV9USFJFQURfREJfSAogI2luY2x1ZGUgPHRocmVhZF9kYi5oPgorCisj aWZuZGVmIExJQlRIUkVBRF9EQl9TTworI2RlZmluZSBMSUJUSFJFQURfREJf U08gImxpYnRocmVhZF9kYi5zby4xIgorI2VuZGlmCisKKyNpZm5kZWYgTElC VEhSRUFEX0RCX1NFQVJDSF9QQVRICisjZGVmaW5lIExJQlRIUkVBRF9EQl9T RUFSQ0hfUEFUSCAiIgorI2VuZGlmCisKICNlbHNlCiAKIC8qIENvcHlyaWdo dCAoQykgMTk5OSwgMjAwMCwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KSW5kZXg6IGxpbnV4LXRocmVhZC1kYi5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvbGludXgtdGhyZWFkLWRiLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuNTUKZGlmZiAtdSAtcCAtdSAtcjEuNTUgbGludXgtdGhyZWFkLWRiLmMK LS0tIGxpbnV4LXRocmVhZC1kYi5jCTEgTWF5IDIwMDkgMjI6MDU6NDYgLTAw MDAJMS41NQorKysgbGludXgtdGhyZWFkLWRiLmMJMTEgTWF5IDIwMDkgMTc6 NTY6MTMgLTAwMDAKQEAgLTI2LDEzICsyNiwxNiBAQAogI2luY2x1ZGUgImdk Yl90aHJlYWRfZGIuaCIKIAogI2luY2x1ZGUgImJmZC5oIgorI2luY2x1ZGUg ImNvbW1hbmQuaCIKICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisjaW5jbHVk ZSAiZ2RiY21kLmgiCiAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAjaW5jbHVk ZSAiaW5mZXJpb3IuaCIKICNpbmNsdWRlICJzeW1maWxlLmgiCiAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKICNpbmNsdWRl ICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgInNvbGliLmgiCiAjaW5jbHVkZSAi c29saWItc3ZyNC5oIgogI2luY2x1ZGUgImdkYmNvcmUuaCIKICNpbmNsdWRl ICJvYnNlcnZlci5oIgpAQCAtNDQsMTAgKzQ3LDYgQEAKICNpbmNsdWRlIDxn bnUvbGliYy12ZXJzaW9uLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBMSUJUSFJF QURfREJfU08KLSNkZWZpbmUgTElCVEhSRUFEX0RCX1NPICJsaWJ0aHJlYWRf ZGIuc28uMSIKLSNlbmRpZgotCiAvKiBHTlUvTGludXggbGlidGhyZWFkX2Ri IHN1cHBvcnQuCiAKICAgIGxpYnRocmVhZF9kYiBpcyBhIGxpYnJhcnksIHBy b3ZpZGVkIGFsb25nIHdpdGggbGlicHRocmVhZC5zbywgd2hpY2gKQEAgLTc0 LDE0ICs3MywxNyBAQAogICAgb2YgdGhlIHB0aWRfdCBwcmV2ZW50cyB0aHJl YWQgSURzIGNoYW5naW5nIHdoZW4gbGlicHRocmVhZCBpcwogICAgbG9hZGVk IG9yIHVubG9hZGVkLiAgKi8KIAorc3RhdGljIGNoYXIgKmxpYnRocmVhZF9k Yl9zZWFyY2hfcGF0aDsKKwogLyogSWYgd2UncmUgcnVubmluZyBvbiBHTlUv TGludXgsIHdlIG11c3QgZXhwbGljaXRseSBhdHRhY2ggdG8gYW55IG5ldwog ICAgdGhyZWFkcy4gICovCiAKIC8qIFRoaXMgbW9kdWxlJ3MgdGFyZ2V0IHZl Y3Rvci4gICovCiBzdGF0aWMgc3RydWN0IHRhcmdldF9vcHMgdGhyZWFkX2Ri X29wczsKIAotLyogTm9uLXplcm8gaWYgd2UncmUgdXNpbmcgdGhpcyBtb2R1 bGUncyB0YXJnZXQgdmVjdG9yLiAgKi8KLXN0YXRpYyBpbnQgdXNpbmdfdGhy ZWFkX2RiOworLyogSGFuZGxlIGZyb20gZGxvcGVuIGZvciBsaWJ0aHJlYWRf ZGIuc28uICBOb3QgTlVMTCBpZiB3ZSdyZSB1c2luZyB0aGlzCisgICBtb2R1 bGUncyB0YXJnZXQgdmVjdG9yLiAgKi8KK3N0YXRpYyB2b2lkICp0aHJlYWRf ZGJfaGFuZGxlOwogCiAvKiBOb24temVybyBpZiB3ZSBoYXZlIGRldGVybWlu ZWQgdGhlIHNpZ25hbHMgdXNlZCBieSB0aGUgdGhyZWFkcwogICAgbGlicmFy eS4gICovCkBAIC0zNDQsNyArMzQ2LDcgQEAgdGhyZWFkX2RiX2F0dGFjaF9s d3AgKHB0aWRfdCBwdGlkKQogICB0ZF90aHJpbmZvX3QgdGk7CiAgIHRkX2Vy cl9lIGVycjsKIAotICBpZiAoIXVzaW5nX3RocmVhZF9kYikKKyAgaWYgKHRo cmVhZF9kYl9oYW5kbGUgPT0gTlVMTCkKICAgICByZXR1cm4gMDsKIAogICAv KiBUaGlzIHB0aWQgY29tZXMgZnJvbSBsaW51eC1uYXQuYywgd2hpY2ggc2hv dWxkIGFsd2F5cyBmaWxsIGluIHRoZQpAQCAtMzg1LDcxICszODcsNiBAQCB2 ZXJib3NlX2Rsc3ltICh2b2lkICpoYW5kbGUsIGNvbnN0IGNoYXIgCiAgIHJl dHVybiBzeW07CiB9CiAKLXN0YXRpYyBpbnQKLXRocmVhZF9kYl9sb2FkICh2 b2lkKQotewotICB2b2lkICpoYW5kbGU7Ci0gIHRkX2Vycl9lIGVycjsKLQot ICBoYW5kbGUgPSBkbG9wZW4gKExJQlRIUkVBRF9EQl9TTywgUlRMRF9OT1cp OwotICBpZiAoaGFuZGxlID09IE5VTEwpCi0gICAgewotICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIlxuXG5kbG9wZW4gZmFpbGVkIG9u ICclcycgLSAlc1xuIiwKLQkJCUxJQlRIUkVBRF9EQl9TTywgZGxlcnJvciAo KSk7Ci0gICAgICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLAotCQkJ IkdEQiB3aWxsIG5vdCBiZSBhYmxlIHRvIGRlYnVnIHB0aHJlYWRzLlxuXG4i KTsKLSAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAvKiBJbml0aWFsaXpl IHBvaW50ZXJzIHRvIHRoZSBkeW5hbWljIGxpYnJhcnkgZnVuY3Rpb25zIHdl IHdpbGwgdXNlLgotICAgICBFc3NlbnRpYWwgZnVuY3Rpb25zIGZpcnN0LiAg Ki8KLQotICB0ZF9pbml0X3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5kbGUsICJ0 ZF9pbml0Iik7Ci0gIGlmICh0ZF9pbml0X3AgPT0gTlVMTCkKLSAgICByZXR1 cm4gMDsKLQotICB0ZF90YV9uZXdfcCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRs ZSwgInRkX3RhX25ldyIpOwotICBpZiAodGRfdGFfbmV3X3AgPT0gTlVMTCkK LSAgICByZXR1cm4gMDsKLQotICB0ZF90YV9tYXBfaWQydGhyX3AgPSB2ZXJi b3NlX2Rsc3ltIChoYW5kbGUsICJ0ZF90YV9tYXBfaWQydGhyIik7Ci0gIGlm ICh0ZF90YV9tYXBfaWQydGhyX3AgPT0gTlVMTCkKLSAgICByZXR1cm4gMDsK LQotICB0ZF90YV9tYXBfbHdwMnRocl9wID0gdmVyYm9zZV9kbHN5bSAoaGFu ZGxlLCAidGRfdGFfbWFwX2x3cDJ0aHIiKTsKLSAgaWYgKHRkX3RhX21hcF9s d3AydGhyX3AgPT0gTlVMTCkKLSAgICByZXR1cm4gMDsKLQotICB0ZF90YV90 aHJfaXRlcl9wID0gdmVyYm9zZV9kbHN5bSAoaGFuZGxlLCAidGRfdGFfdGhy X2l0ZXIiKTsKLSAgaWYgKHRkX3RhX3Rocl9pdGVyX3AgPT0gTlVMTCkKLSAg ICByZXR1cm4gMDsKLQotICB0ZF90aHJfdmFsaWRhdGVfcCA9IHZlcmJvc2Vf ZGxzeW0gKGhhbmRsZSwgInRkX3Rocl92YWxpZGF0ZSIpOwotICBpZiAodGRf dGhyX3ZhbGlkYXRlX3AgPT0gTlVMTCkKLSAgICByZXR1cm4gMDsKLQotICB0 ZF90aHJfZ2V0X2luZm9fcCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwgInRk X3Rocl9nZXRfaW5mbyIpOwotICBpZiAodGRfdGhyX2dldF9pbmZvX3AgPT0g TlVMTCkKLSAgICByZXR1cm4gMDsKLQotICAvKiBJbml0aWFsaXplIHRoZSBs aWJyYXJ5LiAgKi8KLSAgZXJyID0gdGRfaW5pdF9wICgpOwotICBpZiAoZXJy ICE9IFREX09LKQotICAgIHsKLSAgICAgIHdhcm5pbmcgKF8oIkNhbm5vdCBp bml0aWFsaXplIGxpYnRocmVhZF9kYjogJXMiKSwgdGhyZWFkX2RiX2Vycl9z dHIgKGVycikpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gIC8qIFRo ZXNlIGFyZSBub3QgZXNzZW50aWFsLiAgKi8KLSAgdGRfdGFfZXZlbnRfYWRk cl9wID0gZGxzeW0gKGhhbmRsZSwgInRkX3RhX2V2ZW50X2FkZHIiKTsKLSAg dGRfdGFfc2V0X2V2ZW50X3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGFfc2V0 X2V2ZW50Iik7Ci0gIHRkX3RhX2V2ZW50X2dldG1zZ19wID0gZGxzeW0gKGhh bmRsZSwgInRkX3RhX2V2ZW50X2dldG1zZyIpOwotICB0ZF90aHJfZXZlbnRf ZW5hYmxlX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGhyX2V2ZW50X2VuYWJs ZSIpOwotICB0ZF90aHJfdGxzX2dldF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxl LCAidGRfdGhyX3Rsc19nZXRfYWRkciIpOwotCi0gIHJldHVybiAxOwotfQot CiBzdGF0aWMgdGRfZXJyX2UKIGVuYWJsZV90aHJlYWRfZXZlbnQgKHRkX3Ro cmFnZW50X3QgKnRocmVhZF9hZ2VudCwgaW50IGV2ZW50LCBDT1JFX0FERFIg KmJwKQogewpAQCAtNTQxLDYgKzQ3OCwyNzggQEAgZW5hYmxlX3RocmVhZF9l dmVudF9yZXBvcnRpbmcgKHZvaWQpCiAgICAgfQogfQogCisvKiBBdHRlbXB0 IHRvIGluaXRpYWxpemUgZGxvcGVuKCllZCBsaWJ0aHJlYWRfZGIsIGRlc2Ny aWJlZCBieSBIQU5ETEUuCisgICBSZXR1cm4gMSBvbiBzdWNjZXNzLgorICAg RmFpbHVyZSBjb3VsZCBoYXBwZW4gaWYgbGlidGhyZWFkX2RiIGRvZXMgbm90 IGhhdmUgc3ltYm9scyB3ZSBleHBlY3QsCisgICBvciB3aGVuIGl0IHJlZnVz ZXMgdG8gd29yayB3aXRoIHRoZSBjdXJyZW50IGluZmVyaW9yIChlLmcuIGR1 ZSB0bworICAgdmVyc2lvbiBtaXNtYXRjaCBiZXR3ZWVuIGxpYnRocmVhZF9k YiBhbmQgbGlicHRocmVhZCkuICAqLworCitzdGF0aWMgaW50Cit0cnlfdGhy ZWFkX2RiX2xvYWRfMSAodm9pZCAqaGFuZGxlKQoreworICB0ZF9lcnJfZSBl cnI7CisKKyAgLyogSW5pdGlhbGl6ZSBwb2ludGVycyB0byB0aGUgZHluYW1p YyBsaWJyYXJ5IGZ1bmN0aW9ucyB3ZSB3aWxsIHVzZS4KKyAgICAgRXNzZW50 aWFsIGZ1bmN0aW9ucyBmaXJzdC4gICovCisKKyAgdGRfaW5pdF9wID0gdmVy Ym9zZV9kbHN5bSAoaGFuZGxlLCAidGRfaW5pdCIpOworICBpZiAodGRfaW5p dF9wID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgZXJyID0gdGRfaW5p dF9wICgpOworICBpZiAoZXJyICE9IFREX09LKQorICAgIHsKKyAgICAgIHdh cm5pbmcgKF8oIkNhbm5vdCBpbml0aWFsaXplIGxpYnRocmVhZF9kYjogJXMi KSwgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOworICAgICAgcmV0dXJuIDA7 CisgICAgfQorCisgIHRkX3RhX25ld19wID0gdmVyYm9zZV9kbHN5bSAoaGFu ZGxlLCAidGRfdGFfbmV3Iik7CisgIGlmICh0ZF90YV9uZXdfcCA9PSBOVUxM KQorICAgIHJldHVybiAwOworCisgIC8qIEluaXRpYWxpemUgdGhlIHN0cnVj dHVyZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNoaWxkIHByb2Nlc3MuICAqLwor ICBwcm9jX2hhbmRsZS5wdGlkID0gaW5mZXJpb3JfcHRpZDsKKworICAvKiBO b3cgYXR0ZW1wdCB0byBvcGVuIGEgY29ubmVjdGlvbiB0byB0aGUgdGhyZWFk IGxpYnJhcnkuICAqLworICBlcnIgPSB0ZF90YV9uZXdfcCAoJnByb2NfaGFu ZGxlLCAmdGhyZWFkX2FnZW50KTsKKyAgaWYgKGVyciAhPSBURF9PSykKKyAg ICB7CisgICAgICB0ZF90YV9uZXdfcCA9IE5VTEw7CisgICAgICBpZiAoaW5m b192ZXJib3NlKQorCXByaW50Zl91bmZpbHRlcmVkIChfKCJ0ZF90YV9uZXcg ZmFpbGVkOiAlc1xuIiksCisJCQkgICB0aHJlYWRfZGJfZXJyX3N0ciAoZXJy KSk7CisgICAgICBlbHNlCisgICAgICAgIHN3aXRjaCAoZXJyKQorICAgICAg ICAgIHsKKyAgICAgICAgICAgIGNhc2UgVERfTk9MSUJUSFJFQUQ6CisjaWZk ZWYgVEhSRUFEX0RCX0hBU19URF9WRVJTSU9OCisgICAgICAgICAgICBjYXNl IFREX1ZFUlNJT046CisjZW5kaWYKKyAgICAgICAgICAgICAgLyogVGhlIGVy cm9ycyBhYm92ZSBhcmUgbm90IHVuZXhwZWN0ZWQgYW5kIHNpbGVudGx5IGln bm9yZWQ6CisgICAgICAgICAgICAgICAgIHRoZXkganVzdCBtZWFuIHdlIGhh dmVuJ3QgZm91bmQgY29ycmVjdCB2ZXJzaW9uIG9mCisgICAgICAgICAgICAg ICAgIGxpYnRocmVhZF9kYiB5ZXQuICAqLworICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgIHdhcm5p bmcgKF8oInRkX3RhX25ldyBmYWlsZWQ6ICVzIiksIHRocmVhZF9kYl9lcnJf c3RyIChlcnIpKTsKKyAgICAgICAgICB9CisgICAgICByZXR1cm4gMDsKKyAg ICB9CisKKyAgdGRfdGFfbWFwX2lkMnRocl9wID0gdmVyYm9zZV9kbHN5bSAo aGFuZGxlLCAidGRfdGFfbWFwX2lkMnRociIpOworICBpZiAodGRfdGFfbWFw X2lkMnRocl9wID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgdGRfdGFf bWFwX2x3cDJ0aHJfcCA9IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwgInRkX3Rh X21hcF9sd3AydGhyIik7CisgIGlmICh0ZF90YV9tYXBfbHdwMnRocl9wID09 IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgdGRfdGFfdGhyX2l0ZXJfcCA9 IHZlcmJvc2VfZGxzeW0gKGhhbmRsZSwgInRkX3RhX3Rocl9pdGVyIik7Cisg IGlmICh0ZF90YV90aHJfaXRlcl9wID09IE5VTEwpCisgICAgcmV0dXJuIDA7 CisKKyAgdGRfdGhyX3ZhbGlkYXRlX3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5k bGUsICJ0ZF90aHJfdmFsaWRhdGUiKTsKKyAgaWYgKHRkX3Rocl92YWxpZGF0 ZV9wID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgdGRfdGhyX2dldF9p bmZvX3AgPSB2ZXJib3NlX2Rsc3ltIChoYW5kbGUsICJ0ZF90aHJfZ2V0X2lu Zm8iKTsKKyAgaWYgKHRkX3Rocl9nZXRfaW5mb19wID09IE5VTEwpCisgICAg cmV0dXJuIDA7CisKKyAgLyogVGhlc2UgYXJlIG5vdCBlc3NlbnRpYWwuICAq LworICB0ZF90YV9ldmVudF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRf dGFfZXZlbnRfYWRkciIpOworICB0ZF90YV9zZXRfZXZlbnRfcCA9IGRsc3lt IChoYW5kbGUsICJ0ZF90YV9zZXRfZXZlbnQiKTsKKyAgdGRfdGFfZXZlbnRf Z2V0bXNnX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGFfZXZlbnRfZ2V0bXNn Iik7CisgIHRkX3Rocl9ldmVudF9lbmFibGVfcCA9IGRsc3ltIChoYW5kbGUs ICJ0ZF90aHJfZXZlbnRfZW5hYmxlIik7CisgIHRkX3Rocl90bHNfZ2V0X2Fk ZHJfcCA9IGRsc3ltIChoYW5kbGUsICJ0ZF90aHJfdGxzX2dldF9hZGRyIik7 CisKKyAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIltUaHJlYWQgZGVidWdnaW5n IHVzaW5nIGxpYnRocmVhZF9kYiBlbmFibGVkXVxuIikpOworCisgIC8qIFRo ZSB0aHJlYWQgbGlicmFyeSB3YXMgZGV0ZWN0ZWQuICBBY3RpdmF0ZSB0aGUg dGhyZWFkX2RiIHRhcmdldC4gICovCisgIHB1c2hfdGFyZ2V0ICgmdGhyZWFk X2RiX29wcyk7CisgIHRocmVhZF9kYl9oYW5kbGUgPSBoYW5kbGU7CisKKyAg ZW5hYmxlX3RocmVhZF9ldmVudF9yZXBvcnRpbmcgKCk7CisgIHRocmVhZF9k Yl9maW5kX25ld190aHJlYWRzXzEgKCk7CisgIHJldHVybiAxOworfQorCisv KiBMb29rdXAgYSBsaWJyYXJ5IGluIHdoaWNoIGdpdmVuIHN5bWJvbCByZXNp ZGVzLgorICAgTm90ZTogdGhpcyBpcyBsb29raW5nIGluIEdEQiBwcm9jZXNz LCBub3QgaW4gdGhlIGluZmVyaW9yLgorICAgUmV0dXJucyBsaWJyYXJ5IG5h bWUsIG9yIE5VTEwuICAqLworCitzdGF0aWMgY29uc3QgY2hhciAqCitkbGFk ZHJfdG9fc29uYW1lIChjb25zdCB2b2lkICphZGRyKQoreworICBEbF9pbmZv IGluZm87CisKKyAgaWYgKGRsYWRkciAoYWRkciwgJmluZm8pICE9IDApCisg ICAgcmV0dXJuIGluZm8uZGxpX2ZuYW1lOworICByZXR1cm4gTlVMTDsKK30K KworLyogQXR0ZW1wdCB0byB1c2UgTElCUkFSWSBhcyBsaWJ0aHJlYWRfZGIu ICBMSUJSQVJZIGNvdWxkIGJlIGFic29sdXRlLAorICAgcmVsYXRpdmUsIG9y IGp1c3QgTElCVEhSRUFEX0RCLiAgKi8KKworc3RhdGljIGludAordHJ5X3Ro cmVhZF9kYl9sb2FkIChjb25zdCBjaGFyICpsaWJyYXJ5KQoreworICB2b2lk ICpoYW5kbGU7CisKKyAgaWYgKGluZm9fdmVyYm9zZSkKKyAgICBwcmludGZf dW5maWx0ZXJlZCAoXygiVHJ5aW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJh cnk6ICVzLlxuIiksCisgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkp OworICBoYW5kbGUgPSBkbG9wZW4gKGxpYnJhcnksIFJUTERfTk9XKTsKKyAg aWYgKGhhbmRsZSA9PSBOVUxMKQorICAgIHsKKyAgICAgIGlmIChpbmZvX3Zl cmJvc2UpCisJcHJpbnRmX3VuZmlsdGVyZWQgKF8oImRsb3BlbiBmYWlsZWQ6 ICVzLlxuIiksIGRsZXJyb3IgKCkpOworICAgICAgcmV0dXJuIDA7CisgICAg fQorCisgIGlmIChpbmZvX3ZlcmJvc2UgJiYgc3RyY2hyIChsaWJyYXJ5LCAn LycpID09IE5VTEwpCisgICAgeworICAgICAgdm9pZCAqdGRfaW5pdDsKKwor ICAgICAgdGRfaW5pdCA9IGRsc3ltIChoYW5kbGUsICJ0ZF9pbml0Iik7Cisg ICAgICBpZiAodGRfaW5pdCAhPSBOVUxMKQorICAgICAgICB7CisgICAgICAg ICAgY29uc3QgY2hhciAqY29uc3QgbGlicGF0aCA9IGRsYWRkcl90b19zb25h bWUgKHRkX2luaXQpOworCisgICAgICAgICAgaWYgKGxpYnBhdGggIT0gTlVM TCkKKyAgICAgICAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJIb3N0ICVz IHJlc29sdmVkIHRvOiAlcy5cbiIpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnJhcnksIGxpYnBhdGgpOworICAgICAgICB9CisgICAg fQorCisgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRfMSAoaGFuZGxlKSkKKyAg ICByZXR1cm4gMTsKKworICAvKiBUaGlzIGxpYnJhcnkgInJlZnVzZWQiIHRv IHdvcmsgb24gY3VycmVudCBpbmZlcmlvci4gICovCisgIGRsY2xvc2UgKGhh bmRsZSk7CisgIHJldHVybiAwOworfQorCisKKy8qIFNlYXJjaCBsaWJ0aHJl YWRfZGJfc2VhcmNoX3BhdGggZm9yIGxpYnRocmVhZF9kYiB3aGljaCAiYWdy ZWVzIgorICAgdG8gd29yayBvbiBjdXJyZW50IGluZmVyaW9yLiAgKi8KKwor c3RhdGljIGludAordGhyZWFkX2RiX2xvYWRfc2VhcmNoICh2b2lkKQorewor ICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICBjb25zdCBjaGFyICpzZWFyY2hf cGF0aCA9IGxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aDsKKyAgaW50IHJjID0g MDsKKworICB3aGlsZSAoKnNlYXJjaF9wYXRoKQorICAgIHsKKyAgICAgIGNv bnN0IGNoYXIgKmVuZCA9IHN0cmNociAoc2VhcmNoX3BhdGgsICc6Jyk7Cisg ICAgICBpZiAoZW5kKQorCXsKKwkgIHNpemVfdCBsZW4gPSBlbmQgLSBzZWFy Y2hfcGF0aDsKKyAgICAgICAgICBpZiAobGVuICsgMSArIHN0cmxlbiAoTElC VEhSRUFEX0RCX1NPKSArIDEgPiBzaXplb2YgKHBhdGgpKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICBjaGFyICpjcCA9IHhtYWxsb2MgKGxlbiAr IDEpOworICAgICAgICAgICAgICBtZW1jcHkgKGNwLCBzZWFyY2hfcGF0aCwg bGVuKTsKKyAgICAgICAgICAgICAgY3BbbGVuXSA9ICdcMCc7CisgICAgICAg ICAgICAgIHdhcm5pbmcgKF8oImxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCBj b21wb25lbnQgdG9vIGxvbmcsIgorICAgICAgICAgICAgICAgICAgICAgICAg ICIgaWdub3JlZDogJXMuIiksIGNwKTsKKyAgICAgICAgICAgICAgeGZyZWUg KGNwKTsKKyAgICAgICAgICAgICAgc2VhcmNoX3BhdGggKz0gbGVuICsgMTsK KyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisJICBt ZW1jcHkgKHBhdGgsIHNlYXJjaF9wYXRoLCBsZW4pOworCSAgcGF0aFtsZW5d ID0gJ1wwJzsKKwkgIHNlYXJjaF9wYXRoICs9IGxlbiArIDE7CisJfQorICAg ICAgZWxzZQorCXsKKyAgICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChz ZWFyY2hfcGF0aCk7CisKKyAgICAgICAgICBpZiAobGVuICsgMSArIHN0cmxl biAoTElCVEhSRUFEX0RCX1NPKSArIDEgPiBzaXplb2YgKHBhdGgpKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICB3YXJuaW5nIChfKCJsaWJ0aHJl YWRfZGJfc2VhcmNoX3BhdGggY29tcG9uZW50IHRvbyBsb25nLCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAiIGlnbm9yZWQ6ICVzLiIpLCBzZWFyY2hf cGF0aCk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor CSAgbWVtY3B5IChwYXRoLCBzZWFyY2hfcGF0aCwgbGVuICsgMSk7CisJICBz ZWFyY2hfcGF0aCArPSBsZW47CisJfQorICAgICAgc3RyY2F0IChwYXRoLCAi LyIpOworICAgICAgc3RyY2F0IChwYXRoLCBMSUJUSFJFQURfREJfU08pOwor ICAgICAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCkpCisJeworCSAg cmMgPSAxOworCSAgYnJlYWs7CisJfQorICAgIH0KKyAgaWYgKHJjID09IDAp CisgICAgcmMgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKExJQlRIUkVBRF9EQl9T Tyk7CisgIHJldHVybiByYzsKK30KKworLyogQXR0ZW1wdCB0byBsb2FkIGFu ZCBpbml0aWFsaXplIGxpYnRocmVhZF9kYi4KKyAgIFJldHVybiAxIG9uIHN1 Y2Nlc3MuCisgKi8KKworc3RhdGljIGludAordGhyZWFkX2RiX2xvYWQgKHZv aWQpCit7CisgIHN0cnVjdCBvYmpmaWxlICpvYmo7CisKKyAgaWYgKHRocmVh ZF9kYl9oYW5kbGUgIT0gTlVMTCkKKyAgICByZXR1cm4gMTsKKworICAvKiBE b24ndCBhdHRlbXB0IHRvIHVzZSB0aHJlYWRfZGIgb24gdGFyZ2V0cyB3aGlj aCBjYW4gbm90IHJ1bgorICAgICAoZXhlY3V0YWJsZXMgbm90IHJ1bm5pbmcg eWV0LCBjb3JlIGZpbGVzKSBmb3Igbm93LiAgKi8KKyAgaWYgKCF0YXJnZXRf aGFzX2V4ZWN1dGlvbikKKyAgICByZXR1cm4gMDsKKworICAvKiBEb24ndCBh dHRlbXB0IHRvIHVzZSB0aHJlYWRfZGIgZm9yIHJlbW90ZSB0YXJnZXRzLiAg Ki8KKyAgaWYgKCF0YXJnZXRfY2FuX3J1biAoJmN1cnJlbnRfdGFyZ2V0KSkK KyAgICByZXR1cm4gMDsKKworICBpZiAodGhyZWFkX2RiX2xvYWRfc2VhcmNo ICgpKQorICAgIHJldHVybiAxOworCisgIC8qIE5vbmUgb2YgdGhlIGxpYnRo cmVhZF9kYidzIG9uIG91ciBzZWFyY2ggcGF0aCwgbm90IHRoZSBzeXN0ZW0g ZGVmYXVsdAorICAgICBvbmVzIHdvcmtlZC4gIElmIHRoZSBleGVjdXRhYmxl IGlzIGR5bmFtaWNhbGx5IGxpbmtlZCBhZ2FpbnN0CisgICAgIGxpYnB0aHJl YWQsIHRyeSBsb2FkaW5nIGxpYnRocmVhZF9kYiBmcm9tIHRoZSBzYW1lIGRp cmVjdG9yeS4gICovCisKKyAgQUxMX09CSkZJTEVTIChvYmopCisgICAgaWYg KGxpYnB0aHJlYWRfbmFtZV9wIChvYmotPm5hbWUpKQorICAgICAgeworCWNo YXIgcGF0aFtQQVRIX01BWF0sICpjcDsKKworCWdkYl9hc3NlcnQgKHN0cmxl biAob2JqLT5uYW1lKSA8IHNpemVvZiAocGF0aCkpOworCXN0cmNweSAocGF0 aCwgb2JqLT5uYW1lKTsKKwljcCA9IHN0cnJjaHIgKHBhdGgsICcvJyk7CisK KwlpZiAoY3AgPT0gTlVMTCkKKwkgIHsKKwkgICAgd2FybmluZyAoXygiRXhw ZWN0ZWQgYWJzb2x1dGUgcGF0aG5hbWUgZm9yIGxpYnB0aHJlYWQgaW4gdGhl IgorCQkgICAgICAgIiBpbmZlcmlvciwgYnV0IGdvdCAlcy4iKSwgcGF0aCk7 CisJICB9CisJZWxzZSBpZiAoY3AgKyAxICsgc3RybGVuIChMSUJUSFJFQURf REJfU08pICsgMSA+IHBhdGggKyBzaXplb2YgKHBhdGgpKQorCSAgeworCSAg ICB3YXJuaW5nIChfKCJVbmV4cGVjdGVkOiBwYXRoIHRvIGxpYnB0aHJlYWQg aW4gdGhlIGluZmVyaW9yIGlzIgorCQkgICAgICAgIiB0b28gbG9uZzogJXMi KSwgcGF0aCk7CisJICB9CisJZWxzZQorCSAgeworCSAgICBzdHJjcHkgKGNw ICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKwkgICAgaWYgKHRyeV90aHJlYWRf ZGJfbG9hZCAocGF0aCkpCisJICAgICAgcmV0dXJuIDE7CisJICB9CisJd2Fy bmluZyAoXygiVW5hYmxlIHRvIGZpbmQgbGlidGhyZWFkX2RiIG1hdGNoaW5n IGluZmVyaW9yJ3MgdGhyZWFkIgorCQkgICAiIGxpYnJhcnksIHRocmVhZCBk ZWJ1Z2dpbmcgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiIpKTsKKwlyZXR1cm4g MDsKKyAgICB9CisgIC8qIEVpdGhlciB0aGlzIGV4ZWN1dGFibGUgaXNuJ3Qg dXNpbmcgbGlicHRocmVhZCBhdCBhbGwsIG9yIGl0IGlzCisgICAgIHN0YXRp Y2FsbHkgbGlua2VkLiAgU2luY2Ugd2UgY2FuJ3QgZWFzaWx5IGRpc3Rpbmd1 aXNoIHRoZXNlIHR3byBjYXNlcywKKyAgICAgbm8gd2FybmluZyBpcyBpc3N1 ZWQuICAqLworICByZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQKIGRpc2Fi bGVfdGhyZWFkX2V2ZW50X3JlcG9ydGluZyAodm9pZCkKIHsKQEAgLTU5Myw3 NSArODAyLDM0IEBAIHZvaWQKIGNoZWNrX2Zvcl90aHJlYWRfZGIgKHZvaWQp CiB7CiAgIHRkX2Vycl9lIGVycjsKLSAgc3RhdGljIGludCBhbHJlYWR5X2xv YWRlZDsKKyAgc3RhdGljIHZvaWQgKmxhc3RfbG9hZGVkOwogCiAgIC8qIERv IG5vdGhpbmcgaWYgd2UgY291bGRuJ3QgbG9hZCBsaWJ0aHJlYWRfZGIuc28u MS4gICovCi0gIGlmICh0ZF90YV9uZXdfcCA9PSBOVUxMKQorICBpZiAoIXRo cmVhZF9kYl9sb2FkICgpKQogICAgIHJldHVybjsKIAogICAvKiBGaXJzdCB0 aW1lIHRocm91Z2gsIHJlcG9ydCB0aGF0IGxpYnRocmVhZF9kYiB3YXMgc3Vj Y2Vzc2Z1bHkKICAgICAgbG9hZGVkLiAgQ2FuJ3QgcHJpbnQgdGhpcyBpbiBp biB0aHJlYWRfZGJfbG9hZCBhcywgYXQgdGhhdCBzdGFnZSwKLSAgICAgdGhl IGludGVycHJldGVyIGFuZCBpdCdzIGNvbnNvbGUgaGF2ZW4ndCBzdGFydGVk LiAgKi8KLQotICBpZiAoIWFscmVhZHlfbG9hZGVkKQotICAgIHsKLSAgICAg IERsX2luZm8gaW5mbzsKLSAgICAgIGNvbnN0IGNoYXIgKmxpYnJhcnkgPSBO VUxMOwotICAgICAgaWYgKGRsYWRkciAoKCp0ZF90YV9uZXdfcCksICZpbmZv KSAhPSAwKQotCWxpYnJhcnkgPSBpbmZvLmRsaV9mbmFtZTsKLQotICAgICAg LyogVHJ5IGRsaW5mbz8gICovCi0KLSAgICAgIGlmIChsaWJyYXJ5ID09IE5V TEwpCi0JLyogUGFyYW5vaWQgLSBkb24ndCBsZXQgYSBOVUxMIHBhdGggc2xp cCB0aHJvdWdoLiAgKi8KLQlsaWJyYXJ5ID0gTElCVEhSRUFEX0RCX1NPOwot Ci0gICAgICBpZiAoaW5mb192ZXJib3NlKQotCXByaW50Zl91bmZpbHRlcmVk IChfKCJVc2luZyBob3N0IGxpYnRocmVhZF9kYiBsaWJyYXJ5IFwiJXNcIi5c biIpLAotCQkJICAgbGlicmFyeSk7Ci0gICAgICBhbHJlYWR5X2xvYWRlZCA9 IDE7Ci0gICAgfQorICAgICB0aGUgaW50ZXJwcmV0ZXIgYW5kIGl0J3MgY29u c29sZSBoYXZlbid0IHN0YXJ0ZWQuCisgICAgIFdlIHRyYWNrIHRkX3RhX25l d19wIGJlY2F1c2UgdGhlIHVzZXIgbWF5IHN3aXRjaCBleGVjdXRhYmxlcywK KyAgICAgYW5kIGFzIGEgcmVzdWx0IHdlIG1heSBkZWNpZGUgdG8gdXNlIGEg ZGlmZmVyZW50IHZlcnNpb24gb2YKKyAgICAgbGlidGhyZWFkX2RiLiAqLwog Ci0gIGlmICh1c2luZ190aHJlYWRfZGIpCi0gICAgLyogTm90aGluZyB0byBk by4gIFRoZSB0aHJlYWQgbGlicmFyeSB3YXMgYWxyZWFkeSBkZXRlY3RlZCBh bmQgdGhlCi0gICAgICAgdGFyZ2V0IHZlY3RvciB3YXMgYWxyZWFkeSBhY3Rp dmF0ZWQuICAqLwotICAgIHJldHVybjsKLQotICAvKiBEb24ndCBhdHRlbXB0 IHRvIHVzZSB0aHJlYWRfZGIgb24gdGFyZ2V0cyB3aGljaCBjYW4gbm90IHJ1 bgotICAgICAoZXhlY3V0YWJsZXMgbm90IHJ1bm5pbmcgeWV0LCBjb3JlIGZp bGVzKSBmb3Igbm93LiAgKi8KLSAgaWYgKCF0YXJnZXRfaGFzX2V4ZWN1dGlv bikKLSAgICByZXR1cm47Ci0KLSAgLyogRG9uJ3QgYXR0ZW1wdCB0byB1c2Ug dGhyZWFkX2RiIGZvciByZW1vdGUgdGFyZ2V0cy4gICovCi0gIGlmICghdGFy Z2V0X2Nhbl9ydW4gKCZjdXJyZW50X3RhcmdldCkpCi0gICAgcmV0dXJuOwot Ci0gIC8qIEluaXRpYWxpemUgdGhlIHN0cnVjdHVyZSB0aGF0IGlkZW50aWZp ZXMgdGhlIGNoaWxkIHByb2Nlc3MuICAqLwotICBwcm9jX2hhbmRsZS5wdGlk ID0gaW5mZXJpb3JfcHRpZDsKLQotICAvKiBOb3cgYXR0ZW1wdCB0byBvcGVu IGEgY29ubmVjdGlvbiB0byB0aGUgdGhyZWFkIGxpYnJhcnkuICAqLwotICBl cnIgPSB0ZF90YV9uZXdfcCAoJnByb2NfaGFuZGxlLCAmdGhyZWFkX2FnZW50 KTsKLSAgc3dpdGNoIChlcnIpCisgIGlmIChsYXN0X2xvYWRlZCAhPSB0ZF90 YV9uZXdfcCkKICAgICB7Ci0gICAgY2FzZSBURF9OT0xJQlRIUkVBRDoKLSAg ICAgIC8qIE5vIHRocmVhZCBsaWJyYXJ5IHdhcyBkZXRlY3RlZC4gICovCi0g ICAgICBicmVhazsKLQotICAgIGNhc2UgVERfT0s6Ci0gICAgICBwcmludGZf dW5maWx0ZXJlZCAoXygiW1RocmVhZCBkZWJ1Z2dpbmcgdXNpbmcgbGlidGhy ZWFkX2RiIGVuYWJsZWRdXG4iKSk7Ci0KLSAgICAgIC8qIFRoZSB0aHJlYWQg bGlicmFyeSB3YXMgZGV0ZWN0ZWQuICBBY3RpdmF0ZSB0aGUgdGhyZWFkX2Ri IHRhcmdldC4gICovCi0gICAgICBwdXNoX3RhcmdldCAoJnRocmVhZF9kYl9v cHMpOwotICAgICAgdXNpbmdfdGhyZWFkX2RiID0gMTsKKyAgICAgIGxhc3Rf bG9hZGVkID0gdGRfdGFfbmV3X3A7CiAKLSAgICAgIGVuYWJsZV90aHJlYWRf ZXZlbnRfcmVwb3J0aW5nICgpOwotICAgICAgdGhyZWFkX2RiX2ZpbmRfbmV3 X3RocmVhZHNfMSAoKTsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoK LSAgICAgIHdhcm5pbmcgKF8oIkNhbm5vdCBpbml0aWFsaXplIHRocmVhZCBk ZWJ1Z2dpbmcgbGlicmFyeTogJXMiKSwKLQkgICAgICAgdGhyZWFkX2RiX2Vy cl9zdHIgKGVycikpOwotICAgICAgYnJlYWs7CisgICAgICBpZiAoaW5mb192 ZXJib3NlIHx8ICpsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGgpCisgICAgICAg IHsKKyAgICAgICAgICBjb25zdCBjaGFyICpsaWJyYXJ5OworCisgICAgICAg ICAgbGlicmFyeSA9IGRsYWRkcl90b19zb25hbWUgKCp0ZF90YV9uZXdfcCk7 CisgICAgICAgICAgaWYgKGxpYnJhcnkgPT0gTlVMTCkKKyAgICAgICAgICAg IGxpYnJhcnkgPSBMSUJUSFJFQURfREJfU087CisKKyAgICAgICAgICBwcmlu dGZfdW5maWx0ZXJlZCAoXygiVXNpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGli cmFyeSBcIiVzXCIuXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlicmFyeSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTc4Myw3 ICs5NTEsOSBAQCB0aHJlYWRfZGJfZGV0YWNoIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzCiAKICAgLyogRGV0YWNoIHRocmVhZF9kYiB0YXJnZXQgb3BzLiAg Ki8KICAgdW5wdXNoX3RhcmdldCAoJnRocmVhZF9kYl9vcHMpOwotICB1c2lu Z190aHJlYWRfZGIgPSAwOworICBpZiAodGhyZWFkX2RiX2hhbmRsZSkKKyAg ICBkbGNsb3NlICh0aHJlYWRfZGJfaGFuZGxlKTsKKyAgdGhyZWFkX2RiX2hh bmRsZSA9IE5VTEw7CiAKICAgdGFyZ2V0X2JlbmVhdGgtPnRvX2RldGFjaCAo dGFyZ2V0X2JlbmVhdGgsIGFyZ3MsIGZyb21fdHR5KTsKIH0KQEAgLTg5Niw3 ICsxMDY2LDkgQEAgdGhyZWFkX2RiX3dhaXQgKHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMsCiAgICAgewogICAgICAgcmVtb3ZlX3RocmVhZF9ldmVudF9icmVh a3BvaW50cyAoKTsKICAgICAgIHVucHVzaF90YXJnZXQgKCZ0aHJlYWRfZGJf b3BzKTsKLSAgICAgIHVzaW5nX3RocmVhZF9kYiA9IDA7CisgICAgICBpZiAo dGhyZWFkX2RiX2hhbmRsZSkKKwlkbGNsb3NlICh0aHJlYWRfZGJfaGFuZGxl KTsKKyAgICAgIHRocmVhZF9kYl9oYW5kbGUgPSBOVUxMOwogCiAgICAgICBy ZXR1cm4gcHRpZDsKICAgICB9CkBAIC05NDQsNyArMTExNiw5IEBAIHRocmVh ZF9kYl9tb3Vybl9pbmZlcmlvciAoc3RydWN0IHRhcmdldF8KIAogICAvKiBE ZXRhY2ggdGhyZWFkX2RiIHRhcmdldCBvcHMuICAqLwogICB1bnB1c2hfdGFy Z2V0IChvcHMpOwotICB1c2luZ190aHJlYWRfZGIgPSAwOworICBpZiAodGhy ZWFkX2RiX2hhbmRsZSkKKyAgICBkbGNsb3NlICh0aHJlYWRfZGJfaGFuZGxl KTsKKyAgdGhyZWFkX2RiX2hhbmRsZSA9IE5VTEw7CiB9CiAKIHN0YXRpYyBp bnQKQEAgLTExODYsMTMgKzEzNjAsMjggQEAgZXh0ZXJuIGluaXRpYWxpemVf ZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZQogdm9pZAogX2luaXRpYWxpemVfdGhy ZWFkX2RiICh2b2lkKQogewotICAvKiBPbmx5IGluaXRpYWxpemUgdGhlIG1v ZHVsZSBpZiB3ZSBjYW4gbG9hZCBsaWJ0aHJlYWRfZGIuICAqLwotICBpZiAo dGhyZWFkX2RiX2xvYWQgKCkpCi0gICAgewotICAgICAgaW5pdF90aHJlYWRf ZGJfb3BzICgpOwotICAgICAgYWRkX3RhcmdldCAoJnRocmVhZF9kYl9vcHMp OworICBpbml0X3RocmVhZF9kYl9vcHMgKCk7CisgIGFkZF90YXJnZXQgKCZ0 aHJlYWRfZGJfb3BzKTsKIAotICAgICAgLyogQWRkIG91cnNlbHZlcyB0byBv YmpmaWxlIGV2ZW50IGNoYWluLiAgKi8KLSAgICAgIG9ic2VydmVyX2F0dGFj aF9uZXdfb2JqZmlsZSAodGhyZWFkX2RiX25ld19vYmpmaWxlKTsKLSAgICB9 CisgIC8qIERlZmVyIGxvYWRpbmcgb2YgbGlidGhyZWFkX2RiLnNvIHVudGls IGluZmVyaW9yIGlzIHJ1bm5pbmcuCisgICAgIFRoaXMgYWxsb3dzIGdkYiB0 byBsb2FkIGNvcnJlY3QgbGlidGhyZWFkX2RiIGZvciBhIGdpdmVuCisgICAg IGV4ZWN1dGFibGUgLS0gdGhlcmUgY291bGQgYmUgbXV0aXBsZSB2ZXJzaW9u cyBvZiBnbGliYywKKyAgICAgY29tcGlsZWQgd2l0aCBMaW51eFRocmVhZHMg b3IgTlBUTCwgYW5kIHVudGlsIHRoZXJlIGlzCisgICAgIGEgcnVubmluZyBp bmZlcmlvciwgd2UgY2FuJ3QgdGVsbCB3aGljaCBsaWJ0aHJlYWRfZGIgaXMK KyAgICAgdGhlIGNvcnJlY3Qgb25lIHRvIGxvYWQuICovCisKKyAgbGlidGhy ZWFkX2RiX3NlYXJjaF9wYXRoID0geHN0cmR1cCAoTElCVEhSRUFEX0RCX1NF QVJDSF9QQVRIKTsKKworICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFt ZV9jbWQgKCJsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgiLAorCQkJCSAgICAg Y2xhc3Nfc3VwcG9ydCwKKwkJCQkgICAgICZsaWJ0aHJlYWRfZGJfc2VhcmNo X3BhdGgsIF8oIlwKK1NldCBzZWFyY2ggcGF0aCBmb3IgbGlidGhyZWFkX2Ri LiIpLCBfKCJcCitTaG93IHRoZSBjdXJyZW50IHNlYXJjaCBwYXRoIG9yIGxp YnRocmVhZF9kYi4iKSwgXygiXAorVGhpcyBwYXRoIGlzIHVzZWQgdG8gc2Vh cmNoIGZvciBsaWJ0aHJlYWRfZGIgdG8gYmUgbG9hZGVkIGludG8gXAorZ2Ri IGl0c2VsZi4iKSwKKwkJCSAgICBOVUxMLAorCQkJICAgIE5VTEwsCisJCQkg ICAgJnNldGxpc3QsICZzaG93bGlzdCk7CisgIC8qIEFkZCBvdXJzZWx2ZXMg dG8gb2JqZmlsZSBldmVudCBjaGFpbi4gICovCisgIG9ic2VydmVyX2F0dGFj aF9uZXdfb2JqZmlsZSAodGhyZWFkX2RiX25ld19vYmpmaWxlKTsKIH0KSW5k ZXg6IHNvbGliLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9zb2xpYi5jLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjExNQpkaWZmIC11IC1wIC11IC1yMS4xMTUgc29saWIuYwotLS0gc29s aWIuYwk5IE1hciAyMDA5IDIyOjM4OjM3IC0wMDAwCTEuMTE1CisrKyBzb2xp Yi5jCTExIE1heSAyMDA5IDE3OjU2OjEzIC0wMDAwCkBAIC02ODQsMTYgKzY4 NCwyNSBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1 Y3QgCiAgICAgfQogfQogCi0vKiBSZXR1cm4gbm9uLXplcm8gaWYgU08gaXMg dGhlIGxpYnB0aHJlYWQgc2hhcmVkIGxpYnJhcnkuCisKKy8qIFJldHVybiBu b24temVybyBpZiBOQU1FIGlzIHRoZSBsaWJwdGhyZWFkIHNoYXJlZCBsaWJy YXJ5LgogCiAgICBVc2VzIGEgZmFpcmx5IHNpbXBsaXN0aWMgaGV1cmlzdGlj IGFwcHJvYWNoIHdoZXJlIHdlIGNoZWNrCiAgICB0aGUgZmlsZSBuYW1lIGFn YWluc3QgIi9saWJwdGhyZWFkIi4gIFRoaXMgY2FuIGxlYWQgdG8gZmFsc2UK ICAgIHBvc2l0aXZlcywgYnV0IHRoaXMgc2hvdWxkIGJlIGdvb2QgZW5vdWdo IGluIHByYWN0aWNlLiAgKi8KIAoraW50CitsaWJwdGhyZWFkX25hbWVfcCAo Y29uc3QgY2hhciAqbmFtZSkKK3sKKyAgcmV0dXJuIChzdHJzdHIgKG5hbWUs ICIvbGlicHRocmVhZCIpICE9IE5VTEwpOworfQorCisvKiBSZXR1cm4gbm9u LXplcm8gaWYgU08gaXMgdGhlIGxpYnB0aHJlYWQgc2hhcmVkIGxpYnJhcnku ICAqLworCiBzdGF0aWMgaW50CiBsaWJwdGhyZWFkX3NvbGliX3AgKHN0cnVj dCBzb19saXN0ICpzbykKIHsKLSAgcmV0dXJuIChzdHJzdHIgKHNvLT5zb19u YW1lLCAiL2xpYnB0aHJlYWQiKSAhPSBOVUxMKTsKKyAgcmV0dXJuIGxpYnB0 aHJlYWRfbmFtZV9wIChzby0+c29fbmFtZSk7CiB9CiAKIC8qIEdMT0JBTCBG VU5DVElPTgpJbmRleDogc29saWIuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3NvbGliLmgsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMjMKZGlmZiAtdSAtcCAtdSAtcjEuMjMgc29saWIu aAotLS0gc29saWIuaAk5IE1hciAyMDA5IDIyOjM4OjM3IC0wMDAwCTEuMjMK KysrIHNvbGliLmgJMTEgTWF5IDIwMDkgMTc6NTY6MTMgLTAwMDAKQEAgLTY1 LDQgKzY1LDggQEAgZXh0ZXJuIHZvaWQgbm9fc2hhcmVkX2xpYnJhcmllcyAo Y2hhciAqaQogZXh0ZXJuIHZvaWQgc2V0X3NvbGliX29wcyAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCiAJCQkgICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAq bmV3X29wcyk7CiAKKy8qIFJldHVybiBub24temVybyBpZiBOQU1FIGlzIHRo ZSBsaWJwdGhyZWFkIHNoYXJlZCBsaWJyYXJ5LiAgKi8KKworZXh0ZXJuIGlu dCBsaWJwdGhyZWFkX25hbWVfcCAoY29uc3QgY2hhciAqbmFtZSk7CisKICNl bmRpZiAvKiBTT0xJQl9IICovCkluZGV4OiBkb2MvZ2RiLnRleGluZm8KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dk Yi9kb2MvZ2RiLnRleGluZm8sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTkw CmRpZmYgLXUgLXAgLXUgLXIxLjU5MCBnZGIudGV4aW5mbwotLS0gZG9jL2dk Yi50ZXhpbmZvCTggTWF5IDIwMDkgMDk6NDc6NTMgLTAwMDAJMS41OTAKKysr IGRvYy9nZGIudGV4aW5mbwkxMSBNYXkgMjAwOSAxNzo1NjoxNCAtMDAwMApA QCAtMjQzMCw2ICsyNDMwLDkgQEAgYSBjb21tYW5kIHRvIGFwcGx5IGEgY29t bWFuZCB0byBhIGxpc3QgbwogQGl0ZW0gdGhyZWFkLXNwZWNpZmljIGJyZWFr cG9pbnRzCiBAaXRlbSBAc2FtcHtzZXQgcHJpbnQgdGhyZWFkLWV2ZW50c30s IHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIAogbWVzc2FnZXMgb24gdGhy ZWFkIHN0YXJ0IGFuZCBleGl0LgorQGl0ZW0gQHNhbXB7c2V0IGxpYnRocmVh ZC1kYi1zZWFyY2gtcGF0aCBAdmFye3BhdGh9fSwgd2hpY2ggbGV0cwordGhl IHVzZXIgc3BlY2lmeSB3aGljaCBAY29kZXtsaWJ0aHJlYWRfZGJ9IHRvIHVz ZSBpZiB0aGUgZGVmYXVsdCBjaG9pY2UKK2lzbid0IGNvbXBhdGlibGUgd2l0 aCB0aGUgcHJvZ3JhbS4KIEBlbmQgaXRlbWl6ZQogCiBAcXVvdGF0aW9uCkBA IC0yNjQ4LDYgKzI2NTEsMzggQEAgcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0 aHJlYWRzLgogQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdhdGNo cG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0CiB3YXRjaHBvaW50cyBp biBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCiAKK0B0YWJsZSBA Y29kZQorQGtpbmRleCBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoCitA Y2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9CitA aXRlbSBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoIEBye1t9QHZhcntw YXRofUBye119CitJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCwgQHZhcntwYXRo fSBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mCitkaXJlY3RvcmllcyBA dmFsdWV7R0RCTn0gd2lsbCB1c2UgdG8gc2VhcmNoIGZvciBAY29kZXtsaWJ0 aHJlYWRfZGJ9LgorSWYgeW91IG9taXQgQHZhcntwYXRofSwgQHNhbXB7bGli dGhyZWFkLWRiLXNlYXJjaC1wYXRofSB3aWxsIGJlIHJlc2V0IHRvCithbiBl bXB0eSBsaXN0LgorCitPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBz eXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKK0Bjb2Rl e2xpYnRocmVhZF9kYn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3JtYXRpb24g YWJvdXQgdGhyZWFkcyBpbiB0aGUKK2luZmVyaW9yIHByb2Nlc3MuICBAdmFs dWV7R0RCTn0gd2lsbCB1c2UgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1w YXRofQordG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LiAgSWYgdGhhdCBm YWlscywgQHZhbHVle0dEQk59IHdpbGwgY29udGludWUKK3dpdGggZGVmYXVs dCBzeXN0ZW0gc2hhcmVkIGxpYnJhcnkgZGlyZWN0b3JpZXMsIGFuZCBmaW5h bGx5IHRoZSBkaXJlY3RvcnkKK2Zyb20gd2hpY2ggQGNvZGV7bGlicHRocmVh ZH0gd2FzIGxvYWRlZCBpbiB0aGUgaW5mZXJpb3IgcHJvY2Vzcy4KKworRm9y IGFueSBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcnkgQHZhbHVle0dEQk59 IGZpbmRzIGluIGFib3ZlIGRpcmVjdG9yaWVzLAorQHZhbHVle0dEQk59IGF0 dGVtcHRzIHRvIGluaXRpYWxpemUgaXQgd2l0aCB0aGUgY3VycmVudCBpbmZl cmlvciBwcm9jZXNzLgorSWYgdGhpcyBpbml0aWFsaXphdGlvbiBmYWlscyAo d2hpY2ggY291bGQgaGFwcGVuIGJlY2F1c2Ugb2YgYSB2ZXJzaW9uCittaXNt YXRjaCBiZXR3ZWVuIEBjb2Rle2xpYnRocmVhZF9kYn0gYW5kIEBjb2Rle2xp YnB0aHJlYWR9KSwgQHZhbHVle0dEQk59Cit3aWxsIHVubG9hZCBAY29kZXts aWJ0aHJlYWRfZGJ9LCBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4dCBkaXJl Y3RvcnkuCitJZiBub25lIG9mIEBjb2Rle2xpYnRocmVhZF9kYn0gbGlicmFy aWVzIGluaXRpYWxpemUgc3VjY2Vzc2Z1bGx5LAorQHZhbHVle0dEQk59IHdp bGwgaXNzdWUgYSB3YXJuaW5nIGFuZCB0aHJlYWQgZGVidWdnaW5nIHdpbGwg YmUgZGlzYWJsZWQuCisKK1NldHRpbmcgQGNvZGV7bGlidGhyZWFkLWRiLXNl YXJjaC1wYXRofSBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQKK29ubHkgb24g c29tZSBwbGF0Zm9ybXMuCisKK0BraW5kZXggc2hvdyBsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGggCitAaXRlbSBzaG93IGxpYnRocmVhZC1kYi1zZWFyY2gt cGF0aCAKK0Rpc3BsYXkgY3VycmVudCBsaWJ0aHJlYWRfZGIgc2VhcmNoIHBh dGguCitAZW5kIHRhYmxlCisKIEBub2RlIFByb2Nlc3NlcwogQHNlY3Rpb24g RGVidWdnaW5nIFByb2dyYW1zIHdpdGggTXVsdGlwbGUgUHJvY2Vzc2VzCiAK --0016361e81349b81cf0469a6de2e--