[PATCH v2] x86: Check invalid GOT/PLT/TLS relocations
"H.J. Lu" <[email protected]> Fri, 31 Jul 2026 05:54:52 +0800
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <CAMe9rOpKY3=DZOqAT8G9hn_mio3Gpf0GGmQ_5gzrN3MzvbnPnQ@mail.gmail.com> |
--00000000000071e1e50657db21f5 Content-Type: text/plain; charset="UTF-8" 1. Since non-alloc sections aren't checked for TLS, GOT and PLT usages, relocate_section should issue error for TLS, GOT and PLT relocations in non-alloc and non-debugging sections. 2. Since TLS relocations must be against thread local symbols, scan_relocs should issue an error for TLS relocation against non-thread local symbol. PR ld/34444 PR ld/34448 * elf32-i386.c (elf_i386_tls_transition): Replace _bfd_x86_elf_link_report_tls_invalid_section_error with _bfd_x86_elf_link_report_error. (elf_i386_scan_relocs): Issue an error for TLS relocation against non-thread local symbol. (elf_i386_relocate_section): Issue error for TLS, GOT and PLT relocations in non-alloc and non-debugging sections. * elf64-x86-64.c (elf_x86_64_tls_transition): Replace _bfd_x86_elf_link_report_tls_invalid_section_error with _bfd_x86_elf_link_report_error. (elf_x86_64_scan_relocs): Issue an error for TLS relocation against non-thread local symbol. * elfxx-x86.c (_bfd_x86_elf_link_report_tls_invalid_section_error): Renamed to ... (_bfd_x86_elf_link_report_error): This. Add an argument for link error type and handle it. * elfxx-x86.h (elf_x86_error_type): New enum. (_bfd_x86_elf_link_report_tls_invalid_section_error): Renamed to ... (_bfd_x86_elf_link_report_error): This. Add an argument of enum elf_x86_error_type. -- H.J. --00000000000071e1e50657db21f5 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-x86-Check-invalid-GOT-PLT-TLS-relocations.patch" Content-Disposition: attachment; filename="v2-0001-x86-Check-invalid-GOT-PLT-TLS-relocations.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ms81wf260> X-Attachment-Id: f_ms81wf260 RnJvbSAzMzg1YmM3YTM1MTFkMWM5MjBhNzI4NjAxMGNiNjY2OTZiY2UyYzM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFRodSwgMzAgSnVsIDIwMjYgMTM6NDM6NTYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYyXSB4ODY6 IENoZWNrIGludmFsaWQgR09UL1BMVC9UTFMgcmVsb2NhdGlvbnMKCjEuIFNpbmNlIG5vbi1hbGxv YyBzZWN0aW9ucyBhcmVuJ3QgY2hlY2tlZCBmb3IgVExTLCBHT1QgYW5kIFBMVCB1c2FnZXMsCnJl bG9jYXRlX3NlY3Rpb24gc2hvdWxkIGlzc3VlIGVycm9yIGZvciBUTFMsIEdPVCBhbmQgUExUIHJl bG9jYXRpb25zIGluCm5vbi1hbGxvYyBhbmQgbm9uLWRlYnVnZ2luZyBzZWN0aW9ucy4KMi4gU2lu Y2UgVExTIHJlbG9jYXRpb25zIG11c3QgYmUgYWdhaW5zdCB0aHJlYWQgbG9jYWwgc3ltYm9scywg c2Nhbl9yZWxvY3MKc2hvdWxkIGlzc3VlIGFuIGVycm9yIGZvciBUTFMgcmVsb2NhdGlvbiBhZ2Fp bnN0IG5vbi10aHJlYWQgbG9jYWwgc3ltYm9sLgoKCVBSIGxkLzM0NDQ0CglQUiBsZC8zNDQ0OAoJ KiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3Rsc190cmFuc2l0aW9uKTogUmVwbGFjZQoJX2JmZF94 ODZfZWxmX2xpbmtfcmVwb3J0X3Rsc19pbnZhbGlkX3NlY3Rpb25fZXJyb3Igd2l0aAoJX2JmZF94 ODZfZWxmX2xpbmtfcmVwb3J0X2Vycm9yLgoJKGVsZl9pMzg2X3NjYW5fcmVsb2NzKTogSXNzdWUg YW4gZXJyb3IgZm9yIFRMUyByZWxvY2F0aW9uIGFnYWluc3QKCW5vbi10aHJlYWQgbG9jYWwgc3lt Ym9sLgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBJc3N1ZSBlcnJvciBmb3IgVExTLCBH T1QgYW5kIFBMVAoJcmVsb2NhdGlvbnMgaW4gbm9uLWFsbG9jIGFuZCBub24tZGVidWdnaW5nIHNl Y3Rpb25zLgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmX3g4Nl82NF90bHNfdHJhbnNpdGlvbik6IFJl cGxhY2UKCV9iZmRfeDg2X2VsZl9saW5rX3JlcG9ydF90bHNfaW52YWxpZF9zZWN0aW9uX2Vycm9y IHdpdGgKCV9iZmRfeDg2X2VsZl9saW5rX3JlcG9ydF9lcnJvci4KCShlbGZfeDg2XzY0X3NjYW5f cmVsb2NzKTogSXNzdWUgYW4gZXJyb3IgZm9yIFRMUyByZWxvY2F0aW9uCglhZ2FpbnN0IG5vbi10 aHJlYWQgbG9jYWwgc3ltYm9sLgoJKiBlbGZ4eC14ODYuYyAoX2JmZF94ODZfZWxmX2xpbmtfcmVw b3J0X3Rsc19pbnZhbGlkX3NlY3Rpb25fZXJyb3IpOgoJUmVuYW1lZCB0byAuLi4KCShfYmZkX3g4 Nl9lbGZfbGlua19yZXBvcnRfZXJyb3IpOiBUaGlzLiAgQWRkIGFuIGFyZ3VtZW50IGZvcgoJbGlu ayBlcnJvciB0eXBlIGFuZCBoYW5kbGUgaXQuCgkqIGVsZnh4LXg4Ni5oIChlbGZfeDg2X2Vycm9y X3R5cGUpOiBOZXcgZW51bS4KCShfYmZkX3g4Nl9lbGZfbGlua19yZXBvcnRfdGxzX2ludmFsaWRf c2VjdGlvbl9lcnJvcik6IFJlbmFtZWQKCXRvIC4uLgoJKF9iZmRfeDg2X2VsZl9saW5rX3JlcG9y dF9lcnJvcik6IFRoaXMuICBBZGQgYW4gYXJndW1lbnQgb2YKCWVudW0gZWxmX3g4Nl9lcnJvcl90 eXBlLgoKU2lnbmVkLW9mZi1ieTogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLS0tCiBi ZmQvZWxmMzItaTM4Ni5jICAgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tCiBiZmQvZWxmNjQteDg2LTY0LmMgfCA1MyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tCiBiZmQvZWxmeHgteDg2LmMgICAgfCA1MyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBiZmQvZWxmeHgteDg2Lmgg ICAgfCAxMSArKysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCAy MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9iZmQvZWxmMzItaTM4Ni5jIGIvYmZkL2VsZjMy LWkzODYuYwppbmRleCBhZTkyNzZjZmYwNi4uOGFkNWNiNGUzNTQgMTAwNjQ0Ci0tLSBhL2JmZC9l bGYzMi1pMzg2LmMKKysrIGIvYmZkL2VsZjMyLWkzODYuYwpAQCAtMTE3NSw4ICsxMTc1LDggQEAg ZWxmX2kzODZfdGxzX3RyYW5zaXRpb24gKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBiZmQg KmFiZmQsCiAgICAgICAgfHwgKHNlYy0+ZmxhZ3MgJiBTRUNfQ09ERSkgPT0gMCkpCiAgICAgewog ICAgICAgcmVsb2NfaG93dG9fdHlwZSAqaG93dG8gPSBlbGZfaTM4Nl9ydHlwZV90b19ob3d0byAo ZnJvbV90eXBlKTsKLSAgICAgIF9iZmRfeDg2X2VsZl9saW5rX3JlcG9ydF90bHNfaW52YWxpZF9z ZWN0aW9uX2Vycm9yCi0JKGFiZmQsIHNlYywgc3ltdGFiX2hkciwgaCwgc3ltLCBob3d0byk7Cisg ICAgICBfYmZkX3g4Nl9lbGZfbGlua19yZXBvcnRfZXJyb3IgKGFiZmQsIHNlYywgc3ltdGFiX2hk ciwgaCwgc3ltLAorCQkJCSAgICAgIGhvd3RvLCBlbGZfeDg2X2Vycm9yX3Rscyk7CiAgICAgICBy ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNzQ5LDExICsxNzQ5LDE1IEBAIGVsZl9pMzg2X3Nj YW5fcmVsb2NzIChiZmQgKmFiZmQsCiAKIAkgICAgaWYgKHRsc190eXBlID49IEdPVF9UTFNfR0QK IAkJJiYgdGxzX3R5cGUgPD0gR09UX1RMU19HREVTQwotCQkmJiAoZWxmX3NlY3Rpb25fdHlwZSAo c2VjKSAhPSBTSFRfUFJPR0JJVFMKKwkJJiYgKChoICE9IE5VTEwKKwkJICAgICA/IGgtPnR5cGUg IT0gU1RUX1RMUworCQkgICAgIDogRUxGX1NUX1RZUEUgKGlzeW0tPnN0X2luZm8pICE9IFNUVF9U TFMpCisJCSAgICB8fCBlbGZfc2VjdGlvbl90eXBlIChzZWMpICE9IFNIVF9QUk9HQklUUwogCQkg ICAgfHwgKHNlYy0+ZmxhZ3MgJiBTRUNfQ09ERSkgPT0gMCkpCiAJICAgICAgewotCQlfYmZkX3g4 Nl9lbGZfbGlua19yZXBvcnRfdGxzX2ludmFsaWRfc2VjdGlvbl9lcnJvcgotCQkgIChhYmZkLCBz ZWMsIHN5bXRhYl9oZHIsIGgsIGlzeW0sIGhvd3RvKTsKKwkJX2JmZF94ODZfZWxmX2xpbmtfcmVw b3J0X2Vycm9yIChhYmZkLCBzZWMsIHN5bXRhYl9oZHIsCisJCQkJCQloLCBpc3ltLCBob3d0bywK KwkJCQkJCWVsZl94ODZfZXJyb3JfdGxzKTsKIAkJZ290byBlcnJvcl9yZXR1cm47CiAJICAgICAg fQogCkBAIC0yNTg1LDYgKzI1ODksMTggQEAgZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiAoc3Ry dWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJewogCWNhc2UgUl8zODZfR09UMzJYOgogCWNhc2Ug Ul8zODZfR09UMzI6CisJICAvKiBTaW5jZSB3ZSBkb24ndCBhbGxvdyBub24tYWxsb2NlZCBzZWN0 aW9ucyB0byBjcmVhdGUgR09UL1BMVAorCSAgICAgZW50cmllcywgaXNzdWUgYW4gZXJyb3IgaWYg YSBub24tYWxsb2NlZCBzZWN0aW9uIHJlZmVyZW5jZXMKKwkgICAgIEdPVC4gICovCisJICBpZiAo KGlucHV0X3NlY3Rpb24tPmZsYWdzICYgKFNFQ19BTExPQyB8IFNFQ19ERUJVR0dJTkcpKSA9PSAw KQorCSAgICB7CisgIG5vbl9hbGxvY19lcnJvcjoKKwkgICAgICBfYmZkX3g4Nl9lbGZfbGlua19y ZXBvcnRfZXJyb3IgKGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKKwkJCQkJICAgICAgc3ltdGFi X2hkciwgaCwgc3ltLCBob3d0bywKKwkJCQkJICAgICAgZWxmX3g4Nl9lcnJvcl9ub25fYWxsb2Mp OworCSAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCiAJICAvKiBSZWxvY2F0aW9uIGlzIHRv IHRoZSBlbnRyeSBmb3IgdGhpcyBzeW1ib2wgaW4gdGhlIGdsb2JhbAogCSAgICAgb2Zmc2V0IHRh YmxlLiAgKi8KIAkgIGlmIChodGFiLT5lbGYuc2dvdCA9PSBOVUxMKQpAQCAtMjcxNyw2ICsyNzMz LDkgQEAgZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiAoc3RydWN0IGJmZF9saW5rX2luZm8gKmlu Zm8sCiAJICBicmVhazsKIAogCWNhc2UgUl8zODZfR09UT0ZGOgorCSAgaWYgKChpbnB1dF9zZWN0 aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBTRUNfREVCVUdHSU5HKSkgPT0gMCkKKwkgICAgZ290 byBub25fYWxsb2NfZXJyb3I7CisKIAkgIC8qIFJlbG9jYXRpb24gaXMgcmVsYXRpdmUgdG8gdGhl IHN0YXJ0IG9mIHRoZSBnbG9iYWwgb2Zmc2V0CiAJICAgICB0YWJsZS4gICovCiAKQEAgLTI3ODEs NiArMjgwMCw5IEBAIGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24gKHN0cnVjdCBiZmRfbGlua19p bmZvICppbmZvLAogCSAgYnJlYWs7CiAKIAljYXNlIFJfMzg2X0dPVFBDOgorCSAgaWYgKChpbnB1 dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBTRUNfREVCVUdHSU5HKSkgPT0gMCkKKwkg ICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkgIC8qIFVzZSBnbG9iYWwgb2Zmc2V0IHRhYmxl IGFzIHN5bWJvbCB2YWx1ZS4gICovCiAJICByZWxvY2F0aW9uID0gaHRhYi0+ZWxmLnNnb3RwbHQt Pm91dHB1dF9zZWN0aW9uLT52bWEKIAkJICAgICAgICsgaHRhYi0+ZWxmLnNnb3RwbHQtPm91dHB1 dF9vZmZzZXQ7CkBAIC0yNzg4LDYgKzI4MTAsOSBAQCBlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9u IChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKIAkgIGJyZWFrOwogCiAJY2FzZSBSXzM4Nl9Q TFQzMjoKKwkgIGlmICgoaW5wdXRfc2VjdGlvbi0+ZmxhZ3MgJiAoU0VDX0FMTE9DIHwgU0VDX0RF QlVHR0lORykpID09IDApCisJICAgIGdvdG8gbm9uX2FsbG9jX2Vycm9yOworCiAJICAvKiBSZWxv Y2F0aW9uIGlzIHRvIHRoZSBlbnRyeSBmb3IgdGhpcyBzeW1ib2wgaW4gdGhlCiAJICAgICBwcm9j ZWR1cmUgbGlua2FnZSB0YWJsZS4gICovCiAKQEAgLTI5MTUsNiArMjk0MCw5IEBAIGVsZl9pMzg2 X3JlbG9jYXRlX3NlY3Rpb24gKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAogCSAgYnJlYWs7 CiAKIAljYXNlIFJfMzg2X1RMU19JRToKKwkgIGlmICgoaW5wdXRfc2VjdGlvbi0+ZmxhZ3MgJiAo U0VDX0FMTE9DIHwgU0VDX0RFQlVHR0lORykpID09IDApCisJICAgIGdvdG8gbm9uX2FsbG9jX2Vy cm9yOworCiAJICBpZiAoIWJmZF9saW5rX2V4ZWN1dGFibGUgKGluZm8pKQogCSAgICB7CiAJICAg ICAgRWxmX0ludGVybmFsX1JlbGEgb3V0cmVsOwpAQCAtMjk0Miw2ICsyOTcwLDkgQEAgZWxmX2kz ODZfcmVsb2NhdGVfc2VjdGlvbiAoc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJY2FzZSBS XzM4Nl9UTFNfREVTQ19DQUxMOgogCWNhc2UgUl8zODZfVExTX0lFXzMyOgogCWNhc2UgUl8zODZf VExTX0dPVElFOgorCSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBT RUNfREVCVUdHSU5HKSkgPT0gMCkKKwkgICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkgIHRs c190eXBlID0gR09UX1VOS05PV047CiAJICBpZiAoaCA9PSBOVUxMICYmIGxvY2FsX2dvdF9vZmZz ZXRzKQogCSAgICB0bHNfdHlwZSA9IGVsZl94ODZfbG9jYWxfZ290X3Rsc190eXBlIChpbnB1dF9i ZmQpIFtyX3N5bW5keF07CkBAIC0zNDQwLDYgKzM0NzEsOSBAQCBlbGZfaTM4Nl9yZWxvY2F0ZV9z ZWN0aW9uIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKIAkgIGJyZWFrOwogCiAJY2FzZSBS XzM4Nl9UTFNfTERNOgorCSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0Mg fCBTRUNfREVCVUdHSU5HKSkgPT0gMCkKKwkgICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkg IGlmICghIGVsZl9pMzg2X3Rsc190cmFuc2l0aW9uIChpbmZvLCBpbnB1dF9iZmQsCiAJCQkJCSBp bnB1dF9zZWN0aW9uLCBjb250ZW50cywKIAkJCQkJIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCkBA IC0zNTEyLDYgKzM1NDYsOSBAQCBlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uIChzdHJ1Y3QgYmZk X2xpbmtfaW5mbyAqaW5mbywKIAkgIGJyZWFrOwogCiAJY2FzZSBSXzM4Nl9UTFNfTERPXzMyOgor CSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBTRUNfREVCVUdHSU5H KSkgPT0gMCkKKwkgICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkgIGlmICghYmZkX2xpbmtf ZXhlY3V0YWJsZSAoaW5mbykKIAkgICAgICB8fCAoaW5wdXRfc2VjdGlvbi0+ZmxhZ3MgJiBTRUNf Q09ERSkgPT0gMCkKIAkgICAgcmVsb2NhdGlvbiAtPSBfYmZkX3g4Nl9lbGZfZHRwb2ZmX2Jhc2Ug KGluZm8pOwpAQCAtMzUyMiw2ICszNTU5LDkgQEAgZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiAo c3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAKIAljYXNlIFJfMzg2X1RMU19MRV8zMjoKIAlj YXNlIFJfMzg2X1RMU19MRToKKwkgIGlmICgoaW5wdXRfc2VjdGlvbi0+ZmxhZ3MgJiAoU0VDX0FM TE9DIHwgU0VDX0RFQlVHR0lORykpID09IDApCisJICAgIGdvdG8gbm9uX2FsbG9jX2Vycm9yOwor CiAJICBpZiAoIWJmZF9saW5rX2V4ZWN1dGFibGUgKGluZm8pKQogCSAgICB7CiAJICAgICAgRWxm X0ludGVybmFsX1JlbGEgb3V0cmVsOwpkaWZmIC0tZ2l0IGEvYmZkL2VsZjY0LXg4Ni02NC5jIGIv YmZkL2VsZjY0LXg4Ni02NC5jCmluZGV4IDM3N2Y3NmQ3YWVhLi4zZDg1ODg2YTNkNSAxMDA2NDQK LS0tIGEvYmZkL2VsZjY0LXg4Ni02NC5jCisrKyBiL2JmZC9lbGY2NC14ODYtNjQuYwpAQCAtMTYz Myw4ICsxNjMzLDggQEAgZWxmX3g4Nl82NF90bHNfdHJhbnNpdGlvbiAoc3RydWN0IGJmZF9saW5r X2luZm8gKmluZm8sIGJmZCAqYWJmZCwKICAgICB7CiAgICAgICByZWxvY19ob3d0b190eXBlICpo b3d0byA9IGVsZl94ODZfNjRfcnR5cGVfdG9faG93dG8gKGFiZmQsCiAJCQkJCQkJICAgZnJvbV90 eXBlKTsKLSAgICAgIF9iZmRfeDg2X2VsZl9saW5rX3JlcG9ydF90bHNfaW52YWxpZF9zZWN0aW9u X2Vycm9yCi0JKGFiZmQsIHNlYywgc3ltdGFiX2hkciwgaCwgc3ltLCBob3d0byk7CisgICAgICBf YmZkX3g4Nl9lbGZfbGlua19yZXBvcnRfZXJyb3IgKGFiZmQsIHNlYywgc3ltdGFiX2hkciwgaCwK KwkJCQkgICAgICBzeW0sIGhvd3RvLCBlbGZfeDg2X2Vycm9yX3Rscyk7CiAgICAgICByZXR1cm4g ZmFsc2U7CiAgICAgfQogCkBAIC0yNzcyLDExICsyNzcyLDE1IEBAIG5lZWRfZ290OgogCiAJICAg IGlmICh0bHNfdHlwZSA+PSBHT1RfVExTX0dECiAJCSYmIHRsc190eXBlIDw9IEdPVF9UTFNfR0RF U0MKLQkJJiYgKGVsZl9zZWN0aW9uX3R5cGUgKHNlYykgIT0gU0hUX1BST0dCSVRTCisJCSYmICgo aCAhPSBOVUxMCisJCSAgICAgPyBoLT50eXBlICE9IFNUVF9UTFMKKwkJICAgICA6IEVMRl9TVF9U WVBFIChpc3ltLT5zdF9pbmZvKSAhPSBTVFRfVExTKQorCQkgICAgfHwgZWxmX3NlY3Rpb25fdHlw ZSAoc2VjKSAhPSBTSFRfUFJPR0JJVFMKIAkJICAgIHx8IChzZWMtPmZsYWdzICYgU0VDX0NPREUp ID09IDApKQogCSAgICAgIHsKLQkJX2JmZF94ODZfZWxmX2xpbmtfcmVwb3J0X3Rsc19pbnZhbGlk X3NlY3Rpb25fZXJyb3IKLQkJICAoYWJmZCwgc2VjLCBzeW10YWJfaGRyLCBoLCBpc3ltLCBob3d0 byk7CisJCV9iZmRfeDg2X2VsZl9saW5rX3JlcG9ydF9lcnJvciAoYWJmZCwgc2VjLCBzeW10YWJf aGRyLAorCQkJCQkJaCwgaXN5bSwgaG93dG8sCisJCQkJCQllbGZfeDg2X2Vycm9yX3Rscyk7CiAJ CWdvdG8gZXJyb3JfcmV0dXJuOwogCSAgICAgIH0KIApAQCAtMzYwMiw2ICszNjA2LDE4IEBAIGVs Zl94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbiAoc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJ Y2FzZSBSX1g4Nl82NF9HT1RQQ1JFTDY0OgogCSAgLyogVXNlIGdsb2JhbCBvZmZzZXQgdGFibGUg ZW50cnkgYXMgc3ltYm9sIHZhbHVlLiAgKi8KIAljYXNlIFJfWDg2XzY0X0dPVFBMVDY0OgorCSAg LyogU2luY2Ugd2UgZG9uJ3QgYWxsb3cgbm9uLWFsbG9jZWQgc2VjdGlvbnMgdG8gY3JlYXRlIEdP VC9QTFQKKwkgICAgIGVudHJpZXMsIGlzc3VlIGFuIGVycm9yIGlmIGEgbm9uLWFsbG9jZWQgc2Vj dGlvbiByZWZlcmVuY2VzCisJICAgICBHT1QuICAqLworCSAgaWYgKChpbnB1dF9zZWN0aW9uLT5m bGFncyAmIChTRUNfQUxMT0MgfCBTRUNfREVCVUdHSU5HKSkgPT0gMCkKKwkgICAgeworICBub25f YWxsb2NfZXJyb3I6CisJICAgICAgX2JmZF94ODZfZWxmX2xpbmtfcmVwb3J0X2Vycm9yIChpbnB1 dF9iZmQsIGlucHV0X3NlY3Rpb24sCisJCQkJCSAgICAgIHN5bXRhYl9oZHIsIGgsIHN5bSwgaG93 dG8sCisJCQkJCSAgICAgIGVsZl94ODZfZXJyb3Jfbm9uX2FsbG9jKTsKKwkgICAgICByZXR1cm4g ZmFsc2U7CisJICAgIH0KKwogCSAgLyogVGhpcyBpcyBvYnNvbGV0ZSBhbmQgdHJlYXRlZCB0aGUg c2FtZSBhcyBHT1Q2NC4gICovCiAJICBiYXNlX2dvdCA9IGh0YWItPmVsZi5zZ290OwogCkBAIC0z NzQwLDYgKzM3NTYsOSBAQCBlbGZfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24gKHN0cnVjdCBiZmRf bGlua19pbmZvICppbmZvLAogCSAgYnJlYWs7CiAKIAljYXNlIFJfWDg2XzY0X0dPVE9GRjY0Ogor CSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBTRUNfREVCVUdHSU5H KSkgPT0gMCkKKwkgICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkgIC8qIFJlbG9jYXRpb24g aXMgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBnbG9iYWwgb2Zmc2V0CiAJICAgICB0YWJs ZS4gICovCiAKQEAgLTM4MDYsNiArMzgyNSw5IEBAIGVsZl94ODZfNjRfcmVsb2NhdGVfc2VjdGlv biAoc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAKIAljYXNlIFJfWDg2XzY0X0dPVFBDMzI6 CiAJY2FzZSBSX1g4Nl82NF9HT1RQQzY0OgorCSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAm IChTRUNfQUxMT0MgfCBTRUNfREVCVUdHSU5HKSkgPT0gMCkKKwkgICAgZ290byBub25fYWxsb2Nf ZXJyb3I7CisKIAkgIC8qIFVzZSBnbG9iYWwgb2Zmc2V0IHRhYmxlIGFzIHN5bWJvbCB2YWx1ZS4g ICovCiAJICByZWxvY2F0aW9uID0gaHRhYi0+ZWxmLnNnb3RwbHQtPm91dHB1dF9zZWN0aW9uLT52 bWEKIAkJICAgICAgICsgaHRhYi0+ZWxmLnNnb3RwbHQtPm91dHB1dF9vZmZzZXQ7CkBAIC0zODEz LDYgKzM4MzUsOSBAQCBlbGZfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24gKHN0cnVjdCBiZmRfbGlu a19pbmZvICppbmZvLAogCSAgYnJlYWs7CiAKIAljYXNlIFJfWDg2XzY0X1BMVE9GRjY0OgorCSAg aWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBTRUNfREVCVUdHSU5HKSkg PT0gMCkKKwkgICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkgIC8qIFJlbG9jYXRpb24gaXMg UExUIGVudHJ5IHJlbGF0aXZlIHRvIEdPVC4gIEZvciBsb2NhbAogCSAgICAgc3ltYm9scyBpdCdz IHRoZSBzeW1ib2wgaXRzZWxmIHJlbGF0aXZlIHRvIEdPVC4gICovCiAJICBpZiAoaCAhPSBOVUxM CkBAIC0zODQ5LDYgKzM4NzQsOSBAQCBlbGZfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24gKHN0cnVj dCBiZmRfbGlua19pbmZvICppbmZvLAogCSAgYnJlYWs7CiAKIAljYXNlIFJfWDg2XzY0X1BMVDMy OgorCSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBTRUNfREVCVUdH SU5HKSkgPT0gMCkKKwkgICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkgIC8qIFJlbG9jYXRp b24gaXMgdG8gdGhlIGVudHJ5IGZvciB0aGlzIHN5bWJvbCBpbiB0aGUKIAkgICAgIHByb2NlZHVy ZSBsaW5rYWdlIHRhYmxlLiAgKi8KIApAQCAtNDE1Nyw2ICs0MTg1LDkgQEAgZWxmX3g4Nl82NF9y ZWxvY2F0ZV9zZWN0aW9uIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKIAljYXNlIFJfWDg2 XzY0X0NPREVfNF9HT1RUUE9GRjoKIAljYXNlIFJfWDg2XzY0X0NPREVfNV9HT1RUUE9GRjoKIAlj YXNlIFJfWDg2XzY0X0NPREVfNl9HT1RUUE9GRjoKKwkgIGlmICgoaW5wdXRfc2VjdGlvbi0+Zmxh Z3MgJiAoU0VDX0FMTE9DIHwgU0VDX0RFQlVHR0lORykpID09IDApCisJICAgIGdvdG8gbm9uX2Fs bG9jX2Vycm9yOworCiAJICB0bHNfdHlwZSA9IEdPVF9VTktOT1dOOwogCSAgaWYgKGggPT0gTlVM TCAmJiBsb2NhbF9nb3Rfb2Zmc2V0cykKIAkgICAgdGxzX3R5cGUgPSBlbGZfeDg2X2xvY2FsX2dv dF90bHNfdHlwZSAoaW5wdXRfYmZkKSBbcl9zeW1uZHhdOwpAQCAtNDg4Myw2ICs0OTE0LDkgQEAg ZWxmX3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywK IAkgIGJyZWFrOwogCiAJY2FzZSBSX1g4Nl82NF9UTFNMRDoKKwkgIGlmICgoaW5wdXRfc2VjdGlv bi0+ZmxhZ3MgJiAoU0VDX0FMTE9DIHwgU0VDX0RFQlVHR0lORykpID09IDApCisJICAgIGdvdG8g bm9uX2FsbG9jX2Vycm9yOworCiAJICBpZiAoISBlbGZfeDg2XzY0X3Rsc190cmFuc2l0aW9uIChp bmZvLCBpbnB1dF9iZmQsCiAJCQkJCSAgIGlucHV0X3NlY3Rpb24sIGNvbnRlbnRzLAogCQkJCQkg ICBzeW10YWJfaGRyLCBzeW1faGFzaGVzLApAQCAtNTAxMiw2ICs1MDQ2LDkgQEAgZWxmX3g4Nl82 NF9yZWxvY2F0ZV9zZWN0aW9uIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKIAkgIGJyZWFr OwogCiAJY2FzZSBSX1g4Nl82NF9EVFBPRkYzMjoKKwkgIGlmICgoaW5wdXRfc2VjdGlvbi0+Zmxh Z3MgJiAoU0VDX0FMTE9DIHwgU0VDX0RFQlVHR0lORykpID09IDApCisJICAgIGdvdG8gbm9uX2Fs bG9jX2Vycm9yOworCiAJICBpZiAoIWJmZF9saW5rX2V4ZWN1dGFibGUgKGluZm8pCiAJICAgICAg fHwgKGlucHV0X3NlY3Rpb24tPmZsYWdzICYgU0VDX0NPREUpID09IDApCiAJICAgIHJlbG9jYXRp b24gLT0gX2JmZF94ODZfZWxmX2R0cG9mZl9iYXNlIChpbmZvKTsKQEAgLTUwMjEsMTEgKzUwNTgs MTcgQEAgZWxmX3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAq aW5mbywKIAogCWNhc2UgUl9YODZfNjRfVFBPRkYzMjoKIAljYXNlIFJfWDg2XzY0X1RQT0ZGNjQ6 CisJICBpZiAoKGlucHV0X3NlY3Rpb24tPmZsYWdzICYgKFNFQ19BTExPQyB8IFNFQ19ERUJVR0dJ TkcpKSA9PSAwKQorCSAgICBnb3RvIG5vbl9hbGxvY19lcnJvcjsKKwogCSAgQkZEX0FTU0VSVCAo YmZkX2xpbmtfZXhlY3V0YWJsZSAoaW5mbykpOwogCSAgcmVsb2NhdGlvbiA9IGVsZl94ODZfNjRf dHBvZmYgKGluZm8sIHJlbG9jYXRpb24pOwogCSAgYnJlYWs7CiAKIAljYXNlIFJfWDg2XzY0X0RU UE9GRjY0OgorCSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIChTRUNfQUxMT0MgfCBTRUNf REVCVUdHSU5HKSkgPT0gMCkKKwkgICAgZ290byBub25fYWxsb2NfZXJyb3I7CisKIAkgIEJGRF9B U1NFUlQgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIFNFQ19DT0RFKSA9PSAwKTsKIAkgIHJlbG9j YXRpb24gLT0gX2JmZF94ODZfZWxmX2R0cG9mZl9iYXNlIChpbmZvKTsKIAkgIGJyZWFrOwpkaWZm IC0tZ2l0IGEvYmZkL2VsZnh4LXg4Ni5jIGIvYmZkL2VsZnh4LXg4Ni5jCmluZGV4IDBmNzllZjU4 ZjAyLi5lMDhmZWM1MjYzNiAxMDA2NDQKLS0tIGEvYmZkL2VsZnh4LXg4Ni5jCisrKyBiL2JmZC9l bGZ4eC14ODYuYwpAQCAtMzM2OSwyMyArMzM2OSw1OCBAQCBfYmZkX3g4Nl9lbGZfbGlua19yZXBv cnRfdGxzX3RyYW5zaXRpb25fZXJyb3IKICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92 YWx1ZSk7CiB9CiAKLS8qIFJlcG9ydCBUTFMgaW52YWxpZCBzZWN0aW9uIGVycm9yLiAgKi8KKy8q IFJlcG9ydCBsaW5rIGVycm9yLiAgKi8KIAogdm9pZAotX2JmZF94ODZfZWxmX2xpbmtfcmVwb3J0 X3Rsc19pbnZhbGlkX3NlY3Rpb25fZXJyb3IKK19iZmRfeDg2X2VsZl9saW5rX3JlcG9ydF9lcnJv cgogICAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFi X2hkciwKICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoLCBFbGZfSW50ZXJuYWxfU3lt ICpzeW0sCi0gICByZWxvY19ob3d0b190eXBlICpob3d0bykKKyAgIHJlbG9jX2hvd3RvX3R5cGUg Kmhvd3RvLCBlbnVtIGVsZl94ODZfZXJyb3JfdHlwZSB0eXBlKQogewogICBjb25zdCBjaGFyICpu YW1lOworICBib29sIG5vbl90aHJlYWRfbG9jYWw7CiAgIGlmIChoKQotICAgIG5hbWUgPSBoLT5y b290LnJvb3Quc3RyaW5nOworICAgIHsKKyAgICAgIG5vbl90aHJlYWRfbG9jYWwgPSBoLT50eXBl ICE9IFNUVF9UTFM7CisgICAgICBuYW1lID0gaC0+cm9vdC5yb290LnN0cmluZzsKKyAgICB9CiAg IGVsc2UKLSAgICBuYW1lID0gYmZkX2VsZl9zeW1fbmFtZSAoYWJmZCwgc3ltdGFiX2hkciwgc3lt LCBOVUxMKTsKLSAgX2JmZF9lcnJvcl9oYW5kbGVyCi0gICAgLyogeGdldHRleHQ6Yy1mb3JtYXQg Ki8KLSAgICAoXygiJXBCOiByZWxvY2F0aW9uICVzIGFnYWluc3QgdGhyZWFkIGxvY2FsIHN5bWJv bCBgJXMnIGluICIKLSAgICAgICAiaW52YWxpZCBzZWN0aW9uIGAlcEEnIiksIGFiZmQsIGhvd3Rv LT5uYW1lLCBuYW1lLCBzZWMpOworICAgIHsKKyAgICAgIG5vbl90aHJlYWRfbG9jYWwgPSBFTEZf U1RfVFlQRSAoc3ltLT5zdF9pbmZvKSAhPSBTVFRfVExTOworICAgICAgbmFtZSA9IGJmZF9lbGZf c3ltX25hbWUgKGFiZmQsIHN5bXRhYl9oZHIsIHN5bSwgTlVMTCk7CisgICAgICBpZiAobmFtZVsw XSA9PSAnXDAnKQorCW5hbWUgPSAiKnVua25vd24qIjsKKyAgICB9CisKKyAgc3dpdGNoICh0eXBl KQorICAgIHsKKyAgICBjYXNlIGVsZl94ODZfZXJyb3JfdGxzOgorICAgICAgaWYgKG5vbl90aHJl YWRfbG9jYWwpCisJX2JmZF9lcnJvcl9oYW5kbGVyCisJICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAq LworCSAgKF8oIiVwQjogcmVsb2NhdGlvbiAlcyBhZ2FpbnN0IG5vbi10aHJlYWQgbG9jYWwgc3lt Ym9sICIKKwkgICAgICJgJXMnIGluIHNlY3Rpb24gYCVwQSciKSwKKwkgICBhYmZkLCBob3d0by0+ bmFtZSwgbmFtZSwgc2VjKTsKKyAgICAgIGVsc2UKKwlfYmZkX2Vycm9yX2hhbmRsZXIKKwkgIC8q IHhnZXR0ZXh0OmMtZm9ybWF0ICovCisJICAoXygiJXBCOiByZWxvY2F0aW9uICVzIGFnYWluc3Qg dGhyZWFkIGxvY2FsIHN5bWJvbCBgJXMnIGluICIKKwkgICAgICJpbnZhbGlkIHNlY3Rpb24gYCVw QSciKSwgYWJmZCwgaG93dG8tPm5hbWUsIG5hbWUsIHNlYyk7CisgICAgICBicmVhazsKKworICAg IGNhc2UgZWxmX3g4Nl9lcnJvcl9ub25fYWxsb2M6CisgICAgICBfYmZkX2Vycm9yX2hhbmRsZXIK KwkvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLworCShfKCIlcEI6IHJlbG9jYXRpb24gJXMgYWdhaW5z dCBzeW1ib2wgYCVzJyBpbiBub24tYWxsb2MgIgorCSAgICJzZWN0aW9uIGAlcEEnIiksCisJIGFi ZmQsIGhvd3RvLT5uYW1lLCBuYW1lLCBzZWMpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0 OgorICAgICAgYWJvcnQgKCk7CisgICAgICBicmVhazsKKyAgICB9CisKICAgYmZkX3NldF9lcnJv ciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC14ODYu aCBiL2JmZC9lbGZ4eC14ODYuaAppbmRleCA0OTMyYjJlNDNjNS4uNDMwZDYxZDMwOTcgMTAwNjQ0 Ci0tLSBhL2JmZC9lbGZ4eC14ODYuaAorKysgYi9iZmQvZWxmeHgteDg2LmgKQEAgLTc5NCw2ICs3 OTQsMTIgQEAgZW51bSBlbGZfeDg2X3Rsc19lcnJvcl90eXBlCiAgIGVsZl94ODZfdGxzX2Vycm9y X3llcwogfTsKIAorZW51bSBlbGZfeDg2X2Vycm9yX3R5cGUKK3sKKyAgZWxmX3g4Nl9lcnJvcl90 bHMsCisgIGVsZl94ODZfZXJyb3Jfbm9uX2FsbG9jCit9OworCiAvKiBTZXQgaWYgYSByZWxvY2F0 aW9uIGlzIGNvbnZlcnRlZCBmcm9tIGEgR09UUENSRUwgcmVsb2NhdGlvbi4gICovCiAjZGVmaW5l IFJfWDg2XzY0X2NvbnZlcnRlZF9yZWxvY19iaXQgKDEgPDwgNykKIApAQCAtOTUxLDkgKzk1Nywx MCBAQCBleHRlcm4gdm9pZCBfYmZkX3g4Nl9lbGZfbGlua19yZXBvcnRfdGxzX3RyYW5zaXRpb25f ZXJyb3IKICAgIGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxhICosIGNvbnN0IGNoYXIgKiwgY29uc3Qg Y2hhciAqLAogICAgZW51bSBlbGZfeDg2X3Rsc19lcnJvcl90eXBlKSBBVFRSSUJVVEVfSElEREVO OwogCi1leHRlcm4gdm9pZCBfYmZkX3g4Nl9lbGZfbGlua19yZXBvcnRfdGxzX2ludmFsaWRfc2Vj dGlvbl9lcnJvcgorZXh0ZXJuIHZvaWQgX2JmZF94ODZfZWxmX2xpbmtfcmVwb3J0X2Vycm9yCiAg IChiZmQgKiwgYXNlY3Rpb24gKiwgRWxmX0ludGVybmFsX1NoZHIgKiwgc3RydWN0IGVsZl9saW5r X2hhc2hfZW50cnkgKiwKLSAgIEVsZl9JbnRlcm5hbF9TeW0gKiwgcmVsb2NfaG93dG9fdHlwZSAq KSBBVFRSSUJVVEVfSElEREVOOworICAgRWxmX0ludGVybmFsX1N5bSAqLCByZWxvY19ob3d0b190 eXBlICosCisgICBlbnVtIGVsZl94ODZfZXJyb3JfdHlwZSkgQVRUUklCVVRFX0hJRERFTjsKIAog ZXh0ZXJuIGJvb2wKIF9iZmRfZWxmX3g4Nl9jb3B5X3NwZWNpYWxfc2VjdGlvbl9maWVsZHMKLS0g CjIuNTUuMAoK --00000000000071e1e50657db21f5--