From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4DE61C10F03 for ; Thu, 25 Apr 2019 09:32:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0F4BE20675 for ; Thu, 25 Apr 2019 09:32:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728170AbfDYJcy (ORCPT ); Thu, 25 Apr 2019 05:32:54 -0400 Received: from eu-smtp-delivery-151.mimecast.com ([146.101.78.151]:53257 "EHLO eu-smtp-delivery-151.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727891AbfDYJcx (ORCPT ); Thu, 25 Apr 2019 05:32:53 -0400 Received: from AcuMS.aculab.com (156.67.243.126 [156.67.243.126]) (Using TLS) by relay.mimecast.com with ESMTP id uk-mta-193-dLoNYZ5mMnyyNcrvUwaCfA-1; Thu, 25 Apr 2019 10:32:49 +0100 Received: from AcuMS.Aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) by AcuMS.aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 25 Apr 2019 10:34:02 +0100 Received: from AcuMS.Aculab.com ([fe80::43c:695e:880f:8750]) by AcuMS.aculab.com ([fe80::43c:695e:880f:8750%12]) with mapi id 15.00.1347.000; Thu, 25 Apr 2019 10:34:02 +0100 From: David Laight To: 'Willem de Bruijn' CC: "netdev@vger.kernel.org" , "davem@davemloft.net" , "idosch@idosch.org" , "Willem de Bruijn" Subject: RE: [PATCH net] packet: validate address length if non-zero Thread-Topic: [PATCH net] packet: validate address length if non-zero Thread-Index: AQHUmkDdSvpkaV9kXkOyGO8KJ3nLv6ZKP8XAgABHlICAABkn4IAB1QMygADfodA= Date: Thu, 25 Apr 2019 09:34:02 +0000 Message-ID: <22299f1e84604c36a8a6c4635961cb8a@AcuMS.aculab.com> References: <20181222215345.128704-1-willemdebruijn.kernel@gmail.com> <28df499bec4146fdbd9d66a6bf7dc621@AcuMS.aculab.com> <62f0a1c528b04e9eaa863179e227165a@AcuMS.aculab.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 X-MC-Unique: dLoNYZ5mMnyyNcrvUwaCfA-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogV2lsbGVtIGRlIEJydWlqbg0KPiBTZW50OiAyNCBBcHJpbCAyMDE5IDIwOjM1DQo+IE9u IFdlZCwgQXByIDI0LCAyMDE5IGF0IDM6MTQgUE0gV2lsbGVtIGRlIEJydWlqbg0KPiA8d2lsbGVt ZGVicnVpam4ua2VybmVsQGdtYWlsLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBPbiBUdWUsIEFwciAy MywgMjAxOSBhdCAyOjIxIFBNIFdpbGxlbSBkZSBCcnVpam4NCj4gPiA8d2lsbGVtZGVicnVpam4u a2VybmVsQGdtYWlsLmNvbT4gd3JvdGU6DQo+ID4gPg0KPiA+ID4gT24gVHVlLCBBcHIgMjMsIDIw MTkgYXQgMToyMSBQTSBXaWxsZW0gZGUgQnJ1aWpuDQo+ID4gPiA8d2lsbGVtZGVicnVpam4ua2Vy bmVsQGdtYWlsLmNvbT4gd3JvdGU6DQo+ID4gPiA+DQo+ID4gPiA+IE9uIFR1ZSwgQXByIDIzLCAy MDE5IGF0IDE6MDQgUE0gV2lsbGVtIGRlIEJydWlqbg0KPiA+ID4gPiA8d2lsbGVtZGVicnVpam4u a2VybmVsQGdtYWlsLmNvbT4gd3JvdGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBUdWUsIEFw ciAyMywgMjAxOSBhdCAxMTo1MiBBTSBEYXZpZCBMYWlnaHQgPERhdmlkLkxhaWdodEBhY3VsYWIu Y29tPiB3cm90ZToNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBGcm9tOiBXaWxsZW0gZGUgQnJ1 aWpuDQo+ID4gPiA+ID4gPiA+IFNlbnQ6IDIzIEFwcmlsIDIwMTkgMTY6MDgNCj4gPiA+ID4gPiA+ ID4gT24gVHVlLCBBcHIgMjMsIDIwMTkgYXQgNTo1OSBBTSBEYXZpZCBMYWlnaHQgPERhdmlkLkxh aWdodEBhY3VsYWIuY29tPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ IEZyb206IFdpbGxlbSBkZSBCcnVpam4NCj4gPiA+ID4gPiA+ID4gPiA+IFNlbnQ6IDIyIERlY2Vt YmVyIDIwMTggMjE6NTQNCj4gPiA+ID4gPiA+ID4gPiA+IFZhbGlkYXRlIHBhY2tldCBzb2NrZXQg YWRkcmVzcyBsZW5ndGggaWYgYSBsZW5ndGggaXMgZ2l2ZW4uIFplcm8NCj4gPiA+ID4gPiA+ID4g PiA+IGxlbmd0aCBpcyBlcXVpdmFsZW50IHRvIG5vdCBzZXR0aW5nIGFuIGFkZHJlc3MuDQo+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gRml4ZXM6IDk5MTM3Yjc4ODhmNCAoInBh Y2tldDogdmFsaWRhdGUgYWRkcmVzcyBsZW5ndGgiKQ0KPiA+ID4gPiA+ID4gPiA+ID4gUmVwb3J0 ZWQtYnk6IElkbyBTY2hpbW1lbCA8aWRvc2NoQGlkb3NjaC5vcmc+DQo+ID4gPiA+ID4gPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBXaWxsZW0gZGUgQnJ1aWpuIDx3aWxsZW1iQGdvb2dsZS5jb20+DQo+ ID4gPiA+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ID4gPiA+ICBuZXQvcGFja2V0L2FmX3Bh Y2tldC5jIHwgNCArKy0tDQo+ID4gPiA+ID4gPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+ID4gPiBkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQv YWZfcGFja2V0LmMNCj4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IDVkZGEyNjNiNGEwYS4uZWVkYWNk ZWJjZDRjIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNr ZXQuYw0KPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYw0KPiA+ ID4gPiA+ID4gPiA+ID4gQEAgLTI2MjUsNyArMjYyNSw3IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9z bmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkcg0KPiAqbXNnKQ0KPiA+ID4g PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNsbF9hZGRyKSkpDQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgZ290 byBvdXQ7DQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHByb3RvICAgPSBzYWRkci0+ c2xsX3Byb3RvY29sOw0KPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICBhZGRyICAgID0g c2FkZHItPnNsbF9hZGRyOw0KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBhZGRyICAg ID0gc2FkZHItPnNsbF9oYWxlbiA/IHNhZGRyLT5zbGxfYWRkciA6IE5VTEw7DQo+ID4gPiA+ID4g PiA+ID4gPiAgICAgICAgICAgICAgIGRldiA9IGRldl9nZXRfYnlfaW5kZXgoc29ja19uZXQoJnBv LT5zayksIHNhZGRyLT5zbGxfaWZpbmRleCk7DQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAg ICAgIGlmIChhZGRyICYmIGRldiAmJiBzYWRkci0+c2xsX2hhbGVuIDwgZGV2LT5hZGRyX2xlbikN Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gPiA+ ID4gPiA+ID4gPiA+IEBAIC0yODI1LDcgKzI4MjUsNyBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQo c3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLA0KPiBzaXplX3QgbGVuKQ0K PiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBpZiAobXNnLT5tc2dfbmFtZWxlbiA8IChz YWRkci0+c2xsX2hhbGVuICsgb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX2xsLA0KPiBzbGxfYWRk cikpKQ0KPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0K PiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBwcm90byAgID0gc2FkZHItPnNsbF9wcm90 b2NvbDsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgYWRkciAgICA9IHNhZGRyLT5z bGxfYWRkcjsNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgYWRkciAgICA9IHNhZGRy LT5zbGxfaGFsZW4gPyBzYWRkci0+c2xsX2FkZHIgOiBOVUxMOw0KPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgICAgICAgICBkZXYgPSBkZXZfZ2V0X2J5X2luZGV4KHNvY2tfbmV0KHNrKSwgc2FkZHIt PnNsbF9pZmluZGV4KTsNCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgaWYgKGFkZHIg JiYgZGV2ICYmIHNhZGRyLT5zbGxfaGFsZW4gPCBkZXYtPmFkZHJfbGVuKQ0KPiA+ID4gPiA+ID4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gPiA+ID4g LS0NCj4gPiA+ID4gPiA+ID4gPiA+IDIuMjAuMS40MTUuZzY1MzYxM2M3MjMtZ29vZw0KPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gV2UndmUganVzdCBkaXNjb3ZlcmVkIHRoZSBjb21i aW5hdGlvbiBvZiB0aGlzIHBhdGNoIGFuZCB0aGUgb25lIGl0ICdmaXhlcycNCj4gPiA+ID4gPiA+ ID4gPiBicmVha3Mgc29tZSBvZiBvdXIgdXNlcnNwYWNlIGNvZGUuDQo+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiBQcmlvciB0byB0aGVzZSBjaGFuZ2VzIGl0IGRpZG4ndCBtYXR0ZXIg aWYgY29kZSB1c2luZyBBRl9QQUNLRVQgdG8NCj4gPiA+ID4gPiA+ID4gPiBzZW5kIGV0aGVybmV0 IGZyYW1lcyBvbiBhIHNwZWNpZmljICdldGhlcnR5cGUnIGZhaWxlZCB0byBzZXQgc2xsX2FkZHIu DQo+ID4gPiA+ID4gPiA+ID4gRXZlcnl0aGluZyBhc3N1bWVkIGl0IHdvdWxkIGJlIDYgLSBhbmQg dGhlIHBhY2tldHMgd2VyZSBzZW50Lg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g V2l0aCBib3RoIGNoYW5nZXMgeW91IGdldCBhIC1FSU5WQUwgcmV0dXJuIGZyb20gc29tZXdoZXJl Lg0KPiA+ID4gPiA+ID4gPiA+IEkgY2FuIGZpeCBvdXIgY29kZSwgYnV0IEkgZG91YnQgaXQgaXMg dGhlIG9ubHkgY29kZSBhZmZlY3RlZC4NCj4gPiA+ID4gPiA+ID4gPiBPdGhlciBwZW9wbGUgYXJl IGxpa2VseSB0byBoYXZlIGNvcGllZCB0aGUgc2FtZSBleGFtcGxlLg0KPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiBUaGFua3MgZm9yIHRoZSByZXBvcnQuDQo+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+IFVzYWdlIHRydW1wcyBjb3JyZWN0bmVzcy4gQnV0IHRoaXMgc2VlbXMgdG8gYmUg YSBjYXNlIG9mIGRhbW5lZCBpZiB5b3UNCj4gPiA+ID4gPiA+ID4gZG8sIGRhbW5lZCBpZiB5b3Ug ZG9uJ3QuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFN5emJvdCBmb3VuZCBhIHJlYWwg dXNlIGNhc2Ugb2YgcmVhZGluZyBiZXlvbmQgdGhlIGVuZCBvZg0KPiA+ID4gPiA+ID4gPiBtc2ct Pm1zZ19uYW1lbGVuLCBzaW5jZSB0aGF0IGlzIGNoZWNrZWQgYWdhaW5zdA0KPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgaWYgKG1zZy0+bXNnX25hbWVsZW4gPCAo c2FkZHItPnNsbF9oYWxlbiArDQo+ID4gPiA+ID4gPiA+IG9mZnNldG9mKHN0cnVjdCBzb2NrYWRk cl9sbCwgc2xsX2FkZHIpKSkNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSnVzdCBhc3N1 bWluZyB0aGF0IGFkZHJlc3MgbGVuZ3RoIGlzIGRldi0+YWRkcl9sZW4gYWxsb3dzIGFuDQo+ID4g PiA+ID4gPiA+IG5zX2NhcGFibGUgcm9vdCB0byBidWlsZCBsaW5rIGxheWVyIHBhY2tldHMgd2l0 aCBhZGRyZXNzIHNldCB0bw0KPiA+ID4gPiA+ID4gPiB1bmluaXRpYWxpemVkIGRhdGEuDQo+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEV0aGVybmV0IGlzIG5vdCB0aGUgbW9zdCBwcm9ibGVt YXRpYyBsaW5rIGxheWVyLiBJbmRlZWQsIHNpbmNlDQo+ID4gPiA+ID4gPiA+IEVUSF9BTEVOIDwg c2l6ZW9mKHNsbF9hZGRyKSwgdGhlIHByZXZpb3VzIGNoZWNrDQo+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgICBpZiAobXNnLT5tc2dfbmFtZWxlbiA8IHNpemVvZihz dHJ1Y3Qgc29ja2FkZHJfbGwpKQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBXaWxsIGJl IHN1ZmZpY2llbnQgaW4gdGhpcyBjYXNlLiBUaGUgc3l6Ym90IHJlcG9ydCB3YXMgb24gYSBkZXZp Y2Ugb2YNCj4gPiA+ID4gPiA+ID4gdHlwZSBpcDZncmUsIHdpdGggYWRkcl9sZW4gc2l6ZW9mKHN0 cnVjdCBpbjZfYWRkcikuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFNvIEkgY2FuIHJl ZmluZSB0byBvbmx5IHBlcmZvcm0gdGhlIGNoZWNrIG9uIHByb3RvY29scyB3aXRoIGFkZHJfbGVu DQo+ID4gPiA+ID4gPiA+ID49IHNpemVvZihzbGxfYWRkciksIGV4Y2x1ZGluZyBFdGhlcm5ldC4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBNYXliZSBzb21ldGhpbmcgbGlrZToNCj4gPiA+ID4g PiA+ICAgICAgICAgICAgICAgICBhZGRyICAgID0gc2FkZHItPnNsbF9hZGRyOw0KPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgIGRldiA9IGRldl9nZXRfYnlfaW5kZXgoc29ja19uZXQoc2spLCBz YWRkci0+c2xsX2lmaW5kZXgpOw0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIGlmIChkZXYg JiYgbXNnLT5tc2dfbmFtZWxlbiA8IChkZXYtPmFkZHJfbGVuDQo+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvZmZzZXRvZihzdHJ1Y3Qgc29ja2Fk ZHJfbGwsDQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzbGxfYWRkcikpKQ0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgLyogRG9uJ3QgcmVhZCBhZGRyZXNzIGZyb20gYmV5b25kIHRoZSBlbmQgb2YgdGhlIGJ1ZmZl ciAqLw0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gU28gaXQganVzdCBjaGVja3MgdGhhdCBhbGwgb2YgdGhlIGFk ZHJlc3MgaXMgaW4gdGhlIGJ1ZmZlciBwYXNzZWQNCj4gPiA+ID4gPiA+IGZyb20gdGhlIHVzZXIu DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBZZXMuIHNsbF9oYWxlbiBpcyBuZXZlciB1c2VkIG91dHNp ZGUgdGhpcyBibG9jay4gVGVzdGluZyB0aGF0IGFnYWluc3QNCj4gPiA+ID4gPiBkZXYtPmFkZHJf bGVuIGp1c3QgYWRkcyBuZWVkbGVzcyBhIGxldmVsIG9mIGluZGlyZWN0aW9uLiBXZSBvbmx5IGNh cmUNCj4gPiA+ID4gPiB0aGF0IGNvZGUgdGhhdCBhc3N1bWVzIHRoZSBhZGRyZXNzIGlzIGRldi0+ YWRkcl9sZW4gd29uJ3QgcmVhZCBiZXlvbmQNCj4gPiA+ID4gPiB0aGUgZW5kIG9mIG1zZy0+bmFt ZWxlbi4gU28gdGhpcyBsb29rcyBncmVhdCB0byBtZSAoYXNpZGUgZnJvbSBnb3RvDQo+ID4gPiA+ ID4gb3V0X3VubG9jaykuIFRoYW5rcy4NCj4gPiA+ID4NCj4gPiA+ID4gQWN0dWFsbHksIHRoaXMg b25seSBtYXR0ZXJzIGlmIHNsbF9hZGRyIG1heSBiZSByZWFkLCB3aGljaCBpcyBvbmx5DQo+ID4g PiA+IHRydWUgZm9yIFNPQ0tfREdSQU0uIEl0IGlzIGZpbmUgdG8gcGFzcyBhIHNvY2thZGRyX2xs IHdpdGhvdXQgYW4NCj4gPiA+ID4gYWRkcmVzcyBmb3IgU09DS19SQVcuDQo+ID4gPg0KPiA+ID4g U28gc29tZXRoaW5nIGxpa2UNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9h Zl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMNCj4gPiA+IGluZGV4IDVjNGExMThk NmY5NjkuLjY0YWIzYzk2MGY1MzggMTAwNjQ0DQo+ID4gPiAtLS0gYS9uZXQvcGFja2V0L2FmX3Bh Y2tldC5jDQo+ID4gPiArKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jDQo+ID4gPiBAQCAtMjgx OSwxMiArMjgxOSwxMCBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29j aywNCj4gPiA+IHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikNCj4gPiA+ICAgICAgICAg ICAgICAgICBlcnIgPSAtRUlOVkFMOw0KPiA+ID4gICAgICAgICAgICAgICAgIGlmIChtc2ctPm1z Z19uYW1lbGVuIDwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9sbCkpDQo+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gPiA+IC0gICAgICAgICAgICAgICBpZiAobXNnLT5t c2dfbmFtZWxlbiA8IChzYWRkci0+c2xsX2hhbGVuICsNCj4gPiA+IG9mZnNldG9mKHN0cnVjdCBz b2NrYWRkcl9sbCwgc2xsX2FkZHIpKSkNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGdv dG8gb3V0Ow0KPiA+ID4gICAgICAgICAgICAgICAgIHByb3RvICAgPSBzYWRkci0+c2xsX3Byb3Rv Y29sOw0KPiA+ID4gLSAgICAgICAgICAgICAgIGFkZHIgICAgPSBzYWRkci0+c2xsX2hhbGVuID8g c2FkZHItPnNsbF9hZGRyIDogTlVMTDsNCj4gPiA+ICsgICAgICAgICAgICAgICBhZGRyICAgID0g c29jay0+dHlwZSA9PSBTT0NLX0RHUkFNID8gc2FkZHItPnNsbF9hZGRyIDogTlVMTDsNCj4gPiA+ ICAgICAgICAgICAgICAgICBkZXYgPSBkZXZfZ2V0X2J5X2luZGV4KHNvY2tfbmV0KHNrKSwgc2Fk ZHItPnNsbF9pZmluZGV4KTsNCj4gPiA+IC0gICAgICAgICAgICAgICBpZiAoYWRkciAmJiBkZXYg JiYgc2FkZHItPnNsbF9oYWxlbiA8IGRldi0+YWRkcl9sZW4pDQo+ID4gPiArICAgICAgICAgICAg ICAgaWYgKGFkZHIgJiYgZGV2ICYmIG1zZy0+bXNnX25hbWVsZW4gPCAoZGV2LT5hZGRyX2xlbiAr DQo+ID4gPiBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfbGwsIHNsbF9hZGRyKSkpDQo+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7DQo+ID4NCj4gPiBTZW50IGh0 dHA6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC8xMDkwMzQwLw0KPiA+DQo+ID4gVGhvdWdo IEkgcHJvYmFibHkgbWlzdW5kZXJzdG9vZCB5b3VyIGlzc3VlLg0KPiA+DQo+ID4gSSBpbml0aWFs bHkgdGhvdWdodCB0aGF0IGFuIHNsbF9oYWxlbiA+IDAgPCBkZXYtPmFkZHJfbGVuIHdhcw0KPiA+ IHRyaWdnZXJpbmcgdGhlIGltbWVkaWF0ZWx5IGNoZWNrLg0KPiA+DQo+ID4gQnV0IEkgZ3Vlc3Mg dGhhdCB0aGUgcmVhbCBpc3N1ZSB3YXMgYW4gc2xsX2hhbGVuID09IDAgd2FzIGNhdXNpbmcgYWRk cg0KPiA+IHRvIGJlIE5VTEwsIGJ1dCBkZXZfaGFyZF9oZWFkZXIgc3RpbGwgY2FsbGVkLiBGb3Ig RXRoZXJuZXQsIGV0aF9oZWFkZXINCj4gPiB0aGVuIGRvZXMgbm90IGZhaWwsIGJ1dCBzaW1wbHkg ZG9lcyBub3QgZmlsbCBpbiBldGgtPmhfZGVzdC4NCj4gDQo+IEx1Y2tpbHkgSSBtaXNyZWFkLiBJ dCAqZG9lcyogZmFpbCBhbmQgc28gZG9lcyBzZW5kdG8uIEJ1dCBpbmRlZWQgaW4gYQ0KPiBkaWZm ZXJlbnQgd2F5IHRoYW4gSSBwcmV2aW91c2x5IHVuZGVyc3Rvb2QgeW91ciByZXBvcnQuDQoNCkkg ZGlkbid0IHRyYWNrIGRvd24gd2hlcmUgdGhlIEVJTlZBTCBjYW1lIGZyb20uDQoNCj4gPiBMZXQg bWUga25vdyBpZiB5b3UnZCBwcmVmZXIgYSByZXZpc2VkIGNvbW1pdCBtZXNzYWdlLg0KDQpJJ3Zl IGp1c3QgZG9uZSBhIGJpdCBvZiBzb2Z0d2FyZSBhcmNoYWVvbG9neS4NCg0KUHJpb3IgdG8gMi42 LjE0LXJjMyB0aGUgc2VuZCBjb2RlIGlnbm9yZWQgc2xsX2hhbGVuLCBpdCB3YXMgb25seSBzZXQg YnkgdGhlIHJlY2VpdmUgY29kZS4NClNvIGl0IGlzIG5vdCBzdXJwcmlzaW5nIHRoYXQgb2xkIGFw cGxpY2F0aW9uIGNvZGUgbGVhdmVzIGl0IGFzIHplcm8uDQoNClRoZSBvbGQgcmVjZWl2ZSBjb2Rl IGFsc28gYWx3YXlzIHNldCBtc2dfbmFtZWxlbiA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2xs KS4NClRoZSByZWNlaXZlIGNvZGUgbm93IHNldHM6DQogIG1zZ19uYW1lbGVuID0gb2Zmc2V0b2Yo c3RydWN0IHNvY2thZGRyX2xsLCBzbGxfYWRkcikgKyBzYWRkci0+c2xsX2hhbGVuOw0KRm9yIGV0 aGVybmV0IHRoaXMgY2hhbmdlcyB0aGUgbXNnX25hbWVsZW4gZnJvbSAyMCB0byAxOC4NCkEgc2lk ZSBlZmZlY3QgKG5vIG9uZSBoYXMgbm90aWNlZCBmb3IgeWVhcnMpIGlzIHRoYXQgeW91IGNhbid0 IHNlbmQgYSByZXBseQ0KYnkgcGFzc2luZyBiYWNrIHRoZSByZWNlaXZlZCBhZGRyZXNzIGJ1ZmZl ci4NCg0KTG9va2luZyBhdCBpdCBhbGwgYWdhaW4gaG93IGFib3V0Og0KCWNoYXIgKmFkZHIgPSBO VUxMOw0KCS4uLg0KCQkJZXJyID0gLUVJTlZBTDsNCgkJCWlmIChtc2ctPm1zZ19uYW1lbGVuIDwg b2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX2xsLCBzbGxfYWRkcikpDQoJCQkJZ290byBvdXQ7DQoJ CQlwcm90byA9IHNhZGRyLT5zbGxfcHJvdG9jb2w7DQoJCQlkZXYgPSBkZXZfZ2V0X2J5X2luZGV4 KHNvY2tfbmV0KHNrKSwgc2FkZHItPnNsbF9pZmluZGV4KTsNCgkJCWlmIChkZXYgJiYgc29jay0+ dHlwZSA9PSBTT0NLX0RHUkFNKSB7DQoJCQkJaWYgKG1zZy0+bXNnX25hbWVsZW4gPCBkZXYtPmFk ZHJfbGVuICsgb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX2xsLCBzbGxfYWRkcikpDQoJCQkJCWdv dG8gb3V0X3VubG9jazsNCgkJCQlhZGRyID0gc2FkZHItPnNsbF9hZGRyOw0KCQkJfQ0KDQpBbHRo b3VnaCBpdCBtaWdodCBldmVuIGJlIHdvcnRoIG1vdmluZyB0aGUgY2hlY2sgZm9yIChkZXYgPT0g TlVMTCkNCmluc2lkZSB0aGUgY29uZGl0aW9uYWwuDQoNClRoZW4gd2UnbGwgcGFpbnQgdGhlIGJp a2VzaGVkIGluIFBhaXNsZXkuDQoNCglEYXZpZA0KDQotDQpSZWdpc3RlcmVkIEFkZHJlc3MgTGFr ZXNpZGUsIEJyYW1sZXkgUm9hZCwgTW91bnQgRmFybSwgTWlsdG9uIEtleW5lcywgTUsxIDFQVCwg VUsNClJlZ2lzdHJhdGlvbiBObzogMTM5NzM4NiAoV2FsZXMpDQo=