From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.27054.1585180907383590627 for ; Wed, 25 Mar 2020 17:01:47 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: siyuan.fu@intel.com) IronPort-SDR: tBkmfVupsLGnuOEV8fZ6RZUul+uX+ToQtv5qJ1kXC8RATncUnaU/E8aYLpXFE2DcDZDMdt0emU kgyYEXBxC2SA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2020 17:01:46 -0700 IronPort-SDR: M/ZkNHXP/el8vUNd562ptOj3/9dpVWJsMuE0wgsZI7hnfpaSC87DQxJUzJF3lsVa2f36dQbxkQ OghAIf8henYA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,306,1580803200"; d="scan'208";a="240789342" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga008.jf.intel.com with ESMTP; 25 Mar 2020 17:01:46 -0700 Received: from shsmsx153.ccr.corp.intel.com (10.239.6.53) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 25 Mar 2020 17:01:45 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.137]) by SHSMSX153.ccr.corp.intel.com ([169.254.12.96]) with mapi id 14.03.0439.000; Thu, 26 Mar 2020 08:01:43 +0800 From: "Siyuan, Fu" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "Wu, Jiaxin" CC: "maciej.rabeda@linux.intel.com" Subject: Re: [edk2-devel] [PATCH v1] NetworkPkg/Ip6Dxe: Improve Neightbor Discovery message validation (CVE-2019-14559) Thread-Topic: [edk2-devel] [PATCH v1] NetworkPkg/Ip6Dxe: Improve Neightbor Discovery message validation (CVE-2019-14559) Thread-Index: AQHV8I+M2lf2TnOFWEqYBKEFZZtZo6hYy9UAgAFWOHA= Date: Thu, 26 Mar 2020 00:01:43 +0000 Message-ID: References: <20200302123852.575-1-maciej.rabeda@linux.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: siyuan.fu@intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 TWFjaWVqL0xhc3psbywNCg0KU29ycnkgSSBtaXNzZWQgdGhpcyBwYXRjaC4gSXQgbG9va3MgZ29v ZCB3aXRoIG1lLg0KDQpSZXZpZXdlZC1ieTogU2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwuY29t Pg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3Jv dXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIExhc3psbyBFcnNlaw0K PiBTZW50OiAyMDIwxOoz1MIyNcjVIDE5OjM2DQo+IFRvOiBXdSwgSmlheGluIDxqaWF4aW4ud3VA aW50ZWwuY29tPjsgRnUsIFNpeXVhbiA8c2l5dWFuLmZ1QGludGVsLmNvbT4NCj4gQ2M6IGRldmVs QGVkazIuZ3JvdXBzLmlvOyBtYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNvbQ0KPiBTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MV0gTmV0d29ya1BrZy9JcDZEeGU6IEltcHJvdmUg TmVpZ2h0Ym9yDQo+IERpc2NvdmVyeSBtZXNzYWdlIHZhbGlkYXRpb24gKENWRS0yMDE5LTE0NTU5 KQ0KPiANCj4gSmlheGluLCBTaXl1YW4sDQo+IA0KPiBPbiAwMy8wMi8yMCAxMzozOCwgTWFjaWVq IFJhYmVkYSB3cm90ZToNCj4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9MjE3NA0KPiA+DQo+ID4gUHJvYmxlbSBoYXMgYmVlbiBpZGVudGlmaWVk IHdpdGggSXA2UHJvY2Vzc1JvdXRlckFkdmVydGlzZSgpIHdoZW4NCj4gPiBSb3V0ZXIgQWR2ZXJ0 aXNlIHBhY2tldCBjb250YWlucyBvcHRpb25zIHdpdGggbWFsaWNpb3VzL2ludmFsaWQNCj4gPiAn TGVuZ3RoJyBmaWVsZC4gVGhpcyBjYW4gbGVhZCB0byBwbGF0Zm9ybSBlbnRlcmluZyBpbmZpbml0 ZSBsb29wDQo+ID4gd2hlbiBwcm9jZXNzaW5nIG9wdGlvbnMgZnJvbSB0aGF0IHBhY2tldC4NCj4g Pg0KPiA+IENjOiBKaWF4aW4gV3UgPGppYXhpbi53dUBpbnRlbC5jb20+DQo+ID4gQ2M6IFNpeXVh biBGdSA8c2l5dWFuLmZ1QGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYWNpZWogUmFi ZWRhIDxtYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgTmV0d29y a1BrZy9JcDZEeGUvSXA2TmQuYyAgICAgfCA0NCArKysrKysrKystLS0tLS0NCj4gPiAgTmV0d29y a1BrZy9JcDZEeGUvSXA2TmQuaCAgICAgfCAxMyArKysrKw0KPiA+ICBOZXR3b3JrUGtnL0lwNkR4 ZS9JcDZPcHRpb24uYyB8IDU3ICsrKysrKysrKysrKysrKy0tLS0tDQo+ID4gIDMgZmlsZXMgY2hh bmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pDQo+IA0KPiBjYW4geW91IHBs ZWFzZSByZXZpZXcgdGhpcyBwYXRjaD8gSXQgaGFzIHNwZW50IDMrIHdlZWtzIG9uIHRoZSBsaXN0 Lg0KPiANCj4gVGhhbmtzLA0KPiBMYXN6bG8NCj4gDQo+ID4gZGlmZiAtLWdpdCBhL05ldHdvcmtQ a2cvSXA2RHhlL0lwNk5kLmMgYi9OZXR3b3JrUGtnL0lwNkR4ZS9JcDZOZC5jDQo+ID4gaW5kZXgg NDI4OGVmMDJkZDQ2Li5mZDdmNjBiMmY5MmMgMTAwNjQ0DQo+ID4gLS0tIGEvTmV0d29ya1BrZy9J cDZEeGUvSXA2TmQuYw0KPiA+ICsrKyBiL05ldHdvcmtQa2cvSXA2RHhlL0lwNk5kLmMNCj4gPiBA QCAtMTkyNyw3ICsxOTI3LDcgQEAgSXA2UHJvY2Vzc1JvdXRlckFkdmVydGlzZSAoDQo+ID4gICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBSZWFjaGFibGVUaW1lOw0KPiA+ICAgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgUmV0cmFuc1RpbWVyOw0KPiA+ICAgIFVJTlQxNiAgICAgICAgICAg ICAgICAgICAgUm91dGVyTGlmZXRpbWU7DQo+ID4gLSAgVUlOVDE2ICAgICAgICAgICAgICAgICAg ICBPZmZzZXQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBPZmZzZXQ7DQo+ID4g ICAgVUlOVDggICAgICAgICAgICAgICAgICAgICBUeXBlOw0KPiA+ICAgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgTGVuZ3RoOw0KPiA+ICAgIElQNl9FVEhFUl9BRERSX09QVElPTiAgICAgTGlu a0xheWVyT3B0aW9uOw0KPiA+IEBAIC0yMDk0LDEwICsyMDk0LDExIEBAIElwNlByb2Nlc3NSb3V0 ZXJBZHZlcnRpc2UgKA0KPiA+ICAgIC8vDQo+ID4gICAgLy8gVGhlIG9ubHkgZGVmaW5lZCBvcHRp b25zIHRoYXQgbWF5IGFwcGVhciBhcmUgdGhlIFNvdXJjZQ0KPiA+ICAgIC8vIExpbmstTGF5ZXIg QWRkcmVzcywgUHJlZml4IGluZm9ybWF0aW9uIGFuZCBNVFUgb3B0aW9ucy4NCj4gPiAtICAvLyBB bGwgaW5jbHVkZWQgb3B0aW9ucyBoYXZlIGEgbGVuZ3RoIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHpl cm8uDQo+ID4gKyAgLy8gQWxsIGluY2x1ZGVkIG9wdGlvbnMgaGF2ZSBhIGxlbmd0aCB0aGF0IGlz IGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZA0KPiA+ICsgIC8vIGZpdCB3aXRoaW4gdGhlIGlucHV0IHBh Y2tldC4NCj4gPiAgICAvLw0KPiA+ICAgIE9mZnNldCA9IDE2Ow0KPiA+IC0gIHdoaWxlIChPZmZz ZXQgPCBIZWFkLT5QYXlsb2FkTGVuZ3RoKSB7DQo+ID4gKyAgd2hpbGUgKE9mZnNldCA8IChVSU5U MzIpIEhlYWQtPlBheWxvYWRMZW5ndGgpIHsNCj4gPiAgICAgIE5ldGJ1ZkNvcHkgKFBhY2tldCwg T2Zmc2V0LCBzaXplb2YgKFVJTlQ4KSwgJlR5cGUpOw0KPiA+ICAgICAgc3dpdGNoIChUeXBlKSB7 DQo+ID4gICAgICBjYXNlIElwNk9wdGlvbkV0aGVyU291cmNlOg0KPiA+IEBAIC0yMTA1LDkgKzIx MDYsMTIgQEAgSXA2UHJvY2Vzc1JvdXRlckFkdmVydGlzZSAoDQo+ID4gICAgICAgIC8vIFVwZGF0 ZSB0aGUgbmVpZ2hib3IgY2FjaGUNCj4gPiAgICAgICAgLy8NCj4gPiAgICAgICAgTmV0YnVmQ29w eSAoUGFja2V0LCBPZmZzZXQsIHNpemVvZiAoSVA2X0VUSEVSX0FERFJfT1BUSU9OKSwgKFVJTlQ4 ICopDQo+ICZMaW5rTGF5ZXJPcHRpb24pOw0KPiA+IC0gICAgICBpZiAoTGlua0xheWVyT3B0aW9u Lkxlbmd0aCA8PSAwKSB7DQo+ID4gLSAgICAgICAgZ290byBFeGl0Ow0KPiA+IC0gICAgICB9DQo+ ID4gKw0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBPcHRpb24gc2l6ZSB2YWxpZGl0eSBl bnN1cmVkIGJ5IElwNklzTkRPcHRpb25WYWxpZCgpLg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAg ICBBU1NFUlQgKExpbmtMYXllck9wdGlvbi5MZW5ndGggIT0gMCk7DQo+ID4gKyAgICAgIEFTU0VS VCAoT2Zmc2V0ICsgKFVJTlQzMikgTGlua0xheWVyT3B0aW9uLkxlbmd0aCAqIDggPj0gKFVJTlQz MikgSGVhZC0NCj4gPlBheWxvYWRMZW5ndGgpOw0KPiA+DQo+ID4gICAgICAgIFplcm9NZW0gKCZM aW5rTGF5ZXJBZGRyZXNzLCBzaXplb2YgKEVGSV9NQUNfQUREUkVTUykpOw0KPiA+ICAgICAgICBD b3B5TWVtICgmTGlua0xheWVyQWRkcmVzcywgTGlua0xheWVyT3B0aW9uLkV0aGVyQWRkciwgNik7 DQo+ID4gQEAgLTIxNTEsMTMgKzIxNTUsMTcgQEAgSXA2UHJvY2Vzc1JvdXRlckFkdmVydGlzZSAo DQo+ID4gICAgICAgICAgfQ0KPiA+ICAgICAgICB9DQo+ID4NCj4gPiAtICAgICAgT2Zmc2V0ID0g KFVJTlQxNikgKE9mZnNldCArIChVSU5UMTYpIExpbmtMYXllck9wdGlvbi5MZW5ndGggKiA4KTsN Cj4gPiArICAgICAgT2Zmc2V0ICs9IChVSU5UMzIpIExpbmtMYXllck9wdGlvbi5MZW5ndGggKiA4 Ow0KPiA+ICAgICAgICBicmVhazsNCj4gPiAgICAgIGNhc2UgSXA2T3B0aW9uUHJlZml4SW5mbzoN Cj4gPiAgICAgICAgTmV0YnVmQ29weSAoUGFja2V0LCBPZmZzZXQsIHNpemVvZiAoSVA2X1BSRUZJ WF9JTkZPX09QVElPTiksIChVSU5UOCAqKQ0KPiAmUHJlZml4T3B0aW9uKTsNCj4gPiAtICAgICAg aWYgKFByZWZpeE9wdGlvbi5MZW5ndGggIT0gNCkgew0KPiA+IC0gICAgICAgIGdvdG8gRXhpdDsN Cj4gPiAtICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gT3B0aW9u IHNpemUgdmFsaWRpdHkgZW5zdXJlZCBieSBJcDZJc05ET3B0aW9uVmFsaWQoKS4NCj4gPiArICAg ICAgLy8NCj4gPiArICAgICAgQVNTRVJUIChQcmVmaXhPcHRpb24uTGVuZ3RoID09IDQpOw0KPiA+ ICsgICAgICBBU1NFUlQgKE9mZnNldCArIChVSU5UMzIpIFByZWZpeE9wdGlvbi5MZW5ndGggKiA4 ID49IChVSU5UMzIpIEhlYWQtDQo+ID5QYXlsb2FkTGVuZ3RoKTsNCj4gPiArDQo+ID4gICAgICAg IFByZWZpeE9wdGlvbi5WYWxpZExpZmV0aW1lICAgICA9IE5UT0hMIChQcmVmaXhPcHRpb24uVmFs aWRMaWZldGltZSk7DQo+ID4gICAgICAgIFByZWZpeE9wdGlvbi5QcmVmZXJyZWRMaWZldGltZSA9 IE5UT0hMIChQcmVmaXhPcHRpb24uUHJlZmVycmVkTGlmZXRpbWUpOw0KPiA+DQo+ID4gQEAgLTIz MjEsOSArMjMyOSwxMiBAQCBJcDZQcm9jZXNzUm91dGVyQWR2ZXJ0aXNlICgNCj4gPiAgICAgICAg YnJlYWs7DQo+ID4gICAgICBjYXNlIElwNk9wdGlvbk10dToNCj4gPiAgICAgICAgTmV0YnVmQ29w eSAoUGFja2V0LCBPZmZzZXQsIHNpemVvZiAoSVA2X01UVV9PUFRJT04pLCAoVUlOVDggKikNCj4g Jk1UVU9wdGlvbik7DQo+ID4gLSAgICAgIGlmIChNVFVPcHRpb24uTGVuZ3RoICE9IDEpIHsNCj4g PiAtICAgICAgICBnb3RvIEV4aXQ7DQo+ID4gLSAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIC8v DQo+ID4gKyAgICAgIC8vIE9wdGlvbiBzaXplIHZhbGlkaXR5IGVuc3VyZWQgYnkgSXA2SXNORE9w dGlvblZhbGlkKCkuDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIEFTU0VSVCAoTVRVT3B0aW9u Lkxlbmd0aCA9PSAxKTsNCj4gPiArICAgICAgQVNTRVJUIChPZmZzZXQgKyAoVUlOVDMyKSBNVFVP cHRpb24uTGVuZ3RoICogOCA+PSAoVUlOVDMyKSBIZWFkLQ0KPiA+UGF5bG9hZExlbmd0aCk7DQo+ ID4NCj4gPiAgICAgICAgLy8NCj4gPiAgICAgICAgLy8gVXNlIElQdjYgbWluaW11bSBsaW5rIE1U VSAxMjgwIGJ5dGVzIGFzIHRoZSBtYXhpbXVtIHBhY2tldCBzaXplIGluDQo+IG9yZGVyDQo+ID4g QEAgLTIzMzgsMTEgKzIzNDksMTAgQEAgSXA2UHJvY2Vzc1JvdXRlckFkdmVydGlzZSAoDQo+ID4g ICAgICAgIC8vIFNpbGVudGx5IGlnbm9yZSB1bnJlY29nbml6ZWQgb3B0aW9ucw0KPiA+ICAgICAg ICAvLw0KPiA+ICAgICAgICBOZXRidWZDb3B5IChQYWNrZXQsIE9mZnNldCArIHNpemVvZiAoVUlO VDgpLCBzaXplb2YgKFVJTlQ4KSwgJkxlbmd0aCk7DQo+ID4gLSAgICAgIGlmIChMZW5ndGggPD0g MCkgew0KPiA+IC0gICAgICAgIGdvdG8gRXhpdDsNCj4gPiAtICAgICAgfQ0KPiA+DQo+ID4gLSAg ICAgIE9mZnNldCA9IChVSU5UMTYpIChPZmZzZXQgKyAoVUlOVDE2KSBMZW5ndGggKiA4KTsNCj4g PiArICAgICAgQVNTRVJUIChMZW5ndGggIT0gMCk7DQo+ID4gKw0KPiA+ICsgICAgICBPZmZzZXQg Kz0gKFVJTlQzMikgTGVuZ3RoICogODsNCj4gPiAgICAgICAgYnJlYWs7DQo+ID4gICAgICB9DQo+ ID4gICAgfQ0KPiA+IGRpZmYgLS1naXQgYS9OZXR3b3JrUGtnL0lwNkR4ZS9JcDZOZC5oIGIvTmV0 d29ya1BrZy9JcDZEeGUvSXA2TmQuaA0KPiA+IGluZGV4IDU2MGRmYTM0Mzc4Mi4uNWYxYmQ2ZmI5 MjJhIDEwMDY0NA0KPiA+IC0tLSBhL05ldHdvcmtQa2cvSXA2RHhlL0lwNk5kLmgNCj4gPiArKysg Yi9OZXR3b3JrUGtnL0lwNkR4ZS9JcDZOZC5oDQo+ID4gQEAgLTU2LDEyICs1NiwyMSBAQCBWT0lE DQo+ID4gICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+ICAgICk7DQo+ ID4NCj4gPiArdHlwZWRlZiBzdHJ1Y3QgX0lQNl9PUFRJT05fSEVBREVSIHsNCj4gPiArICBVSU5U OCAgICAgICAgICAgICAgICAgICAgIFR5cGU7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICBMZW5ndGg7DQo+ID4gK30gSVA2X09QVElPTl9IRUFERVI7DQo+ID4gKw0KPiA+ICtTVEFU SUNfQVNTRVJUIChzaXplb2YgKElQNl9PUFRJT05fSEVBREVSKSA9PSAyLCAiSVA2X09QVElPTl9I RUFERVIgaXMNCj4gZXhwZWN0ZWQgdG8gYmUgZXhhY3RseSAyIGJ5dGVzIGxvbmcuIik7DQo+ID4g Kw0KPiA+ICB0eXBlZGVmIHN0cnVjdCBfSVA2X0VUSEVfQUREUl9PUFRJT04gew0KPiA+ICAgIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgVHlwZTsNCj4gPiAgICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgIExlbmd0aDsNCj4gPiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIEV0aGVyQWRk cls2XTsNCj4gPiAgfSBJUDZfRVRIRVJfQUREUl9PUFRJT047DQo+ID4NCj4gPiArU1RBVElDX0FT U0VSVCAoc2l6ZW9mIChJUDZfRVRIRVJfQUREUl9PUFRJT04pID09IDgsDQo+ICJJUDZfRVRIRVJf QUREUl9PUFRJT04gaXMgZXhwZWN0ZWQgdG8gYmUgZXhhY3RseSA4IGJ5dGVzIGxvbmcuIik7DQo+ ID4gKw0KPiA+ICB0eXBlZGVmIHN0cnVjdCBfSVA2X01UVV9PUFRJT04gew0KPiA+ICAgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgVHlwZTsNCj4gPiAgICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgIExlbmd0aDsNCj4gPiBAQCAtNjksNiArNzgsOCBAQCB0eXBlZGVmIHN0cnVjdCBfSVA2X01U VV9PUFRJT04gew0KPiA+ICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgTXR1Ow0KPiA+ICB9 IElQNl9NVFVfT1BUSU9OOw0KPiA+DQo+ID4gK1NUQVRJQ19BU1NFUlQgKHNpemVvZiAoSVA2X01U VV9PUFRJT04pID09IDgsICJJUDZfTVRVX09QVElPTiBpcw0KPiBleHBlY3RlZCB0byBiZSBleGFj dGx5IDggYnl0ZXMgbG9uZy4iKTsNCj4gPiArDQo+ID4gIHR5cGVkZWYgc3RydWN0IF9JUDZfUFJF RklYX0lORk9fT1BUSU9OIHsNCj4gPiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFR5cGU7 DQo+ID4gICAgVUlOVDggICAgICAgICAgICAgICAgICAgICBMZW5ndGg7DQo+ID4gQEAgLTgwLDYg KzkxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0lQNl9QUkVGSVhfSU5GT19PUFRJT04gew0KPiA+ICAg IEVGSV9JUHY2X0FERFJFU1MgICAgICAgICAgUHJlZml4Ow0KPiA+ICB9IElQNl9QUkVGSVhfSU5G T19PUFRJT047DQo+ID4NCj4gPiArU1RBVElDX0FTU0VSVCAoc2l6ZW9mIChJUDZfUFJFRklYX0lO Rk9fT1BUSU9OKSA9PSAzMiwNCj4gIklQNl9QUkVGSVhfSU5GT19PUFRJT04gaXMgZXhwZWN0ZWQg dG8gYmUgZXhhY3RseSAzMiBieXRlcyBsb25nLiIpOw0KPiA+ICsNCj4gPiAgdHlwZWRlZg0KPiA+ ICBWT0lEDQo+ID4gICgqSVA2X0RBRF9DQUxMQkFDSykgKA0KPiA+IGRpZmYgLS1naXQgYS9OZXR3 b3JrUGtnL0lwNkR4ZS9JcDZPcHRpb24uYw0KPiBiL05ldHdvcmtQa2cvSXA2RHhlL0lwNk9wdGlv bi5jDQo+ID4gaW5kZXggNGQ5MmE4NTJkYzg2Li42YjRiMDI5ZDE0NzkgMTAwNjQ0DQo+ID4gLS0t IGEvTmV0d29ya1BrZy9JcDZEeGUvSXA2T3B0aW9uLmMNCj4gPiArKysgYi9OZXR3b3JrUGtnL0lw NkR4ZS9JcDZPcHRpb24uYw0KPiA+IEBAIC0xMjksNDUgKzEyOSw3NCBAQCBJcDZJc05ET3B0aW9u VmFsaWQgKA0KPiA+ICAgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAgT3B0aW9uTGVuDQo+ID4g ICAgKQ0KPiA+ICB7DQo+ID4gLSAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBPZmZzZXQ7DQo+ ID4gLSAgVUlOVDggICAgICAgICAgICAgICAgICAgICBPcHRpb25UeXBlOw0KPiA+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0Ow0KPiA+ICAgIFVJTlQxNiAgICAgICAgICAgICAg ICAgICAgTGVuZ3RoOw0KPiA+ICsgIElQNl9PUFRJT05fSEVBREVSICAgICAgICAgKk9wdGlvbkhl YWRlcjsNCj4gPiArDQo+ID4gKyAgaWYgKE9wdGlvbiA9PSBOVUxMKSB7DQo+ID4gKyAgICBBU1NF UlQgKE9wdGlvbiAhPSBOVUxMKTsNCj4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9DQo+ ID4NCj4gPiAgICBPZmZzZXQgPSAwOw0KPiA+DQo+ID4gLSAgd2hpbGUgKE9mZnNldCA8IE9wdGlv bkxlbikgew0KPiA+IC0gICAgT3B0aW9uVHlwZSA9ICooT3B0aW9uICsgT2Zmc2V0KTsNCj4gPiAt ICAgICBMZW5ndGggICAgPSAoVUlOVDE2KSAoKihPcHRpb24gKyBPZmZzZXQgKyAxKSAqIDgpOw0K PiA+ICsgIC8vDQo+ID4gKyAgLy8gUkZDIDQ4NjEgc3RhdGVzIHRoYXQgTmVpZ2hib3IgRGlzY292 ZXJ5IHBhY2tldCBjYW4gY29udGFpbiB6ZXJvIG9yIG1vcmUNCj4gPiArICAvLyBvcHRpb25zLiBT dGFydCBwcm9jZXNzaW5nIHRoZSBvcHRpb25zIGlmIGF0IGxlYXN0IFR5cGUgKyBMZW5ndGggZmll bGRzDQo+ID4gKyAgLy8gZml0IHdpdGhpbiB0aGUgaW5wdXQgYnVmZmVyLg0KPiA+ICsgIC8vDQo+ ID4gKyAgd2hpbGUgKE9mZnNldCArIHNpemVvZiAoSVA2X09QVElPTl9IRUFERVIpIC0gMSA8IE9w dGlvbkxlbikgew0KPiA+ICsgICAgT3B0aW9uSGVhZGVyICA9IChJUDZfT1BUSU9OX0hFQURFUiop IChPcHRpb24gKyBPZmZzZXQpOw0KPiA+ICsgICAgTGVuZ3RoICAgICAgICA9IChVSU5UMTYpIE9w dGlvbkhlYWRlci0+TGVuZ3RoICogODsNCj4gPg0KPiA+IC0gICAgc3dpdGNoIChPcHRpb25UeXBl KSB7DQo+ID4gKyAgICBzd2l0Y2ggKE9wdGlvbkhlYWRlci0+VHlwZSkgew0KPiA+ICAgICAgY2Fz ZSBJcDZPcHRpb25QcmVmaXhJbmZvOg0KPiA+ICAgICAgICBpZiAoTGVuZ3RoICE9IDMyKSB7DQo+ ID4gICAgICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICAgICAgICB9DQo+ID4gLQ0KPiA+ICAgICAg ICBicmVhazsNCj4gPg0KPiA+ICAgICAgY2FzZSBJcDZPcHRpb25NdHU6DQo+ID4gICAgICAgIGlm IChMZW5ndGggIT0gOCkgew0KPiA+ICAgICAgICAgIHJldHVybiBGQUxTRTsNCj4gPiAgICAgICAg fQ0KPiA+IC0NCj4gPiAgICAgICAgYnJlYWs7DQo+ID4NCj4gPiAgICAgIGRlZmF1bHQ6DQo+ID4g LSAgICAgIC8vDQo+ID4gLSAgICAgIC8vIENoZWNrIHRoZSBsZW5ndGggb2YgSXA2T3B0aW9uRXRo ZXJTb3VyY2UsIElwNk9wdGlvbkV0aGVyVGFyZ2V0LCBhbmQNCj4gPiAtICAgICAgLy8gSXA2T3B0 aW9uUmVkaXJlY3RlZCBoZXJlLiBGb3IgdW5yZWNvZ25pemVkIG9wdGlvbnMsIHNpbGVudGx5IGln bm9yZQ0KPiA+IC0gICAgICAvLyBhbmQgY29udGludWUgcHJvY2Vzc2luZyB0aGUgbWVzc2FnZS4N Cj4gPiAtICAgICAgLy8NCj4gPiArICAgICAgLy8gUkZDIDQ4NjEgc3RhdGVzIHRoYXQgTGVuZ3Ro IGZpZWxkIGNhbm5vdCBiZSAwLg0KPiA+ICAgICAgICBpZiAoTGVuZ3RoID09IDApIHsNCj4gPiAg ICAgICAgICByZXR1cm4gRkFMU0U7DQo+ID4gICAgICAgIH0NCj4gPiArICAgICAgYnJlYWs7DQo+ ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIENoZWNrIHdoZXRoZXIg cmVjb2duaXplZCBvcHRpb25zIGFyZSB3aXRoaW4gdGhlIGlucHV0IGJ1ZmZlcidzIHNjb3BlLg0K PiA+ICsgICAgLy8NCj4gPiArICAgIHN3aXRjaCAoT3B0aW9uSGVhZGVyLT5UeXBlKSB7DQo+ID4g KyAgICBjYXNlIElwNk9wdGlvbkV0aGVyU291cmNlOg0KPiA+ICsgICAgY2FzZSBJcDZPcHRpb25F dGhlclRhcmdldDoNCj4gPiArICAgIGNhc2UgSXA2T3B0aW9uUHJlZml4SW5mbzoNCj4gPiArICAg IGNhc2UgSXA2T3B0aW9uUmVkaXJlY3RlZDoNCj4gPiArICAgIGNhc2UgSXA2T3B0aW9uTXR1Og0K PiA+ICsgICAgICBpZiAoT2Zmc2V0ICsgTGVuZ3RoID4gKFVJTlQzMikgT3B0aW9uTGVuKSB7DQo+ ID4gKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICAgIGJyZWFr Ow0KPiA+DQo+ID4gKyAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBV bnJlY29nbml6ZWQgb3B0aW9ucyBjYW4gYmUgZWl0aGVyIHZhbGlkIChidXQgdW51c2VkKSBvciBp bnZhbGlkDQo+ID4gKyAgICAgIC8vIChnYXJiYWdlIGluIGJldHdlZW4gb3IgcmlnaHQgYWZ0ZXIg dmFsaWQgb3B0aW9ucykuIFNpbGVudGx5IGlnbm9yZS4NCj4gPiArICAgICAgLy8NCj4gPiAgICAg ICAgYnJlYWs7DQo+ID4gICAgICB9DQo+ID4NCj4gPiAtICAgIE9mZnNldCA9IChVSU5UMTYpIChP ZmZzZXQgKyBMZW5ndGgpOw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEFkdmFuY2UgdG8gdGhl IG5leHQgb3B0aW9uLg0KPiA+ICsgICAgLy8gTGVuZ3RoIGFscmVhZHkgY29uc2lkZXJzIG9wdGlv biBoZWFkZXIncyBUeXBlICsgTGVuZ3RoLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIE9mZnNldCAr PSBMZW5ndGg7DQo+ID4gICAgfQ0KPiA+DQo+ID4gICAgcmV0dXJuIFRSVUU7DQo+ID4NCj4gDQo+ IA0KPiANCg0K