From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-4.7 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2, SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 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 dcvr.yhbt.net (Postfix) with ESMTPS id 1FBA51F852 for ; Fri, 23 Dec 2022 23:32:39 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=pass (1024-bit key; unprotected) header.d=cs.ucla.edu header.i=@cs.ucla.edu header.b="l/g/Styl"; dkim-atps=neutral Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p8rWS-0007fu-Rv; Fri, 23 Dec 2022 18:32:16 -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 1p8rWR-0007fm-Ax for bug-gnulib@gnu.org; Fri, 23 Dec 2022 18:32:15 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p8rWO-0003Xv-Dv for bug-gnulib@gnu.org; Fri, 23 Dec 2022 18:32:15 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 49AFC16005C; Fri, 23 Dec 2022 15:32:09 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id dOQtDR0V9P-n; Fri, 23 Dec 2022 15:32:07 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 59F50160066; Fri, 23 Dec 2022 15:32:07 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.9.2 zimbra.cs.ucla.edu 59F50160066 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=78364E5A-2AF3-11ED-87FA-8298ECA2D365; t=1671838327; bh=Pgi/v8B4XAnatCKAPIl8Adn18FtKm89mEqG6Sjh5aHQ=; h=Content-Type:Message-ID:Date:MIME-Version:Subject:To:From; b=l/g/StyljHRXTThCrNLOHUBW1VUbeHGpbFpusDeQKYvJqCqqq7EC7tCsn77O0JzDi XD0tg+afxpS/C4llukEMYeGZ0sVDU6MDc61fkU1yYdQVZA3wHPujPB93Ss40hakWaX c7mtDKpIY/VxO0WMMBMU+4X8L6WruWRowu3RPhkM= X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id yyYf7vFzCAUa; Fri, 23 Dec 2022 15:32:07 -0800 (PST) Received: from [192.168.86.236] (cpe-172-91-119-151.socal.res.rr.com [172.91.119.151]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 262C016005C; Fri, 23 Dec 2022 15:32:07 -0800 (PST) Content-Type: multipart/mixed; boundary="------------0bfG4gZkSMZ1IHE7mZpK0vhA" Message-ID: <79add5ff-bb1d-0508-061f-1710797ff752@cs.ucla.edu> Date: Fri, 23 Dec 2022 15:32:06 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH] Basic support for checking NFSv4 ACLs in Linux To: Ondrej Valousek References: <20221202124018.1446189-1-ondrej.valousek.xm@renesas.com> <3414493.zog1K27m0d@nimes> Content-Language: en-US Cc: Gnulib bugs From: Paul Eggert In-Reply-To: <3414493.zog1K27m0d@nimes> Received-SPF: pass client-ip=131.179.128.68; envelope-from=eggert@cs.ucla.edu; helo=zimbra.cs.ucla.edu X-Spam_score_int: -53 X-Spam_score: -5.4 X-Spam_bar: ----- X-Spam_report: (-5.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, NICE_REPLY_A=-1.148, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org This is a multi-part message in MIME format. --------------0bfG4gZkSMZ1IHE7mZpK0vhA Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I had some trouble using that patch in GNU Emacs, as emacsclient wouldn't link. I solved this by moving the new function from acl-internal.c to file-has-acl.c and making it static (no reason to pubilsh it that I know of). While doing this I did a more careful review of the code and came up with the attached patch. Some of this is just to use the usual GNU style; hope you don't mind. Ondrej, please give this a try in your environment, as my NFSv4 environment at work doesn't allow ACLs so I can't easily test it. Thanks. --------------0bfG4gZkSMZ1IHE7mZpK0vhA Content-Type: text/x-patch; charset=UTF-8; name="0001-file-has-acl-improve-recent-NFSv4-support.patch" Content-Disposition: attachment; filename="0001-file-has-acl-improve-recent-NFSv4-support.patch" Content-Transfer-Encoding: base64 RnJvbSAzNWJkNDZmMGM4MTY5NDhkYzFhMDQzMGM4YmE4YjEwYTAxMTY3MzIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDIzIERlYyAyMDIyIDE1OjE4OjI5IC0wODAwClN1YmplY3Q6IFtQQVRD SF0gZmlsZS1oYXMtYWNsOiBpbXByb3ZlIHJlY2VudCBORlN2NCBzdXBwb3J0Ck1JTUUtVmVy c2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlzIGZpeGVzIGEgbGluayBmYWlsdXJl IHdpdGggZW1hY3NjbGllbnQgb24gR05VL0xpbnV4LiAgVGhpcwpwcm9ncmFtIHdhbnRzIGZp bGVfaGFzX2FjbCBidXQgbm9uZSBvZiB0aGUgb3RoZXIgQUNMIHByaW1pdGl2ZXMsCnNvIGl0 IGRvZXNu4oCZdCBsaW5rIGFjbC1pbnRlcm5hbC5vOyB0aGlzIHdheSBpdCBkb2VzbuKAmXQg bmVlZCB0bwpsaW5rIHdpdGggLWxhY2wuICBXaGlsZSBJIHdhcyBhdCBpdCBJIHJldmlld2Vk IHRoZSByZWNlbnQgY2hhbmdlcywKZml4ZWQgc29tZSB1bmxpa2VseSBvdmVyZmxvdyBidWdz LCBhbmQgYWRqdXN0ZWQgdG8gR05VIHN0eWxlLgoqIGRvYy9hY2wtbmZzdjQudHh0OiBSZW1v dmUuICBJdHMgY29udGVudHMgYXJlIG5vdyBpbiBhCmNvbW1lbnQgaW4gbGliL2ZpbGUtaGFz LWFjbC5jLgoqIGxpYi9hY2wtaW50ZXJuYWwuYywgbGliL2FjbC1pbnRlcm5hbC5oOiBNb3Zl IHJlY2VudCBjaGFuZ2VzCnJlbGF0aW5nIHRvIGFjbF9uZnM0X25vbnRyaXZpYWwgdG8gbGli L2ZpbGUtaGFzLWFjbC5jLCBzbyB0aGF0CnRoZXJlIGlzIG5vIHRyb3VibGUgbGlua2luZyBw cm9ncmFtcyB0aGF0IG5lZWQgb25seSBmaWxlX2hhc19hY2wuCiogbGliL2ZpbGUtaGFzLWFj bC5jIChhY2xfbmZzNF9ub250cml2aWFsKTogTW92ZSBoZXJlIGZyb20KbGliL2FjbC1pbnRl cm5hbC5jLCBzbyB0aGF0IHdlIG5lZWRuJ3QgbGluayAtbGFjbCBpbgpwcm9ncmFtcyB0aGF0 IHdhbnQgb25seSBmaWxlX2hhc19hY2wsIHN1Y2ggYXMgZW1hY3NjbGllbnQuCkRvIG5vdCBh c3N1bWUgYSBjaGFyIGJ1ZmZlciBpcyBhbGlnbmVkIGZvciB1aW50MzJfdC4KQ2hlY2sgbW9y ZSBjYXJlZnVsbHkgZm9yIGJ1ZmZlciByZWFkIG92ZXJydW4uCkFsbG93IHVwIHRvIDYgQUNF cywgc2luY2Ugb3RoZXIgY29kZSBkb2VzOyBidXQgY2hlY2sKdGhhdCB0aGV54oCZcmUgZGlz dGluY3QuICBBdm9pZCBpbnRlZ2VyIG92ZXJmbG93LgpVc2UgbWVtY21wIHJhdGhlciB0aGFu IHN0cm5jbXAgdG8gY29tcGFyZSBtZW1vcnkgYmxvY2tzLgooZmlsZV9oYXNfYWNsKTogUHJl c2VydmUgaW5pdGlhbCBlcnJubyBpbnN0ZWFkIG9mIHNldHRpbmcgdG8gMC4KQWxsb2NhdGUg YSBiaXQgbW9yZSByb29tIGZvciB0cml2aWFsIEFDTCBidWZmZXIuClVzZSBFSU5WQUwgZm9y IGJvdGNoZWRrIE5GU3Y0IEFDTHMgKHdoaWNoIHNob3VsZG7igJl0IGhhcHBlbikuCi0tLQog Q2hhbmdlTG9nICAgICAgICAgIHwgIDI1ICsrKysrKysrKwogZG9jL2FjbC1uZnN2NC50eHQg IHwgIDE3IC0tLS0tLQogbGliL2FjbC1pbnRlcm5hbC5jIHwgMTAwIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvYWNsLWludGVybmFsLmggfCAgIDMgLS0KIGxp Yi9maWxlLWhhcy1hY2wuYyB8IDEyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlvbnMoKyksIDEz NiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkb2MvYWNsLW5mc3Y0LnR4dAoK ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1NjI4NDU3OTVkLi4z YjZjNmNmOThlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x LDMgKzEsMjggQEAKKzIwMjItMTItMjMgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEu ZWR1PgorCisJZmlsZS1oYXMtYWNsOiBpbXByb3ZlIHJlY2VudCBORlN2NCBzdXBwb3J0CisJ VGhpcyBmaXhlcyBhIGxpbmsgZmFpbHVyZSB3aXRoIGVtYWNzY2xpZW50IG9uIEdOVS9MaW51 eC4gIFRoaXMKKwlwcm9ncmFtIHdhbnRzIGZpbGVfaGFzX2FjbCBidXQgbm9uZSBvZiB0aGUg b3RoZXIgQUNMIHByaW1pdGl2ZXMsCisJc28gaXQgZG9lc27igJl0IGxpbmsgYWNsLWludGVy bmFsLm87IHRoaXMgd2F5IGl0IGRvZXNu4oCZdCBuZWVkIHRvCisJbGluayB3aXRoIC1sYWNs LiAgV2hpbGUgSSB3YXMgYXQgaXQgSSByZXZpZXdlZCB0aGUgcmVjZW50IGNoYW5nZXMsCisJ Zml4ZWQgc29tZSB1bmxpa2VseSBvdmVyZmxvdyBidWdzLCBhbmQgYWRqdXN0ZWQgdG8gR05V IHN0eWxlLgorCSogZG9jL2FjbC1uZnN2NC50eHQ6IFJlbW92ZS4gIEl0cyBjb250ZW50cyBh cmUgbm93IGluIGEKKwljb21tZW50IGluIGxpYi9maWxlLWhhcy1hY2wuYy4KKwkqIGxpYi9h Y2wtaW50ZXJuYWwuYywgbGliL2FjbC1pbnRlcm5hbC5oOiBNb3ZlIHJlY2VudCBjaGFuZ2Vz CisJcmVsYXRpbmcgdG8gYWNsX25mczRfbm9udHJpdmlhbCB0byBsaWIvZmlsZS1oYXMtYWNs LmMsIHNvIHRoYXQKKwl0aGVyZSBpcyBubyB0cm91YmxlIGxpbmtpbmcgcHJvZ3JhbXMgdGhh dCBuZWVkIG9ubHkgZmlsZV9oYXNfYWNsLgorCSogbGliL2ZpbGUtaGFzLWFjbC5jIChhY2xf bmZzNF9ub250cml2aWFsKTogTW92ZSBoZXJlIGZyb20KKwlsaWIvYWNsLWludGVybmFsLmMs IHNvIHRoYXQgd2UgbmVlZG4ndCBsaW5rIC1sYWNsIGluCisJcHJvZ3JhbXMgdGhhdCB3YW50 IG9ubHkgZmlsZV9oYXNfYWNsLCBzdWNoIGFzIGVtYWNzY2xpZW50LgorCURvIG5vdCBhc3N1 bWUgYSBjaGFyIGJ1ZmZlciBpcyBhbGlnbmVkIGZvciB1aW50MzJfdC4KKwlDaGVjayBtb3Jl IGNhcmVmdWxseSBmb3IgYnVmZmVyIHJlYWQgb3ZlcnJ1bi4KKwlBbGxvdyB1cCB0byA2IEFD RXMsIHNpbmNlIG90aGVyIGNvZGUgZG9lczsgYnV0IGNoZWNrCisJdGhhdCB0aGV54oCZcmUg ZGlzdGluY3QuICBBdm9pZCBpbnRlZ2VyIG92ZXJmbG93LgorCVVzZSBtZW1jbXAgcmF0aGVy IHRoYW4gc3RybmNtcCB0byBjb21wYXJlIG1lbW9yeSBibG9ja3MuCisJKGZpbGVfaGFzX2Fj bCk6IFByZXNlcnZlIGluaXRpYWwgZXJybm8gaW5zdGVhZCBvZiBzZXR0aW5nIHRvIDAuCisJ QWxsb2NhdGUgYSBiaXQgbW9yZSByb29tIGZvciB0cml2aWFsIEFDTCBidWZmZXIuCisJVXNl IEVJTlZBTCBmb3IgYm90Y2hlZGsgTkZTdjQgQUNMcyAod2hpY2ggc2hvdWxkbuKAmXQgaGFw cGVuKS4KKwogMjAyMi0xMi0yMiAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+ CiAKIAlwb3NpeF9zcGF3bnAtdGVzdHM6IGZpeCBmaWxlbmFtZSB0eXBvCmRpZmYgLS1naXQg YS9kb2MvYWNsLW5mc3Y0LnR4dCBiL2RvYy9hY2wtbmZzdjQudHh0CmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA3MTM1MmY1OGQwLi4wMDAwMDAwMDAwCi0tLSBhL2RvYy9hY2wt bmZzdjQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotR2VuZXJhbCBpbnRy b2R1Y3Rpb246Ci0gICBodHRwczovL2xpbnV4LmRpZS5uZXQvbWFuLzUvbmZzNF9hY2wKLQot VGhlIE5GU3Y0IGFjbHMgYXJlIGRlZmluZWQgaW4gUkZDNzUzMCBhbmQgYXMgc3VjaCwgZXZl cnkgTkZTdjQgc2VydmVyIHN1cHBvcnRpbmcgQUNMcwotd2lsbCBzdXBwb3J0IHRoaXMga2lu ZCBvZiBBQ0xzIChub3RlIHRoZSBkaWZmZXJlbmNlIGZyb20gUE9TSVggZHJhZnQgQUNMcykK LQotVGhlIEFDTHMgY2FuIGJlIG9idGFpbmVkIHZpYSB0aGUgbmZzdjQtYWNsLXRvb2xzLCBp LmUuCi0KLSQgbmZzNF9nZXRmYWNsIDxmaWxlPgotCi0jIGZpbGU6IDxmaWxlPgotQTo6T1dO RVJAOnJ3YUR4dFRuTmNDeQotQTo6R1JPVVBAOnJ3YUR4dFRuTmN5Ci1BOjpFVkVSWU9ORUA6 cndhRHh0VG5OY3kKLQotR251bGliIGlzIGFpbWluZyB0byBvbmx5IHByb3ZpZGUgYSBiYXNp YyBzdXBwb3J0IG9mIHRoZXNlLCBpLmUuIHJlY29nbml6ZSB0cml2aWFsCi1hbmQgbm9uLXRy aXZpYWwgQUNMcwpkaWZmIC0tZ2l0IGEvbGliL2FjbC1pbnRlcm5hbC5jIGIvbGliL2FjbC1p bnRlcm5hbC5jCmluZGV4IDRjNjVkZmZjYzYuLmJlMjQ0YzY3YTIgMTAwNjQ0Ci0tLSBhL2xp Yi9hY2wtaW50ZXJuYWwuYworKysgYi9saWIvYWNsLWludGVybmFsLmMKQEAgLTI1LDkgKzI1 LDYgQEAKIAogI2lmIFVTRV9BQ0wgJiYgSEFWRV9BQ0xfR0VUX0ZJTEUgLyogTGludXgsIEZy ZWVCU0QsIE1hYyBPUyBYLCBJUklYLCBUcnU2NCwgQ3lnd2luID49IDIuNSAqLwogCi0jIGlu Y2x1ZGUgPHN0cmluZy5oPgotIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4KLQogIyBpZiBIQVZF X0FDTF9UWVBFX0VYVEVOREVEIC8qIE1hYyBPUyBYICovCiAKIC8qIEFDTCBpcyBhbiBBQ0ws IGZyb20gYSBmaWxlLCBzdG9yZWQgYXMgdHlwZSBBQ0xfVFlQRV9FWFRFTkRFRC4KQEAgLTEy NSwxMDMgKzEyMiw2IEBAIGFjbF9kZWZhdWx0X25vbnRyaXZpYWwgKGFjbF90IGFjbCkKICAg cmV0dXJuIChhY2xfZW50cmllcyAoYWNsKSA+IDApOwogfQogCi0jICBkZWZpbmUgQUNFNF9X SE9fT1dORVIgICAgIk9XTkVSQCIKLSMgIGRlZmluZSBBQ0U0X1dIT19HUk9VUCAgICAiR1JP VVBAIgotIyAgZGVmaW5lIEFDRTRfV0hPX0VWRVJZT05FICJFVkVSWU9ORUAiCi0KLSMgIGRl ZmluZSBBQ0U0X0FDQ0VTU19BTExPV0VEX0FDRV9UWVBFICAgMAotIyAgZGVmaW5lIEFDRTRf QUNDRVNTX0RFTklFRF9BQ0VfVFlQRSAgICAxCi0KLS8qIEFDRSBmbGFnIHZhbHVlcyAqLwot IyAgZGVmaW5lIEFDRTRfSURFTlRJRklFUl9HUk9VUCAgICAgICAgICAweDAwMDAwMDQwCi0j ICBkZWZpbmUgUk9VTkRVUCh4LCB5KSAgICAgICAgICAgICAgICAgICgoKHgpICsgKHkpIC0g MSkgJiAtICh5KSkKLQotaW50Ci1hY2xfbmZzNF9ub250cml2aWFsIChjaGFyICp4YXR0ciwg aW50IGxlbikKLXsKLSAgaW50ICAgICAgYnVmcyA9IGxlbjsKLSAgdWludDMyX3QgbnVtX2Fj ZXMgPSBudG9obCAoKigodWludDMyX3QqKSh4YXR0cikpKSwgLyogR3JhYiB0aGUgbnVtYmVy IG9mIGFjZXMgaW4gdGhlIGFjbCAqLwotICAgICAgICAgICBudW1fYV9hY2VzID0gMCwKLSAg ICAgICAgICAgbnVtX2RfYWNlcyA9IDA7Ci0gIGNoYXIgKmJ1ZnAgPSB4YXR0cjsKLQotICBi dWZwICs9IDQ7ICAvKiBzaXplb2YodWludDMyX3QpOyAqLwotICBidWZzIC09IDQ7Ci0KLSAg Zm9yICh1aW50MzJfdCBhY2VfbiA9IDA7IG51bV9hY2VzID4gYWNlX24gOyBhY2VfbisrKQot ICAgIHsKLSAgICAgIGludCAgICAgIGRfcHRyOwotICAgICAgdWludDMyX3QgZmxhZywKLSAg ICAgICAgICAgICAgIHdob2xlbiwKLSAgICAgICAgICAgICAgIHR5cGU7Ci0KLSAgICAgIC8q IEdldCB0aGUgYWNsIHR5cGUgKi8KLSAgICAgIGlmIChidWZzIDw9IDApCi0gICAgICAgIHJl dHVybiAtMTsKLQotICAgICAgdHlwZSA9IG50b2hsICgqKCh1aW50MzJfdCopYnVmcCkpOwot Ci0gICAgICBidWZwICs9IDQ7Ci0gICAgICBidWZzIC09IDQ7Ci0gICAgICBpZiAoYnVmcyA8 PSAwKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgIGZsYWcgPSBudG9obCAoKigodWlu dDMyX3QqKWJ1ZnApKTsKLSAgICAgIC8qIEFzIHBlciBSRkMgNzUzMCwgdGhlIGZsYWcgc2hv dWxkIGJlIDAsIGJ1dCB3ZSBhcmUganVzdCBnZW5lcm91cyB0byBOZXRhcHAKLSAgICAgICAq IGFuZCBhbHNvIGFjY2VwdCB0aGUgR3JvdXAgZmxhZwotICAgICAgICovCi0gICAgICBpZiAo ZmxhZyAmIH5BQ0U0X0lERU5USUZJRVJfR1JPVVApCi0gICAgICAgIHJldHVybiAxOwotCi0g ICAgICAvKiB3ZSBza2lwIG1hc2sgLQotICAgICAgICogaXQncyB0b28gcmlza3kgdG8gdGVz dCBpdCBhbmQgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBhY3R1YWxseSBuZWVkZWQgKi8KLSAg ICAgIGJ1ZnAgKz0gMio0OwotICAgICAgYnVmcyAtPSAyKjQ7Ci0KLSAgICAgIGlmIChidWZz IDw9IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgICAgd2hvbGVuID0gbnRvaGwgKCoo KHVpbnQzMl90KilidWZwKSk7Ci0KLSAgICAgIGJ1ZnAgKz0gNDsKLSAgICAgIGJ1ZnMgLT0g NDsKLQotICAgICAgLyogR2V0IHRoZSB3aG8gc3RyaW5nICovCi0gICAgICBpZiAoYnVmcyA8 PSAwKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgIC8qIGZvciB0cml2aWFsIEFDTCwg d2UgZXhwZWN0IG1heCA1ICh0eXBpY2FsbHkgMykgQUNFUywgMyBBbGxvdywgMiBkZW55ICov Ci0gICAgICBpZiAoKChzdHJuY21wIChidWZwLCBBQ0U0X1dIT19PV05FUiwgd2hvbGVuKSA9 PSAwKQotICAgICAgICAgIHx8IChzdHJuY21wIChidWZwLCBBQ0U0X1dIT19HUk9VUCwgd2hv bGVuKSA9PSAwKSkKLSAgICAgICAgICAmJiAgd2hvbGVuID09IDYpCi0gICAgICAgIHsKLSAg ICAgICAgICBpZiAodHlwZSA9PSBBQ0U0X0FDQ0VTU19BTExPV0VEX0FDRV9UWVBFKQotICAg ICAgICAgICAgbnVtX2FfYWNlcysrOwotICAgICAgICAgIGlmICh0eXBlID09IEFDRTRfQUND RVNTX0RFTklFRF9BQ0VfVFlQRSkKLSAgICAgICAgICAgIG51bV9kX2FjZXMrKzsKLSAgICAg ICAgfQotICAgICAgZWxzZQotICAgICAgICBpZiAoKHN0cm5jbXAgKGJ1ZnAsIEFDRTRfV0hP X0VWRVJZT05FLCB3aG9sZW4pID09IDApCi0gICAgICAgICAgICAmJiAodHlwZSA9PSBBQ0U0 X0FDQ0VTU19BTExPV0VEX0FDRV9UWVBFKQotICAgICAgICAgICAgJiYgKHdob2xlbiA9PSA5 KSkKLSAgICAgICAgICBudW1fYV9hY2VzKys7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBy ZXR1cm4gMTsKLQotICAgICAgZF9wdHIgPSBST1VORFVQICh3aG9sZW4sIDQpOwotICAgICAg YnVmcCArPSBkX3B0cjsKLSAgICAgIGJ1ZnMgLT0gZF9wdHI7Ci0KLSAgICAgIC8qIE1ha2Ug c3VyZSB3ZSBhcmVuJ3Qgb3V0c2lkZSBvdXIgZG9tYWluICovCi0gICAgICBpZiAoYnVmcyA8 IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIH0KLSAgcmV0dXJuICEoKG51bV9hX2Fj ZXMgPD0gMykgJiYgKG51bV9kX2FjZXMgPD0gMikKLSAgICAgICAgICYmIChudW1fYV9hY2Vz ICsgbnVtX2RfYWNlcyA9PSBudW1fYWNlcykpOwotCi19Ci0KICMgZW5kaWYKIAogI2VsaWYg VVNFX0FDTCAmJiBIQVZFX0ZBQ0wgJiYgZGVmaW5lZCBHRVRBQ0wgLyogU29sYXJpcywgQ3ln d2luIDwgMi41LCBub3QgSFAtVVggKi8KZGlmZiAtLWdpdCBhL2xpYi9hY2wtaW50ZXJuYWwu aCBiL2xpYi9hY2wtaW50ZXJuYWwuaAppbmRleCA1ZGE3YzExNWM2Li45NDU1M2ZhYjI1IDEw MDY0NAotLS0gYS9saWIvYWNsLWludGVybmFsLmgKKysrIGIvbGliL2FjbC1pbnRlcm5hbC5o CkBAIC0xNDYsOSArMTQ2LDYgQEAgcnBsX2FjbF9zZXRfZmQgKGludCBmZCwgYWNsX3QgYWNs KQogIyAgIGRlZmluZSBhY2xfZW50cmllcyBycGxfYWNsX2VudHJpZXMKIGV4dGVybiBpbnQg YWNsX2VudHJpZXMgKGFjbF90KTsKICMgIGVuZGlmCi0vKiBSZXR1cm4gMSBpZiBnaXZlbiBB Q0wgaW4gWERSIGZvcm1hdCBpcyBub24tdHJpdmlhbAotICogUmV0dXJuIDAgaWYgaXQgaXMg dHJpdmlhbCAqLwotZXh0ZXJuIGludCBhY2xfbmZzNF9ub250cml2aWFsIChjaGFyICosIGlu dCk7CiAKICMgIGlmIEhBVkVfQUNMX1RZUEVfRVhURU5ERUQgLyogTWFjIE9TIFggKi8KIC8q IEFDTCBpcyBhbiBBQ0wsIGZyb20gYSBmaWxlLCBzdG9yZWQgYXMgdHlwZSBBQ0xfVFlQRV9F WFRFTkRFRC4KZGlmZiAtLWdpdCBhL2xpYi9maWxlLWhhcy1hY2wuYyBiL2xpYi9maWxlLWhh cy1hY2wuYwppbmRleCAxNzEwMjM0ODhjLi42NzY1MjNiYTgyIDEwMDY0NAotLS0gYS9saWIv ZmlsZS1oYXMtYWNsLmMKKysrIGIvbGliL2ZpbGUtaGFzLWFjbC5jCkBAIC0yOSwxNCArMjks OTcgQEAKIAogI2luY2x1ZGUgImFjbC1pbnRlcm5hbC5oIgogCi0jaWYgR0VUWEFUVFJfV0lU SF9QT1NJWF9BQ0xTCisjaWYgVVNFX0FDTCAmJiBHRVRYQVRUUl9XSVRIX1BPU0lYX0FDTFMK KyMgaW5jbHVkZSA8c3RyaW5nLmg+CisjIGluY2x1ZGUgPGFycGEvaW5ldC5oPgogIyBpbmNs dWRlIDxzeXMveGF0dHIuaD4KICMgaW5jbHVkZSA8bGludXgveGF0dHIuaD4KLSMgaW5jbHVk ZSA8YXJwYS9pbmV0Lmg+CiAjIGlmbmRlZiBYQVRUUl9OQU1FX05GU1Y0X0FDTAogIyAgZGVm aW5lIFhBVFRSX05BTUVfTkZTVjRfQUNMICJzeXN0ZW0ubmZzNF9hY2wiCiAjIGVuZGlmCi0j IGRlZmluZSBUUklWSUFMX05GUzRfQUNMX01BWF9MRU5HVEggMTI4CisKK2VudW0geworICAv KiBBQ0U0X0FDQ0VTU19BTExPV0VEX0FDRV9UWVBFID0gMHgwMDAwMDAwMCwgKi8KKyAgQUNF NF9BQ0NFU1NfREVOSUVEX0FDRV9UWVBFICA9IDB4MDAwMDAwMDEsCisgIEFDRTRfSURFTlRJ RklFUl9HUk9VUCAgICAgICAgPSAweDAwMDAwMDQwCit9OworCisvKiBSZXR1cm4gMSBpZiBn aXZlbiBBQ0wgaW4gWERSIGZvcm1hdCBpcyBub24tdHJpdmlhbCwgMCBpZiBpdCBpcyB0cml2 aWFsLgorICAgLTEgdXBvbiBmYWlsdXJlIHRvIGRldGVybWluZSBpdC4gIFBvc3NpYmx5IGNo YW5nZSBlcnJuby4gIEFzc3VtZSB0aGF0CisgICB0aGUgQUNMIGlzIHZhbGlkLCBleGNlcHQg YXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yIGV2ZW4gaWYgaW52YWxpZC4KKworICAgU2VlIDxo dHRwczovL2xpbnV4LmRpZS5uZXQvbWFuLzUvbmZzNF9hY2w+LiAgVGhlIE5GU3Y0IGFjbHMg YXJlCisgICBkZWZpbmVkIGluIEludGVybmV0IFJGQyA3NTMwIGFuZCBhcyBzdWNoLCBldmVy eSBORlN2NCBzZXJ2ZXIKKyAgIHN1cHBvcnRpbmcgQUNMcyBzaG91bGQgc3VwcG9ydCBORlN2 NCBBQ0xzICh0aGV5IGRpZmZlciBmcm9tIGZyb20KKyAgIFBPU0lYIGRyYWZ0IEFDTHMpLiAg VGhlIEFDTHMgY2FuIGJlIG9idGFpbmVkIHZpYSB0aGUKKyAgIG5mc3Y0LWFjbC10b29scywg ZS5nLiwgdGhlIG5mczRfZ2V0ZmFjbCBjb21tYW5kLiAgR251bGliIHByb3ZpZGVzCisgICBv bmx5IGJhc2ljIHN1cHBvcnQgb2YgTkZTdjQgQUNMcywgaS5lLiwgcmVjb2duaXplIHRyaXZp YWwgdnMKKyAgIG5vbnRyaXZpYWwgQUNMcy4gICovCisKK3N0YXRpYyBpbnQKK2FjbF9uZnM0 X25vbnRyaXZpYWwgKHVpbnQzMl90ICp4YXR0ciwgc3NpemVfdCBuYnl0ZXMpCit7CisgIGVu dW0geyBCWVRFU19QRVJfTkVUV09SS19VSU5UID0gNH07CisKKyAgLyogR3JhYiB0aGUgbnVt YmVyIG9mIGFjZXMgaW4gdGhlIGFjbC4gICovCisgIG5ieXRlcyAtPSBCWVRFU19QRVJfTkVU V09SS19VSU5UOworICBpZiAobmJ5dGVzIDwgMCkKKyAgICByZXR1cm4gLTE7CisgIHVpbnQz Ml90IG51bV9hY2VzID0gbnRvaGwgKCp4YXR0cisrKTsKKyAgaWYgKDYgPCBudW1fYWNlcykK KyAgICByZXR1cm4gMTsKKyAgaW50IGFjZV9mb3VuZCA9IDA7CisKKyAgZm9yIChpbnQgYWNl X24gPSAwOyBhY2VfbiA8IG51bV9hY2VzOyBhY2VfbisrKQorICAgIHsKKyAgICAgIC8qIEdl dCB0aGUgYWNsIHR5cGUgYW5kIGZsYWcuICBTa2lwIHRoZSBtYXNrOyBpdCdzIHRvbyByaXNr eSB0bworICAgICAgICAgdGVzdCBpdCBhbmQgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBuZWVk ZWQuICBHZXQgdGhlIHdob2xlbi4gICovCisgICAgICBuYnl0ZXMgLT0gNCAqIEJZVEVTX1BF Ul9ORVRXT1JLX1VJTlQ7CisgICAgICBpZiAobmJ5dGVzIDwgMCkKKyAgICAgICAgcmV0dXJu IC0xOworICAgICAgdWludDMyX3QgdHlwZSA9IG50b2hsICh4YXR0clswXSk7CisgICAgICB1 aW50MzJfdCBmbGFnID0gbnRvaGwgKHhhdHRyWzFdKTsKKyAgICAgIHVpbnQzMl90IHdob2xl biA9IG50b2hsICh4YXR0clszXSk7CisgICAgICB4YXR0ciArPSA0OworICAgICAgaW50NjRf dCB3aG9sZW40ID0gd2hvbGVuOworICAgICAgd2hvbGVuNCA9ICgod2hvbGVuNCArIChCWVRF U19QRVJfTkVUV09SS19VSU5UKSkKKyAgICAgICAgICAgICAgICAgJiB+IChCWVRFU19QRVJf TkVUV09SS19VSU5UIC0gMSkpOworCisgICAgICAvKiBUcml2aWFsIEFDTHMgaGF2ZSBvbmx5 IEFDRTRfQUNDRVNTX0FMTE9XRURfQUNFX1RZUEUgb3IKKyAgICAgICAgIEFDRTRfQUNDRVNT X0RFTklFRF9BQ0VfVFlQRS4gICovCisgICAgICBpZiAoQUNFNF9BQ0NFU1NfREVOSUVEX0FD RV9UWVBFIDwgdHlwZSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgIC8qIFJGQyA3NTMw IHNheXMgRkxBRyBzaG91bGQgYmUgMCwgYnV0IGJlIGdlbmVyb3VzIHRvIE5ldEFwcCBhbmQK KyAgICAgICAgIGFsc28gYWNjZXB0IHRoZSBncm91cCBmbGFnLiAgKi8KKyAgICAgIGlmIChm bGFnICYgfkFDRTRfSURFTlRJRklFUl9HUk9VUCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAg ICAgIC8qIEdldCB0aGUgd2hvIHN0cmluZy4gIENoZWNrIE5CWVRFUyAtIFdIT0xFTjQgYmVm b3JlIHN0b3JpbmcKKyAgICAgICAgIGludG8gTkJZVEVTLCB0byBhdm9pZCB0cnVuY2F0aW9u IG9uIGNvbnZlcnNpb24uICAqLworICAgICAgaWYgKG5ieXRlcyAtIHdob2xlbjQgPCAwKQor ICAgICAgICByZXR1cm4gLTE7CisgICAgICBuYnl0ZXMgLT0gd2hvbGVuNDsKKworICAgICAg LyogRm9yIGEgdHJpdmlhbCBBQ0wsIG1heCA2ICh0eXBpY2FsbHkgMykgQUNFcywgMyBhbGxv dywgMyBkZW55LgorICAgICAgICAgQ2hlY2sgdGhhdCB0aGVyZSBpcyBhdCBtb3N0IG9uZSBB Q0Ugb2YgZWFjaCBUWVBFIGFuZCBXSE8uICAqLworICAgICAgaW50IHdobzIKKyAgICAgICAg PSAod2hvbGVuID09IDYgJiYgbWVtY21wICh4YXR0ciwgIk9XTkVSQCIsIDYpID09IDAgPyAw CisgICAgICAgICAgIDogd2hvbGVuID09IDYgJiYgbWVtY21wICh4YXR0ciwgIkdST1VQQCIs IDYpID09IDAgPyAyCisgICAgICAgICAgIDogd2hvbGVuID09IDkgJiYgbWVtY21wICh4YXR0 ciwgIkVWRVJZT05FQCIsIDkpID09IDAgPyA0CisgICAgICAgICAgIDogLTEpOworICAgICAg aWYgKHdobzIgPCAwKQorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGludCBhY2VfZm91bmRf Yml0ID0gMSA8PCAod2hvMiB8IHR5cGUpOworICAgICAgaWYgKGFjZV9mb3VuZCAmIGFjZV9m b3VuZF9iaXQpCisgICAgICAgIHJldHVybiAxOworICAgICAgYWNlX2ZvdW5kIHw9IGFjZV9m b3VuZF9iaXQ7CisKKyAgICAgIHhhdHRyID0gKHVpbnQzMl90ICopICgoY2hhciAqKSB4YXR0 ciArIHdob2xlbjQpOworICAgIH0KKworICByZXR1cm4gMDsKK30KICNlbmRpZgogCiAvKiBS ZXR1cm4gMSBpZiBOQU1FIGhhcyBhIG5vbnRyaXZpYWwgYWNjZXNzIGNvbnRyb2wgbGlzdCwK QEAgLTU2LDYgKzEzOSw3IEBAIGZpbGVfaGFzX2FjbCAoY2hhciBjb25zdCAqbmFtZSwgc3Ry dWN0IHN0YXQgY29uc3QgKnNiKQogIyBpZiBHRVRYQVRUUl9XSVRIX1BPU0lYX0FDTFMKIAog ICAgICAgc3NpemVfdCByZXQ7CisgICAgICBpbnQgaW5pdGlhbF9lcnJubyA9IGVycm5vOwog CiAgICAgICByZXQgPSBnZXR4YXR0ciAobmFtZSwgWEFUVFJfTkFNRV9QT1NJWF9BQ0xfQUND RVNTLCBOVUxMLCAwKTsKICAgICAgIGlmIChyZXQgPCAwICYmIGVycm5vID09IEVOT0RBVEEp CkBAIC03MywyMCArMTU3LDMzIEBAIGZpbGVfaGFzX2FjbCAoY2hhciBjb25zdCAqbmFtZSwg c3RydWN0IHN0YXQgY29uc3QgKnNiKQogICAgICAgICB9CiAKICAgICAgIGlmIChyZXQgPCAw KQotICAgICAgICB7IC8qIHdlIG1pZ2h0IGJlIG9uIE5GUywgc28gdHJ5IHRvIGNoZWNrIE5G U3Y0IEFDTHMgdG9vICovCi0gICAgICAgICAgY2hhciB4YXR0cltUUklWSUFMX05GUzRfQUNM X01BWF9MRU5HVEhdOwotCi0gICAgICAgICAgZXJybm8gPSAwOyAvKiB3ZSBuZWVkIHRvIHJl c2V0IGVycm5vIHNldCBieSB0aGUgcHJldmlvdXMgZ2V0eGF0dHIoKSAqLwotICAgICAgICAg IHJldCA9IGdldHhhdHRyIChuYW1lLCBYQVRUUl9OQU1FX05GU1Y0X0FDTCwgeGF0dHIsIFRS SVZJQUxfTkZTNF9BQ0xfTUFYX0xFTkdUSCk7Ci0gICAgICAgICAgaWYgKHJldCA8IDAgJiYg ZXJybm8gPT0gRU5PREFUQSkKLSAgICAgICAgICAgIHJldCA9IDA7CisgICAgICAgIHsKKyAg ICAgICAgICAvKiBDaGVjayBmb3IgTkZTdjQgQUNMcy4gIFRoZSBtYXggbGVuZ3RoIG9mIGEg dHJpdmlhbAorICAgICAgICAgICAgIEFDTCBpcyA2IHdvcmRzIGZvciBvd25lciwgNiBmb3Ig Z3JvdXAsIDcgZm9yIGV2ZXJ5b25lLAorICAgICAgICAgICAgIGFsbCB0aW1lcyAyIGJlY2F1 c2UgdGhlcmUgYXJlIGJvdGggYWxsb3cgYW5kIGRlbnkgQUNFcy4KKyAgICAgICAgICAgICBU aGVyZSBhcmUgNiB3b3JkcyBmb3Igb3duZXIgYmVjYXVzZSBvZiB0eXBlLCBmbGFnLCBtYXNr LAorICAgICAgICAgICAgIHdob2xlbiwgIk9XTkVSQCIrcGFkIGFuZCBzaW1pbGFybHkgZm9y IGdyb3VwOyBldmVyeW9uZSBpcworICAgICAgICAgICAgIGFub3RoZXIgd29yZCB0byBob2xk ICJFVkVSWU9ORUAiLiAgKi8KKyAgICAgICAgICB1aW50MzJfdCB4YXR0clsyICogKDYgKyA2 ICsgNyldOworCisgICAgICAgICAgcmV0ID0gZ2V0eGF0dHIgKG5hbWUsIFhBVFRSX05BTUVf TkZTVjRfQUNMLCB4YXR0ciwgc2l6ZW9mIHhhdHRyKTsKKyAgICAgICAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgICAgIHN3aXRjaCAoZXJybm8pCisgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgY2FzZSBFTk9EQVRBOiByZXR1cm4gMDsKKyAgICAgICAgICAgICAgY2FzZSBF UkFOR0UgOiByZXR1cm4gMTsgLyogQUNMIG11c3QgYmUgbm9udHJpdmlhbC4gICovCisgICAg ICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBpZiAocmV0IDwgMCAm JiBlcnJubyA9PSBFUkFOR0UpCi0gICAgICAgICAgICAgIHJldHVybiAxOyAgLyogd2Ugd29u J3QgZml0IGludG8gdGhlIGJ1ZmZlciwgc28gbm9uLXRyaXZpYWwgQUNMIGlzIHByZXNlbnRl ZCAqLwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBpZiAocmV0ID4gMCkKLSAg ICAgICAgICAgICAgICAvKiBsb29rcyBsaWtlIHRyaXZpYWwgQUNMLCBidXQgd2UgbmVlZCB0 byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFjbF9u ZnM0X25vbnRyaXZpYWwgKHhhdHRyLCByZXQpOworICAgICAgICAgICAgeworICAgICAgICAg ICAgICAvKiBJdCBsb29rcyBsaWtlIGEgdHJpdmlhbCBBQ0wsIGJ1dCBpbnZlc3RpZ2F0ZSBm dXJ0aGVyLiAgKi8KKyAgICAgICAgICAgICAgcmV0ID0gYWNsX25mczRfbm9udHJpdmlhbCAo eGF0dHIsIHJldCk7CisgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVy cm5vID0gaW5pdGlhbF9lcnJubzsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg aWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiAtIGFjbF9lcnJub192YWxpZCAoZXJybm8p OwotLSAKMi4yNS4xCgo= --------------0bfG4gZkSMZ1IHE7mZpK0vhA--