From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout11.t-online.de (mailout11.t-online.de [194.25.134.85]) by sourceware.org (Postfix) with ESMTPS id 8C13F3858D39 for ; Sat, 16 Jul 2022 16:01:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8C13F3858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=t-online.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=t-online.de Received: from fwd74.dcpf.telekom.de (fwd74.aul.t-online.de [10.223.144.100]) by mailout11.t-online.de (Postfix) with SMTP id 7C5D71F2EB for ; Sat, 16 Jul 2022 18:01:18 +0200 (CEST) Received: from [192.168.2.102] ([87.187.34.65]) by fwd74.t-online.de with (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384 encrypted) esmtp id 1oCkEB-1n5Tyy0; Sat, 16 Jul 2022 18:01:11 +0200 To: cygwin-apps@cygwin.com From: Christian Franke Subject: [PATCH rebase] Ensure that no rebaseable DLL overlaps a non-rebaseable DLL Message-ID: Date: Sat, 16 Jul 2022 18:01:11 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 SeaMonkey/2.53.12 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------1DF830DFEC80DA26385009A7" X-TOI-EXPURGATEID: 150726::1657987271-0144CE29-A51CE13A/0/0 CLEAN NORMAL X-TOI-MSGID: b721429e-492d-467a-945a-e69cfd1704b5 X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: cygwin-apps@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin package maintainer discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Jul 2022 16:01:23 -0000 This is a multi-part message in MIME format. --------------1DF830DFEC80DA26385009A7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The current check for overlapping non-rebaseable DLLs uses a possible outdated base address. It also could not detect multiple overlaps by one non-rebaseable DLL. Patch size may be misleading due to indentation change. -- Regards, Christian --------------1DF830DFEC80DA26385009A7 Content-Type: text/plain; charset=UTF-8; name="0001-Ensure-that-no-rebaseable-DLL-overlaps-a-non-rebasea.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Ensure-that-no-rebaseable-DLL-overlaps-a-non-rebasea.pa"; filename*1="tch" RnJvbSBlZThhOTY2Y2I2ZGE0OGI0NWRmYjZkZTNlNzMyZGFkZTgxY2U3ZmI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RpYW4gRnJhbmtlIDxjaHJpc3RpYW4uZnJh bmtlQHQtb25saW5lLmRlPgpEYXRlOiBTYXQsIDE2IEp1bCAyMDIyIDE3OjU1OjU4ICswMjAw ClN1YmplY3Q6IFtQQVRDSF0gRW5zdXJlIHRoYXQgbm8gcmViYXNlYWJsZSBETEwgb3Zlcmxh cHMgYSBub24tcmViYXNlYWJsZSBETEwKClJlc3RhcnQgcmViYXNlIGRlY2lzaW9uIGxvb3Ag d2l0aCBuZXdseSBzb3J0ZWQgbGlzdCBpZiBhIERMTCBpcyBub3QKcmViYXNlYWJsZS4gIFNl YXJjaCBmb3IgYWxsIERMTHMgd2hpY2ggb3ZlcmxhcCBzdWNoIGEgRExMLgotLS0KIHJlYmFz ZS5jIHwgMjAzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgODIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcmViYXNlLmMgYi9yZWJhc2UuYwppbmRleCA1Y2Rh MTIzLi4zOTc1OWE5IDEwMDY0NAotLS0gYS9yZWJhc2UuYworKysgYi9yZWJhc2UuYwpAQCAt NjI1LDYgKzYyNSw3IEBAIG1lcmdlX2ltYWdlX2luZm8gKCkKIHsKICAgaW50IGksIGVuZDsK ICAgaW1nX2luZm9fdCAqbWF0Y2g7CisgIEJPT0wgc29ydGVkOwogICBVTE9ORzY0IGZsb2F0 aW5nX2ltYWdlX2Jhc2U7CiAKICAgLyogU29ydCBuZXcgZmlsZXMgZnJvbSBjb21tYW5kIGxp bmUgYnkgbmFtZS4gKi8KQEAgLTcyNSw5MSArNzI2LDEyOSBAQCBtZXJnZV9pbWFnZV9pbmZv ICgpCiAgICAgICBpbWdfaW5mb19yZWJhc2Vfc3RhcnQgPSAwOwogICAgIH0KIAotICAvKiBO b3cgc29ydCB0aGUgb2xkIHBhcnQgb2YgdGhlIGxpc3QgYnkgYmFzZSBhZGRyZXNzLiAqLwot ICBpZiAoaW1nX2luZm9fcmViYXNlX3N0YXJ0KQotICAgIHFzb3J0IChpbWdfaW5mb19saXN0 LCBpbWdfaW5mb19yZWJhc2Vfc3RhcnQsIHNpemVvZiAoaW1nX2luZm9fdCksCi0JICAgaW1n X2luZm9fY21wKTsKLSAgLyogUGVyZm9ybSBzZXZlcmFsIHRlc3RzIG9uIHRoZSBpbmZvcm1h dGlvbiBmZXRjaGVkIGZyb20gdGhlIGRhdGFiYXNlCi0gICAgIHRvIG1hdGNoIHdpdGggcmVh bGl0eS4gKi8KLSAgZm9yIChpID0gMDsgaSA8IGltZ19pbmZvX3JlYmFzZV9zdGFydDsgKytp KQorICBmb3IgKHNvcnRlZCA9IEZBTFNFOyBpbWdfaW5mb19yZWJhc2Vfc3RhcnQgJiYgIXNv cnRlZDsgKQogICAgIHsKLSAgICAgIFVMT05HNjQgY3VyX2Jhc2UsIGN1cl9iYXNlX29yaWc7 Ci0gICAgICBVTE9ORyBjdXJfc2l6ZSwgc2xvdF9zaXplOwotCi0gICAgICAvKiBGaWxlcyB3 aXRoIHRoZSBuZWVkc19yZWJhc2luZyBvciBjYW5ub3RfcmViYXNlIGZsYWdzIHNldCBoYXZl IGJlZW4KLQkgY2hlY2tlZCBhbHJlYWR5LiAqLwotICAgICAgaWYgKGltZ19pbmZvX2xpc3Rb aV0uZmxhZy5uZWVkc19yZWJhc2luZwotICAgICAgCSAgfHwgaW1nX2luZm9fbGlzdFtpXS5m bGFnLmNhbm5vdF9yZWJhc2UpCi0JY29udGludWU7Ci0gICAgICAvKiBDaGVjayBpZiB0aGUg ZmlsZXMgaW4gdGhlIG9sZCBsaXN0IHN0aWxsIGV4aXN0LiAgRHJvcCBub24tZXhpc3RhbnQK LQkgb3IgdW5hY2Nlc3NpYmxlIGZpbGVzLiAqLwotICAgICAgaWYgKGFjY2VzcyAoaW1nX2lu Zm9fbGlzdFtpXS5uYW1lLCBGX09LKSA9PSAtMQotCSAgfHwgIUdldEltYWdlSW5mb3M2NCAo aW1nX2luZm9fbGlzdFtpXS5uYW1lLCBOVUxMLAotCQkJICAgICAgICZjdXJfYmFzZSwgJmN1 cl9zaXplKSkKLQl7Ci0JICBmcmVlIChpbWdfaW5mb19saXN0W2ldLm5hbWUpOwotCSAgbWVt bW92ZSAoaW1nX2luZm9fbGlzdCArIGksIGltZ19pbmZvX2xpc3QgKyBpICsgMSwKLQkJICAg KGltZ19pbmZvX3NpemUgLSBpIC0gMSkgKiBzaXplb2YgKGltZ19pbmZvX3QpKTsKLQkgIC0t aW1nX2luZm9fcmViYXNlX3N0YXJ0OwotCSAgLS1pbWdfaW5mb19zaXplOwotCSAgY29udGlu dWU7Ci0JfQotICAgICAgc2xvdF9zaXplID0gcm91bmR1cDIgKGN1cl9zaXplLCBBTExPQ0FU SU9OX1NMT1QpOwotICAgICAgY3VyX2Jhc2Vfb3JpZyA9IGN1cl9iYXNlOwotICAgICAgLyog SWYgdGhlIGZpbGUgaGFzIGJlZW4gcmVpbnN0YWxsZWQsIHRyeSB0byByZWJhc2UgdG8gdGhl IHNhbWUgYWRkcmVzcwotCSBpbiB0aGUgZmlyc3QgcGxhY2UuICovCi0gICAgICBpZiAoY3Vy X2Jhc2UgIT0gaW1nX2luZm9fbGlzdFtpXS5iYXNlKQorICAgICAgY2hhciBvdmVybGFwc1tp bWdfaW5mb19yZWJhc2Vfc3RhcnRdOworICAgICAgbWVtc2V0KG92ZXJsYXBzLCAwLCBpbWdf aW5mb19yZWJhc2Vfc3RhcnQpOworICAgICAgLyogTm93IHNvcnQgdGhlIG9sZCBwYXJ0IG9m IHRoZSBsaXN0IGJ5IGJhc2UgYWRkcmVzcy4gKi8KKyAgICAgIHFzb3J0IChpbWdfaW5mb19s aXN0LCBpbWdfaW5mb19yZWJhc2Vfc3RhcnQsIHNpemVvZiAoaW1nX2luZm9fdCksCisJICAg ICBpbWdfaW5mb19jbXApOworICAgICAgLyogUGVyZm9ybSBzZXZlcmFsIHRlc3RzIG9uIHRo ZSBpbmZvcm1hdGlvbiBmZXRjaGVkIGZyb20gdGhlIGRhdGFiYXNlCisJIHRvIG1hdGNoIHdp dGggcmVhbGl0eS4gKi8KKyAgICAgIGZvciAoc29ydGVkID0gVFJVRSwgaSA9IDA7IHNvcnRl ZCAmJiBpIDwgaW1nX2luZm9fcmViYXNlX3N0YXJ0OyArK2kpCiAJewotCSAgaW1nX2luZm9f bGlzdFtpXS5mbGFnLm5lZWRzX3JlYmFzaW5nID0gMTsKLQkgIGlmICh2ZXJib3NlKQotCSAg ICBmcHJpbnRmIChzdGRlcnIsICJyZWJhc2luZyAlcyBiZWNhdXNlIGl0J3MgYmFzZSBoYXMg Y2hhbmdlZCAoZHVlIHRvIGJlaW5nIHJlaW5zdGFsbGVkPylcbiIsIGltZ19pbmZvX2xpc3Rb aV0ubmFtZSk7Ci0JICAvKiBTZXQgY3VyX2Jhc2UgdG8gdGhlIG9sZCBiYXNlIHRvIHNpbXBs aWZ5IHN1YnNlcXVlbnQgdGVzdHMuICovCi0JICBjdXJfYmFzZSA9IGltZ19pbmZvX2xpc3Rb aV0uYmFzZTsKLQl9Ci0gICAgICAvKiBIb3dldmVyLCBpZiB0aGUgRExMIGdvdCBiaWdnZXIg YW5kIGRvZXNuJ3QgZml0IGludG8gaXRzIHNsb3QKLQkgYW55bW9yZSwgcmViYXNlIHRoaXMg RExMIGZyb20gc2NyYXRjaC4gKi8KLSAgICAgIGlmIChpICsgMSA8IGltZ19pbmZvX3JlYmFz ZV9zdGFydAotCSAgJiYgY3VyX2Jhc2UgKyBzbG90X3NpemUgKyBvZmZzZXQgPiBpbWdfaW5m b19saXN0W2kgKyAxXS5iYXNlKQotCXsKLQkgIGltZ19pbmZvX2xpc3RbaV0uYmFzZSA9IDA7 Ci0JICBpZiAodmVyYm9zZSkKLQkgICAgZnByaW50ZiAoc3RkZXJyLCAicmViYXNpbmcgJXMg YmVjYXVzZSBpdCB3b24ndCBmaXQgaW4gaXQncyBvbGQgc2xvdCB3aXRob3V0IG92ZXJsYXBw aW5nIG5leHQgRExMXG4iLCBpbWdfaW5mb19saXN0W2ldLm5hbWUpOwotCX0KLSAgICAgIC8q IERvZXMgdGhlIHByZXZpb3VzIERMTCByZWFjaCBpbnRvIHRoZSBhZGRyZXNzIHNwYWNlIG9m IHRoaXMKLQkgRExMPyAgVGhpcyBoYXBwZW5zIGlmIHRoZSBwcmV2aW91cyBETEwgaXMgbm90 IHJlYmFzZWFibGUuICovCi0gICAgICBlbHNlIGlmIChpID4gMCAmJiBjdXJfYmFzZSA8IGlt Z19pbmZvX2xpc3RbaSAtIDFdLmJhc2UKLQkJCQkgICArIGltZ19pbmZvX2xpc3RbaSAtIDFd LnNsb3Rfc2l6ZSkKLQl7Ci0JICBpbWdfaW5mb19saXN0W2ldLmJhc2UgPSAwOwotCSAgaWYg KHZlcmJvc2UpCi0JICAgIGZwcmludGYgKHN0ZGVyciwgInJlYmFzaW5nICVzIGJlY2F1c2Ug cHJldmlvdXMgRExMIG5vdyBvdmVybGFwc1xuIiwgaW1nX2luZm9fbGlzdFtpXS5uYW1lKTsK LQl9Ci0gICAgICAvKiBEb2VzIHRoZSBmaWxlIG1hdGNoIHRoZSBiYXNlIGFkZHJlc3MgcmVx dWlyZW1lbnRzPyAgSWYgbm90LAotCSByZWJhc2UgZnJvbSBzY3JhdGNoLiAqLwotICAgICAg ZWxzZSBpZiAoKGRvd25fZmxhZyAmJiBjdXJfYmFzZSArIHNsb3Rfc2l6ZSArIG9mZnNldCA+ IGltYWdlX2Jhc2UpCi0JICAgICAgIHx8ICghZG93bl9mbGFnICYmIGN1cl9iYXNlIDwgaW1h Z2VfYmFzZSkpCi0JewotCSAgaW1nX2luZm9fbGlzdFtpXS5iYXNlID0gMDsKLQkgIGlmICh2 ZXJib3NlKQotCSAgICBmcHJpbnRmIChzdGRlcnIsICJyZWJhc2luZyAlcyBiZWNhdXNlIGl0 J3MgYmFzZSBhZGRyZXNzIGlzIG91dHNpZGUgdGhlIGV4cGVjdGVkIGFyZWFcbiIsIGltZ19p bmZvX2xpc3RbaV0ubmFtZSk7Ci0JfQotICAgICAgLyogTWFrZSBzdXJlIGFsbCBETExzIHdp dGggYmFzZSBhZGRyZXNzIDAgaGF2ZSB0aGUgbmVlZHNfcmViYXNpbmcKLQkgZmxhZyBzZXQu ICovCi0gICAgICBpZiAoaW1nX2luZm9fbGlzdFtpXS5iYXNlID09IDApCi0JaW1nX2luZm9f bGlzdFtpXS5mbGFnLm5lZWRzX3JlYmFzaW5nID0gMTsKLSAgICAgIC8qIE9ubHkgY2hlY2sg Zm9yIHdyaXRhYmlsaXR5IGlmIGZpbGUgbmVlZHMgcmViYXNpbmcgdG8ga2VlcAotCSBDb21w YWN0IE9TIGNvbXByZXNzaW9uIG9mIHVuY2hhbmdlZCBmaWxlcy4gIFJldmVydCByZWJhc2UK LQkgZGVjaXNpb24gaWYgbm90IHdyaXRlYWJsZS4gKi8KLSAgICAgIGlmIChpbWdfaW5mb19s aXN0W2ldLmZsYWcubmVlZHNfcmViYXNpbmcgJiYgc2V0X2Nhbm5vdF9yZWJhc2UgKCZpbWdf aW5mb19saXN0W2ldKSkKLQl7Ci0JICBpbWdfaW5mb19saXN0W2ldLmZsYWcubmVlZHNfcmVi YXNpbmcgPSAwOwotCSAgaW1nX2luZm9fbGlzdFtpXS5iYXNlID0gY3VyX2Jhc2Vfb3JpZzsK LQkgIGlmICh2ZXJib3NlKQotCSAgICBmcHJpbnRmIChzdGRlcnIsICJyZWJhc2luZyAlcyBk ZWZlcnJlZCBiZWNhdXNlIGZpbGUgaXMgbm90IHdyaXRhYmxlXG4iLCBpbWdfaW5mb19saXN0 W2ldLm5hbWUpOworCSAgVUxPTkc2NCBjdXJfYmFzZSwgY3VyX2Jhc2Vfb3JpZzsKKwkgIFVM T05HIGN1cl9zaXplLCBzbG90X3NpemU7CisKKwkgIC8qIElmIGZpbGUgaXMgbm90IHJlYmFz ZWFibGUgYW5kIG5laXRoZXIgLS1vYmxpdmlvdXMgbm9yIC0tbWVyZ2UtZmlsZXMKKwkgICAg IGlzIGFjdGl2ZSwgc2VhcmNoIGZvcndhcmQgZm9yIHBvc3NpYmxlIG92ZXJsYXBzLiAqLwor CSAgaWYgKGltZ19pbmZvX2xpc3RbaV0uZmxhZy5jYW5ub3RfcmViYXNlID09IDEpCisJICAg IHsKKwkgICAgICBpbnQgajsKKwkgICAgICAvKiBJZiBjYW5ub3RfcmViYXNlIGlzIHNldCwg YmFzZSBhbmQgc2l6ZSBhcmUgYWxyZWFkeSB2YWxpZC4gKi8KKwkgICAgICBjdXJfYmFzZSA9 IGltZ19pbmZvX2xpc3RbaV0uYmFzZTsKKwkgICAgICBzbG90X3NpemUgPSBpbWdfaW5mb19s aXN0W2ldLnNsb3Rfc2l6ZTsKKwkgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IGltZ19pbmZv X3JlYmFzZV9zdGFydDsgKytqKQorCQl7CisJCSAgaWYgKGltZ19pbmZvX2xpc3Rbal0uZmxh Zy5jYW5ub3RfcmViYXNlKQorCQkgICAgY29udGludWU7IC8qIEFsc28gbm90IHJlYmFzZWFi bGUuICovCisJCSAgaWYgKGltZ19pbmZvX2xpc3Rbal0uYmFzZSA9PSAwKQorCQkgICAgY29u dGludWU7IC8qIFdpbGwgYWxyZWFkeSBiZSByZWJhc2VkIGZyb20gc2NyYXRjaC4gKi8KKwkJ ICBpZiAoY3VyX2Jhc2UgKyBzbG90X3NpemUgKyBvZmZzZXQgPD0gaW1nX2luZm9fbGlzdFtq XS5iYXNlKQorCQkgICAgYnJlYWs7IC8qIFRoaXMgYW5kIGFueSBmdXJ0aGVyIERMTHMgZG8g bm90IG92ZXJsYXAuICovCisJCSAgLyogU2VsZWN0IHJlYmFzZSBmcm9tIHNjcmF0Y2ggd2hl biBvdXRlciBsb29wIGFycml2ZXMgYXQgai4gKi8KKwkJICBvdmVybGFwc1tqXSA9IDE7CisJ CX0KKwkgICAgfQorCisJICAvKiBGaWxlcyB3aXRoIHRoZSBuZWVkc19yZWJhc2luZyBvciBj YW5ub3RfcmViYXNlIGZsYWdzIHNldCBoYXZlIGJlZW4KKwkgICAgIGNoZWNrZWQgYWxyZWFk eS4gKi8KKwkgIGlmIChpbWdfaW5mb19saXN0W2ldLmZsYWcubmVlZHNfcmViYXNpbmcKKwkg ICAgICB8fCBpbWdfaW5mb19saXN0W2ldLmZsYWcuY2Fubm90X3JlYmFzZSkKKwkgICAgY29u dGludWU7CisJICAvKiBDaGVjayBpZiB0aGUgZmlsZXMgaW4gdGhlIG9sZCBsaXN0IHN0aWxs IGV4aXN0LiAgRHJvcCBub24tZXhpc3RhbnQKKwkgICAgIG9yIHVuYWNjZXNzaWJsZSBmaWxl cy4gKi8KKwkgIGlmIChhY2Nlc3MgKGltZ19pbmZvX2xpc3RbaV0ubmFtZSwgRl9PSykgPT0g LTEKKwkgICAgICB8fCAhR2V0SW1hZ2VJbmZvczY0IChpbWdfaW5mb19saXN0W2ldLm5hbWUs IE5VTEwsCisJCQkJICAgJmN1cl9iYXNlLCAmY3VyX3NpemUpKQorCSAgICB7CisJICAgICAg ZnJlZSAoaW1nX2luZm9fbGlzdFtpXS5uYW1lKTsKKwkgICAgICBtZW1tb3ZlIChpbWdfaW5m b19saXN0ICsgaSwgaW1nX2luZm9fbGlzdCArIGkgKyAxLAorCQkgICAgICAgKGltZ19pbmZv X3NpemUgLSBpIC0gMSkgKiBzaXplb2YgKGltZ19pbmZvX3QpKTsKKwkgICAgICBtZW1tb3Zl IChvdmVybGFwcyArIGksIG92ZXJsYXBzICsgaSArIDEsIGltZ19pbmZvX3NpemUgLSBpIC0g MSk7CisJICAgICAgLS1pbWdfaW5mb19yZWJhc2Vfc3RhcnQ7CisJICAgICAgLS1pbWdfaW5m b19zaXplOworCSAgICAgIGNvbnRpbnVlOworCSAgICB9CisJICBzbG90X3NpemUgPSByb3Vu ZHVwMiAoY3VyX3NpemUsIEFMTE9DQVRJT05fU0xPVCk7CisJICBjdXJfYmFzZV9vcmlnID0g Y3VyX2Jhc2U7CisJICAvKiBJZiB0aGUgZmlsZSBoYXMgYmVlbiByZWluc3RhbGxlZCwgdHJ5 IHRvIHJlYmFzZSB0byB0aGUgc2FtZSBhZGRyZXNzCisJICAgICBpbiB0aGUgZmlyc3QgcGxh Y2UuICovCisJICBpZiAoY3VyX2Jhc2UgIT0gaW1nX2luZm9fbGlzdFtpXS5iYXNlKQorCSAg ICB7CisJICAgICAgaW1nX2luZm9fbGlzdFtpXS5mbGFnLm5lZWRzX3JlYmFzaW5nID0gMTsK KwkgICAgICBpZiAodmVyYm9zZSkKKwkJZnByaW50ZiAoc3RkZXJyLCAicmViYXNpbmcgJXMg YmVjYXVzZSBpdCdzIGJhc2UgaGFzIGNoYW5nZWQgIgorCQkJICIoZHVlIHRvIGJlaW5nIHJl aW5zdGFsbGVkPylcbiIsIGltZ19pbmZvX2xpc3RbaV0ubmFtZSk7CisJICAgICAgLyogU2V0 IGN1cl9iYXNlIHRvIHRoZSBvbGQgYmFzZSB0byBzaW1wbGlmeSBzdWJzZXF1ZW50IHRlc3Rz LiAqLworCSAgICAgIGN1cl9iYXNlID0gaW1nX2luZm9fbGlzdFtpXS5iYXNlOworCSAgICB9 CisJICAvKiBIb3dldmVyLCBpZiB0aGUgRExMIGdvdCBiaWdnZXIgYW5kIGRvZXNuJ3QgZml0 IGludG8gaXRzIHNsb3QKKwkgICAgIGFueW1vcmUsIHJlYmFzZSB0aGlzIERMTCBmcm9tIHNj cmF0Y2guICovCisJICBpZiAoaSArIDEgPCBpbWdfaW5mb19yZWJhc2Vfc3RhcnQKKwkgICAg ICAmJiBjdXJfYmFzZSArIHNsb3Rfc2l6ZSArIG9mZnNldCA+IGltZ19pbmZvX2xpc3RbaSAr IDFdLmJhc2UpCisJICAgIHsKKwkgICAgICBpbWdfaW5mb19saXN0W2ldLmJhc2UgPSAwOwor CSAgICAgIGlmICh2ZXJib3NlKQorCQlmcHJpbnRmIChzdGRlcnIsICJyZWJhc2luZyAlcyBi ZWNhdXNlIGl0IHdvbid0IGZpdCBpbiBpdCdzIG9sZCBzbG90ICIKKwkJCSAid2l0aG91dCBv dmVybGFwcGluZyBuZXh0IERMTFxuIiwgaW1nX2luZm9fbGlzdFtpXS5uYW1lKTsKKwkgICAg fQorCSAgLyogRG9lcyBhIHByZXZpb3VzIERMTCByZWFjaCBpbnRvIHRoZSBhZGRyZXNzIHNw YWNlIG9mIHRoaXMKKwkgICAgIERMTD8gIFRoaXMgaGFwcGVucyBpZiB0aGUgcHJldmlvdXMg RExMIGlzIG5vdCByZWJhc2VhYmxlLiAqLworCSAgZWxzZSBpZiAob3ZlcmxhcHNbaV0pCisJ ICAgIHsKKwkgICAgICBpbWdfaW5mb19saXN0W2ldLmJhc2UgPSAwOworCSAgICAgIGlmICh2 ZXJib3NlKQorCQlmcHJpbnRmIChzdGRlcnIsICJyZWJhc2luZyAlcyBiZWNhdXNlIGEgcHJl dmlvdXMgbm9uLXdyaXRhYmxlIERMTCAiCisJCQkgIm92ZXJsYXBzXG4iLCBpbWdfaW5mb19s aXN0W2ldLm5hbWUpOworCSAgICB9CisJICAvKiBEb2VzIHRoZSBmaWxlIG1hdGNoIHRoZSBi YXNlIGFkZHJlc3MgcmVxdWlyZW1lbnRzPyAgSWYgbm90LAorCSAgICAgcmViYXNlIGZyb20g c2NyYXRjaC4gKi8KKwkgIGVsc2UgaWYgKChkb3duX2ZsYWcgJiYgY3VyX2Jhc2UgKyBzbG90 X3NpemUgKyBvZmZzZXQgPiBpbWFnZV9iYXNlKQorCQkgICB8fCAoIWRvd25fZmxhZyAmJiBj dXJfYmFzZSA8IGltYWdlX2Jhc2UpKQorCSAgICB7CisJICAgICAgaW1nX2luZm9fbGlzdFtp XS5iYXNlID0gMDsKKwkgICAgICBpZiAodmVyYm9zZSkKKwkJZnByaW50ZiAoc3RkZXJyLCAi cmViYXNpbmcgJXMgYmVjYXVzZSBpdCdzIGJhc2UgYWRkcmVzcyBpcyBvdXRzaWRlIHRoZSAi CisJCQkgImV4cGVjdGVkIGFyZWFcbiIsIGltZ19pbmZvX2xpc3RbaV0ubmFtZSk7CisJICAg IH0KKwkgIC8qIE1ha2Ugc3VyZSBhbGwgRExMcyB3aXRoIGJhc2UgYWRkcmVzcyAwIGhhdmUg dGhlIG5lZWRzX3JlYmFzaW5nCisJICAgICBmbGFnIHNldC4gKi8KKwkgIGlmIChpbWdfaW5m b19saXN0W2ldLmJhc2UgPT0gMCkKKwkgICAgaW1nX2luZm9fbGlzdFtpXS5mbGFnLm5lZWRz X3JlYmFzaW5nID0gMTsKKwkgIC8qIE9ubHkgY2hlY2sgZm9yIHdyaXRhYmlsaXR5IGlmIGZp bGUgbmVlZHMgcmViYXNpbmcgdG8ga2VlcAorCSAgICAgQ29tcGFjdCBPUyBjb21wcmVzc2lv biBvZiB1bmNoYW5nZWQgZmlsZXMuICBSZXZlcnQgcmViYXNlCisJICAgICBkZWNpc2lvbiBp ZiBub3Qgd3JpdGVhYmxlLiAqLworCSAgaWYgKGltZ19pbmZvX2xpc3RbaV0uZmxhZy5uZWVk c19yZWJhc2luZworCSAgICAgICYmIHNldF9jYW5ub3RfcmViYXNlICgmaW1nX2luZm9fbGlz dFtpXSkpCisJICAgIHsKKwkgICAgICBpbWdfaW5mb19saXN0W2ldLmZsYWcubmVlZHNfcmVi YXNpbmcgPSAwOworCSAgICAgIGltZ19pbmZvX2xpc3RbaV0uYmFzZSA9IGN1cl9iYXNlX29y aWc7CisJICAgICAgaWYgKHZlcmJvc2UpCisJCWZwcmludGYgKHN0ZGVyciwgInJlYmFzaW5n ICVzIGRlZmVycmVkIGJlY2F1c2UgZmlsZSBpcyBub3Qgd3JpdGFibGVcbiIsCisJCQkgaW1n X2luZm9fbGlzdFtpXS5uYW1lKTsKKwkgICAgICAvKiBMaXN0IGlzIHBvc3NpYmx5IG5vIGxv bmdlciBzb3J0ZWQgd2hpY2ggY291bGQgcmVzdWx0IGluIGZhbHNlCisJICAgICAgICAgbmVn YXRpdmUgcmViYXNlIGRlY2lzaW9ucy4gIEV4aXQgbG9vcCBhbmQgcmVzdGFydCBpdCB3aXRo CisJCSBuZXdseSBzb3J0ZWQgbGlzdC4gIFRoaXMgd2lsbCBhbHNvIHNldCB0aGUgb3Zlcmxh cHNbXSBhcnJheQorCQkgZm9yIHRoaXMgRExMIHdoZW4gdGhlIHJlc3RhcnRlZCBsb29wIHZp c2l0cyB0aGUgKHBvc3NpYmx5IG5ldykKKwkJIGluZGV4IG9mIHRoaXMgRExMLiAgSW5maW5p dGUgcmV0cmllcyBjb3VsZCBub3Qgb2NjdXIgYmVjYXVzZQorCQkgZWFjaCB0dXJuIHNldHMg YW5vdGhlciBjYW5ub3RfcmViYXNlIGZsYWcuICovCisJICAgICAgc29ydGVkID0gRkFMU0U7 CisJICAgIH0KKwkgIC8qIFVuY29uZGl0aW9uYWxseSBvdmVyd3JpdGUgb2xkIHdpdGggbmV3 IHNpemUuICovCisJICBpbWdfaW5mb19saXN0W2ldLnNpemUgPSBjdXJfc2l6ZTsKKwkgIGlt Z19pbmZvX2xpc3RbaV0uc2xvdF9zaXplID0gc2xvdF9zaXplOwogCX0KLSAgICAgIC8qIFVu Y29uZGl0aW9uYWxseSBvdmVyd3JpdGUgb2xkIHdpdGggbmV3IHNpemUuICovCi0gICAgICBp bWdfaW5mb19saXN0W2ldLnNpemUgPSBjdXJfc2l6ZTsKLSAgICAgIGltZ19pbmZvX2xpc3Rb aV0uc2xvdF9zaXplID0gc2xvdF9zaXplOwogICAgIH0KICAgLyogVGhlIHJlbWFpbmRlciBv ZiB0aGUgZnVuY3Rpb24gZXhwZWN0cyBpbWdfaW5mb19zaXplIHRvIGJlID4gMC4gKi8KICAg aWYgKGltZ19pbmZvX3NpemUgPT0gMCkKLS0gCjIuMzcuMQoK --------------1DF830DFEC80DA26385009A7--