From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.971.1596646289625525896 for ; Wed, 05 Aug 2020 09:51:30 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=LfMOJ89Z; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: 4WavrJR4unpIx2pFxVnfo8DMUTl/Jo0nYMGk9Kl8jhjO/Vt3YZEdodNCaEP256pe9FXAp8LG9F koupEKHOE4Aw== X-IronPort-AV: E=McAfee;i="6000,8403,9704"; a="132670651" X-IronPort-AV: E=Sophos;i="5.75,438,1589266800"; d="scan'208";a="132670651" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2020 09:51:28 -0700 IronPort-SDR: +oYnwC0CMWVfgX238ztH49OzqPdYpVV3mxPsGZCBpDnZ+yFfN8DBV2lAqPDZswZm5g8JTzbKiu i+vPFR2Ravyw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,438,1589266800"; d="scan'208";a="274824730" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga007.fm.intel.com with ESMTP; 05 Aug 2020 09:51:28 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 5 Aug 2020 09:51:26 -0700 Received: from fmsmsx108.amr.corp.intel.com (10.18.124.206) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 5 Aug 2020 09:51:26 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 5 Aug 2020 09:51:26 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 5 Aug 2020 09:51:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GW+Hlk5pT47gVchAuNBzjTVFBMsAwl0dD3DsXj62KfvnRQdl66UCkl87p7W4wgTr1XBb84Vun9zHKFgqx6GTUZubKxCmQjejj2GMajg4g1gAnFYwI9FhPsNyB5rioze0AahwDGi+JwxBJnptM8Sat0Eg+MIjbmCS+RN9qaQ36AqewA1lUzIiGu3nBKP0aLX91ICvqhk8o1gNBgxIHRzcX7M1e/BT9jM2BIMywiDx4pnF2ZEcUhZb+cQJih0VrIzKLE9n59MjgP+r8zTyk0Qyjf1rrB4p6+s5meoEmxsNX8dINWJnHPk0wCp1dEVmF3VP8QJojIxl6J96lydMyWhIyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1CZndZXLjpRplUt7Y8SPW6djwXuVxA6oJvlsVRZPUzk=; b=T4FkjWCPuXbPxSMGsCuVul8OaLH7ju6LNq+rN3QLqe6kcISBsgniQimXi9qCnIWgzzXgrVXfbu4CDIZ/GBt3gkaEBIS1v+9YDJ3bamWkVSEbyA/BtkhFKZVhrgKrMM430TMxuFmuuWhzdTy8NosVRTvDwbPOh1mZSC0EnaIp+f3usPbg8yya1NJ0E32v1o6q9JFlwZsRQKv3DumctIjM6h2+9E+Jt3caNSZIgQD2MDvAkCWyI2eOp/J+jkHwNnsGJ61zYwIhTcSgRvBxHKMYI65KGmq9QE6WuSaq+FOFKz2GUjyD+Za089QQNCl5u2WUEElC8OfcRunxJvAk3ar5bQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1CZndZXLjpRplUt7Y8SPW6djwXuVxA6oJvlsVRZPUzk=; b=LfMOJ89ZbsTskWBObwLbMomlNOLMmLMrTn4AMsm0h7nT1NoZurUVtMCgoSX2idlqCsrySyAETEqKWmPHoWoPLJktKtJMfOmgbehrC7LgEfNIWP6WrYDZ1KFUni21zNCaElh2opL17ZXD6y8Tq0maeC6eMQPA6BQ30jLHk1ndTnA= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by BL0PR11MB2913.namprd11.prod.outlook.com (2603:10b6:208:79::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.21; Wed, 5 Aug 2020 16:51:24 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::201e:29f2:a02:c260]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::201e:29f2:a02:c260%4]) with mapi id 15.20.3239.021; Wed, 5 Aug 2020 16:51:24 +0000 From: "Michael D Kinney" To: "michael.kubacki@outlook.com" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Gao, Liming" Subject: Re: [PATCH v1 7/7] FmpDevicePkg/FmpDxe: Improve function parameter validation Thread-Topic: [PATCH v1 7/7] FmpDevicePkg/FmpDxe: Improve function parameter validation Thread-Index: AQHWZujznt5/vD74c0eHQOmRqP+4eqkpwSbw Date: Wed, 5 Aug 2020 16:51:24 +0000 Message-ID: References: <20200731031448.1103-1-michael.kubacki@outlook.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: outlook.com; dkim=none (message not signed) header.d=none;outlook.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 484d001e-e242-4cc9-7458-08d8395fc9d0 x-ms-traffictypediagnostic: BL0PR11MB2913: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fK49vvsAcRxwfjmDNJzLfiiIG5jee3l7t6RsdsLgVg/+ChQ1SS4Myslj53qD4tGtumF7kCiIuPfHF0ZyHF2NF+MyhbnB3wcCqPaNmGryKzn6/ktwRVdKyPDX98NHaPlJP34IQ+CmT1cOZFVJwTGQHc457cnCi0WYfNkSeLgX+FD2HP9Yn+FkNx8o73y8NOK/vDZxfrqI0zaZZr2g6QX2cAdbZ5p9J+EPBvCzOKEFqEsDsrfQIVGux2881Bl/4O2DyVnjo9kIxRBOkasg27Z42f6WWoCq8GKwyHyJwCBHa/UIac+EUy/Cap4GFFQFGmZteZV5H2/oPpnodYJ8gy+rytmwxiR+2pr3qzKbmAY98fIIytKCE83ekXhca8/AL1C+2Ea/Rx6NMnvRQnUb6Q949Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(396003)(346002)(39860400002)(376002)(366004)(33656002)(2906002)(66446008)(9686003)(66556008)(76116006)(186003)(64756008)(26005)(66476007)(55016002)(8936002)(110136005)(66946007)(71200400001)(45080400002)(86362001)(53546011)(8676002)(52536014)(6506007)(107886003)(478600001)(83380400001)(316002)(5660300002)(4326008)(7696005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: BHOOgNQXLXw/V1RJTEunoYH/G9RmCl7IOGvb4drh4Wq9eOKGTKoB0G794bul9EbcsLDn3F1BgWI4cAhb5XZZb3P8ovEu0k94YQGwqMQ9VnopuN+275R2mfBMECCWfaNO+mNBfhK5D7l1/4IRjsnO89F0LlZQt8Xq1Zq2oZnzJ0/qU5EYNH/C9++YcPhpvu4iYuTHUpIsjyYIVGgrRim01uN/nkj7YhHBSrEs6LNihQMZM4dW0XRBGhPKfv8H1zZbXjJkqMS+H7Zni51UeZdrj2OekrOTWLCr+//u3e29mcVFcx5AawrsH1f85Q5TaQMaQJ9z5SP47wTd5nKJ5gDUsK5bUhz3bmow+3jCh6nrkCRAfKk1KM0OAnmBrn9GNInYSc64EPZ9opEt+dYucFsqkPI5MpmtOdP7QRu4Ou711UcpMqZip6R4fnF9fF+DjaxrA/WqSZPQbmhaDhL7RNfInzPdyofc8JoWtfdww5hl/Jl21N02z8cYmLqZhPvvpIPVLiusuOvu2Has9h/nB6BQdP1jdjl9oblEbO20YVd0Ze0bXRlMEc34FMT0webar+lf3AhZYJbQMAn8zCe41WB5RKZ0LjDzpqViQiAaEsA7udiSJIVNGNMgr682LlpzKVLAULwaScX4WsXp8+J58bnTGQ== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4461.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 484d001e-e242-4cc9-7458-08d8395fc9d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2020 16:51:24.1914 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: l4JXnaxGOhCk7DVxdyeewxfqcmU0d046BdsvRvbK5o2df0sjQPR0tRZGdScabcwIJGzBycFoK08V+KB1hAPss62yQZD1hbvuJBO9O+DxnmI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB2913 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWljaGFlbCwNCg0KQSBmZXcgbWlub3IgY29tbWVudHMgaW5jbHVkZWQgYmVsb3cuICBXaXRo IHRob3NlIHVwZGF0ZXMsDQoNClJldmlld2VkLWJ2OiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4NCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IG1pY2hhZWwua3ViYWNraUBvdXRsb29rLmNvbSA8bWljaGFlbC5rdWJhY2tp QG91dGxvb2suY29tPg0KPiBTZW50OiBUaHVyc2RheSwgSnVseSAzMCwgMjAyMCA4OjE1IFBNDQo+ IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9A aW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjEgNy83XSBGbXBEZXZpY2VQa2cvRm1wRHhlOiBJbXByb3Zl IGZ1bmN0aW9uIHBhcmFtZXRlciB2YWxpZGF0aW9uDQo+IA0KPiBGcm9tOiBNaWNoYWVsIEt1YmFj a2kgPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQuY29tPg0KPiANCj4gUkVGOmh0dHBzOi8vYnVn emlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg2OQ0KPiANCj4gTWFrZXMgc29t ZSBtaW5vciBpbXByb3ZlbWVudHMgdG8gZnVuY3Rpb24gcGFyYW1ldGVyIHZhbGlkYXRpb24NCj4g aW4gRm1wRHhlLCBpbiBwYXJ0aWN1bGFyIHRvIGV4dGVybmFsbHkgZXhwb3NlZCBmdW5jdGlvbnMg c3VjaA0KPiBhcyB0aG9zZSB0aGF0IGJhY2sgRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRfUFJPVE9D T0wuDQo+IA0KPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IENjOiBN aWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU2lnbmVkLW9m Zi1ieTogTWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT4NCj4g LS0tDQo+ICBGbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5jIHwgNTYgKysrKysrKysrKysrKysr KystLS0NCj4gIEZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmggfCAxMCArKy0tDQo+ICAyIGZp bGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlm ZiAtLWdpdCBhL0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmMgYi9GbXBEZXZpY2VQa2cvRm1w RHhlL0ZtcER4ZS5jDQo+IGluZGV4IGEzZTM0MjU5MTkzNi4uOTU4ZDliMzk0YjcxIDEwMDY0NA0K PiAtLS0gYS9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5jDQo+ICsrKyBiL0ZtcERldmljZVBr Zy9GbXBEeGUvRm1wRHhlLmMNCj4gQEAgLTI3OCw2ICsyNzgsMTEgQEAgUG9wdWxhdGVEZXNjcmlw dG9yICgNCj4gICAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiAgICBVSU5UMzIgICAgICBEZXBlbmRl bmNpZXNTaXplOw0KPiANCj4gKyAgaWYgKFByaXZhdGUgPT0gTlVMTCkgew0KPiArICAgIERFQlVH ICgoREVCVUdfRVJST1IsICJGbXBEeGUoJXMpOiBQb3B1bGF0ZURlc2NyaXB0b3IoKSAtIFByaXZh dGUgaXMgTlVMTC5cbiIsIG1JbWFnZUlkTmFtZSkpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0K PiArDQo+ICAgIGlmIChQcml2YXRlLT5EZXNjcmlwdG9yUG9wdWxhdGVkKSB7DQo+ICAgICAgcmV0 dXJuOw0KPiAgICB9DQo+IEBAIC00MjksNyArNDM0LDcgQEAgUG9wdWxhdGVEZXNjcmlwdG9yICgN Cj4gICAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBz dWNjZXNzZnVsbHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgaW1hZ2UuDQo+ICAgIEByZXR2YWwgRUZJ X0JVRkZFUl9UT09fU01BTEwgICAgICAgVGhlIEltYWdlSW5mbyBidWZmZXIgd2FzIHRvbyBzbWFs bC4gVGhlIGN1cnJlbnQgYnVmZmVyIHNpemUNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuZWVkZWQgdG8gaG9sZCB0aGUgaW1hZ2UocykgaW5mb3JtYXRpb24gaXMgcmV0 dXJuZWQgaW4gSW1hZ2VJbmZvU2l6ZS4NCj4gLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgICAgICBJbWFnZUluZm9TaXplIGlzIE5VTEwuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICAgICAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwuDQo+ICAgIEByZXR2YWwg RUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgVmFsaWQgaW5mb3JtYXRpb24gY291bGQgbm90IGJl IHJldHVybmVkLiBQb3NzaWJsZSBjb3JydXB0ZWQgaW1hZ2UuDQo+IA0KPiAgKiovDQo+IEBAIC00 NTEsNiArNDU2LDEyIEBAIEdldFRoZUltYWdlSW5mbyAoDQo+IA0KPiAgICBTdGF0dXMgPSBFRklf U1VDQ0VTUzsNCj4gDQo+ICsgIGlmIChUaGlzID09IE5VTEwpIHsNCj4gKyAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiRm1wRHhlKCVzKTogR2V0SW1hZ2VJbmZvKCkgLSBUaGlzIGlzIE5VTEwuXG4i LCBtSW1hZ2VJZE5hbWUpKTsNCj4gKyAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQo+ICsgICAgZ290byBjbGVhbnVwOw0KPiArICB9DQo+ICsNCj4gICAgLy8NCj4gICAgLy8gUmV0 cmlldmUgdGhlIHByaXZhdGUgY29udGV4dCBzdHJ1Y3R1cmUNCj4gICAgLy8NCj4gQEAgLTUzNiw3 ICs1NDcsNyBAQCBHZXRUaGVJbWFnZUluZm8gKA0KPiAgICBAcmV0dmFsIEVGSV9CVUZGRVJfVE9P X1NNQUxMICAgVGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgSW1hZ2VTaXplIGlzIHRvbyBzbWFsbCB0 byBob2xkIHRoZQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuIFRo ZSBjdXJyZW50IGJ1ZmZlciBzaXplIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZSBpcyByZXR1cm5l ZA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gSW1hZ2VTaXplLg0KPiAt ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVGhlIEltYWdlIHdhcyBOVUxMLg0KPiAr ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5V TEwgb3IgSW1hZ2VJbmRleCBpcyBpbnZhbGlkLg0KPiAgICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQg ICAgICAgICAgVGhlIGN1cnJlbnQgaW1hZ2UgaXMgbm90IGNvcGllZCB0byB0aGUgYnVmZmVyLg0K PiAgICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3Qg c3VwcG9ydGVkLg0KPiAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gVGhlIG9wZXJh dGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBhdXRoZW50aWNhdGlvbiBmYWls dXJlLg0KPiBAQCAtNTYxLDYgKzU3MiwxMiBAQCBHZXRUaGVJbWFnZSAoDQo+IA0KPiAgICBTdGF0 dXMgPSBFRklfU1VDQ0VTUzsNCj4gDQo+ICsgIGlmIChUaGlzID09IE5VTEwpIHsNCj4gKyAgICBE RUJVRyAoKERFQlVHX0VSUk9SLCAiRm1wRHhlKCVzKTogR2V0SW1hZ2UoKSAtIFRoaXMgaXMgTlVM TC5cbiIsIG1JbWFnZUlkTmFtZSkpOw0KPiArICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gKyAgICBnb3RvIGNsZWFudXA7DQo+ICsgIH0NCj4gKw0KPiAgICAvLw0KPiAgICAv LyBSZXRyaWV2ZSB0aGUgcHJpdmF0ZSBjb250ZXh0IHN0cnVjdHVyZQ0KPiAgICAvLw0KPiBAQCAt NjE1LDcgKzYzMiw4IEBAIEdldFRoZUltYWdlICgNCj4gICAgQHBhcmFtW2luXSAgIEltYWdlICAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBpbWFnZS4NCj4gICAgQHBhcmFtW2luXSAgIElt YWdlU2l6ZSAgICAgICAgICAgICBTaXplIG9mIHRoZSBpbWFnZS4NCj4gICAgQHBhcmFtW2luXSAg IEFkZGl0aW9uYWxIZWFkZXJTaXplICBTaXplIG9mIGFueSBoZWFkZXJzIHRoYXQgY2Fubm90IGJl IGNhbGN1bGF0ZWQgYnkgdGhpcyBmdW5jdGlvbi4NCj4gLSAgQHBhcmFtW291dF0gIFBheWxvYWRT aXplDQo+ICsgIEBwYXJhbVtvdXRdICBQYXlsb2FkU2l6ZSAgICAgICAgICAgQW4gb3B0aW9uYWwg cG9pbnRlciB0byBhIFVJTlROIHRoYXQgaG9sZHMgdGhlIHNpemUgb2YgdGhlIHBheWxvYWQNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2Ugc2l6ZSBtaW51cyBo ZWFkZXJzKQ0KPiANCj4gICAgQHJldHZhbCAgIU5VTEwgIFZhbGlkIHBvaW50ZXIgdG8gdGhlIGhl YWRlci4NCj4gICAgQHJldHZhbCAgTlVMTCAgIFN0cnVjdHVyZSBpcyBiYWQgYW5kIHBvaW50ZXIg Y2Fubm90IGJlIGZvdW5kLg0KPiBAQCAtNjI2LDcgKzY0NCw3IEBAIEdldEZtcEhlYWRlciAoDQo+ ICAgIElOICBDT05TVCBFRklfRklSTVdBUkVfSU1BR0VfQVVUSEVOVElDQVRJT04gICpJbWFnZSwN Cj4gICAgSU4gIENPTlNUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VT aXplLA0KPiAgICBJTiAgQ09OU1QgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB ZGRpdGlvbmFsSGVhZGVyU2l6ZSwNCj4gLSAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKlBheWxvYWRTaXplDQo+ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpQYXlsb2FkU2l6ZSBPUFRJT05BTA0KPiAgICApDQo+ICB7 DQo+ICAgIC8vDQo+IEBAIC02NDAsNyArNjU4LDEwIEBAIEdldEZtcEhlYWRlciAoDQo+ICAgICAg cmV0dXJuIE5VTEw7DQo+ICAgIH0NCj4gDQo+IC0gICpQYXlsb2FkU2l6ZSA9IEltYWdlU2l6ZSAt IChzaXplb2YgKEltYWdlLT5Nb25vdG9uaWNDb3VudCkgKyBJbWFnZS0+QXV0aEluZm8uSGRyLmR3 TGVuZ3RoICsgQWRkaXRpb25hbEhlYWRlclNpemUpOw0KPiArICBpZiAoUGF5bG9hZFNpemUgIT0g TlVMTCkgew0KPiArICAgICpQYXlsb2FkU2l6ZSA9IEltYWdlU2l6ZSAtIChzaXplb2YgKEltYWdl LT5Nb25vdG9uaWNDb3VudCkgKyBJbWFnZS0+QXV0aEluZm8uSGRyLmR3TGVuZ3RoICsgQWRkaXRp b25hbEhlYWRlclNpemUpOw0KPiArICB9DQo+ICsNCj4gICAgcmV0dXJuIChWT0lEICopKChVSU5U OCAqKUltYWdlICsgc2l6ZW9mIChJbWFnZS0+TW9ub3RvbmljQ291bnQpICsgSW1hZ2UtPkF1dGhJ bmZvLkhkci5kd0xlbmd0aCAgKyBBZGRpdGlvbmFsSGVhZGVyU2l6ZSk7DQo+ICB9DQo+IA0KPiBA QCAtNjYzLDYgKzY4NCwxMCBAQCBHZXRBbGxIZWFkZXJTaXplICgNCj4gIHsNCj4gICAgVUlOVDMy ICBDYWxjdWxhdGVkU2l6ZTsNCj4gDQo+ICsgIGlmIChJbWFnZSA9PSBOVUxMKSB7DQoNClRoaXMg aXMgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiAgSWYgSW1hZ2UgaXMgZXZlciBOVUxMLCBp dCBtdXN0IGJlIGEgYnVnIGluIHRoZSANCkZtcER4ZSBkcml2ZXIuICBTaG91bGQgd2UgZG8gbW9y ZSB0aGFuIGp1c3QgcmV0dXJuIDA/ICBQZXJoYXBzIGEgREVCVUdfRVJST1IgbWVzc2FnZSB0b28/ DQoNCj4gKyAgICByZXR1cm4gMDsNCj4gKyAgfQ0KPiArDQo+ICAgIENhbGN1bGF0ZWRTaXplID0g c2l6ZW9mIChJbWFnZS0+TW9ub3RvbmljQ291bnQpICsNCj4gICAgICAgICAgICAgICAgICAgICBB ZGRpdGlvbmFsSGVhZGVyU2l6ZSArDQo+ICAgICAgICAgICAgICAgICAgICAgSW1hZ2UtPkF1dGhJ bmZvLkhkci5kd0xlbmd0aDsNCj4gQEAgLTY5OCw3ICs3MjMsNyBAQCBHZXRBbGxIZWFkZXJTaXpl ICgNCj4gDQo+ICAgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgaW1hZ2Ugd2Fz IHN1Y2Nlc3NmdWxseSBjaGVja2VkLg0KPiAgICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAg ICAgVGhlIG9wZXJhdGlvbiBpcyBhYm9ydGVkLg0KPiAtICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgVGhlIEltYWdlIHdhcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwuDQoNClRoaXMgZnVuY3Rpb24gYWxz byB1c2VzIEltYWdlSW5kZXguICBTaW1pbGFyIHRvIHVwZGF0ZXMgYWJvdmUsIEkgdGhpbmsgdGhp cw0KQHJldHZhbCBsaW5lIHNob3VsZCBiZToNCg0KICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwgb3IgSW1hZ2VJbmRleCBpcyBpbnZhbGlk Lg0KDQo+ICAgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQuDQo+ICAgIEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiBUaGUg b3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgZHVlIHRvIGFuIGF1dGhlbnRpY2F0aW9u IGZhaWx1cmUuDQo+IA0KPiBAQCAtNzQzLDYgKzc2OCwxMiBAQCBDaGVja1RoZUltYWdlICgNCj4g ICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiAgICB9DQo+IA0KPiArICBpZiAoVGhpcyA9 PSBOVUxMKSB7DQo+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZtcER4ZSglcyk6IENoZWNr SW1hZ2UoKSAtIFRoaXMgaXMgTlVMTC5cbiIsIG1JbWFnZUlkTmFtZSkpOw0KPiArICAgIFN0YXR1 cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICBnb3RvIGNsZWFudXA7DQo+ICsgIH0N Cj4gKw0KPiAgICAvLw0KPiAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpdmF0ZSBjb250ZXh0IHN0cnVj dHVyZQ0KPiAgICAvLw0KPiBAQCAtOTc4LDcgKzEwMDksNyBAQCBDaGVja1RoZUltYWdlICgNCj4g DQo+ICAgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBzdWNj ZXNzZnVsbHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgaW1hZ2UuDQo+ICAgIEByZXR2YWwgRUZJX0FC T1JURUQgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuDQo+IC0gIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSICBUaGUgSW1hZ2Ugd2FzIE5VTEwuDQo+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTC4NCg0KVGhp cyBmdW5jdGlvbiBhbHNvIHVzZXMgSW1hZ2VJbmRleC4gIFNpbWlsYXIgdG8gdXBkYXRlcyBhYm92 ZSwgSSB0aGluayB0aGlzDQpAcmV0dmFsIGxpbmUgc2hvdWxkIGJlOg0KDQogIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTCBvciBJbWFnZUlu ZGV4IGlzIGludmFsaWQuDQoNCj4gICAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIFRo ZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4NCj4gICAgQHJldHZhbCBFRklfU0VDVVJJVFlf VklPTEFUSU9OIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBkdWUgdG8gYW4g YXV0aGVudGljYXRpb24gZmFpbHVyZS4NCj4gDQo+IEBAIC0xMDI2LDYgKzEwNTcsMTIgQEAgU2V0 VGhlSW1hZ2UgKA0KPiAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICAgIH0NCj4gDQo+ ICsgIGlmIChUaGlzID09IE5VTEwpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRm1w RHhlKCVzKTogU2V0VGhlSW1hZ2UoKSAtIFRoaXMgaXMgTlVMTC5cbiIsIG1JbWFnZUlkTmFtZSkp Ow0KPiArICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICBnb3RvIGNs ZWFudXA7DQo+ICsgIH0NCj4gKw0KPiAgICAvLw0KPiAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpdmF0 ZSBjb250ZXh0IHN0cnVjdHVyZQ0KPiAgICAvLw0KPiBAQCAtMTM4Miw2ICsxNDE5LDExIEBAIEZt cER4ZUxvY2tFdmVudE5vdGlmeSAoDQo+ICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ICAgIEZJUk1XQVJFX01BTkFHRU1FTlRfUFJJVkFURV9EQVRBICAqUHJp dmF0ZTsNCj4gDQo+ICsgIGlmIChDb250ZXh0ID09IE5VTEwpIHsNCj4gKyAgICBBU1NFUlQgKENv bnRleHQgIT0gTlVMTCk7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gICAgUHJpdmF0 ZSA9IChGSVJNV0FSRV9NQU5BR0VNRU5UX1BSSVZBVEVfREFUQSAqKUNvbnRleHQ7DQo+IA0KPiAg ICBpZiAoIVByaXZhdGUtPkZtcERldmljZUxvY2tlZCkgew0KPiBkaWZmIC0tZ2l0IGEvRm1wRGV2 aWNlUGtnL0ZtcER4ZS9GbXBEeGUuaCBiL0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmgNCj4g aW5kZXggMzA3NTRkZWE0OTVlLi40ZGZlYzMxNmE1NTggMTAwNjQ0DQo+IC0tLSBhL0ZtcERldmlj ZVBrZy9GbXBEeGUvRm1wRHhlLmgNCj4gKysrIGIvRm1wRGV2aWNlUGtnL0ZtcER4ZS9GbXBEeGUu aA0KPiBAQCAtMyw3ICszLDcgQEANCj4gICAgaW1hZ2Ugc3RvcmVkIGluIGEgZmlybXdhcmUgZGV2 aWNlIHdpdGggcGxhdGZvcm0gYW5kIGZpcm13YXJlIGRldmljZSBzcGVjaWZpYw0KPiAgICBpbmZv cm1hdGlvbiBwcm92aWRlZCB0aHJvdWdoIFBDRHMgYW5kIGxpYnJhcmllcy4NCj4gDQo+IC0gIENv cHlyaWdodCAoYykgMjAxNiwgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uPEJSPg0K PiAgICBDb3B5cmlnaHQgKGMpIDIwMTggLSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiBAQCAtMTMyLDcgKzEzMiw3IEBAIERldGVjdFRlc3RLZXkgKA0K PiAgICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN1 Y2Nlc3NmdWxseSB1cGRhdGVkIHdpdGggdGhlIG5ldyBpbWFnZS4NCj4gICAgQHJldHZhbCBFRklf QlVGRkVSX1RPT19TTUFMTCAgICAgICBUaGUgSW1hZ2VJbmZvIGJ1ZmZlciB3YXMgdG9vIHNtYWxs LiBUaGUgY3VycmVudCBidWZmZXIgc2l6ZQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZShzKSBpbmZvcm1hdGlvbiBpcyByZXR1 cm5lZCBpbiBJbWFnZUluZm9TaXplLg0KPiAtICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiAgICAgIEltYWdlSW5mb1NpemUgaXMgTlVMTC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgICAgICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTC4NCj4gICAgQHJldHZhbCBF RklfREVWSUNFX0VSUk9SICAgICAgICAgICBWYWxpZCBpbmZvcm1hdGlvbiBjb3VsZCBub3QgYmUg cmV0dXJuZWQuIFBvc3NpYmxlIGNvcnJ1cHRlZCBpbWFnZS4NCj4gDQo+ICAqKi8NCj4gQEAgLTE2 Niw3ICsxNjYsNyBAQCBHZXRUaGVJbWFnZUluZm8gKA0KPiAgICBAcmV0dmFsIEVGSV9CVUZGRVJf VE9PX1NNQUxMICAgVGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgSW1hZ2VTaXplIGlzIHRvbyBzbWFs bCB0byBob2xkIHRoZQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Uu IFRoZSBjdXJyZW50IGJ1ZmZlciBzaXplIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZSBpcyByZXR1 cm5lZA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gSW1hZ2VTaXplLg0K PiAtICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVGhlIEltYWdlIHdhcyBOVUxMLg0K PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlz IE5VTEwgb3IgSW1hZ2VJbmRleCBpcyBpbnZhbGlkLg0KPiAgICBAcmV0dmFsIEVGSV9OT1RfRk9V TkQgICAgICAgICAgVGhlIGN1cnJlbnQgaW1hZ2UgaXMgbm90IGNvcGllZCB0byB0aGUgYnVmZmVy Lg0KPiAgICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBu b3Qgc3VwcG9ydGVkLg0KPiAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gVGhlIG9w ZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBhdXRoZW50aWNhdGlvbiBm YWlsdXJlLg0KPiBAQCAtMTk4LDcgKzE5OCw3IEBAIEdldFRoZUltYWdlICgNCj4gDQo+ICAgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgaW1hZ2Ugd2FzIHN1Y2Nlc3NmdWxseSBj aGVja2VkLg0KPiAgICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICAgVGhlIG9wZXJhdGlv biBpcyBhYm9ydGVkLg0KPiAtICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVGhlIElt YWdlIHdhcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1 aXJlZCBwb2ludGVyIGlzIE5VTEwuDQoNClRoaXMgZnVuY3Rpb24gYWxzbyB1c2VzIEltYWdlSW5k ZXguICBTaW1pbGFyIHRvIHVwZGF0ZXMgYWJvdmUsIEkgdGhpbmsgdGhpcw0KQHJldHZhbCBsaW5l IHNob3VsZCBiZToNCg0KICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJl ZCBwb2ludGVyIGlzIE5VTEwgb3IgSW1hZ2VJbmRleCBpcyBpbnZhbGlkLg0KDQo+ICAgIEByZXR2 YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQu DQo+ICAgIEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiBUaGUgb3BlcmF0aW9uIGNvdWxk IG5vdCBiZSBwZXJmb3JtZWQgZHVlIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUuDQo+IA0K PiBAQCAtMjU0LDcgKzI1NCw3IEBAIENoZWNrVGhlSW1hZ2UgKA0KPiANCj4gICAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVk IHdpdGggdGhlIG5ldyBpbWFnZS4NCj4gICAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAg IFRoZSBvcGVyYXRpb24gaXMgYWJvcnRlZC4NCj4gLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgIEEgcmVxdWlyZWQgcG9pbnRlciBpcyBOVUxMLg0KDQpUaGlzIGZ1bmN0aW9uIGFsc28g dXNlcyBJbWFnZUluZGV4LiAgU2ltaWxhciB0byB1cGRhdGVzIGFib3ZlLCBJIHRoaW5rIHRoaXMN CkByZXR2YWwgbGluZSBzaG91bGQgYmU6DQoNCiAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgIEEgcmVxdWlyZWQgcG9pbnRlciBpcyBOVUxMIG9yIEltYWdlSW5kZXggaXMgaW52YWxpZC4N Cg0KPiAgICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBu b3Qgc3VwcG9ydGVkLg0KPiAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gVGhlIG9w ZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBhdXRoZW50aWNhdGlvbiBm YWlsdXJlLg0KPiANCj4gLS0NCj4gMi4yNy4wLndpbmRvd3MuMQ0KDQo=