[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--