[PATCH 1/3 v2] Provide SSL/TLS min and max protocol configuration options
Simon Horman <[email protected]> Wed, 11 May 2016 09:50:19 +0900
| Newsgroups | gmane.mail.perdition.user |
|---|---|
| Message-ID | <0f9b612d6d071301a212.1462927819@Reginn.isobedori.kobe.vergenet.net> |
QWxsb3cgY29uZmlndXJhdGlvbiBvZiBhIHJhbmdlIG9mIFNTTCBwcm90b2NvbHMgaW5kZXBlbmRl bnRseQpmb3IgYWNjZXB0aW5nIGluY29taW5nIGNvbm5lY3Rpb25zIChsaXN0ZW5pbmcpIGFuZCBt YWtpbmcKb3V0Z29pbmcgY29ubmVjdGlvbnMuCgpUaGUgZGVmYXVsdCBtaW5pbXVtIHZlcnNpb24g aXMgVExTIHYxLjEgd2hpY2ggaGFzIHRoZSBlZmZlY3Qgb2YKZGlzYWJsaW5nIFNTTCB2MyBhbmQg ZWFybGllciBieSBkZWZhdWx0LgoKVGhlIG1pbmltdW0gdmVyc2lvbiBhY2NlcHRlZCBieSB0aGUg b3B0aW9ucyBpcyBTU0wgdjMgYW5kIHRodXMKaXQgaXMgbm90IHBvc3NpYmxlIHRvIGVuYWJsZSBT U0wgdjIuCgpUaGUgZGVmYXVsdCBtYXhpbXVtIHZlcnNpb24gaXMgdG8gdXNlIE9wZW5TU0wncyBk ZWZhdWx0IHZhbHVlLgoKVGhlIG1heGltdW0gdmVyc2lvbiBhY2NlcHRlZCBieSB0aGUgb3B0aW9u cyBpcyBUTFMgdjEuMi4KVGhlIGNvZGUgd2lsbCBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gc3VwcG9y dCBhbnkgbmV3ZXIgdmVyc2lvbnMKb2YgVExTIGFzIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBP cGVuU1NMLgoKQmFzZWQgb24gd29yayBieSBNYXR0aGlhcyBIdW5zdG9jay4KCkNjOiBNYXR0aGlh cyBIdW5zdG9jayA8bWF0dGhpYXMuaHVuc3RvY2tAdHUtaWxtZW5hdS5kZT4KU2lnbmVkLW9mZi1i eTogU2ltb24gSG9ybWFuIDxob3Jtc0B2ZXJnZS5uZXQuYXU+Ci0tLQp2MgoqIEFsbG93IG1heCB2 ZXJzaW9uIG9mICIiIHRvIGJlIHNwZWNpZmllZCBhcyBhbiBvcHRpb24sCiAgdHJhbnNsYXRlIHRo aXMgdG8gTlVMTCB3aGljaCBtZWFucyB0aGF0IE9wZW5TU0wncyBkZWZhdWx0IHdpbGwgYmUgdXNl ZC4KICAiIiBpcyBub3QgYWxsb3dlZCBmb3IgbWluIHZlcnNpb25zIGFzIHdlIHdpc2ggdG8gZW5m b3JjZSBhbgogIGFic29sdXRlIG1pbmltdW0gb2YgU1NMdjMuCgpkaWZmIC1yIDY0MjgwNzBiNDg4 OSAtciAwZjliNjEyZDZkMDcgY29uZmlndXJlLmFjCi0tLSBhL2NvbmZpZ3VyZS5hYwlTdW4gRGVj IDAxIDE3OjI2OjUxIDIwMTMgKzA5MDAKKysrIGIvY29uZmlndXJlLmFjCVdlZCBNYXkgMTEgMDg6 NTc6MjIgMjAxNiArMDkwMApAQCAtMjExLDYgKzIxMSw5IEBACiAKIGlmIHRlc3QgIiRlbmFibGVf c3NsIiA9ICJ5ZXMiOyB0aGVuCiAgICBBQ19ERUZJTkUoV0lUSF9TU0xfU1VQUE9SVCwgMSwgQ29t cGlsZSB3aXRoIFNTTC9UTFMgc3VwcG9ydCkKKyAgIEFDX0NIRUNLX0xJQihzc2wsIFNTTF9DVFhf c2V0X21pbl9wcm90b192ZXJzaW9uKQorICAgQUNfQ0hFQ0tfREVDTFMoW1NTTF9DVFhfc2V0X21p bl9wcm90b192ZXJzaW9uXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPl1dKQor ICAgQUNfQ0hFQ0tfREVDTFMoW1NTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uXSwgW10sIFtd LCBbWyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPl1dKQogZWxzZQogICBzc2xfbGliPSIiCiAgIHNz bF9pbmNsdWRlcz0iIgpkaWZmIC1yIDY0MjgwNzBiNDg4OSAtciAwZjliNjEyZDZkMDcgZXRjL3Bl cmRpdGlvbi9wZXJkaXRpb24uY29uZgotLS0gYS9ldGMvcGVyZGl0aW9uL3BlcmRpdGlvbi5jb25m CVN1biBEZWMgMDEgMTc6MjY6NTEgMjAxMyArMDkwMAorKysgYi9ldGMvcGVyZGl0aW9uL3BlcmRp dGlvbi5jb25mCVdlZCBNYXkgMTEgMDg6NTc6MjIgMjAxNiArMDkwMApAQCAtNDAzLDMgKzQwMywz MCBAQAogIyB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIuCiAjc3NsX25vX2NuX3ZlcmlmeQogCisj IHNzbF9saXN0ZW5fbWluX3Byb3RvX3ZlcnNpb24gUFJPVE9DT0xfVkVSU0lPTjoKKyMgTWluaW11 bSBwZXJtaXRlZCBTU0wvVExTIHByb3RvY29sIHZlcnNpb24gd2hlbiBhY2NlcHRpbmcgaW5jb21p bmcKKyMgY29ubmVjdGlvbnMuCisjIE1heSBub3QgYmUgZW1wdHkgKCIiKS4KKyMgKGRlZmF1bHQg InRsc3YxIikKKyNzc2xfbGlzdGVuX21pbl9wcm90b192ZXJzaW9uICJ0bHN2MSIKKworIyBzc2xf b3V0Z29pbmdfbWluX3Byb3RvX3ZlcnNpb24gUFJPVE9DT0xfVkVSU0lPTjoKKyMgTWluaW11bSBw ZXJtaXRlZCBTU0wvVExTIHByb3RvY29sIHZlcnNpb24gd2hlbiBtYWtpbmcgb3V0Z29pbmcKKyMg Y29ubmVjdGlvbnMuCisjIE1heSBub3QgYmUgZW1wdHkgKCIiKS4KKyMgKGRlZmF1bHQgInRsc3Yx IikKKyNzc2xfb3V0Z29pbmdfbWluX3Byb3RvX3ZlcnNpb24gInRsc3YxIgorCisjIHNzbF9saXN0 ZW5fbWF4X3Byb3RvX3ZlcnNpb24gUFJPVE9DT0xfVkVSU0lPTjoKKyMgTWF4aW11bSBwZXJtaXRl ZCBTU0wvVExTIHByb3RvY29sIHZlcnNpb24gd2hlbiBhY2NlcHRpbmcgaW5jb21heGcKKyMgY29u bmVjdGlvbnMuCisjIElmIGVtcHR5ICgiIikgdGhlbiBvcGVuc3NsJ3MgZGVmYXVsdCB3aWxsIGJl IHVzZWQuCisjIChkZWZhdWx0ICIiKQorI3NzbF9saXN0ZW5fbWF4X3Byb3RvX3ZlcnNpb24gInRs c3YxLjIiCisKKyMgc3NsX291dGdvaW5nX21heF9wcm90b192ZXJzaW9uIFBST1RPQ09MX1ZFUlNJ T046CisjIE1heGltdW0gcGVybWl0ZWQgU1NML1RMUyBwcm90b2NvbCB2ZXJzaW9uIHdoZW4gbWFr aW5nIG91dGdvaW5nCisjIGNvbm5lY3Rpb25zLgorIyBJZiBlbXB0eSAoIiIpIHRoZW4gb3BlbnNz bCdzIGRlZmF1bHQgd2lsbCBiZSB1c2VkLgorIyAoZGVmYXVsdCAiIikKKyNzc2xfb3V0Z29pbmdf bWF4X3Byb3RvX3ZlcnNpb24gInRsc3YxLjIiCmRpZmYgLXIgNjQyODA3MGI0ODg5IC1yIDBmOWI2 MTJkNmQwNyBwZXJkaXRpb24vb3B0aW9ucy5jCi0tLSBhL3BlcmRpdGlvbi9vcHRpb25zLmMJU3Vu IERlYyAwMSAxNzoyNjo1MSAyMDEzICswOTAwCisrKyBiL3BlcmRpdGlvbi9vcHRpb25zLmMJV2Vk IE1heSAxMSAwODo1NzoyMiAyMDE2ICswOTAwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi b3B0aW9ucy5oIgogI2luY2x1ZGUgImNvbmZpZ19maWxlLmgiCiAjaW5jbHVkZSAicGVyZGl0aW9u X2dsb2JhbHMuaCIKKyNpbmNsdWRlICJzc2wuaCIKIAogI2lmZGVmIERNQUxMT0MKICNpbmNsdWRl IDxkbWFsbG9jLmg+CkBAIC00ODgsNiArNDg5LDE0IEBACiAgICAgICBUQUdfU1NMX1BBU1NQSFJB U0VfRkQsIE5VTEwsIE5VTEx9LAogICAgIHsic3NsX3Bhc3NwaHJhc2VfZmlsZSIsICAgICAgICAg J1wwJywgUE9QVF9BUkdfU1RSSU5HLCBOVUxMLAogICAgICAgVEFHX1NTTF9QQVNTUEhSQVNFX0ZJ TEUsIE5VTEwsIE5VTEx9LAorICAgIHsic3NsX2xpc3Rlbl9taW5fcHJvdG9fdmVyc2lvbiIsICdc MCcsIFBPUFRfQVJHX1NUUklORywgTlVMTCwKKyAgICAgIFRBR19TU0xfTElTVEVOX01JTl9QUk9U T19WRVJTSU9OLCBOVUxMLCBOVUxMfSwKKyAgICB7InNzbF9vdXRnb2luZ19taW5fcHJvdG9fdmVy c2lvbiIsICdcMCcsIFBPUFRfQVJHX1NUUklORywgTlVMTCwKKyAgICAgIFRBR19TU0xfT1VUR09J TkdfTUlOX1BST1RPX1ZFUlNJT04sIE5VTEwsIE5VTEx9LAorICAgIHsic3NsX2xpc3Rlbl9tYXhf cHJvdG9fdmVyc2lvbiIsICdcMCcsIFBPUFRfQVJHX1NUUklORywgTlVMTCwKKyAgICAgIFRBR19T U0xfTElTVEVOX01BWF9QUk9UT19WRVJTSU9OLCBOVUxMLCBOVUxMfSwKKyAgICB7InNzbF9vdXRn b2luZ19tYXhfcHJvdG9fdmVyc2lvbiIsICdcMCcsIFBPUFRfQVJHX1NUUklORywgTlVMTCwKKyAg ICAgIFRBR19TU0xfT1VUR09JTkdfTUFYX1BST1RPX1ZFUlNJT04sIE5VTEwsIE5VTEx9LAogICAg IHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgMCwgICAgICAgICAgICAgICBO VUxMLAogICAgICAwLCBOVUxMLCBOVUxMfQogICB9OwpAQCAtNjE4LDYgKzYyNywxNCBAQAogCQkg ICAgJmksIDAsIE9QVF9OT1RfU0VUKTsKICAgICBvcHRfcCgmKG9wdC5zc2xfcGFzc3BocmFzZV9m aWxlKSxERUZBVUxUX1NTTF9QQVNTUEhSQVNFX0ZJTEUsCiAJCSAgICAmaSwgMCwgT1BUX05PVF9T RVQpOworICAgIG9wdF9wKCYob3B0LnNzbF9saXN0ZW5fbWluX3Byb3RvX3ZlcnNpb24pLAorCSAg REVGQVVMVF9TU0xfTElTVEVOX01JTl9QUk9UT19WRVJTSU9OLCAmaSwgMCwgT1BUX05PVF9TRVQp OworICAgIG9wdF9wKCYob3B0LnNzbF9vdXRnb2luZ19taW5fcHJvdG9fdmVyc2lvbiksCisJICBE RUZBVUxUX1NTTF9PVVRHT0lOR19NSU5fUFJPVE9fVkVSU0lPTiwgJmksIDAsIE9QVF9OT1RfU0VU KTsKKyAgICBvcHRfcCgmKG9wdC5zc2xfbGlzdGVuX21heF9wcm90b192ZXJzaW9uKSwKKwkgIERF RkFVTFRfU1NMX0xJU1RFTl9NQVhfUFJPVE9fVkVSU0lPTiwgJmksIDAsIE9QVF9OT1RfU0VUKTsK KyAgICBvcHRfcCgmKG9wdC5zc2xfb3V0Z29pbmdfbWF4X3Byb3RvX3ZlcnNpb24pLAorCSAgREVG QVVMVF9TU0xfT1VUR09JTkdfTUFYX1BST1RPX1ZFUlNJT04sICZpLCAwLCBPUFRfTk9UX1NFVCk7 CiAjZW5kaWYgLyogV0lUSF9TU0xfU1VQUE9SVCAqLwogICB9CiAKQEAgLTEwMTAsNiArMTAyNywz OCBAQAogCU5PX1NTTF9PUFQoInNzbF9wYXNzcGhyYXNlX2ZpbGUiKTsKICNlbmRpZiAvKiBXSVRI X1NTTF9TVVBQT1JUICovCiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBUQUdfU1NMX0xJU1RF Tl9NSU5fUFJPVE9fVkVSU0lPTjoKKyNpZmRlZiBXSVRIX1NTTF9TVVBQT1JUCisgICAgICAgIG9w dF9wKCYob3B0LnNzbF9saXN0ZW5fbWluX3Byb3RvX3ZlcnNpb24pLCBvcHRhcmcsICYob3B0LnNz bF9tYXNrKSwKKwkJCU1BU0tfU1NMX0xJU1RFTl9NSU5fUFJPVE9fVkVSU0lPTiwgZik7CisjZWxz ZSAvKiBXSVRIX1NTTF9TVVBQT1JUICovCisJTk9fU1NMX09QVCgic3NsX2xpc3Rlbl9taW5fcHJv dG9fdmVyc2lvbiIpOworI2VuZGlmIC8qIFdJVEhfU1NMX1NVUFBPUlQgKi8KKyAgICAgICAgYnJl YWs7CisgICAgICBjYXNlIFRBR19TU0xfT1VUR09JTkdfTUlOX1BST1RPX1ZFUlNJT046CisjaWZk ZWYgV0lUSF9TU0xfU1VQUE9SVAorICAgICAgICBvcHRfcCgmKG9wdC5zc2xfb3V0Z29pbmdfbWlu X3Byb3RvX3ZlcnNpb24pLCBvcHRhcmcsICYob3B0LnNzbF9tYXNrKSwKKwkJCU1BU0tfU1NMX09V VEdPSU5HX01JTl9QUk9UT19WRVJTSU9OLCBmKTsKKyNlbHNlIC8qIFdJVEhfU1NMX1NVUFBPUlQg Ki8KKwlOT19TU0xfT1BUKCJzc2xfb3V0Z29pbmdfbWluX3Byb3RvX3ZlcnNpb24iKTsKKyNlbmRp ZiAvKiBXSVRIX1NTTF9TVVBQT1JUICovCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBUQUdf U1NMX0xJU1RFTl9NQVhfUFJPVE9fVkVSU0lPTjoKKyNpZmRlZiBXSVRIX1NTTF9TVVBQT1JUCisg ICAgICAgIG9wdF9wKCYob3B0LnNzbF9saXN0ZW5fbWF4X3Byb3RvX3ZlcnNpb24pLCBvcHRhcmcs ICYob3B0LnNzbF9tYXNrKSwKKwkJCU1BU0tfU1NMX0xJU1RFTl9NQVhfUFJPVE9fVkVSU0lPTiwg Zik7CisjZWxzZSAvKiBXSVRIX1NTTF9TVVBQT1JUICovCisJTk9fU1NMX09QVCgic3NsX2xpc3Rl bl9tYXhfcHJvdG9fdmVyc2lvbiIpOworI2VuZGlmIC8qIFdJVEhfU1NMX1NVUFBPUlQgKi8KKyAg ICAgICAgYnJlYWs7CisgICAgICBjYXNlIFRBR19TU0xfT1VUR09JTkdfTUFYX1BST1RPX1ZFUlNJ T046CisjaWZkZWYgV0lUSF9TU0xfU1VQUE9SVAorICAgICAgICBvcHRfcCgmKG9wdC5zc2xfb3V0 Z29pbmdfbWF4X3Byb3RvX3ZlcnNpb24pLCBvcHRhcmcsICYob3B0LnNzbF9tYXNrKSwKKwkJCU1B U0tfU1NMX09VVEdPSU5HX01BWF9QUk9UT19WRVJTSU9OLCBmKTsKKyNlbHNlIC8qIFdJVEhfU1NM X1NVUFBPUlQgKi8KKwlOT19TU0xfT1BUKCJzc2xfb3V0Z29pbmdfbWF4X3Byb3RvX3ZlcnNpb24i KTsKKyNlbmRpZiAvKiBXSVRIX1NTTF9TVVBQT1JUICovCisgICAgICAgIGJyZWFrOwogICAgICAg ZGVmYXVsdDoKICAgICAgICAgVkFORVNTQV9MT0dHRVJfREVCVUdfUkFXKCJVbmtub3duIE9wdGlv biIpOwogICAgICAgICBicmVhazsKQEAgLTEwMjksNiArMTA3OCwxMjggQEAKICAgICB9CiAgIH0K IAorICB7CisJaW50IG1pbl92ZXIgPSAwOworCWludCBtYXhfdmVyID0gMDsKKworCWlmIChvcHQu c3NsX2xpc3Rlbl9taW5fcHJvdG9fdmVyc2lvbikgeworCQlWQU5FU1NBX0xPR0dFUl9ERUJVR19S QVcoIm1pbiIpOworCQltaW5fdmVyID0gcGVyZGl0aW9uX3BhcnNlX3NzbF9wcm90b192ZXJzaW9u KAorCQkJCW9wdC5zc2xfbGlzdGVuX21pbl9wcm90b192ZXJzaW9uKTsKKwkJaWYgKG1pbl92ZXIg PCAwKSB7CisJCQlWQU5FU1NBX0xPR0dFUl9ERUJVR19SQVcoIlVua25vd24gc3NsX2xpc3Rlbl9t aW5fcHJvdG9fdmVyc2lvbiIpOworCQkJaWYgKGYgJiBPUFRfRVJSKSB7CisJCQkJdXNhZ2UoLTEp OworCQkJfSBlbHNlIHsKKwkJCQlwb3B0RnJlZUNvbnRleHQoY29udGV4dCk7CisJCQkJcmV0dXJu IC0xOworCQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBUcmFuc2xhdGUgZW1wdHkgbWF4IHByb3Rv IHZlcnNpb24gdG8gTlVMTCB3aGljaCByZXN1bHRzIGluCisJICogT3BlblNTTCdzIGRlZmF1bHRz IGJlaW5nIHVzZWQuCisJICogVGhpcyBkaWZmZXJzIGZyb20gbWluIHByb3RvIHZlcnNpb24gaGFu ZGxpbmcgd2hlcmUgIiIgaXMKKwkgKiBub3QgdHJhbnNsYXRlZCBhbmQgcmVqZWN0ZWQgYnkKKwkg KiBwZXJkaXRpb25fcGFyc2Vfc3NsX3Byb3RvX3ZlcnNpb24oKSBzbyB0aGF0IGEgbWluaW11bSBw cm90b2NvbAorCSAqIHZlcnNpb24gb2YgYXQgbGVhc3QgU1NMdjMgaXMgZW5mb3JjZWQuCisJICov CisJaWYgKG9wdC5zc2xfbGlzdGVuX21heF9wcm90b192ZXJzaW9uICYmCisJICAgICpvcHQuc3Ns X2xpc3Rlbl9tYXhfcHJvdG9fdmVyc2lvbiA9PSAnXDAnKSB7CisJCWZyZWUob3B0LnNzbF9saXN0 ZW5fbWF4X3Byb3RvX3ZlcnNpb24pOworCQlvcHQuc3NsX2xpc3Rlbl9tYXhfcHJvdG9fdmVyc2lv biA9IE5VTEw7CisJfQorCisJaWYgKG9wdC5zc2xfbGlzdGVuX21heF9wcm90b192ZXJzaW9uKSB7 CisJCW1heF92ZXIgPSBwZXJkaXRpb25fcGFyc2Vfc3NsX3Byb3RvX3ZlcnNpb24oCisJCQkJb3B0 LnNzbF9saXN0ZW5fbWF4X3Byb3RvX3ZlcnNpb24pOworCQlpZiAobWF4X3ZlciA8IDApIHsKKwkJ CVZBTkVTU0FfTE9HR0VSX0RFQlVHX1JBVygiVW5rbm93biBzc2xfbGlzdGVuX21heF9wcm90b192 ZXJzaW9uIik7CisJCQlpZiAoZiAmIE9QVF9FUlIpIHsKKwkJCQl1c2FnZSgtMSk7CisJCQl9IGVs c2UgeworCQkJCXBvcHRGcmVlQ29udGV4dChjb250ZXh0KTsKKwkJCQlyZXR1cm4gLTE7CisJCQl9 CisJCX0KKwl9CisKKwlpZiAob3B0LnNzbF9saXN0ZW5fbWluX3Byb3RvX3ZlcnNpb24gJiYKKwkg ICAgb3B0LnNzbF9saXN0ZW5fbWF4X3Byb3RvX3ZlcnNpb24gJiYgbWluX3ZlciA+IG1heF92ZXIp IHsKKwkJVkFORVNTQV9MT0dHRVJfREVCVUdfUkFXKCJzc2xfbGlzdGVuX21pbl9wcm90b192ZXJz aW9uIGlzICIKKwkJCQkJICJncmVhdGVyIHRoYW4gIgorCQkJCQkgInNzbF9saXN0ZW5fbWF4X3By b3RvX3ZlcnNpb24iKTsKKwkJaWYgKGYmT1BUX0VSUikgeworCQkJdXNhZ2UoLTEpOworCQl9IGVs c2UgeworCQkJcG9wdEZyZWVDb250ZXh0KGNvbnRleHQpOworCQkJcmV0dXJuIC0xOworCQl9CisJ fQorCisgIH0KKworICB7CisJaW50IG1pbl92ZXIgPSAwOworCWludCBtYXhfdmVyID0gMDsKKwor CWlmIChvcHQuc3NsX2xpc3Rlbl9taW5fcHJvdG9fdmVyc2lvbikgeworCQltaW5fdmVyID0gcGVy ZGl0aW9uX3BhcnNlX3NzbF9wcm90b192ZXJzaW9uKAorCQkJCW9wdC5zc2xfbGlzdGVuX21pbl9w cm90b192ZXJzaW9uKTsKKwkJaWYgKG1pbl92ZXIgPCAwKSB7CisJCQlWQU5FU1NBX0xPR0dFUl9E RUJVR19SQVcoIlVua25vd24gc3NsX291dGdvaW5nX21pbl9wcm90b192ZXJzaW9uIik7CisJCQlp ZiAoZiAmIE9QVF9FUlIpIHsKKwkJCQl1c2FnZSgtMSk7CisJCQl9IGVsc2UgeworCQkJCXBvcHRG cmVlQ29udGV4dChjb250ZXh0KTsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCX0KKwl9CisKKwkv KgorCSAqIFRyYW5zbGF0ZSBlbXB0eSBtYXggcHJvdG8gdmVyc2lvbiB0byBOVUxMIHdoaWNoIHJl c3VsdHMgaW4KKwkgKiBPcGVuU1NMJ3MgZGVmYXVsdHMgYmVpbmcgdXNlZC4KKwkgKiBUaGlzIGRp ZmZlcnMgZnJvbSBtaW4gcHJvdG8gdmVyc2lvbiBoYW5kbGluZyB3aGVyZSAiIiBpcworCSAqIG5v dCB0cmFuc2xhdGVkIGFuZCByZWplY3RlZCBieQorCSAqIHBlcmRpdGlvbl9wYXJzZV9zc2xfcHJv dG9fdmVyc2lvbigpIHNvIHRoYXQgYSBtaW5pbXVtIHByb3RvY29sCisJICogdmVyc2lvbiBvZiBh dCBsZWFzdCBTU0x2MyBpcyBlbmZvcmNlZC4KKwkgKi8KKwlpZiAob3B0LnNzbF9vdXRnb2luZ19t YXhfcHJvdG9fdmVyc2lvbiAmJgorCSAgICAqb3B0LnNzbF9vdXRnb2luZ19tYXhfcHJvdG9fdmVy c2lvbiA9PSAnXDAnKSB7CisJCWZyZWUob3B0LnNzbF9vdXRnb2luZ19tYXhfcHJvdG9fdmVyc2lv bik7CisJCW9wdC5zc2xfb3V0Z29pbmdfbWF4X3Byb3RvX3ZlcnNpb24gPSBOVUxMOworCX0KKwor CWlmIChvcHQuc3NsX291dGdvaW5nX21heF9wcm90b192ZXJzaW9uKSB7CisJCW1heF92ZXIgPSBw ZXJkaXRpb25fcGFyc2Vfc3NsX3Byb3RvX3ZlcnNpb24oCisJCQkJb3B0LnNzbF9vdXRnb2luZ19t YXhfcHJvdG9fdmVyc2lvbik7CisJCWlmIChtYXhfdmVyIDwgMCkgeworCQkJVkFORVNTQV9MT0dH RVJfREVCVUdfUkFXKCJVbmtub3duIHNzbF9vdXRnb2luZ19tYXhfcHJvdG9fdmVyc2lvbiIpOwor CQkJaWYgKGYgJiBPUFRfRVJSKSB7CisJCQkJdXNhZ2UoLTEpOworCQkJfSBlbHNlIHsKKwkJCQlw b3B0RnJlZUNvbnRleHQoY29udGV4dCk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9CisJfQor CisJaWYgKG9wdC5zc2xfbGlzdGVuX21pbl9wcm90b192ZXJzaW9uICYmCisJICAgIG9wdC5zc2xf b3V0Z29pbmdfbWF4X3Byb3RvX3ZlcnNpb24gJiYgbWluX3ZlciA+IG1heF92ZXIpIHsKKwkJVkFO RVNTQV9MT0dHRVJfREVCVUdfUkFXKCJzc2xfb3V0Z29pbmdfbWluX3Byb3RvX3ZlcnNpb24gaXMg IgorCQkJCQkgImdyZWF0ZXIgdGhhbiAiCisJCQkJCSAic3NsX291dGdvaW5nX21heF9wcm90b192 ZXJzaW9uIik7CisJCWlmIChmICYgT1BUX0VSUikgeworCQkJdXNhZ2UoLTEpOworCQl9IGVsc2Ug eworCQkJcG9wdEZyZWVDb250ZXh0KGNvbnRleHQpOworCQkJcmV0dXJuIC0xOworCQl9CisJfQor ICB9CisKICAgaWYgKGMgPCAtMSkgewogICAgIFZBTkVTU0FfTE9HR0VSX0RFQlVHX1VOU0FGRSgg IiVzOiAlcyIsCiAgICAgICBwb3B0QmFkT3B0aW9uKGNvbnRleHQsIFBPUFRfQkFET1BUSU9OX05P QUxJQVMpLCBwb3B0U3RyZXJyb3IoYykpOwpAQCAtMTQwMCw2ICsxNTcxLDEwIEBACiAJCSAic3Ns X25vX2NuX3ZlcmlmeT1cIiVzXCIgIgogCQkgInNzbF9wYXNzcGhyYXNlX2ZkPSVkLCAiCiAJCSAi c3NsX3Bhc3NwaHJhc2VfZmlsZT1cIiVzXCIsICIKKwkJICJzc2xfbGlzdGVuX21pbl9wcm90b192 ZXJzaW9uPVwiJXNcIiwgIgorCQkgInNzbF9vdXRnb2luZ19taW5fcHJvdG9fdmVyc2lvbj1cIiVz XCIsICIKKwkJICJzc2xfbGlzdGVuX21heF9wcm90b192ZXJzaW9uPVwiJXNcIiwgIgorCQkgInNz bF9vdXRnb2luZ19tYXhfcHJvdG9fdmVyc2lvbj1cIiVzXCIsICIKIAkJICIoc3NsX21hc2s9MHgl MDh4KSAiLAogCQkgc3NsX21vZGUsCiAJCSBPUFRfU1RSKG9wdC5zc2xfY2FfZmlsZSksCkBAIC0x NDE4LDYgKzE1OTMsMTAgQEAKIAkJIEJJTl9PUFRfU1RSKG9wdC5zc2xfbm9fY25fdmVyaWZ5KSwK IAkJIG9wdC5zc2xfcGFzc3BocmFzZV9mZCwKIAkJIE9QVF9TVFIob3B0LnNzbF9wYXNzcGhyYXNl X2ZpbGUpLAorCQkgT1BUX1NUUihvcHQuc3NsX2xpc3Rlbl9taW5fcHJvdG9fdmVyc2lvbiksCisJ CSBPUFRfU1RSKG9wdC5zc2xfb3V0Z29pbmdfbWluX3Byb3RvX3ZlcnNpb24pLAorCQkgT1BUX1NU UihvcHQuc3NsX2xpc3Rlbl9tYXhfcHJvdG9fdmVyc2lvbiksCisJCSBPUFRfU1RSKG9wdC5zc2xf b3V0Z29pbmdfbWF4X3Byb3RvX3ZlcnNpb24pLAogCQkgb3B0LnNzbF9tYXNrKTsKIAlvdXRbTUFY X0xJTkVfTEVOR1RIIC0gMV0gPSAnXDAnOwogCkBAIC0xNzE2LDYgKzE4OTUsMjYgQEAKICAgICAi IC0tc3NsX3Bhc3NwaHJhc2VfZmlsZSBGSUxFTkFNRTpcbiIKICAgICAiICAgIEZpbGUgZnJvbSB3 aXRoIHRoZSBwYXNzcGhyYXNlIGZvciB0aGUgY2VydGlmaWNhdGUgaXMgcmVhZC5cbiIKICAgICAi ICAgIChkZWZhdWx0IFwiJXNcIilcbiIKKyAgICAiIC0tc3NsX2xpc3Rlbl9taW5fcHJvdG9fdmVy c2lvbiBQUk9UT0NPTF9WRVJTSU9OOlxuIgorICAgICIgICAgTWluaW11bSBwZXJtaXRlZCBTU0wv VExTIHByb3RvY29sIHZlcnNpb24gd2hlbiBhY2NlcHRpbmcgaW5jb21taW5nXG4iCisgICAgIiAg ICBjb25uZWN0aW9ucy5cbiIKKyAgICAiICAgIE1heSBub3QgYmUgZW1wdHkgKFwiXCIpLlxuIgor ICAgICIgICAgKGRlZmF1bHQgXCIlc1wiKVxuIgorICAgICIgLS1zc2xfb3V0Z29pbmdfbWluX3By b3RvX3ZlcnNpb24gUFJPVE9DT0xfVkVSU0lPTjpcbiIKKyAgICAiICAgIE1pbmltdW0gcGVybWl0 ZWQgU1NML1RMUyBwcm90b2NvbCB2ZXJzaW9uIHdoZW4gbWFraW5nIG91dGdvaW5nXG4iCisgICAg IiAgICBjb25uZWN0aW9ucy5cbiIKKyAgICAiICAgIE1heSBub3QgYmUgZW1wdHkgKFwiXCIpLlxu IgorICAgICIgICAgKGRlZmF1bHQgXCIlc1wiKVxuIgorICAgICIgLS1zc2xfbGlzdGVuX21heF9w cm90b192ZXJzaW9uIFBST1RPQ09MX1ZFUlNJT046XG4iCisgICAgIiAgICBNYXhpbXVtIHBlcm1p dGVkIFNTTC9UTFMgcHJvdG9jb2wgdmVyc2lvbiB3aGVuIGFjY2VwdGluZyBpbmNvbWluZ1xuIgor ICAgICIgICAgY29ubmVjdGlvbnMuXG4iCisgICAgIiAgICBJZiBlbXB0eSAoXCJcIikgdGhlbiBv cGVuc3NsJ3MgZGVmYXVsdCB3aWxsIGJlIHVzZWQuXG4iCisgICAgIiAgICAoZGVmYXVsdCBcIiVz XCIpXG4iCisgICAgIiAtLXNzbF9vdXRnb2luZ19tYXhfcHJvdG9fdmVyc2lvbiBQUk9UT0NPTF9W RVJTSU9OOlxuIgorICAgICIgICAgTWF4aW11bSBwZXJtaXRlZCBTU0wvVExTIHByb3RvY29sIHZl cnNpb24gd2hlbiBtYWtpbmcgb3V0Z29pbmdcbiIKKyAgICAiICAgIGNvbm5lY3Rpb25zLlxuIgor ICAgICIgICAgSWYgZW1wdHkgKFwiXCIpIHRoZW4gb3BlbnNzbCdzIGRlZmF1bHQgd2lsbCBiZSB1 c2VkLlxuIgorICAgICIgICAgKGRlZmF1bHQgXCIlc1wiKVxuIgogI2VuZGlmIC8qIFdJVEhfU1NM X1NVUFBPUlQgKi8KICAgICAiXG4iCiAgICAgIiBOb3RlczogRGVmYXVsdCB2YWx1ZSBmb3IgYmlu YXJ5IGZsYWdzIGlzIG9mZi5cbiIKQEAgLTE3NjAsNyArMTk1OSwxMSBAQAogICAgIE9QVF9TVFIo REVGQVVMVF9TU0xfTElTVEVOX0NJUEhFUlMpLAogICAgIE9QVF9TVFIoREVGQVVMVF9TU0xfT1VU R09JTkdfQ0lQSEVSUyksCiAgICAgREVGQVVMVF9TU0xfUEFTU1BIUkFTRV9GRCwKLSAgICBPUFRf U1RSKERFRkFVTFRfU1NMX1BBU1NQSFJBU0VfRklMRSkKKyAgICBPUFRfU1RSKERFRkFVTFRfU1NM X1BBU1NQSFJBU0VfRklMRSksCisgICAgT1BUX1NUUihERUZBVUxUX1NTTF9MSVNURU5fTUlOX1BS T1RPX1ZFUlNJT04pLAorICAgIE9QVF9TVFIoREVGQVVMVF9TU0xfT1VUR09JTkdfTUlOX1BST1RP X1ZFUlNJT04pLAorICAgIE9QVF9TVFIoREVGQVVMVF9TU0xfTElTVEVOX01BWF9QUk9UT19WRVJT SU9OKSwKKyAgICBPUFRfU1RSKERFRkFVTFRfU1NMX09VVEdPSU5HX01BWF9QUk9UT19WRVJTSU9O KQogI2VuZGlmIC8qIFdJVEhfU1NMX1NVUFBPUlQgKi8KICAgKTsKIApkaWZmIC1yIDY0MjgwNzBi NDg4OSAtciAwZjliNjEyZDZkMDcgcGVyZGl0aW9uL29wdGlvbnMuaAotLS0gYS9wZXJkaXRpb24v b3B0aW9ucy5oCVN1biBEZWMgMDEgMTc6MjY6NTEgMjAxMyArMDkwMAorKysgYi9wZXJkaXRpb24v b3B0aW9ucy5oCVdlZCBNYXkgMTEgMDg6NTc6MjIgMjAxNiArMDkwMApAQCAtMTgxLDYgKzE4MSwx MCBAQAogI2RlZmluZSBERUZBVUxUX1NTTF9OT19DTl9WRVJJRlkgICAgICAgICAgICAgMAogI2Rl ZmluZSBERUZBVUxUX1NTTF9QQVNTUEhSQVNFX0ZEICAgICAgICAgICAgMAogI2RlZmluZSBERUZB VUxUX1NTTF9QQVNTUEhSQVNFX0ZJTEUgICAgICAgICAgTlVMTAorI2RlZmluZSBERUZBVUxUX1NT TF9MSVNURU5fTUlOX1BST1RPX1ZFUlNJT04gInRsc3YxIgorI2RlZmluZSBERUZBVUxUX1NTTF9P VVRHT0lOR19NSU5fUFJPVE9fVkVSU0lPTiAidGxzdjEiCisjZGVmaW5lIERFRkFVTFRfU1NMX0xJ U1RFTl9NQVhfUFJPVE9fVkVSU0lPTiBOVUxMCisjZGVmaW5lIERFRkFVTFRfU1NMX09VVEdPSU5H X01BWF9QUk9UT19WRVJTSU9OIE5VTEwKICNlbmRpZiAvKiBXSVRIX1NTTF9TVVBQT1JUICovCiAK IApAQCAtMjQ5LDYgKzI1MywxMCBAQAogICBpbnQgICAgICAgICAgICAgc3NsX25vX2NuX3Zlcmlm eTsKICAgaW50ICAgICAgICAgICAgIHNzbF9wYXNzcGhyYXNlX2ZkOwogICBjaGFyICAgICAgICAg ICAgKnNzbF9wYXNzcGhyYXNlX2ZpbGU7CisgIGNoYXIgICAgICAgICAgICAqc3NsX2xpc3Rlbl9t aW5fcHJvdG9fdmVyc2lvbjsKKyAgY2hhciAgICAgICAgICAgICpzc2xfb3V0Z29pbmdfbWluX3By b3RvX3ZlcnNpb247CisgIGNoYXIgICAgICAgICAgICAqc3NsX2xpc3Rlbl9tYXhfcHJvdG9fdmVy c2lvbjsKKyAgY2hhciAgICAgICAgICAgICpzc2xfb3V0Z29pbmdfbWF4X3Byb3RvX3ZlcnNpb247 CiAgIGZsYWdfdCAgICAgICAgICBzc2xfbWFzazsKIH0gb3B0aW9uc190OwogCkBAIC0zMTcsNiAr MzI1LDEwIEBACiAjZGVmaW5lIE1BU0tfU1NMX05PX0NOX1ZFUklGWSAgICAgICAgICAgICAgICAg IChmbGFnX3QpIDB4MDAwMDQwMDAKICNkZWZpbmUgTUFTS19TU0xfUEFTU1BIUkFTRV9GRCAgICAg ICAgICAgICAgICAgKGZsYWdfdCkgMHgwMDAwODAwMAogI2RlZmluZSBNQVNLX1NTTF9QQVNTUEhS QVNFX0ZJTEUgICAgICAgICAgICAgICAoZmxhZ190KSAweDAwMDEwMDAwCisjZGVmaW5lIE1BU0tf U1NMX0xJU1RFTl9NSU5fUFJPVE9fVkVSU0lPTiAgICAgIChmbGFnX3QpIDB4MDAwMjAwMDAKKyNk ZWZpbmUgTUFTS19TU0xfT1VUR09JTkdfTUlOX1BST1RPX1ZFUlNJT04gICAgKGZsYWdfdCkgMHgw MDA0MDAwMAorI2RlZmluZSBNQVNLX1NTTF9MSVNURU5fTUFYX1BST1RPX1ZFUlNJT04gICAgICAo ZmxhZ190KSAweDAwMDgwMDAwCisjZGVmaW5lIE1BU0tfU1NMX09VVEdPSU5HX01BWF9QUk9UT19W RVJTSU9OICAgIChmbGFnX3QpIDB4MDAxMDAwMDAKICNlbmRpZiAvKiBXSVRIX1NTTF9TVVBQT1JU ICovCiAKIC8qIApAQCAtMzU1LDYgKzM2NywxMCBAQAogI2RlZmluZSBUQUdfTUFOQUdFU0lFVkVf Q0FQQUJJTElUWSAgICAgICAgICAgICAoaW50KSAxNTUKICNkZWZpbmUgVEFHX1BPUF9DQVBBQklM SVRZICAgICAgICAgICAgICAgICAgICAgKGludCkgMTU2CiAjZGVmaW5lIFRBR19UQ1BfS0VFUEFM SVZFICAgICAgICAgICAgICAgICAgICAgIChpbnQpIDE1NworI2RlZmluZSBUQUdfU1NMX0xJU1RF Tl9NSU5fUFJPVE9fVkVSU0lPTiAgICAgICAoaW50KSAxNTgKKyNkZWZpbmUgVEFHX1NTTF9PVVRH T0lOR19NSU5fUFJPVE9fVkVSU0lPTiAgICAgKGludCkgMTU5CisjZGVmaW5lIFRBR19TU0xfTElT VEVOX01BWF9QUk9UT19WRVJTSU9OICAgICAgIChpbnQpIDE2MAorI2RlZmluZSBUQUdfU1NMX09V VEdPSU5HX01BWF9QUk9UT19WRVJTSU9OICAgICAoaW50KSAxNjEKIAogLypGbGFnIHZhbHVlcyBm b3Igb3B0aW9ucygpKi8KICNkZWZpbmUgT1BUX0VSUiAgICAgICAgIChmbGFnX3QpIDB4MSAgLypQ cmludCBlcnJvciB0byBzdGRlcnIsIGVuYWJsZSBoZWxwKi8KZGlmZiAtciA2NDI4MDcwYjQ4ODkg LXIgMGY5YjYxMmQ2ZDA3IHBlcmRpdGlvbi9wZXJkaXRpb24uOAotLS0gYS9wZXJkaXRpb24vcGVy ZGl0aW9uLjgJU3VuIERlYyAwMSAxNzoyNjo1MSAyMDEzICswOTAwCisrKyBiL3BlcmRpdGlvbi9w ZXJkaXRpb24uOAlXZWQgTWF5IDExIDA4OjU3OjIyIDIwMTYgKzA5MDAKQEAgLTYzNSw2ICs2MzUs NjkgQEAKIGJlIHNwZWNpZmllZC4KIChkZWZhdWx0IE5VTEwsIG5vIGZpbGUpCiAuVFAKKy5CIFwt XC1zc2xfbGlzdGVuX2NpcGhlcnMgU1RSSU5HOgorQ2lwaGVyIGxpc3Qgd2hlbiBsaXN0ZW5pbmcg Zm9yIFNTTCBvciBUTFMgY29ubmVjdGlvbnMgYXMgcGVyCitjaXBoZXJzKDEpLiBJZiBlbXB0eSAo IiIpIHRoZW4gb3BlbnNzbCdzIGRlZmF1bHQgd2lsbCBiZSB1c2VkLgorLmJyCisoZGVmYXVsdCAi IikKKy5UUAorLkIgXC1cLXNzbF9vdXRnb2luZ19jaXBoZXJzIFNUUklORzoKK0NpcGhlciBsaXN0 IHdoZW4gbWFraW5nIG91dGdvaW5nIFNTTCBvciBUTFMgY29ubmVjdGlvbnMgYXMgcGVyIAorY2lw aGVycygxKS4gSWYgZW1wdHkgKCIiKSB0aGVuIG9wZW5zc2wncyBkZWZhdWx0IHdpbGwgYmUgdXNl ZC4KKy5icgorKGRlZmF1bHQgIiIpCisuVFAKKy5CIFwtXC1zc2xfbm9fY2VydF92ZXJpZnk6CitE b24ndCBjcnlwdG9ncmFwaGljYWxseSB2ZXJpZnkgdGhlIGNlcnRpZmljYXRlcy4KK1VzZWQgZm9y IFNTTCBvciBUTFMgb3V0Z29pbmcgY29ubmVjdGlvbnMuCisuVFAKKy5CIFwtXC1zc2xfbm9fY2xp ZW50X2NlcnRfdmVyaWZ5OgorRG9uJ3QgY3J5cHRvZ3JhcGhpY2FsbHkgdmVyaWZ5IHRoZSBlbmQt dXNlcidzIGNlcnRpZmljYXRlLgorVXNlZCBmb3IgU1NMIG9yIFRMUyBvdXRnb2luZyBjb25uZWN0 aW9ucy4KKy5UUAorLkIgXC1cLXNzbF9ub19jbl92ZXJpZnk6CitEb24ndCB2ZXJpZnkgdGhlIHJl YWwtc2VydmVyJ3MgY29tbW9uIG5hbWUgd2l0aCB0aGUgbmFtZSB1c2VkLgordG8gY29ubmVjdCB0 byB0aGUgc2VydmVyLiBVc2VkIGZvciBTU0wgb3IgVExTIG91dGdvaW5nIGNvbm5lY3Rpb25zLgor LlRQCisuQiBcLVwtc3NsX3Bhc3NwaHJhc2VfZmQgTjoKK0ZpbGUgZGVzY3JpcHRvciB0byByZWFk IHRoZSBwYXNzcGhyYXNlIGZvciB0aGUgY2VydGlmaWNhdGUgZnJvbS4KK09ubHkgdGhlIGZpcnN0 IGxpbmUgd2lsbCBiZSByZWFkLgorT25seSBvbmUgb2Ygc3NsX3Bhc3NwaHJhc2VfZmQgYW5kIHNz bF9wYXNzcGhyYXNlX2ZpbGUgbWF5CitiZSBzcGVjaWZpZWQuCisoZGVmYXVsdCAwKQorLlRQCisu QiBcLVwtc3NsX2xpc3Rlbl9taW5fcHJvdG9fdmVyc2lvbiBQUk9UT0NPTF9WRVJTSU9OUzoKK01p bmltdW0gcGVybWl0ZWQgU1NML1RMUyBwcm90b2NvbCB2ZXJzaW9uIHdoZW4gYWNjZXB0aW5nIGlu Y29tbWluZworY29ubmVjdGlvbnMuIE1heSBub3QgYmUgZW1wdHkgKCIiKS4KKy5zcAorVGhlIHZh bGlkIHByb3RvY29sIHZlcnNpb25zIGFyZSBzc2x2MywgdGxzdjEsIHRsc3YxLjEgYW5kIHRsc3Yx LjIuCisuc3AKKyhkZWZhdWx0ICJ0bHN2MSIpCisuVFAKKy5CIFwtXC1zc2xfb3V0Z29pbmdfbWlu X3Byb3RvX3ZlcnNpb24gUFJPVE9DT0xfVkVSU0lPTlM6CitNaW5pbXVtIHBlcm1pdGVkIFNTTC9U TFMgcHJvdG9jb2wgdmVyc2lvbiB3aGVuIG1ha2luZyBvdXRnb2luZworY29ubmVjdGlvbnMuIE1h eSBub3QgYmUgZW1wdHkgKCIiKS4KKy5zcAorVGhlIHZhbGlkIHByb3RvY29sIHZlcnNpb25zIGFy ZSBzc2x2MywgdGxzdjEsIHRsc3YxLjEgYW5kIHRsc3YxLjIuCisuc3AKKyhkZWZhdWx0ICJ0bHN2 MSIpCisuVFAKKy5CIFwtXC1zc2xfbGlzdGVuX21heF9wcm90b192ZXJzaW9uIFBST1RPQ09MX1ZF UlNJT05TOgorTWF4aW11bSBwZXJtaXRlZCBTU0wvVExTIHByb3RvY29sIHZlcnNpb24gd2hlbiBh Y2NlcHRpbmcgaW5jb21tYXhnCitjb25uZWN0aW9ucy4gSWYgZW1wdHkgKCIiKSB0aGVuIG9wZW5z c2wncyBkZWZhdWx0IHdpbGwgYmUgdXNlZC4KKy5zcAorVGhlIHZhbGlkIHByb3RvY29sIHZlcnNp b25zIGFyZSBzc2x2MywgdGxzdjEsIHRsc3YxLjEgYW5kIHRsc3YxLjIuCisuc3AKKyhkZWZhdWx0 ICIiKQorLlRQCisuQiBcLVwtc3NsX291dGdvaW5nX21heF9wcm90b192ZXJzaW9uIFBST1RPQ09M X1ZFUlNJT05TOgorTWF4aW11bSBwZXJtaXRlZCBTU0wvVExTIHByb3RvY29sIHZlcnNpb24gd2hl biBtYWtpbmcgb3V0Z29pbmcKK2Nvbm5lY3Rpb25zLiBJZiBlbXB0eSAoIiIpIHRoZW4gb3BlbnNz bCdzIGRlZmF1bHQgd2lsbCBiZSB1c2VkLgorLnNwCitUaGUgdmFsaWQgcHJvdG9jb2wgdmVyc2lv bnMgYXJlIHNzbHYzLCB0bHN2MSwgdGxzdjEuMSBhbmQgdGxzdjEuMi4KKy5zcAorKGRlZmF1bHQg IiIpCisuVFAKIE5vdGVzOiAKIERlZmF1bHQgdmFsdWUgZm9yIGJpbmFyeSBmbGFncyBpcyBvZmYu CiAuYnIKZGlmZiAtciA2NDI4MDcwYjQ4ODkgLXIgMGY5YjYxMmQ2ZDA3IHBlcmRpdGlvbi9zc2wu YwotLS0gYS9wZXJkaXRpb24vc3NsLmMJU3VuIERlYyAwMSAxNzoyNjo1MSAyMDEzICswOTAwCisr KyBiL3BlcmRpdGlvbi9zc2wuYwlXZWQgTWF5IDExIDA4OjU3OjIyIDIwMTYgKzA5MDAKQEAgLTEz OSw2ICsxMzksMjMgQEAKIAlyZXR1cm4gc3RybGVuKGJ1Zik7CiB9CiAKK2ludCBwZXJkaXRpb25f cGFyc2Vfc3NsX3Byb3RvX3ZlcnNpb24oY29uc3QgY2hhciAqc3RyKQoreworCWlmICghc3RyY2Fz ZWNtcChzdHIsICJzc2x2MyIpKSB7CisJCXJldHVybiBTU0wzX1ZFUlNJT047CisJfQorCWlmICgh c3RyY2FzZWNtcChzdHIsICJ0bHN2MSIpKSB7CisJCXJldHVybiBUTFMxX1ZFUlNJT047CisJfQor CWlmICghc3RyY2FzZWNtcChzdHIsICJ0bHN2MS4xIikpIHsKKwkJcmV0dXJuIFRMUzFfMV9WRVJT SU9OOworCX0KKwlpZiAoIXN0cmNhc2VjbXAoc3RyLCAidGxzdjEuMiIpKSB7CisJCXJldHVybiBU TFMxXzJfVkVSU0lPTjsKKwl9CisKKwlyZXR1cm4gLTE7Cit9CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg KiBwZXJkaXRpb25fc3NsX2N0eApAQCAtNDg2LDYgKzUwMyw3MiBAQAogCXJldHVybih2ZXJpZnkp OwogfQogCisjaWYgSEFWRV9ERUNMX1NTTF9DVFhfU0VUX01JTl9QUk9UT19WRVJTSU9OID09IDAK K3N0YXRpYyBpbnQKK3BlcmRpdGlvbl9zc2xfY3R4X3NldF9taW5fcHJvdG9fdmVyc2lvbihTU0xf Q1RYICpzc2xfY3R4LCBpbnQgbWluX3ZlcnNpb24pCit7CisJbG9uZyBvcHRpb25zID0gU1NMX09Q X05PX1NTTHYyOworCisJc3dpdGNoIChtaW5fdmVyc2lvbikgeworCWNhc2UgVExTMV8yX1ZFUlNJ T046CisJCW9wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxXzE7CisJCS8qIGZhbGwtdGhyb3VnaCAq LworCWNhc2UgVExTMV8xX1ZFUlNJT046CisJCW9wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxOwor CQkvKiBmYWxsLXRocm91Z2ggKi8KKwljYXNlIFRMUzFfVkVSU0lPTjoKKwkJb3B0aW9ucyB8PSBT U0xfT1BfTk9fU1NMdjM7CisJCS8qIGZhbGwtdGhyb3VnaCAqLworCWNhc2UgU1NMM19WRVJTSU9O OgorCQkvKiBOb3RoaW5nIG1vcmUgdG8gZG8gKi8KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJUEVS RElUSU9OX0RFQlVHX1NTTF9FUlIoIlVua25vd24gbWludW11bSB2ZXJzaW9uIik7CisJCXJldHVy biAwOworCX0KKworCVNTTF9DVFhfc2V0X29wdGlvbnMoc3NsX2N0eCwgb3B0aW9ucyk7CisJcmV0 dXJuIDE7Cit9CisKKyNkZWZpbmUgU1NMX0NUWF9zZXRfbWluX3Byb3RvX3ZlcnNpb24gcGVyZGl0 aW9uX3NzbF9jdHhfc2V0X21pbl9wcm90b192ZXJzaW9uCisjZW5kaWYKKworI2lmIEhBVkVfREVD TF9TU0xfQ1RYX1NFVF9NQVhfUFJPVE9fVkVSU0lPTiA9PSAwCitzdGF0aWMgaW50CitwZXJkaXRp b25fc3NsX2N0eF9zZXRfbWF4X3Byb3RvX3ZlcnNpb24oU1NMX0NUWCAqc3NsX2N0eCwgaW50IG1h eF92ZXJzaW9uKQoreworCWxvbmcgb3B0aW9ucyA9IDA7CisKKwlzd2l0Y2ggKG1heF92ZXJzaW9u KSB7CisJY2FzZSBTU0wzX1ZFUlNJT046CisJCW9wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxOwor CQkvKiBmYWxsLXRocm91Z2ggKi8KKwljYXNlIFRMUzFfVkVSU0lPTjoKKwkJb3B0aW9ucyB8PSBT U0xfT1BfTk9fVExTdjFfMTsKKwkJLyogZmFsbC10aHJvdWdoICovCisJY2FzZSBUTFMxXzFfVkVS U0lPTjoKKwkJb3B0aW9ucyB8PSBTU0xfT1BfTk9fVExTdjFfMjsKKwkJLyogZmFsbC10aHJvdWdo ICovCisJY2FzZSBUTFMxXzJfVkVSU0lPTjoKKwkJLyogTm90aGluZyBtb3JlIHRvIGRvICovCisJ CWJyZWFrOworCWRlZmF1bHQ6CisJCVBFUkRJVElPTl9ERUJVR19TU0xfRVJSKCJVbmtub3duIG1h eGltdW0gdmVyc2lvbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlTU0xfQ1RYX3NldF9vcHRpb25z KHNzbF9jdHgsIG9wdGlvbnMpOworCisJVkFORVNTQV9MT0dHRVJfRVJSKCJ3YXJuaW5nOiBwcm90 b2NvbCB2ZXJzaW9ucyBncmVhdGVyIHRoYW4gdGxzdjEuMiAiCisJCQkgICAibWF5IHN0aWxsIGJl IGFsbG93ZWQgaWYgc3VwcG9ydGVkIGJ5IHRoZSBTU0wvVExTICIKKwkJCSAgICJpbXBsZW1lbnRh dGlvbiIpOworCXJldHVybiAxOworfQorCisjZGVmaW5lIFNTTF9DVFhfc2V0X21heF9wcm90b192 ZXJzaW9uIHBlcmRpdGlvbl9zc2xfY3R4X3NldF9tYXhfcHJvdG9fdmVyc2lvbgorI2VuZGlmCisK IFNTTF9DVFggKnBlcmRpdGlvbl9zc2xfY3R4KGNvbnN0IGNoYXIgKmNhX2ZpbGUsIGNvbnN0IGNo YXIgKmNhX3BhdGgsIAogCQljb25zdCBjaGFyICpjZXJ0LCBjb25zdCBjaGFyICpwcml2a2V5LCAK IAkJY29uc3QgY2hhciAqY2FfY2hhaW5fZmlsZSwgY29uc3QgY2hhciAqY2lwaGVycywgZmxhZ190 IGZsYWcpCkBAIC01MzMsNiArNjE2LDYwIEBACiAJfQogCiAJLyoKKwkgKiBTZXQgbWluaW11bSBw cm90b2NvbCB2ZXJzaW9uCisJICovCisJeworCQljb25zdCBjaGFyICp2ZXJfc3RyOworCisJCWlm IChmbGFnID09IFBFUkRJVElPTl9TU0xfQ0xJRU5UKQorCQkJdmVyX3N0ciA9IG9wdC5zc2xfb3V0 Z29pbmdfbWluX3Byb3RvX3ZlcnNpb247CisJCWVsc2UKKwkJCXZlcl9zdHIgPSBvcHQuc3NsX2xp c3Rlbl9taW5fcHJvdG9fdmVyc2lvbjsKKworCQlpZiAodmVyX3N0cikgeworCQkJaW50IHZlcl9u byA9IHBlcmRpdGlvbl9wYXJzZV9zc2xfcHJvdG9fdmVyc2lvbih2ZXJfc3RyKTsKKworCisJCQlp ZiAodmVyX25vIDwgMCkgeworCQkJCVZBTkVTU0FfTE9HR0VSX0RFQlVHKCJwZXJkaXRpb25fcGFy c2Vfc3NsX3Byb3RvX3ZlcnNpb24iKTsKKwkJCQlnb3RvIGVycjsKKwkJCX0KKworCQkJaWYgKCFT U0xfQ1RYX3NldF9taW5fcHJvdG9fdmVyc2lvbihzc2xfY3R4LCB2ZXJfbm8pKSB7CisJCQkJVkFO RVNTQV9MT0dHRVJfREVCVUcoIlNTTF9DVFhfc2V0X21pbl9wcm90b192ZXJzaW9uIik7CisJCQkJ Z290byBlcnI7CisJCQl9CisJCX0KKwl9CisKKwkvKgorCSAqIFNldCBtYXhpbXVtIHByb3RvY29s IHZlcnNpb24KKwkgKi8KKwl7CisJCWNvbnN0IGNoYXIgKnZlcl9zdHI7CisKKwkJaWYgKGZsYWcg PT0gUEVSRElUSU9OX1NTTF9DTElFTlQpCisJCQl2ZXJfc3RyID0gb3B0LnNzbF9vdXRnb2luZ19t YXhfcHJvdG9fdmVyc2lvbjsKKwkJZWxzZQorCQkJdmVyX3N0ciA9IG9wdC5zc2xfbGlzdGVuX21h eF9wcm90b192ZXJzaW9uOworCisJCWlmICh2ZXJfc3RyKSB7CisJCQlpbnQgdmVyX25vID0gcGVy ZGl0aW9uX3BhcnNlX3NzbF9wcm90b192ZXJzaW9uKHZlcl9zdHIpOworCisKKwkJCWlmICh2ZXJf bm8gPCAwKSB7CisJCQkJVkFORVNTQV9MT0dHRVJfREVCVUcoInBlcmRpdGlvbl9wYXJzZV9zc2xf cHJvdG9fdmVyc2lvbiIpOworCQkJCWdvdG8gZXJyOworCQkJfQorCisJCQlpZiAoIVNTTF9DVFhf c2V0X21heF9wcm90b192ZXJzaW9uKHNzbF9jdHgsIHZlcl9ubykpIHsKKwkJCQlWQU5FU1NBX0xP R0dFUl9ERUJVRygiU1NMX0NUWF9zZXRfbWF4X3Byb3RvX3ZlcnNpb24iKTsKKwkJCQlnb3RvIGVy cjsKKwkJCX0KKwkJfQorCX0KKworCS8qCiAJICogU2V0IHRoZSBhdmFpbGFibGUgY2lwaGVycwog CSAqLwogCWlmKGNpcGhlcnMgJiYgU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Qoc3NsX2N0eCwgY2lw aGVycykgPCAwKSB7CmRpZmYgLXIgNjQyODA3MGI0ODg5IC1yIDBmOWI2MTJkNmQwNyBwZXJkaXRp b24vc3NsLmgKLS0tIGEvcGVyZGl0aW9uL3NzbC5oCVN1biBEZWMgMDEgMTc6MjY6NTEgMjAxMyAr MDkwMAorKysgYi9wZXJkaXRpb24vc3NsLmgJV2VkIE1heSAxMSAwODo1NzoyMiAyMDE2ICswOTAw CkBAIC0zOSw2ICszOSw4IEBACiAjZGVmaW5lIFBFUkRJVElPTl9TU0xfQ0xJRU5UIChmbGFnX3Qp IDB4MQogI2RlZmluZSBQRVJESVRJT05fU1NMX1NFUlZFUiAoZmxhZ190KSAweDIKIAoraW50IHBl cmRpdGlvbl9wYXJzZV9zc2xfcHJvdG9fdmVyc2lvbihjb25zdCBjaGFyICpzdHIpOworCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogICogcGVyZGl0aW9uX3NzbF9jdHgKICAqIENyZWF0ZSBhbiBTU0wgY29udGV4 dAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KUGVyZGl0 aW9uLXVzZXJzIG1haWxpbmcgbGlzdApQZXJkaXRpb24tdXNlcnNAdmVyZ2VuZXQubmV0Cmh0dHBz Oi8vbGlzdHMudmVyZ2VuZXQubmV0L2xpc3RpbmZvL3BlcmRpdGlvbi11c2Vycwo=