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 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3215FC19776 for ; Fri, 28 Feb 2025 14:09:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1to13f-0001nf-Es; Fri, 28 Feb 2025 09:09:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tnx69-0006n8-4j for grub-devel@gnu.org; Fri, 28 Feb 2025 04:56:01 -0500 Received: from mailgate02.uberspace.is ([185.26.156.114]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tnx66-0007La-Ia for grub-devel@gnu.org; Fri, 28 Feb 2025 04:56:00 -0500 Received: from dione.uberspace.de (dione.uberspace.de [185.26.156.222]) by mailgate02.uberspace.is (Postfix) with ESMTPS id 3C0B7181138 for ; Fri, 28 Feb 2025 10:55:48 +0100 (CET) Received: (qmail 29583 invoked by uid 989); 28 Feb 2025 09:55:48 -0000 Authentication-Results: dione.uberspace.de; auth=pass (plain) Received: from unknown (HELO unkown) (::1) by dione.uberspace.de (Haraka/3.0.1) with ESMTPSA; Fri, 28 Feb 2025 10:55:47 +0100 Date: Fri, 28 Feb 2025 10:55:46 +0100 From: Andreas Klauer To: The development of GNU GRUB Cc: Daniel Kiper , b@horn.uk, andreas.klauer@metamorpher.de Subject: Re: [SECURITY PATCH 18/73] fs/ntfs: Implement attribute verification Message-ID: References: <20250218180119.16617-18-daniel.kiper@oracle.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20250218180119.16617-18-daniel.kiper@oracle.com> X-Rspamd-Bar: --- X-Rspamd-Report: BAYES_HAM(-3) MIME_GOOD(-0.1) X-Rspamd-Score: -3.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=metamorpher.de; s=uberspace; h=from:to:cc:subject:date; bh=Qb9JMmGriEUP80S9YTCxUR17Zd+RdZpIi8mLXeDqY94=; b=IRc/Eg8OVdB4t60bU8vUs4BTLj2Zqjp4GfdpJOlkG/aamzb3ebb4paw9qAjgn3coCwSl4abqwf xxGJP0OznqJrvvlq5R2yeXYLS3fnd9AuhAVicHmU1AUpeccHb+YYuWK6AxD2OIP2XNSJlke/VGH6 h1lkNFw9SkWkpXRwK/0WmugElvcppHDLNVTHqAtn9q3zfppq12TWizTUq4CBLSpjDS9F37NOgVR1 H7/DBZRZ8Doqp3cQUvLzevjd4dOKxlBFF23yW8hZM5ziYxRoZs6RLc2XOVg+2udJ1el7kQjrQq7F 5it+EzoFJNHlsRAoQvlYgXKFw2u/F1mBeG99i7EnI0kb7lng1eVJbuLWosYsGfNNMDtjupuP8x+w lo72BMChpb/QLpv5QvfkAfGztzQVGY33goqgAI3qYH05pbMWbqm4j/M6VxzJDCpoU4fEBkH9fzRV KjL2sz9DD0NeeVGPQhF9uMFi5C36g7p1Ux526lJWb2HrMj8zJvlATUPjfMoJbC9xTNdJw3dZW7ep gHi8Dm9PtR2nj+PEuwoIYLpPhT57blc2s5cZoVhmXPwYUC8rs04Z44cDvF7nbHfLkHb+Os1aMzx1 bvZxfPN82leMIHq6tAyh9Uz8PSEqhxkFUJ4PSUk5XFfqxPE2RL+djHNIfQtOdxcPxxysNNfsTw3e E= Received-SPF: pass client-ip=185.26.156.114; envelope-from=andreas.klauer@metamorpher.de; helo=mailgate02.uberspace.is X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 28 Feb 2025 09:09:41 -0500 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org SGVsbG8sCgooSSdtIG5vdCBvbiB0aGlzIGxpc3Q7IGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlv dSB3ZWxsLikKCml0IHNlZW1zIHRoYXQgdGhpcyBwYXRjaCB0cmlnZ2VycyBhbiBpbmZpbml0ZSBs b29wIHdoZW4gCnRyeWluZyB0byBhY2Nlc3MgbnRmcywgc28gYW55IHNlYXJjaCBjb21tYW5kIHRo YXQgY29tZXMgCmFjcm9zcyBhbnkgbnRmcyBwYXJ0aXRpb24gZ2V0cyBzdHVjay4KCkJhc2ljYWxs eSB0aGlzIHdoaWxlLWxvb3AgaW4gZmluZF9hdHRyKCkKCiAgd2hpbGUgKGF0LT5hdHRyX2N1ciA8 IG1mdF9lbmQgJiYgKmF0LT5hdHRyX2N1ciAhPSAweEZGKQogICAgewogICAgICBhdC0+YXR0cl9u eHQgPSBuZXh0X2F0dHJpYnV0ZSAoYXQtPmF0dHJfY3VyLCBhdC0+ZW5kKTsKICAgICAgaWYgKCph dC0+YXR0cl9jdXIgPT0gR1JVQl9OVEZTX0FUX0FUVFJJQlVURV9MSVNUKQphdC0+YXR0cl9lbmQg PSBhdC0+YXR0cl9jdXI7CiAgICAgIGlmICgoKmF0LT5hdHRyX2N1ciA9PSBhdHRyKSB8fCAoYXR0 ciA9PSAwKSkKcmV0dXJuIGF0LT5hdHRyX2N1cjsKICAgICAgYXQtPmF0dHJfY3VyID0gYXQtPmF0 dHJfbnh0OwogICAgfQoKbG9vcHMgaW5kZWZpbml0ZWx5IChhdC0+YXR0cl9jdXI9MCkgYWZ0ZXIg bmV4dF9hdHRyaWJ1dGUoKSByZXR1cm5zIE5VTEwgaGVyZToKCiAgbmV4dCArPSB1MTZhdCAoY3Vy cl9hdHRyaWJ1dGUsIDQpOwogIGlmICh2YWxpZGF0ZV9hdHRyaWJ1dGUgKG5leHQsIGVuZCkgPT0g ZmFsc2UpCiAgICByZXR1cm4gTlVMTDsKCmFmdGVyIHZhbGlkYXRlX2F0dHJpYnV0ZSgpIChpbnRy b2R1Y2VkIGluIHRoaXMgcGF0Y2gpIHJldHVybnMgZmFsc2UgaGVyZQoKICAvKiBOb3QgYW4gZXJy b3IgY2FzZSwganVzdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGF0dHJpYnV0ZXMuICovCiAgaWYg KGF0dHJfc2l6ZSA9PSAwKQogICAgcmV0dXJuIGZhbHNlOwoKU2ltcGx5IGNoZWNraW5nIGF0LT5h dHRyX2N1ciBpbiB0aGUgd2hpbGUgbG9vcCBtYWtlcyBpdCB3b3JrIGFnYWluOgoKICB3aGlsZSAo YXQtPmF0dHJfY3VyICYmIGF0LT5hdHRyX2N1ciA8IG1mdF9lbmQgJiYgKmF0LT5hdHRyX2N1ciAh PSAweEZGKQogCmJ1dCBJIGRvbid0IHVuZGVyc3RhbmQgaGFsZiBvZiB3aGF0IHRoYXQgY29kZSBh Y3R1YWxseSBkb2VzLCAKc28gSSBjYW4ndCB2b3VjaCBmb3IgY29ycmVjdG5lc3MgKG5vdCBzZW5k aW5nIGl0IGFzIGEgcGF0Y2gpLgoKQWxzbyBmaWxlZCBoZXJlIGh0dHBzOi8vc2F2YW5uYWguZ251 Lm9yZy9idWdzL2luZGV4LnBocD82Njg1NQoKYW5kIGhlcmUgaHR0cHM6Ly9naXRsYWIuYXJjaGxp bnV4Lm9yZy9hcmNobGludXgvcGFja2FnaW5nL3BhY2thZ2VzL2dydWIvLS9pc3N1ZXMvMTIKCktp bmQgcmVnYXJkcywKQW5kcmVhcyBLbGF1ZXIKCk9uIFR1ZSwgRmViIDE4LCAyMDI1IGF0IDA3OjAw OjI0UE0gKzAxMDAsIERhbmllbCBLaXBlciB2aWEgR3J1Yi1kZXZlbCB3cm90ZToKPiBGcm9tOiBC IEhvcm4gPGJAaG9ybi51az4KPiAKPiBJdCB3YXMgcG9zc2libGUgdG8gcmVhZCBPT0Igd2hlbiBh biBhdHRyaWJ1dGUgaGFkIGEgc2l6ZSB0aGF0IGV4Y2VlZGVkCj4gdGhlIGFsbG9jYXRlZCBidWZm ZXIuIFRoaXMgcmVzb2x2ZXMgdGhhdCBieSBtYWtpbmcgc3VyZSBhbGwgYXR0cmlidXRlcwo+IHRo YXQgZ2V0IHJlYWQgYXJlIGZ1bGx5IGluIHRoZSBhbGxvY2F0ZWQgc3BhY2UgYnkgaW1wbGVtZW50 aW5nCj4gYSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGVtLgo+IAo+IERlZmluaW5nIHRoZSBvZmZz ZXRzIGluIGluY2x1ZGUvZ3J1Yi9udGZzLmggYnV0IHRoZXkgYXJlIG9ubHkgdXNlZCBpbgo+IHRo ZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGFuZCBub3QgYWNyb3NzIHRoZSByZXN0IG9mIHRoZSBOVEZT IGNvZGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogQiBIb3JuIDxiQGhvcm4udWs+Cj4gUmV2aWV3ZWQt Ynk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Cj4gLS0tCj4gIGdydWIt Y29yZS9mcy9udGZzLmMgfCAxNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2dydWIvbnRmcy5oIHwgIDIyICsrKysrKysrCj4g IDIgZmlsZXMgY2hhbmdlZCwgMTc1IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZ3J1 Yi1jb3JlL2ZzL250ZnMuYyBiL2dydWItY29yZS9mcy9udGZzLmMKPiBpbmRleCAxYzY3OGYzZDAu LjY0ZjRmMjIyMSAxMDA2NDQKPiAtLS0gYS9ncnViLWNvcmUvZnMvbnRmcy5jCj4gKysrIGIvZ3J1 Yi1jb3JlL2ZzL250ZnMuYwo+IEBAIC03MCw2ICs3MCwxNDkgQEAgcmVzX2F0dHJfZGF0YV9sZW4g KHZvaWQgKnJlc19hdHRyX3B0cikKPiAgICByZXR1cm4gdTMyYXQgKHJlc19hdHRyX3B0ciwgMHgx MCk7Cj4gIH0KPiAgCj4gKy8qCj4gKyAqIENoZWNrIGlmIHRoZSBhdHRyaWJ1dGUgaXMgdmFsaWQg YW5kIGRvZXNuJ3QgZXhjZWVkIHRoZSBhbGxvY2F0ZWQgcmVnaW9uLgo+ICsgKiBUaGlzIGFjY291 bnRzIGZvciByZXNpZGVudCBhbmQgbm9uLXJlc2lkZW50IGRhdGEuCj4gKyAqCj4gKyAqIFRoaXMg aXMgYmFzZWQgb2ZmIHRoZSBkb2N1bWVudGF0aW9uIGZyb20gdGhlIGxpbnV4LW50ZnMgcHJvamVj dDoKPiArICogaHR0cHM6Ly9mbGF0Y2FwLmdpdGh1Yi5pby9saW51eC1udGZzL250ZnMvY29uY2Vw dHMvYXR0cmlidXRlX2hlYWRlci5odG1sCj4gKyAqLwo+ICtzdGF0aWMgYm9vbAo+ICt2YWxpZGF0 ZV9hdHRyaWJ1dGUgKGdydWJfdWludDhfdCAqYXR0ciwgdm9pZCAqZW5kKQo+ICt7Cj4gKyAgZ3J1 Yl9zaXplX3QgYXR0cl9zaXplID0gMDsKPiArICBncnViX3NpemVfdCBtaW5fc2l6ZSA9IDA7Cj4g KyAgZ3J1Yl9zaXplX3Qgc3BhcmUgPSAoZ3J1Yl91aW50OF90ICopIGVuZCAtIGF0dHI7Cj4gKyAg LyoKPiArICAgKiBKdXN0IHVzZWQgYXMgYSB0ZW1wb3JhcnkgdmFyaWFibGUgdG8gdHJ5IGFuZCBk ZWFsIHdpdGggY2FzZXMgd2hlcmUgc29tZW9uZQo+ICsgICAqIHRyaWVzIHRvIG92ZXJsYXAgZmll bGRzLgo+ICsgICAqLwo+ICsgIGdydWJfc2l6ZV90IGN1cnIgPSAwOwo+ICsKPiArICAvKiBOZWVk IHZlcmlmeSB3ZSBjYW4gZW50aXJlbHkgcmVhZCB0aGUgYXR0cmlidXRlcyBoZWFkZXIuICovCj4g KyAgaWYgKGF0dHIgKyBHUlVCX05URlNfQVRUUklCVVRFX0hFQURFUl9TSVpFID49IChncnViX3Vp bnQ4X3QgKikgZW5kKQo+ICsgICAgZ290byBmYWlsOwo+ICsKPiArICAvKgo+ICsgICAqIFNvLCB0 aGUgcmVzdCBvZiB0aGlzIGNvZGUgdXNlcyBhIDE2Yml0IGludCBmb3IgdGhlIGF0dHJpYnV0ZSBs ZW5ndGggYnV0Cj4gKyAgICogZnJvbSByZWFkaW5nIHRoZSBhbGwgdGhlIGRvY3VtZW50YXRpb24g SSBjb3VsZCBmaW5kIGl0IHNheXMgdGhpcyBmaWVsZCBpcwo+ICsgICAqIGFjdHVhbGx5IDMyYml0 LiBCdXQgbGV0J3MgYmUgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mIHRoZSBjb2RlLgo+ICsg ICAqCj4gKyAgICogaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjYuMTAuNy9zb3Vy Y2UvZnMvbnRmczMvbnRmcy5oI0wzNzAKPiArICAgKi8KPiArICBhdHRyX3NpemUgPSB1MTZhdCAo YXR0ciwgR1JVQl9OVEZTX0FUVFJJQlVURV9MRU5HVEgpOwo+ICsKPiArICBpZiAoYXR0cl9zaXpl ID4gc3BhcmUpCj4gKyAgICBnb3RvIGZhaWw7Cj4gKwo+ICsgIC8qIE5vdCBhbiBlcnJvciBjYXNl LCBqdXN0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgYXR0cmlidXRlcy4gKi8KPiArICBpZiAoYXR0 cl9zaXplID09IDApCj4gKyAgICByZXR1cm4gZmFsc2U7Cj4gKwo+ICsgIC8qCj4gKyAgICogRXh0 cmEgdmFsaWRhdGlvbiBieSB0cnlpbmcgdG8gY2FsY3VsYXRlIGEgbWluaW11bSBwb3NzaWJsZSBz aXplIGZvciB0aGlzCj4gKyAgICogYXR0cmlidXRlLiArOCBmcm9tIHRoZSBzaXplIG9mIHRoZSBy ZXNpZGVudCBkYXRhIHN0cnVjdCB3aGljaCBpcyB0aGUKPiArICAgKiBtaW5pbXVtIHRoYXQgY2Fu IGJlIGFkZGVkLgo+ICsgICAqLwo+ICsgIG1pbl9zaXplID0gR1JVQl9OVEZTX0FUVFJJQlVURV9I RUFERVJfU0laRSArIDg7Cj4gKwo+ICsgIGlmIChtaW5fc2l6ZSA+IGF0dHJfc2l6ZSkKPiArICAg IGdvdG8gZmFpbDsKPiArCj4gKyAgLyogSXMgdGhlIGRhdGEgaXMgcmVzaWRlbnQgKDApIG9yIG5v dCAoMSkuICovCj4gKyAgaWYgKGF0dHJbR1JVQl9OVEZTX0FUVFJJQlVURV9SRVNJREVOVF0gPT0g MCkKPiArICAgIHsKPiArICAgICAgLyogUmVhZCB0aGUgb2Zmc2V0IGFuZCBzaXplIG9mIHRoZSBh dHRyaWJ1dGUuICovCj4gKyAgICAgIGN1cnIgPSB1MTZhdCAoYXR0ciwgR1JVQl9OVEZTX0FUVFJJ QlVURV9SRVNfT0ZGU0VUKTsKPiArICAgICAgY3VyciArPSB1MzJhdCAoYXR0ciwgR1JVQl9OVEZT X0FUVFJJQlVURV9SRVNfTEVOR1RIKTsKPiArICAgICAgaWYgKGN1cnIgPiBtaW5fc2l6ZSkKPiAr CW1pbl9zaXplID0gY3VycjsKPiArICAgIH0KPiArICBlbHNlCj4gKyAgICB7Cj4gKyAgICAgIC8q Cj4gKyAgICAgICAqIElmIHRoZSBkYXRhIGlzIG5vbi1yZXNpZGVudCwgdGhlIG1pbmltdW0gc2l6 ZSBpcyA2NCB3aGljaCBpcyB3aGVyZQo+ICsgICAgICAgKiB0aGUgZGF0YSBydW5zIHN0YXJ0LiBX ZSBhbHJlYWR5IGhhdmUgYSBtaW5pbXVtIHNpemUgb2YgMjQuIFNvLCBqdXN0Cj4gKyAgICAgICAq IGFkZGluZyA0MCB0byBnZXQgdG8gdGhlIHJlYWwgdmFsdWUuCj4gKyAgICAgICAqLwo+ICsgICAg ICBtaW5fc2l6ZSArPSA0MDsKPiArICAgICAgaWYgKG1pbl9zaXplID4gYXR0cl9zaXplKQo+ICsJ Z290byBmYWlsOwo+ICsgICAgICAvKiBJZiB0aGUgY29tcHJlc3Npb24gdW5pdCBzaXplIGlzID4g MCwgKzggYnl0ZXMqLwo+ICsgICAgICBpZiAodTE2YXQgKGF0dHIsIEdSVUJfTlRGU19BVFRSSUJV VEVfQ09NUFJFU1NJT05fVU5JVF9TSVpFKSA+IDApCj4gKwltaW5fc2l6ZSArPSA4Owo+ICsKPiAr ICAgICAgLyoKPiArICAgICAgICogTmVlZCB0byBjb25zaWRlciB0aGUgZGF0YSBydW5zIG5vdy4g RWFjaCBtZW1iZXIgb2YgdGhlIHJ1biBoYXMgYnl0ZQo+ICsgICAgICAgKiB0aGF0IGRlc2NyaWJl cyB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBsZW5ndGggYW5kIG9mZnNldC4gRWFjaCBiZWluZwo+ICsg ICAgICAgKiA0IGJpdHMgaW4gdGhlIGJ5dGUuCj4gKyAgICAgICAqLwo+ICsgICAgICBjdXJyID0g dTE2YXQgKGF0dHIsIEdSVUJfTlRGU19BVFRSSUJVVEVfREFUQV9SVU5TKTsKPiArCj4gKyAgICAg IGlmIChjdXJyICsgMSA+IG1pbl9zaXplKQo+ICsJbWluX3NpemUgPSBjdXJyICsgMTsKPiArCj4g KyAgICAgIGlmIChtaW5fc2l6ZSA+IGF0dHJfc2l6ZSkKPiArCWdvdG8gZmFpbDsKPiArCj4gKyAg ICAgIC8qCj4gKyAgICAgICAqIEVhY2ggYXR0cmlidXRlIGNhbiBzdG9yZSBtdWx0aXBsZSBkYXRh IHJ1bnMgd2hpY2ggYXJlIHN0b3JlZAo+ICsgICAgICAgKiBjb250aW51b3VzbHkgaW4gdGhlIGF0 dHJpYnV0ZS4gVGhleSBleGlzdCBhcyBvbmUgaGVhZGVyIGJ5dGUKPiArICAgICAgICogd2l0aCB1 cCB0byAxNCBieXRlcyBmb2xsb3dpbmcgaXQgZGVwZW5kaW5nIG9uIHRoZSBsZW5ndGhzLgo+ICsg ICAgICAgKiBXZSBzdG9wIHdoZW4gd2UgaGl0IGEgaGVhZGVyIHRoYXQgaXMganVzdCBhIE5VTCBi eXRlLgo+ICsgICAgICAgKgo+ICsgICAgICAgKiBodHRwczovL2ZsYXRjYXAuZ2l0aHViLmlvL2xp bnV4LW50ZnMvbnRmcy9jb25jZXB0cy9kYXRhX3J1bnMuaHRtbAo+ICsgICAgICAgKi8KPiArICAg ICAgd2hpbGUgKGF0dHJbY3Vycl0gIT0gMCkKPiArCXsKPiArCSAgLyoKPiArCSAgICogV2Ugc3Rv cCB3aGVuIHdlIGhpdCBhIGhlYWRlciB0aGF0IGlzIGp1c3QgYSBOVUwgYnl0ZS4gVGhlIGRhdGEK PiArCSAgICogcnVuIGhlYWRlciBpcyBzdG9yZWQgYXMgYSBzaW5nbGUgYnl0ZSB3aGVyZSB0aGUg dG9wIDQgYml0cyByZWZlcgo+ICsJICAgKiB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8g c3RvcmUgdGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUKPiArCSAgICogZGF0YSBydW4sIGFuZCB0aGUg bnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8gc3RvcmUgdGhlIG9mZnNldC4KPiArCSAgICogVGhlc2Ug ZGlyZWN0bHkgZm9sbG93IHRoZSBoZWFkZXIgYnl0ZSwgc28gd2UgdXNlIHRoZW0gdG8gdXBkYXRl Cj4gKwkgICAqIHRoZSBtaW5pbXVtIHNpemUuCj4gKwkgICAqLwo+ICsJICBtaW5fc2l6ZSArPSAo YXR0cltjdXJyXSAmIDB4NykgKyAoKGF0dHJbY3Vycl0gPj4gNCkgJiAweDcpOwo+ICsJICBjdXJy ICs9IG1pbl9zaXplOwo+ICsJICBtaW5fc2l6ZSsrOwo+ICsJICBpZiAobWluX3NpemUgPiBhdHRy X3NpemUpCj4gKwkgICAgZ290byBmYWlsOwo+ICsJfQo+ICsgICAgfQo+ICsKPiArICAvKiBOYW1l IG9mZnNldCwgZG9pbmcgdGhpcyBhZnRlciBkYXRhIHJlc2lkZW5jZSBjaGVja3MuICovCj4gKyAg aWYgKHUxNmF0IChhdHRyLCBHUlVCX05URlNfQVRUUklCVVRFX05BTUVfT0ZGU0VUKSAhPSAwKQo+ ICsgICAgewo+ICsgICAgICBjdXJyID0gdTE2YXQgKGF0dHIsIEdSVUJfTlRGU19BVFRSSUJVVEVf TkFNRV9PRkZTRVQpOwo+ICsgICAgICAvKgo+ICsgICAgICAgKiBNdWx0aXBsZSB0aGUgbmFtZSBs ZW5ndGggYnkgMiBhcyBpdHMgVVRGLTE2LiBDYW4gYmUgemVybyBpZiB0aGlzIGluIGFuCj4gKyAg ICAgICAqIHVuYW1lZCBhdHRyaWJ1dGUuCj4gKyAgICAgICAqLwo+ICsgICAgICBjdXJyICs9IGF0 dHJbR1JVQl9OVEZTX0FUVFJJQlVURV9OQU1FX0xFTkdUSF0gKiAyOwo+ICsgICAgICBpZiAoY3Vy ciA+IG1pbl9zaXplKQo+ICsJbWluX3NpemUgPSBjdXJyOwo+ICsgICAgfQo+ICsKPiArICAvKiBQ YWRkZWQgdG8gOCBieXRlcy4gKi8KPiArICBpZiAobWluX3NpemUgJSA4ICE9IDApCj4gKyAgICBt aW5fc2l6ZSArPSA4IC0gKG1pbl9zaXplICUgOCk7Cj4gKwo+ICsgIC8qCj4gKyAgICogQXQgdGhp cyBwb2ludCBtaW5fc2l6ZSBzaG91bGQgYmUgZXhhY3RseSBhdHRyX3NpemUgYnV0IGJlaW5nIGZs ZXhpYmxlCj4gKyAgICogaGVyZSB0byBhdm9pZCBhbnkgaXNzdWVzLgo+ICsgICAqLwo+ICsgIGlm IChtaW5fc2l6ZSA+IGF0dHJfc2l6ZSkKPiArICAgIGdvdG8gZmFpbDsKPiArCj4gKyAgcmV0dXJu IHRydWU7Cj4gKwo+ICsgZmFpbDoKPiArICBncnViX2RwcmludGYgKCJudGZzIiwgInNwYXJlPSUi IFBSSXVHUlVCX1NJWkUgIiBtaW5fc2l6ZT0lIiBQUkl1R1JVQl9TSVpFICIgYXR0cl9zaXplPSUi IFBSSXVHUlVCX1NJWkUgIlxuIiwKPiArCQlzcGFyZSwgbWluX3NpemUsIGF0dHJfc2l6ZSk7Cj4g KyAgcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICAvKiBSZXR1cm4gdGhlIG5leHQgYXR0cmlidXRl IGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHJldHVybiBOVUxMLiAqLwo+ICBzdGF0aWMgZ3J1Yl91 aW50OF90ICoKPiAgbmV4dF9hdHRyaWJ1dGUgKGdydWJfdWludDhfdCAqY3Vycl9hdHRyaWJ1dGUs IHZvaWQgKmVuZCkKPiBAQCAtODQsNiArMjI3LDggQEAgbmV4dF9hdHRyaWJ1dGUgKGdydWJfdWlu dDhfdCAqY3Vycl9hdHRyaWJ1dGUsIHZvaWQgKmVuZCkKPiAgICAgIHJldHVybiBOVUxMOwo+ICAK PiAgICBuZXh0ICs9IHUxNmF0IChjdXJyX2F0dHJpYnV0ZSwgNCk7Cj4gKyAgaWYgKHZhbGlkYXRl X2F0dHJpYnV0ZSAobmV4dCwgZW5kKSA9PSBmYWxzZSkKPiArICAgIHJldHVybiBOVUxMOwo+ICAK PiAgICByZXR1cm4gbmV4dDsKPiAgfQo+IEBAIC0yOTAsNiArNDM1LDkgQEAgZmluZF9hdHRyIChz dHJ1Y3QgZ3J1Yl9udGZzX2F0dHIgKmF0LCBncnViX3VpbnQ4X3QgYXR0cikKPiAgICAgICAgLyog RnJvbSB0aGlzIHBvaW50IG9uIHBhX2VuZCBpcyB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKi8KPiAg ICAgICAgYXQtPmVuZCA9IHBhX2VuZDsKPiAgCj4gKyAgICAgIGlmICh2YWxpZGF0ZV9hdHRyaWJ1 dGUgKGF0LT5hdHRyX254dCwgcGFfZW5kKSA9PSBmYWxzZSkKPiArCXJldHVybiBOVUxMOwo+ICsK PiAgICAgICAgd2hpbGUgKGF0LT5hdHRyX254dCkKPiAgCXsKPiAgCSAgaWYgKCgqYXQtPmF0dHJf bnh0ID09IGF0dHIpIHx8IChhdHRyID09IDApKQo+IEBAIC0zMTksNiArNDY3LDkgQEAgZmluZF9h dHRyIChzdHJ1Y3QgZ3J1Yl9udGZzX2F0dHIgKmF0LCBncnViX3VpbnQ4X3QgYXR0cikKPiAgCQkJ CQkJICArIDEpKTsKPiAgCSAgcGEgPSBhdC0+YXR0cl9ueHQgKyB1MTZhdCAocGEsIDQpOwo+ICAK PiArCSAgaWYgKHZhbGlkYXRlX2F0dHJpYnV0ZSAocGEsIHBhX2VuZCkgPT0gdHJ1ZSkKPiArCSAg ICBwYSA9IE5VTEw7Cj4gKwo+ICAJICB3aGlsZSAocGEpCj4gIAkgICAgewo+ICAJICAgICAgaWYg KCpwYSAhPSBhdHRyKQo+IEBAIC01NzIsNiArNzIzLDggQEAgcmVhZF9hdHRyIChzdHJ1Y3QgZ3J1 Yl9udGZzX2F0dHIgKmF0LCBncnViX3VpbnQ4X3QgKmRlc3QsIGdydWJfZGlza19hZGRyX3Qgb2Zz LAo+ICAgICAgICBlbHNlCj4gIAl2Y24gPSBvZnMgPj4gKGF0LT5tZnQtPmRhdGEtPmxvZ19zcGMg KyBHUlVCX05URlNfQkxLX1NIUik7Cj4gICAgICAgIHBhID0gYXQtPmF0dHJfbnh0ICsgdTE2YXQg KGF0LT5hdHRyX254dCwgNCk7Cj4gKyAgICAgIGlmICh2YWxpZGF0ZV9hdHRyaWJ1dGUgKHBhLCBh dC0+YXR0cl9lbmQpID09IGZhbHNlKQo+ICsJcGEgPSBOVUxMOwo+ICAKPiAgICAgICAgd2hpbGUg KHBhKQo+ICAJewo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvbnRmcy5oIGIvaW5jbHVkZS9n cnViL250ZnMuaAo+IGluZGV4IDJjODA3ODQwMy4uNzdiMTgyYWNmIDEwMDY0NAo+IC0tLSBhL2lu Y2x1ZGUvZ3J1Yi9udGZzLmgKPiArKysgYi9pbmNsdWRlL2dydWIvbnRmcy5oCj4gQEAgLTkxLDYg KzkxLDI4IEBAIGVudW0KPiAgCj4gICNkZWZpbmUgR1JVQl9OVEZTX0FUVFJJQlVURV9IRUFERVJf U0laRSAxNgo+ICAKPiArLyoKPiArICogVG8gbWFrZSBhdHRyaWJ1dGUgdmFsaWRhdGlvbiBjbGVh cmVyIHRoZSBvZmZzZXRzIGZvciBlYWNoIHZhbHVlIGluIHRoZQo+ICsgKiBhdHRyaWJ1dGUgaGVh ZGVycyBhcmUgZGVmaW5lZCBhcyBtYWNyb3MuCj4gKyAqCj4gKyAqIFRoZXNlIG9mZnNldHMgYXJl IGFsbCBmcm9tOgo+ICsgKiBodHRwczovL2ZsYXRjYXAuZ2l0aHViLmlvL2xpbnV4LW50ZnMvbnRm cy9jb25jZXB0cy9hdHRyaWJ1dGVfaGVhZGVyLmh0bWwKPiArICovCj4gKwo+ICsvKiBUaGVzZSBv ZmZzZXRzIGFyZSBwYXJ0IG9mIHRoZSBhdHRyaWJ1dGUgaGVhZGVyLiAqLwo+ICsjZGVmaW5lIEdS VUJfTlRGU19BVFRSSUJVVEVfTEVOR1RIICAgICAgNAo+ICsjZGVmaW5lIEdSVUJfTlRGU19BVFRS SUJVVEVfUkVTSURFTlQgICAgOAo+ICsjZGVmaW5lIEdSVUJfTlRGU19BVFRSSUJVVEVfTkFNRV9M RU5HVEggOQo+ICsjZGVmaW5lIEdSVUJfTlRGU19BVFRSSUJVVEVfTkFNRV9PRkZTRVQgMTAKPiAr Cj4gKy8qIE9mZnNldHMgZm9yIHZhbHVlcyBuZWVkZWQgZm9yIHJlc2lkZW50IGRhdGEuICovCj4g KyNkZWZpbmUgR1JVQl9OVEZTX0FUVFJJQlVURV9SRVNfTEVOR1RIICAxNgo+ICsjZGVmaW5lIEdS VUJfTlRGU19BVFRSSUJVVEVfUkVTX09GRlNFVCAgMjAKPiArCj4gKy8qIE9mZnNldHMgZm9yIHZh bHVlcyBuZWVkZWQgZm9yIG5vbi1yZXNpZGVudCBkYXRhLiAqLwo+ICsjZGVmaW5lIEdSVUJfTlRG U19BVFRSSUJVVEVfREFUQV9SVU5TICAgICAgICAgICAgIDMyCj4gKyNkZWZpbmUgR1JVQl9OVEZT X0FUVFJJQlVURV9DT01QUkVTU0lPTl9VTklUX1NJWkUgMzQKPiArCj4gIGVudW0KPiAgICB7Cj4g ICAgICBHUlVCX05URlNfQUZfQUxTVAkJPSAxLAo+IC0tIAo+IDIuMTEuMAo+IAo+IAo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gR3J1Yi1kZXZlbCBt YWlsaW5nIGxpc3QKPiBHcnViLWRldmVsQGdudS5vcmcKPiBodHRwczovL2xpc3RzLmdudS5vcmcv bWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdu dS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=