Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ohmn4-0000Z6-NX for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Oct 2022 07:01:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ohmn3-0002JH-8Y for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Oct 2022 07:01:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ohmn2-0002J8-7P for pgsql-hackers@lists.postgresql.org; Mon, 10 Oct 2022 07:01:28 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1ohmmy-0001tC-Sn for pgsql-hackers@lists.postgresql.org; Mon, 10 Oct 2022 07:01:27 +0000 Received: by mail-wm1-x333.google.com with SMTP id r3-20020a05600c35c300b003b4b5f6c6bdso5832301wmq.2 for ; Mon, 10 Oct 2022 00:01:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=pEwqPmGTuRsvTfgBTOt5dpDNvOSvwXgNyGygLTlH99A=; b=lGX8g+WUZE/ZkRPfIUyloVsG+0AJFHRYgGEX0fvgfhhn+2KgqzQJAA+KjIWsST+Utu YUIE9+VpfZgA/qGDMXW3eUcCoI5/lf7+QMTtrwGyZogSHLWKLw+r39+d3K2CSQ5PnxbU E9erKPx8wqWZ4dZ9c+J2YT2IQZQcy7px1YajU1EgKTztV4HKoNDvWjRD9Lq3ODj8R2VN NSPsb/iZLJdZOz0VgjMRKsAPU5RoH9BwyYthOpT7i2asgMtsKRUZ7wU4G3ihYoAjIwLz GsABjOOnrRd2LwsHA76BRTQ6K17B3tghWb4+41bKmeuOIgkMiPpwwBUqjZ7HDWL7BNwh IclQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pEwqPmGTuRsvTfgBTOt5dpDNvOSvwXgNyGygLTlH99A=; b=1ucEoX6oj5BtvoP2FAB2TVhTuiPLxUFx6X4S/Jv2doBTrBMuyNVE/oRKPKvOJWIrxg qzYDMRIZPCScYVVght+4EvB9H5e+gzcfigyfSVU3tDuuzqin9WV+hTiLLu4BYTkIvlT/ xmAZOArmEmMwWDC23e07VBwUL0vv+r5bO/uAxLEg30jsYdezmVOkuYI2vESF+RX2hd1l ZZqBus0ub0JnUJfOE0fo82R1AVmcwg7tcDW4Lxp/LcYqUuK/92FOTvRExR5QOaiUufk4 qBAsAPsEAkgQdxZiakbpOq5a9r5ExNc1xrPhdC8BKLG3pY3ji+J1/9TJokL9rkD0l1X1 nP8A== X-Gm-Message-State: ACrzQf3X2/EkgIC9UqzQ9+UOQjYpW0DCNaG1GOwK6FblCH1f3vBQaeKm lgS7PCvftjARI1jb7b1CngU= X-Google-Smtp-Source: AMsMyM5wNq+T2f8LZRVFpbnwZkhiht39+hFoH5k7d4SYiZ7HHpmz8X8hVvgwFZjyxvDwoFmQ9fC5AA== X-Received: by 2002:a05:600c:1e87:b0:3b5:1e2:3c3c with SMTP id be7-20020a05600c1e8700b003b501e23c3cmr11511585wmb.130.1665385282913; Mon, 10 Oct 2022 00:01:22 -0700 (PDT) Received: from [192.168.7.69] ([54.239.6.184]) by smtp.gmail.com with ESMTPSA id u10-20020a5d434a000000b00228de351fc0sm8144883wrr.38.2022.10.10.00.01.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Oct 2022 00:01:22 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------iDRVpDpLvlNQQmGLoCdfKHtj" Message-ID: Date: Mon, 10 Oct 2022 09:00:06 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.3.2 Subject: Re: Patch proposal: make use of regular expressions for the username in pg_hba.conf To: Michael Paquier Cc: Tom Lane , Jacob Champion , PostgreSQL Hackers References: <4177827.1662684400@sss.pgh.pa.us> <572017.1663646973@sss.pgh.pa.us> Content-Language: en-US From: "Drouvot, Bertrand" In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------iDRVpDpLvlNQQmGLoCdfKHtj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 10/5/22 9:24 AM, Michael Paquier wrote: > On Tue, Sep 20, 2022 at 01:33:09PM +0200, Drouvot, Bertrand wrote: > Anyway, I have looked at the patch. > > + List *roles_re; > + List *databases_re; > + regex_t hostname_re; > I am surprised by the approach of using separate lists for the regular > expressions and the raw names. Wouldn't it be better to store > everything in a single list but assign an entry type? In this case it > would be either regex or plain string. This would minimize the > footprint of the changes (no extra arguments *_re in the routines > checking for a match on the roles, databases or hosts). And it seems > to me that this would make unnecessary the use of re_num here and > there. Please find attached v5 addressing this. I started with an union but it turns out that we still need the plain string when a regex is used. This is not needed for the authentication per say but for fill_hba_line(). So I ended up creating a new struct without union in v5. > The hostname is different, of course, requiring only an extra > field for its type, or something like that. I'm using the same new struct as described above for the hostname. > > Perhaps the documentation would gain in clarity if there were more > examples, like a set of comma-separated examples (mix of regex and raw > strings for example, for all the field types that gain support for > regexes)? > Right, I added more examples in v5. > -$node->append_conf('postgresql.conf', "log_connections = on\n"); > +$node->append_conf( > + 'postgresql.conf', qq{ > +listen_addresses = '127.0.0.1' > +log_connections = on > +}); > Hmm. I think that we may need to reconsider the location of the tests > for the regexes with the host name, as the "safe" regression tests > should not switch listen_addresses. One location where we already do > that is src/test/ssl/, so these could be moved there. Good point, I moved the hostname related tests in src/test/ssl. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------iDRVpDpLvlNQQmGLoCdfKHtj Content-Type: text/plain; charset=UTF-8; name="v5-0001-hba_with_regexp.patch" Content-Disposition: attachment; filename="v5-0001-hba_with_regexp.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jbGllbnQtYXV0aC5zZ21sIGIvZG9jL3NyYy9z Z21sL2NsaWVudC1hdXRoLnNnbWwKaW5kZXggYzZmMWI3MGZkMy4uNDA2NjI4ZWYzNSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NsaWVudC1hdXRoLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2NsaWVudC1hdXRoLnNnbWwKQEAgLTIzNSw4ICsyMzUsOSBAQCBob3N0bm9nc3NlbmMg IDxyZXBsYWNlYWJsZT5kYXRhYmFzZTwvcmVwbGFjZWFibGU+ICA8cmVwbGFjZWFibGU+dXNl cjwvcmVwbGFjZWFibAogICAgICAgIGxvZ2ljYWwgcmVwbGljYXRpb24gY29ubmVjdGlvbnMg ZG8gc3BlY2lmeSBpdC4KICAgICAgICBPdGhlcndpc2UsIHRoaXMgaXMgdGhlIG5hbWUgb2YK ICAgICAgICBhIHNwZWNpZmljIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4gZGF0YWJhc2UuCi0gICAgICAgTXVsdGlwbGUgZGF0YWJhc2UgbmFtZXMgY2FuIGJlIHN1 cHBsaWVkIGJ5IHNlcGFyYXRpbmcgdGhlbSB3aXRoCi0gICAgICAgY29tbWFzLiAgQSBzZXBh cmF0ZSBmaWxlIGNvbnRhaW5pbmcgZGF0YWJhc2UgbmFtZXMgY2FuIGJlIHNwZWNpZmllZCBi eQorICAgICAgIE11bHRpcGxlIGRhdGFiYXNlIG5hbWVzIGFuZC9vciByZWd1bGFyIGV4cHJl c3Npb25zIHByZWNlZGVkIGJ5IDxsaXRlcmFsPi88L2xpdGVyYWw+CisgICAgICAgY2FuIGJl IHN1cHBsaWVkIGJ5IHNlcGFyYXRpbmcgdGhlbSB3aXRoIGNvbW1hcy4KKyAgICAgICBBIHNl cGFyYXRlIGZpbGUgY29udGFpbmluZyBkYXRhYmFzZSBuYW1lcyBjYW4gYmUgc3BlY2lmaWVk IGJ5CiAgICAgICAgcHJlY2VkaW5nIHRoZSBmaWxlIG5hbWUgd2l0aCA8bGl0ZXJhbD5APC9s aXRlcmFsPi4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KQEAgLTI0OSw3ICsy NTAsOCBAQCBob3N0bm9nc3NlbmMgIDxyZXBsYWNlYWJsZT5kYXRhYmFzZTwvcmVwbGFjZWFi bGU+ICA8cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibAogICAgICAgIFNwZWNpZmllcyB3 aGljaCBkYXRhYmFzZSB1c2VyIG5hbWUocykgdGhpcyByZWNvcmQKICAgICAgICBtYXRjaGVz LiBUaGUgdmFsdWUgPGxpdGVyYWw+YWxsPC9saXRlcmFsPiBzcGVjaWZpZXMgdGhhdCBpdAog ICAgICAgIG1hdGNoZXMgYWxsIHVzZXJzLiAgT3RoZXJ3aXNlLCB0aGlzIGlzIGVpdGhlciB0 aGUgbmFtZSBvZiBhIHNwZWNpZmljCi0gICAgICAgZGF0YWJhc2UgdXNlciwgb3IgYSBncm91 cCBuYW1lIHByZWNlZGVkIGJ5IDxsaXRlcmFsPis8L2xpdGVyYWw+LgorICAgICAgIGRhdGFi YXNlIHVzZXIsIGEgcmVndWxhciBleHByZXNzaW9uIHByZWNlZGVkIGJ5IDxsaXRlcmFsPi88 L2xpdGVyYWw+CisgICAgICAgb3IgYSBncm91cCBuYW1lIHByZWNlZGVkIGJ5IDxsaXRlcmFs Pis8L2xpdGVyYWw+LgogICAgICAgIChSZWNhbGwgdGhhdCB0aGVyZSBpcyBubyByZWFsIGRp c3RpbmN0aW9uIGJldHdlZW4gdXNlcnMgYW5kIGdyb3VwcwogICAgICAgIGluIDxwcm9kdWN0 bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT47IGEgPGxpdGVyYWw+KzwvbGl0ZXJhbD4g bWFyayByZWFsbHkgbWVhbnMKICAgICAgICA8cXVvdGU+bWF0Y2ggYW55IG9mIHRoZSByb2xl cyB0aGF0IGFyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IG1lbWJlcnMKQEAgLTI1OCw3ICsy NjAsOCBAQCBob3N0bm9nc3NlbmMgIDxyZXBsYWNlYWJsZT5kYXRhYmFzZTwvcmVwbGFjZWFi bGU+ICA8cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibAogICAgICAgIGNvbnNpZGVyZWQg dG8gYmUgYSBtZW1iZXIgb2YgYSByb2xlIGlmIHRoZXkgYXJlIGV4cGxpY2l0bHkgYSBtZW1i ZXIKICAgICAgICBvZiB0aGUgcm9sZSwgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSwgYW5kIG5v dCBqdXN0IGJ5IHZpcnR1ZSBvZgogICAgICAgIGJlaW5nIGEgc3VwZXJ1c2VyLgotICAgICAg IE11bHRpcGxlIHVzZXIgbmFtZXMgY2FuIGJlIHN1cHBsaWVkIGJ5IHNlcGFyYXRpbmcgdGhl bSB3aXRoIGNvbW1hcy4KKyAgICAgICBNdWx0aXBsZSB1c2VyIG5hbWVzIGFuZC9vciByZWd1 bGFyIGV4cHJlc3Npb25zIHByZWNlZGVkIGJ5IDxsaXRlcmFsPi88L2xpdGVyYWw+CisgICAg ICAgY2FuIGJlIHN1cHBsaWVkIGJ5IHNlcGFyYXRpbmcgdGhlbSB3aXRoIGNvbW1hcy4KICAg ICAgICBBIHNlcGFyYXRlIGZpbGUgY29udGFpbmluZyB1c2VyIG5hbWVzIGNhbiBiZSBzcGVj aWZpZWQgYnkgcHJlY2VkaW5nIHRoZQogICAgICAgIGZpbGUgbmFtZSB3aXRoIDxsaXRlcmFs PkA8L2xpdGVyYWw+LgogICAgICAgPC9wYXJhPgpAQCAtMjcwLDggKzI3Myw5IEBAIGhvc3Ru b2dzc2VuYyAgPHJlcGxhY2VhYmxlPmRhdGFiYXNlPC9yZXBsYWNlYWJsZT4gIDxyZXBsYWNl YWJsZT51c2VyPC9yZXBsYWNlYWJsCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgog ICAgICAgIFNwZWNpZmllcyB0aGUgY2xpZW50IG1hY2hpbmUgYWRkcmVzcyhlcykgdGhhdCB0 aGlzIHJlY29yZAotICAgICAgIG1hdGNoZXMuICBUaGlzIGZpZWxkIGNhbiBjb250YWluIGVp dGhlciBhIGhvc3QgbmFtZSwgYW4gSVAKLSAgICAgICBhZGRyZXNzIHJhbmdlLCBvciBvbmUg b2YgdGhlIHNwZWNpYWwga2V5IHdvcmRzIG1lbnRpb25lZCBiZWxvdy4KKyAgICAgICBtYXRj aGVzLiAgVGhpcyBmaWVsZCBjYW4gY29udGFpbiBlaXRoZXIgYSBob3N0IG5hbWUsIGEgcmVn dWxhciBleHByZXNzaW9uCisgICAgICAgcHJlY2VkZWQgYnkgPGxpdGVyYWw+LzwvbGl0ZXJh bD4gcmVwcmVzZW50aW5nIGhvc3QgbmFtZXMsIGFuIElQIGFkZHJlc3MgcmFuZ2UsCisgICAg ICAgb3Igb25lIG9mIHRoZSBzcGVjaWFsIGtleSB3b3JkcyBtZW50aW9uZWQgYmVsb3cuCiAg ICAgICA8L3BhcmE+CiAKICAgICAgIDxwYXJhPgpAQCAtNzM5LDYgKzc0MywyNCBAQCBob3N0 ICAgIGFsbCAgICAgICAgICAgICBhbGwgICAgICAgICAgICAgOjoxLzEyOCAgICAgICAgICAg ICAgICAgdHJ1c3QKICMgVFlQRSAgREFUQUJBU0UgICAgICAgIFVTRVIgICAgICAgICAgICBB RERSRVNTICAgICAgICAgICAgICAgICBNRVRIT0QKIGhvc3QgICAgYWxsICAgICAgICAgICAg IGFsbCAgICAgICAgICAgICBsb2NhbGhvc3QgICAgICAgICAgICAgICB0cnVzdAogCisjIFRo ZSBzYW1lIHVzaW5nIGEgcmVndWxhciBleHByZXNzaW9uIGZvciBob3N0IG5hbWUsIHdoaWNo IGFsbG93cyBjb25uZWN0aW9uIGZvcgorIyBob3N0IG5hbWUgZW5kaW5nIHdpdGggInRlc3Qi LgorIworIyBUWVBFICBEQVRBQkFTRSAgICAgICAgVVNFUiAgICAgICAgICAgIEFERFJFU1Mg ICAgICAgICAgICAgICAgIE1FVEhPRAoraG9zdCAgICBhbGwgICAgICAgICAgICAgYWxsICAg ICAgICAgICAgIC9eLip0ZXN0JCAgICAgICAgICAgICAgIHRydXN0CisKKyMgVGhlIHNhbWUg dXNpbmcgcmVndWxhciBleHByZXNzaW9uIGZvciBEQVRBQkFTRSwgd2hpY2ggYWxsb3dzIGNv bm5lY3Rpb24gdG8gdGhlCisjIGRiMSBhbmQgdGVzdGRiIGRhdGFiYXNlcyBhbmQgYW55IGRh dGFiYXNlIHdpdGggYSBuYW1lIGVuZGluZyB3aXRoICJ0ZXN0Ii4KKyMKKyMgVFlQRSAgREFU QUJBU0UgICAgICAgICAgICAgICBVU0VSICAgICAgICAgICAgQUREUkVTUyAgICAgICAgICAg ICAgICAgTUVUSE9ECitsb2NhbCAgIGRiMSwvXi4qdGVzdCQsdGVzdGRiICAgYWxsICAgICAg ICAgICAgIC9eLip0ZXN0JCAgICAgICAgICAgICAgIHRydXN0CisKKyMgVGhlIHNhbWUgdXNp bmcgcmVndWxhciBleHByZXNzaW9uIGZvciBVU0VSLCB3aGljaCBhbGxvd3MgY29ubmVjdGlv biB0byB0aGUKKyMgdXNlcjEgYW5kIHRlc3R1c2VyIHVzZXJzIGFuZCBhbnkgdXNlciB3aXRo IGEgbmFtZSBlbmRpbmcgd2l0aCAidGVzdCIuCisjCisjIFRZUEUgIERBVEFCQVNFICAgICAg ICAgICAgICAgICBVU0VSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUREUkVTUyAg ICAgICAgICAgICAgICAgTUVUSE9ECitsb2NhbCAgIGRiMSwvXi4qdGVzdCQsdGVzdGRiICAg ICB1c2VyMSwvXi4qdGVzdCQsdGVzdHVzZXIgICAgICAgICAgL14uKnRlc3QkICAgICAgICAg ICAgICAgdHJ1c3QKKwogIyBBbGxvdyBhbnkgdXNlciBmcm9tIGFueSBob3N0IHdpdGggSVAg YWRkcmVzcyAxOTIuMTY4LjkzLnggdG8gY29ubmVjdAogIyB0byBkYXRhYmFzZSAicG9zdGdy ZXMiIGFzIHRoZSBzYW1lIHVzZXIgbmFtZSB0aGF0IGlkZW50IHJlcG9ydHMgZm9yCiAjIHRo ZSBjb25uZWN0aW9uICh0eXBpY2FsbHkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdXNlciBuYW1l KS4KQEAgLTc4NSwxNiArODA3LDE4IEBAIGhvc3QgICAgYWxsICAgICAgICAgICAgIGFsbCAg ICAgICAgICAgICAxOTIuMTY4LjEyLjEwLzMyICAgICAgICBnc3MKICMgVFlQRSAgREFUQUJB U0UgICAgICAgIFVTRVIgICAgICAgICAgICBBRERSRVNTICAgICAgICAgICAgICAgICBNRVRI T0QKIGhvc3QgICAgYWxsICAgICAgICAgICAgIGFsbCAgICAgICAgICAgICAxOTIuMTY4LjAu MC8xNiAgICAgICAgICBpZGVudCBtYXA9b21pY3JvbgogCi0jIElmIHRoZXNlIGFyZSB0aGUg b25seSB0aHJlZSBsaW5lcyBmb3IgbG9jYWwgY29ubmVjdGlvbnMsIHRoZXkgd2lsbAorIyBJ ZiB0aGVzZSBhcmUgdGhlIG9ubHkgZm91ciBsaW5lcyBmb3IgbG9jYWwgY29ubmVjdGlvbnMs IHRoZXkgd2lsbAogIyBhbGxvdyBsb2NhbCB1c2VycyB0byBjb25uZWN0IG9ubHkgdG8gdGhl aXIgb3duIGRhdGFiYXNlcyAoZGF0YWJhc2VzCi0jIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0 aGVpciBkYXRhYmFzZSB1c2VyIG5hbWUpIGV4Y2VwdCBmb3IgYWRtaW5pc3RyYXRvcnMKLSMg YW5kIG1lbWJlcnMgb2Ygcm9sZSAic3VwcG9ydCIsIHdobyBjYW4gY29ubmVjdCB0byBhbGwg ZGF0YWJhc2VzLiAgVGhlIGZpbGUKLSMgJFBHREFUQS9hZG1pbnMgY29udGFpbnMgYSBsaXN0 IG9mIG5hbWVzIG9mIGFkbWluaXN0cmF0b3JzLiAgUGFzc3dvcmRzCisjIHdpdGggdGhlIHNh bWUgbmFtZSBhcyB0aGVpciBkYXRhYmFzZSB1c2VyIG5hbWUpIGV4Y2VwdCBmb3IgYWRtaW5p c3RyYXRvcnMsCisjIHVzZXJzIGVuZGluZyB3aXRoICJoZWxwZGVzayIgYW5kIG1lbWJlcnMg b2Ygcm9sZSAic3VwcG9ydCIsCisjIHdobyBjYW4gY29ubmVjdCB0byBhbGwgZGF0YWJhc2Vz LgorIyBUaGUgZmlsZSRQR0RBVEEvYWRtaW5zIGNvbnRhaW5zIGEgbGlzdCBvZiBuYW1lcyBv ZiBhZG1pbmlzdHJhdG9ycy4gIFBhc3N3b3JkcwogIyBhcmUgcmVxdWlyZWQgaW4gYWxsIGNh c2VzLgogIwogIyBUWVBFICBEQVRBQkFTRSAgICAgICAgVVNFUiAgICAgICAgICAgIEFERFJF U1MgICAgICAgICAgICAgICAgIE1FVEhPRAogbG9jYWwgICBzYW1ldXNlciAgICAgICAgYWxs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kNQogbG9jYWwgICBhbGwg ICAgICAgICAgICAgQGFkbWlucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1k NQorbG9jYWwgICBhbGwgICAgICAgICAgICAgL14uKmhlbHBkZXNrJCAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1kNQogbG9jYWwgICBhbGwgICAgICAgICAgICAgK3N1cHBvcnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kNQogCiAjIFRoZSBsYXN0IHR3byBsaW5l cyBhYm92ZSBjYW4gYmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBsaW5lOgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMgYi9zcmMvYmFja2VuZC9saWJwcS9oYmEuYwpp bmRleCA0NjM3NDI2ZDYyLi42ZmU4YzQwMDk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9s aWJwcS9oYmEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9oYmEuYwpAQCAtNjYsNiArNjYs NyBAQCB0eXBlZGVmIHN0cnVjdCBjaGVja19uZXR3b3JrX2RhdGEKIH0gY2hlY2tfbmV0d29y a19kYXRhOwogCiAKKyNkZWZpbmUgdG9rZW5faXNfcmVnZXhwKHQpCSh0LT5pc19yZWdleCkK ICNkZWZpbmUgdG9rZW5faXNfa2V5d29yZCh0LCBrKQkoIXQtPnF1b3RlZCAmJiBzdHJjbXAo dC0+c3RyaW5nLCBrKSA9PSAwKQogI2RlZmluZSB0b2tlbl9tYXRjaGVzKHQsIGspICAoc3Ry Y21wKHQtPnN0cmluZywgaykgPT0gMCkKIApAQCAtMTE3LDYgKzExOCw5IEBAIHN0YXRpYyBM aXN0ICp0b2tlbml6ZV9pbmNfZmlsZShMaXN0ICp0b2tlbnMsIGNvbnN0IGNoYXIgKm91dGVy X2ZpbGVuYW1lLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmluY19maWxlbmFtZSwgaW50IGVs ZXZlbCwgY2hhciAqKmVycl9tc2cpOwogc3RhdGljIGJvb2wgcGFyc2VfaGJhX2F1dGhfb3B0 KGNoYXIgKm5hbWUsIGNoYXIgKnZhbCwgSGJhTGluZSAqaGJhbGluZSwKIAkJCQkJCQkgICBp bnQgZWxldmVsLCBjaGFyICoqZXJyX21zZyk7CitzdGF0aWMgYm9vbCB0b2tlbl9yZWdjb21w KHJlZ2V4X3QgKnJlLCBjaGFyICpzdHJpbmcsIGNoYXIgKmZpbGVuYW1lLAorCQkJCQkJICBp bnQgbGluZV9udW0sIGNoYXIgKiplcnJfbXNnLCBpbnQgZWxldmVsKTsKK3N0YXRpYyBib29s IHRva2VuX3JlZ2V4ZWMoY29uc3QgY2hhciAqbWF0Y2gsIHJlZ2V4X3QgKnJlKTsKIAogCiAv KgpAQCAtNTc0LDI0ICs1NzgsMzAgQEAgaXNfbWVtYmVyKE9pZCB1c2VyaWQsIGNvbnN0IGNo YXIgKnJvbGUpCiB9CiAKIC8qCi0gKiBDaGVjayBBdXRoVG9rZW4gbGlzdCBmb3IgYSBtYXRj aCB0byByb2xlLCBhbGxvd2luZyBncm91cCBuYW1lcy4KKyAqIENoZWNrIEF1dGhUb2tlbiBs aXN0IGZvciBhIG1hdGNoIHRvIHJvbGUuCisgKiBXZSBhcmUgYWxsb3dpbmcgZ3JvdXAgbmFt ZXMgYW5kIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCiAgKi8KIHN0YXRpYyBib29sCiBjaGVja19y b2xlKGNvbnN0IGNoYXIgKnJvbGUsIE9pZCByb2xlaWQsIExpc3QgKnRva2VucykKIHsKIAlM aXN0Q2VsbCAgICpjZWxsOwotCUF1dGhUb2tlbiAgKnRvazsKKwlBdXRoVG9rZW5PclJlZ2V4 ICp0b2tyZWc7CiAKIAlmb3JlYWNoKGNlbGwsIHRva2VucykKIAl7Ci0JCXRvayA9IGxmaXJz dChjZWxsKTsKLQkJaWYgKCF0b2stPnF1b3RlZCAmJiB0b2stPnN0cmluZ1swXSA9PSAnKycp CisJCXRva3JlZyA9IGxmaXJzdChjZWxsKTsKKwkJaWYgKCF0b2tlbl9pc19yZWdleHAodG9r cmVnKSkKIAkJewotCQkJaWYgKGlzX21lbWJlcihyb2xlaWQsIHRvay0+c3RyaW5nICsgMSkp CisJCQlpZiAoIXRva3JlZy0+YXV0aHRva2VuLT5xdW90ZWQgJiYgdG9rcmVnLT5hdXRodG9r ZW4tPnN0cmluZ1swXSA9PSAnKycpCisJCQl7CisJCQkJaWYgKGlzX21lbWJlcihyb2xlaWQs IHRva3JlZy0+YXV0aHRva2VuLT5zdHJpbmcgKyAxKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJ CQl9CisJCQllbHNlIGlmICh0b2tlbl9tYXRjaGVzKHRva3JlZy0+YXV0aHRva2VuLCByb2xl KSB8fAorCQkJCQkgdG9rZW5faXNfa2V5d29yZCh0b2tyZWctPmF1dGh0b2tlbiwgImFsbCIp KQogCQkJCXJldHVybiB0cnVlOwogCQl9Ci0JCWVsc2UgaWYgKHRva2VuX21hdGNoZXModG9r LCByb2xlKSB8fAotCQkJCSB0b2tlbl9pc19rZXl3b3JkKHRvaywgImFsbCIpKQorCQllbHNl IGlmICh0b2tlbl9yZWdleGVjKHJvbGUsIHRva3JlZy0+cmVnZXgpKQogCQkJcmV0dXJuIHRy dWU7CiAJfQogCXJldHVybiBmYWxzZTsKQEAgLTYwNCwzNiArNjE0LDQxIEBAIHN0YXRpYyBi b29sCiBjaGVja19kYihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnJvbGUsIE9p ZCByb2xlaWQsIExpc3QgKnRva2VucykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwotCUF1dGhU b2tlbiAgKnRvazsKKwlBdXRoVG9rZW5PclJlZ2V4ICp0b2tyZWc7CiAKIAlmb3JlYWNoKGNl bGwsIHRva2VucykKIAl7Ci0JCXRvayA9IGxmaXJzdChjZWxsKTsKLQkJaWYgKGFtX3dhbHNl bmRlciAmJiAhYW1fZGJfd2Fsc2VuZGVyKQotCQl7Ci0JCQkvKgotCQkJICogcGh5c2ljYWwg cmVwbGljYXRpb24gd2Fsc2VuZGVyIGNvbm5lY3Rpb25zIGNhbiBvbmx5IG1hdGNoCi0JCQkg KiByZXBsaWNhdGlvbiBrZXl3b3JkCi0JCQkgKi8KLQkJCWlmICh0b2tlbl9pc19rZXl3b3Jk KHRvaywgInJlcGxpY2F0aW9uIikpCi0JCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJZWxzZSBp ZiAodG9rZW5faXNfa2V5d29yZCh0b2ssICJhbGwiKSkKLQkJCXJldHVybiB0cnVlOwotCQll bHNlIGlmICh0b2tlbl9pc19rZXl3b3JkKHRvaywgInNhbWV1c2VyIikpCisJCXRva3JlZyA9 IGxmaXJzdChjZWxsKTsKKwkJaWYgKCF0b2tlbl9pc19yZWdleHAodG9rcmVnKSkKIAkJewot CQkJaWYgKHN0cmNtcChkYm5hbWUsIHJvbGUpID09IDApCisJCQlpZiAoYW1fd2Fsc2VuZGVy ICYmICFhbV9kYl93YWxzZW5kZXIpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBwaHlzaWNhbCBy ZXBsaWNhdGlvbiB3YWxzZW5kZXIgY29ubmVjdGlvbnMgY2FuIG9ubHkgbWF0Y2gKKwkJCQkg KiByZXBsaWNhdGlvbiBrZXl3b3JkCisJCQkJICovCisJCQkJaWYgKHRva2VuX2lzX2tleXdv cmQodG9rcmVnLT5hdXRodG9rZW4sICJyZXBsaWNhdGlvbiIpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCX0KKwkJCWVsc2UgaWYgKHRva2VuX2lzX2tleXdvcmQodG9rcmVnLT5hdXRodG9r ZW4sICJhbGwiKSkKIAkJCQlyZXR1cm4gdHJ1ZTsKLQkJfQotCQllbHNlIGlmICh0b2tlbl9p c19rZXl3b3JkKHRvaywgInNhbWVncm91cCIpIHx8Ci0JCQkJIHRva2VuX2lzX2tleXdvcmQo dG9rLCAic2FtZXJvbGUiKSkKLQkJewotCQkJaWYgKGlzX21lbWJlcihyb2xlaWQsIGRibmFt ZSkpCisJCQllbHNlIGlmICh0b2tlbl9pc19rZXl3b3JkKHRva3JlZy0+YXV0aHRva2VuLCAi c2FtZXVzZXIiKSkKKwkJCXsKKwkJCQlpZiAoc3RyY21wKGRibmFtZSwgcm9sZSkgPT0gMCkK KwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQllbHNlIGlmICh0b2tlbl9pc19rZXl3b3Jk KHRva3JlZy0+YXV0aHRva2VuLCAic2FtZWdyb3VwIikgfHwKKwkJCQkJIHRva2VuX2lzX2tl eXdvcmQodG9rcmVnLT5hdXRodG9rZW4sICJzYW1lcm9sZSIpKQorCQkJeworCQkJCWlmIChp c19tZW1iZXIocm9sZWlkLCBkYm5hbWUpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJ CWVsc2UgaWYgKHRva2VuX2lzX2tleXdvcmQodG9rcmVnLT5hdXRodG9rZW4sICJyZXBsaWNh dGlvbiIpKQorCQkJCWNvbnRpbnVlOwkJLyogbmV2ZXIgbWF0Y2ggdGhpcyBpZiBub3Qgd2Fs c2VuZGVyICovCisJCQllbHNlIGlmICh0b2tlbl9tYXRjaGVzKHRva3JlZy0+YXV0aHRva2Vu LCBkYm5hbWUpKQogCQkJCXJldHVybiB0cnVlOwogCQl9Ci0JCWVsc2UgaWYgKHRva2VuX2lz X2tleXdvcmQodG9rLCAicmVwbGljYXRpb24iKSkKLQkJCWNvbnRpbnVlOwkJCS8qIG5ldmVy IG1hdGNoIHRoaXMgaWYgbm90IHdhbHNlbmRlciAqLwotCQllbHNlIGlmICh0b2tlbl9tYXRj aGVzKHRvaywgZGJuYW1lKSkKKwkJZWxzZSBpZiAodG9rZW5fcmVnZXhlYyhkYm5hbWUsIHRv a3JlZy0+cmVnZXgpKQogCQkJcmV0dXJuIHRydWU7CiAJfQogCXJldHVybiBmYWxzZTsKQEAg LTY4MSw3ICs2OTYsNyBAQCBob3N0bmFtZV9tYXRjaChjb25zdCBjaGFyICpwYXR0ZXJuLCBj b25zdCBjaGFyICphY3R1YWxfaG9zdG5hbWUpCiAgKiBDaGVjayB0byBzZWUgaWYgYSBjb25u ZWN0aW5nIElQIG1hdGNoZXMgYSBnaXZlbiBob3N0IG5hbWUuCiAgKi8KIHN0YXRpYyBib29s Ci1jaGVja19ob3N0bmFtZShoYmFQb3J0ICpwb3J0LCBjb25zdCBjaGFyICpob3N0bmFtZSkK K2NoZWNrX2hvc3RuYW1lKGhiYVBvcnQgKnBvcnQsIGNvbnN0IEF1dGhUb2tlbk9yUmVnZXgg KnRva19ob3N0bmFtZSkKIHsKIAlzdHJ1Y3QgYWRkcmluZm8gKmdhaV9yZXN1bHQsCiAJCQkg ICAqZ2FpOwpAQCAtNzEyLDggKzcyNywxMyBAQCBjaGVja19ob3N0bmFtZShoYmFQb3J0ICpw b3J0LCBjb25zdCBjaGFyICpob3N0bmFtZSkKIAkJcG9ydC0+cmVtb3RlX2hvc3RuYW1lID0g cHN0cmR1cChyZW1vdGVfaG9zdG5hbWUpOwogCX0KIAorCWlmICh0b2tlbl9pc19yZWdleHAo dG9rX2hvc3RuYW1lKSkKKwl7CisJCWlmICghdG9rZW5fcmVnZXhlYyhwb3J0LT5yZW1vdGVf aG9zdG5hbWUsIHRva19ob3N0bmFtZS0+cmVnZXgpKQorCQkJcmV0dXJuIGZhbHNlOworCX0K IAkvKiBOb3cgc2VlIGlmIHJlbW90ZSBob3N0IG5hbWUgbWF0Y2hlcyB0aGlzIHBnX2hiYSBs aW5lICovCi0JaWYgKCFob3N0bmFtZV9tYXRjaChob3N0bmFtZSwgcG9ydC0+cmVtb3RlX2hv c3RuYW1lKSkKKwllbHNlIGlmICghaG9zdG5hbWVfbWF0Y2godG9rX2hvc3RuYW1lLT5hdXRo dG9rZW4tPnN0cmluZywgcG9ydC0+cmVtb3RlX2hvc3RuYW1lKSkKIAkJcmV0dXJuIGZhbHNl OwogCiAJLyogSWYgd2UgYWxyZWFkeSB2ZXJpZmllZCB0aGUgZm9yd2FyZCBsb29rdXAsIHdl J3JlIGRvbmUgKi8KQEAgLTc2MSw3ICs3ODEsNyBAQCBjaGVja19ob3N0bmFtZShoYmFQb3J0 ICpwb3J0LCBjb25zdCBjaGFyICpob3N0bmFtZSkKIAogCWlmICghZm91bmQpCiAJCWVsb2co REVCVUcyLCAicGdfaGJhLmNvbmYgaG9zdCBuYW1lIFwiJXNcIiByZWplY3RlZCBiZWNhdXNl IGFkZHJlc3MgcmVzb2x1dGlvbiBkaWQgbm90IHJldHVybiBhIG1hdGNoIHdpdGggSVAgYWRk cmVzcyBvZiBjbGllbnQiLAotCQkJIGhvc3RuYW1lKTsKKwkJCSB0b2tfaG9zdG5hbWUtPmF1 dGh0b2tlbi0+c3RyaW5nKTsKIAogCXBvcnQtPnJlbW90ZV9ob3N0bmFtZV9yZXNvbHYgPSBm b3VuZCA/ICsxIDogLTE7CiAKQEAgLTkzOSwxMyArOTU5LDEzIEBAIHBhcnNlX2hiYV9saW5l KFRva2VuaXplZEF1dGhMaW5lICp0b2tfbGluZSwgaW50IGVsZXZlbCkKIAlzdHJ1Y3QgYWRk cmluZm8gKmdhaV9yZXN1bHQ7CiAJc3RydWN0IGFkZHJpbmZvIGhpbnRzOwogCWludAkJCXJl dDsKLQljaGFyCSAgICpjaWRyX3NsYXNoOwogCWNoYXIJICAgKnVuc3VwYXV0aDsKIAlMaXN0 Q2VsbCAgICpmaWVsZDsKIAlMaXN0CSAgICp0b2tlbnM7CiAJTGlzdENlbGwgICAqdG9rZW5j ZWxsOwogCUF1dGhUb2tlbiAgKnRva2VuOwogCUhiYUxpbmUgICAgKnBhcnNlZGxpbmU7CisJ Y2hhcgkgICAqY2lkcl9zbGFzaCA9IE5VTEw7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8K IAogCXBhcnNlZGxpbmUgPSBwYWxsb2MwKHNpemVvZihIYmFMaW5lKSk7CiAJcGFyc2VkbGlu ZS0+bGluZW51bWJlciA9IGxpbmVfbnVtOwpAQCAtMTA1Miw4ICsxMDcyLDMxIEBAIHBhcnNl X2hiYV9saW5lKFRva2VuaXplZEF1dGhMaW5lICp0b2tfbGluZSwgaW50IGVsZXZlbCkKIAl0 b2tlbnMgPSBsZmlyc3QoZmllbGQpOwogCWZvcmVhY2godG9rZW5jZWxsLCB0b2tlbnMpCiAJ ewotCQlwYXJzZWRsaW5lLT5kYXRhYmFzZXMgPSBsYXBwZW5kKHBhcnNlZGxpbmUtPmRhdGFi YXNlcywKLQkJCQkJCQkJCQljb3B5X2F1dGhfdG9rZW4obGZpcnN0KHRva2VuY2VsbCkpKTsK KwkJQXV0aFRva2VuT3JSZWdleCAqdG9rcmVnOworCQlBdXRoVG9rZW4gICp0b2sgPSBsZmly c3QodG9rZW5jZWxsKTsKKworCQl0b2tyZWcgPSAoQXV0aFRva2VuT3JSZWdleCAqKSBwYWxs b2MwKHNpemVvZihBdXRoVG9rZW5PclJlZ2V4KSk7CisJCXRva3JlZy0+YXV0aHRva2VuID0g Y29weV9hdXRoX3Rva2VuKGxmaXJzdCh0b2tlbmNlbGwpKTsKKwkJaWYgKHRvay0+c3RyaW5n WzBdID09ICcvJykKKwkJeworCQkJLyoKKwkJCSAqIFdoZW4gdG9rLT5zdHJpbmcgc3RhcnRz IHdpdGggYSBzbGFzaCwgdHJlYXQgaXQgYXMgYSByZWd1bGFyCisJCQkgKiBleHByZXNzaW9u LiBQcmUtY29tcGlsZSBpdC4KKwkJCSAqLworCQkJcmVnZXhfdCAgICAqcmU7CisKKwkJCXRv a3JlZy0+aXNfcmVnZXggPSB0cnVlOworCQkJcmUgPSAocmVnZXhfdCAqKSBwYWxsb2Moc2l6 ZW9mKHJlZ2V4X3QpKTsKKwkJCWlmICh0b2tlbl9yZWdjb21wKHJlLCB0b2stPnN0cmluZyAr IDEsIEhiYUZpbGVOYW1lLCBsaW5lX251bSwKKwkJCQkJCQkgIGVycl9tc2csIGVsZXZlbCkp CisJCQkJdG9rcmVnLT5yZWdleCA9IHJlOworCQkJZWxzZQorCQkJCXJldHVybiBOVUxMOwor CQl9CisJCWVsc2UKKwkJCXRva3JlZy0+aXNfcmVnZXggPSBmYWxzZTsKKworCQlwYXJzZWRs aW5lLT5kYXRhYmFzZXMgPSBsYXBwZW5kKHBhcnNlZGxpbmUtPmRhdGFiYXNlcywgdG9rcmVn KTsKIAl9CiAKIAkvKiBHZXQgdGhlIHJvbGVzLiAqLwpAQCAtMTA3Miw4ICsxMTE1LDMxIEBA IHBhcnNlX2hiYV9saW5lKFRva2VuaXplZEF1dGhMaW5lICp0b2tfbGluZSwgaW50IGVsZXZl bCkKIAl0b2tlbnMgPSBsZmlyc3QoZmllbGQpOwogCWZvcmVhY2godG9rZW5jZWxsLCB0b2tl bnMpCiAJewotCQlwYXJzZWRsaW5lLT5yb2xlcyA9IGxhcHBlbmQocGFyc2VkbGluZS0+cm9s ZXMsCi0JCQkJCQkJCQljb3B5X2F1dGhfdG9rZW4obGZpcnN0KHRva2VuY2VsbCkpKTsKKwkJ QXV0aFRva2VuT3JSZWdleCAqdG9rcmVnOworCQlBdXRoVG9rZW4gICp0b2sgPSBsZmlyc3Qo dG9rZW5jZWxsKTsKKworCQl0b2tyZWcgPSAoQXV0aFRva2VuT3JSZWdleCAqKSBwYWxsb2Mw KHNpemVvZihBdXRoVG9rZW5PclJlZ2V4KSk7CisJCXRva3JlZy0+YXV0aHRva2VuID0gY29w eV9hdXRoX3Rva2VuKGxmaXJzdCh0b2tlbmNlbGwpKTsKKwkJaWYgKHRvay0+c3RyaW5nWzBd ID09ICcvJykKKwkJeworCQkJLyoKKwkJCSAqIFdoZW4gdG9rLT5zdHJpbmcgc3RhcnRzIHdp dGggYSBzbGFzaCwgdHJlYXQgaXQgYXMgYSByZWd1bGFyCisJCQkgKiBleHByZXNzaW9uLiBQ cmUtY29tcGlsZSBpdC4KKwkJCSAqLworCQkJcmVnZXhfdCAgICAqcmU7CisKKwkJCXRva3Jl Zy0+aXNfcmVnZXggPSB0cnVlOworCQkJcmUgPSAocmVnZXhfdCAqKSBwYWxsb2Moc2l6ZW9m KHJlZ2V4X3QpKTsKKwkJCWlmICh0b2tlbl9yZWdjb21wKHJlLCB0b2stPnN0cmluZyArIDEs IEhiYUZpbGVOYW1lLCBsaW5lX251bSwKKwkJCQkJCQkgIGVycl9tc2csIGVsZXZlbCkpCisJ CQkJdG9rcmVnLT5yZWdleCA9IHJlOworCQkJZWxzZQorCQkJCXJldHVybiBOVUxMOworCQl9 CisJCWVsc2UKKwkJCXRva3JlZy0+aXNfcmVnZXggPSBmYWxzZTsKKworCQlwYXJzZWRsaW5l LT5yb2xlcyA9IGxhcHBlbmQocGFyc2VkbGluZS0+cm9sZXMsIHRva3JlZyk7CiAJfQogCiAJ aWYgKHBhcnNlZGxpbmUtPmNvbm50eXBlICE9IGN0TG9jYWwpCkBAIC0xMTIwLDYgKzExODYs OCBAQCBwYXJzZV9oYmFfbGluZShUb2tlbml6ZWRBdXRoTGluZSAqdG9rX2xpbmUsIGludCBl bGV2ZWwpCiAJCX0KIAkJZWxzZQogCQl7CisJCQlib29sCQlpc19yZWdleHAgPSB0b2tlbi0+ c3RyaW5nWzBdID09ICcvJyA/IHRydWUgOiBmYWxzZTsKKwogCQkJLyogSVAgYW5kIG5ldG1h c2sgYXJlIHNwZWNpZmllZCAqLwogCQkJcGFyc2VkbGluZS0+aXBfY21wX21ldGhvZCA9IGlw Q21wTWFzazsKIApAQCAtMTEyNyw5ICsxMTk1LDEyIEBAIHBhcnNlX2hiYV9saW5lKFRva2Vu aXplZEF1dGhMaW5lICp0b2tfbGluZSwgaW50IGVsZXZlbCkKIAkJCXN0ciA9IHBzdHJkdXAo dG9rZW4tPnN0cmluZyk7CiAKIAkJCS8qIENoZWNrIGlmIGl0IGhhcyBhIENJRFIgc3VmZml4 IGFuZCBpZiBzbyBpc29sYXRlIGl0ICovCi0JCQljaWRyX3NsYXNoID0gc3RyY2hyKHN0ciwg Jy8nKTsKLQkJCWlmIChjaWRyX3NsYXNoKQotCQkJCSpjaWRyX3NsYXNoID0gJ1wwJzsKKwkJ CWlmICghaXNfcmVnZXhwKQorCQkJeworCQkJCWNpZHJfc2xhc2ggPSBzdHJjaHIoc3RyLCAn LycpOworCQkJCWlmIChjaWRyX3NsYXNoKQorCQkJCQkqY2lkcl9zbGFzaCA9ICdcMCc7CisJ CQl9CiAKIAkJCS8qIEdldCB0aGUgSVAgYWRkcmVzcyBlaXRoZXIgd2F5ICovCiAJCQloaW50 cy5haV9mbGFncyA9IEFJX05VTUVSSUNIT1NUOwpAQCAtMTE0OSw3ICsxMjIwLDE2IEBAIHBh cnNlX2hiYV9saW5lKFRva2VuaXplZEF1dGhMaW5lICp0b2tfbGluZSwgaW50IGVsZXZlbCkK IAkJCQlwYXJzZWRsaW5lLT5hZGRybGVuID0gZ2FpX3Jlc3VsdC0+YWlfYWRkcmxlbjsKIAkJ CX0KIAkJCWVsc2UgaWYgKHJldCA9PSBFQUlfTk9OQU1FKQotCQkJCXBhcnNlZGxpbmUtPmhv c3RuYW1lID0gc3RyOworCQkJeworCQkJCXBhcnNlZGxpbmUtPnRva19ob3N0bmFtZS5pc19y ZWdleCA9IGZhbHNlOworCisJCQkJLyoKKwkJCQkgKiBUaGlzIGlzIG9rIHRvIGNvcHkgdGhl IHRva2VuLT5zdHJpbmcgYW5kIG5vdCBzdHIgaGVyZSwgYXMKKwkJCQkgKiB3ZSdsbCBlcnJv ciBhbmQgcmVwb3J0ICJzcGVjaWZ5aW5nIGJvdGggaG9zdCBuYW1lIGFuZCBDSURSCisJCQkJ ICogbWFzayBpcyBpbnZhbGlkIiBiZWxvdyBzaG91bGQgdGhleSBkaWZmZXIuCisJCQkJICov CisJCQkJcGFyc2VkbGluZS0+dG9rX2hvc3RuYW1lLmF1dGh0b2tlbiA9IGNvcHlfYXV0aF90 b2tlbih0b2tlbik7CisJCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJZXJlcG9ydChlbGV2ZWws CkBAIC0xMTY4LDkgKzEyNDgsOSBAQCBwYXJzZV9oYmFfbGluZShUb2tlbml6ZWRBdXRoTGlu ZSAqdG9rX2xpbmUsIGludCBlbGV2ZWwpCiAJCQlwZ19mcmVlYWRkcmluZm9fYWxsKGhpbnRz LmFpX2ZhbWlseSwgZ2FpX3Jlc3VsdCk7CiAKIAkJCS8qIEdldCB0aGUgbmV0bWFzayAqLwot CQkJaWYgKGNpZHJfc2xhc2gpCisJCQlpZiAoY2lkcl9zbGFzaCAmJiAhaXNfcmVnZXhwKQog CQkJewotCQkJCWlmIChwYXJzZWRsaW5lLT5ob3N0bmFtZSkKKwkJCQlpZiAocGFyc2VkbGlu ZS0+dG9rX2hvc3RuYW1lLmF1dGh0b2tlbikKIAkJCQl7CiAJCQkJCWVyZXBvcnQoZWxldmVs LAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHX0ZJTEVfRVJST1IpLApAQCAtMTE5 OSw3ICsxMjc5LDcgQEAgcGFyc2VfaGJhX2xpbmUoVG9rZW5pemVkQXV0aExpbmUgKnRva19s aW5lLCBpbnQgZWxldmVsKQogCQkJCXBhcnNlZGxpbmUtPm1hc2tsZW4gPSBwYXJzZWRsaW5l LT5hZGRybGVuOwogCQkJCXBmcmVlKHN0cik7CiAJCQl9Ci0JCQllbHNlIGlmICghcGFyc2Vk bGluZS0+aG9zdG5hbWUpCisJCQllbHNlIGlmICghcGFyc2VkbGluZS0+dG9rX2hvc3RuYW1l LmF1dGh0b2tlbiAmJiAhaXNfcmVnZXhwKQogCQkJewogCQkJCS8qIFJlYWQgdGhlIG1hc2sg ZmllbGQuICovCiAJCQkJcGZyZWUoc3RyKTsKQEAgLTEyNjEsOSArMTM0MSwyNSBAQCBwYXJz ZV9oYmFfbGluZShUb2tlbml6ZWRBdXRoTGluZSAqdG9rX2xpbmUsIGludCBlbGV2ZWwpCiAJ CQkJCXJldHVybiBOVUxMOwogCQkJCX0KIAkJCX0KKwkJCWVsc2UgaWYgKGlzX3JlZ2V4cCkK KwkJCXsKKwkJCQkvKgorCQkJCSAqIFdoZW4gdG9rZW4tPnN0cmluZyBzdGFydHMgd2l0aCBh IHNsYXNoLCB0cmVhdCBpdCBhcyBhCisJCQkJICogcmVndWxhciBleHByZXNzaW9uLiBQcmUt Y29tcGlsZSBpdC4KKwkJCQkgKi8KKwkJCQlyZWdleF90ICAgICpyZTsKKworCQkJCXJlID0g KHJlZ2V4X3QgKikgcGFsbG9jKHNpemVvZihyZWdleF90KSk7CisJCQkJcGFyc2VkbGluZS0+ dG9rX2hvc3RuYW1lLmlzX3JlZ2V4ID0gdHJ1ZTsKKwkJCQlpZiAoIXRva2VuX3JlZ2NvbXAo cmUsCisJCQkJCQkJCSAgIHRva2VuLT5zdHJpbmcgKyAxLCBIYmFGaWxlTmFtZSwKKwkJCQkJ CQkJICAgbGluZV9udW0sIGVycl9tc2csIGVsZXZlbCkpCisJCQkJCXJldHVybiBOVUxMOwor CisJCQkJcGFyc2VkbGluZS0+dG9rX2hvc3RuYW1lLnJlZ2V4ID0gcmU7CisJCQl9CiAJCX0K IAl9CQkJCQkJCS8qICE9IGN0TG9jYWwgKi8KLQogCS8qIEdldCB0aGUgYXV0aGVudGljYXRp b24gbWV0aG9kICovCiAJZmllbGQgPSBsbmV4dCh0b2tfbGluZS0+ZmllbGRzLCBmaWVsZCk7 CiAJaWYgKCFmaWVsZCkKQEAgLTIxMzIsMTAgKzIyMjgsMTEgQEAgY2hlY2tfaGJhKGhiYVBv cnQgKnBvcnQpCiAJCQlzd2l0Y2ggKGhiYS0+aXBfY21wX21ldGhvZCkKIAkJCXsKIAkJCQlj YXNlIGlwQ21wTWFzazoKLQkJCQkJaWYgKGhiYS0+aG9zdG5hbWUpCisJCQkJCWlmIChoYmEt PnRva19ob3N0bmFtZS5hdXRodG9rZW4gfHwgaGJhLT50b2tfaG9zdG5hbWUuaXNfcmVnZXgp CiAJCQkJCXsKIAkJCQkJCWlmICghY2hlY2tfaG9zdG5hbWUocG9ydCwKLQkJCQkJCQkJCQkJ aGJhLT5ob3N0bmFtZSkpCisJCQkJCQkJCQkJCSZoYmEtPnRva19ob3N0bmFtZSkpCisKIAkJ CQkJCQljb250aW51ZTsKIAkJCQkJfQogCQkJCQllbHNlCkBAIC0yMzQyLDM0ICsyNDM5LDkg QEAgcGFyc2VfaWRlbnRfbGluZShUb2tlbml6ZWRBdXRoTGluZSAqdG9rX2xpbmUsIGludCBl bGV2ZWwpCiAJCSAqIFdoZW4gc3lzdGVtIHVzZXJuYW1lIHN0YXJ0cyB3aXRoIGEgc2xhc2gs IHRyZWF0IGl0IGFzIGEgcmVndWxhcgogCQkgKiBleHByZXNzaW9uLiBQcmUtY29tcGlsZSBp dC4KIAkJICovCi0JCWludAkJCXI7Ci0JCXBnX3djaGFyICAgKndzdHI7Ci0JCWludAkJCXds ZW47Ci0KLQkJd3N0ciA9IHBhbGxvYygoc3RybGVuKHBhcnNlZGxpbmUtPmlkZW50X3VzZXIg KyAxKSArIDEpICogc2l6ZW9mKHBnX3djaGFyKSk7Ci0JCXdsZW4gPSBwZ19tYjJ3Y2hhcl93 aXRoX2xlbihwYXJzZWRsaW5lLT5pZGVudF91c2VyICsgMSwKLQkJCQkJCQkJCXdzdHIsIHN0 cmxlbihwYXJzZWRsaW5lLT5pZGVudF91c2VyICsgMSkpOwotCi0JCXIgPSBwZ19yZWdjb21w KCZwYXJzZWRsaW5lLT5yZSwgd3N0ciwgd2xlbiwgUkVHX0FEVkFOQ0VELCBDX0NPTExBVElP Tl9PSUQpOwotCQlpZiAocikKLQkJewotCQkJY2hhcgkJZXJyc3RyWzEwMF07Ci0KLQkJCXBn X3JlZ2Vycm9yKHIsICZwYXJzZWRsaW5lLT5yZSwgZXJyc3RyLCBzaXplb2YoZXJyc3RyKSk7 Ci0JCQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1JF R1VMQVJfRVhQUkVTU0lPTiksCi0JCQkJCSBlcnJtc2coImludmFsaWQgcmVndWxhciBleHBy ZXNzaW9uIFwiJXNcIjogJXMiLAotCQkJCQkJCXBhcnNlZGxpbmUtPmlkZW50X3VzZXIgKyAx LCBlcnJzdHIpLAotCQkJCQkgZXJyY29udGV4dCgibGluZSAlZCBvZiBjb25maWd1cmF0aW9u IGZpbGUgXCIlc1wiIiwKLQkJCQkJCQlsaW5lX251bSwgSWRlbnRGaWxlTmFtZSkpKTsKLQot CQkJKmVycl9tc2cgPSBwc3ByaW50ZigiaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gXCIl c1wiOiAlcyIsCi0JCQkJCQkJCXBhcnNlZGxpbmUtPmlkZW50X3VzZXIgKyAxLCBlcnJzdHIp OwotCi0JCQlwZnJlZSh3c3RyKTsKKwkJaWYgKCF0b2tlbl9yZWdjb21wKCZwYXJzZWRsaW5l LT5yZSwgcGFyc2VkbGluZS0+aWRlbnRfdXNlciArIDEsCisJCQkJCQkgICBJZGVudEZpbGVO YW1lLCBsaW5lX251bSwgZXJyX21zZywgZWxldmVsKSkKIAkJCXJldHVybiBOVUxMOwotCQl9 Ci0JCXBmcmVlKHdzdHIpOwogCX0KIAogCXJldHVybiBwYXJzZWRsaW5lOwpAQCAtMjcwNiwz ICsyNzc4LDY4IEBAIGhiYV9hdXRobmFtZShVc2VyQXV0aCBhdXRoX21ldGhvZCkKIAogCXJl dHVybiBVc2VyQXV0aE5hbWVbYXV0aF9tZXRob2RdOwogfQorCisvKgorICogQ29tcGlsZSB0 aGUgcmVndWxhciBleHByZXNzaW9uICJyZSIgYW5kIHJldHVybiB3aGV0aGVyIGl0IGNvbXBp bGVzCisgKiBzdWNjZXNzZnVsbHkgb3Igbm90LgorICoKKyAqIElmIG5vdCwgdGhlIGxhc3Qg NCBwYXJhbWV0ZXJzIGFyZSB1c2VkIHRvIGFkZCBleHRyYSBkZXRhaWxzIHdoaWxlIHJlcG9y dGluZworICogdGhlIGVycm9yLgorICovCitzdGF0aWMgYm9vbAordG9rZW5fcmVnY29tcChy ZWdleF90ICpyZSwgY2hhciAqc3RyaW5nLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVfbnVt LAorCQkJICBjaGFyICoqZXJyX21zZywgaW50IGVsZXZlbCkKK3sKKwlpbnQJCQlyOworCXBn X3djaGFyICAgKndzdHI7CisJaW50CQkJd2xlbjsKKworCXdzdHIgPSBwYWxsb2MoKHN0cmxl bihzdHJpbmcpICsgMSkgKiBzaXplb2YocGdfd2NoYXIpKTsKKwl3bGVuID0gcGdfbWIyd2No YXJfd2l0aF9sZW4oc3RyaW5nLAorCQkJCQkJCQl3c3RyLCBzdHJsZW4oc3RyaW5nKSk7CisK KwlyID0gcGdfcmVnY29tcChyZSwgd3N0ciwgd2xlbiwgUkVHX0FEVkFOQ0VELCBDX0NPTExB VElPTl9PSUQpOworCWlmIChyKQorCXsKKwkJY2hhcgkJZXJyc3RyWzEwMF07CisKKwkJcGdf cmVnZXJyb3IociwgcmUsIGVycnN0ciwgc2l6ZW9mKGVycnN0cikpOworCQllcmVwb3J0KGVs ZXZlbCwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUkVHVUxBUl9FWFBSRVNTSU9O KSwKKwkJCQkgZXJybXNnKCJpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiVzXCI6ICVz IiwKKwkJCQkJCXN0cmluZywgZXJyc3RyKSwKKwkJCQkgZXJyY29udGV4dCgibGluZSAlZCBv ZiBjb25maWd1cmF0aW9uIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQlsaW5lX251bSwgZmlsZW5h bWUpKSk7CisKKwkJKmVycl9tc2cgPSBwc3ByaW50ZigiaW52YWxpZCByZWd1bGFyIGV4cHJl c3Npb24gXCIlc1wiOiAlcyIsCisJCQkJCQkJc3RyaW5nLCBlcnJzdHIpOworCisJCXBmcmVl KHdzdHIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcGZyZWUod3N0cik7CisJcmV0dXJu IHRydWU7Cit9CisKKy8qCisgKiBSZXR1cm4gd2hldGhlciAibWF0Y2giIGlzIG1hdGNoaW5n IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gInJlIiBvciBub3QuCisgKi8KK3N0YXRpYyBib29s Cit0b2tlbl9yZWdleGVjKGNvbnN0IGNoYXIgKm1hdGNoLCByZWdleF90ICpyZSkKK3sKKwlw Z193Y2hhciAgICp3bWF0Y2hzdHI7CisJaW50CQkJd21hdGNobGVuOworCisJd21hdGNoc3Ry ID0gcGFsbG9jKChzdHJsZW4obWF0Y2gpICsgMSkgKiBzaXplb2YocGdfd2NoYXIpKTsKKwl3 bWF0Y2hsZW4gPSBwZ19tYjJ3Y2hhcl93aXRoX2xlbihtYXRjaCwgd21hdGNoc3RyLCBzdHJs ZW4obWF0Y2gpKTsKKworCWlmIChwZ19yZWdleGVjKHJlLCB3bWF0Y2hzdHIsIHdtYXRjaGxl biwgMCwgTlVMTCwgMCwgTlVMTCwgMCkgPT0gUkVHX09LQVkpCisJeworCQlwZnJlZSh3bWF0 Y2hzdHIpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlwZnJlZSh3bWF0Y2hzdHIpOworCXJl dHVybiBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9oYmFm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2hiYWZ1bmNzLmMKaW5kZXggOWU1Nzk0 MDcxYy4uMmI3YWIwYmQ2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2hi YWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2hiYWZ1bmNzLmMKQEAgLTI0 Miw5ICsyNDIsOSBAQCBmaWxsX2hiYV9saW5lKFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVfc3Rv cmUsIFR1cGxlRGVzYyB0dXBkZXNjLAogCiAJCQlmb3JlYWNoKGxjLCBoYmEtPmRhdGFiYXNl cykKIAkJCXsKLQkJCQlBdXRoVG9rZW4gICp0b2sgPSBsZmlyc3QobGMpOworCQkJCUF1dGhU b2tlbk9yUmVnZXggKnRvayA9IGxmaXJzdChsYyk7CiAKLQkJCQluYW1lcyA9IGxhcHBlbmQo bmFtZXMsIHRvay0+c3RyaW5nKTsKKwkJCQluYW1lcyA9IGxhcHBlbmQobmFtZXMsIHRvay0+ YXV0aHRva2VuLT5zdHJpbmcpOwogCQkJfQogCQkJdmFsdWVzW2luZGV4KytdID0gUG9pbnRl ckdldERhdHVtKHN0cmxpc3RfdG9fdGV4dGFycmF5KG5hbWVzKSk7CiAJCX0KQEAgLTI1OSw5 ICsyNTksOSBAQCBmaWxsX2hiYV9saW5lKFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVfc3RvcmUs IFR1cGxlRGVzYyB0dXBkZXNjLAogCiAJCQlmb3JlYWNoKGxjLCBoYmEtPnJvbGVzKQogCQkJ ewotCQkJCUF1dGhUb2tlbiAgKnRvayA9IGxmaXJzdChsYyk7CisJCQkJQXV0aFRva2VuT3JS ZWdleCAqdG9rID0gbGZpcnN0KGxjKTsKIAotCQkJCXJvbGVzID0gbGFwcGVuZChyb2xlcywg dG9rLT5zdHJpbmcpOworCQkJCXJvbGVzID0gbGFwcGVuZChyb2xlcywgdG9rLT5hdXRodG9r ZW4tPnN0cmluZyk7CiAJCQl9CiAJCQl2YWx1ZXNbaW5kZXgrK10gPSBQb2ludGVyR2V0RGF0 dW0oc3RybGlzdF90b190ZXh0YXJyYXkocm9sZXMpKTsKIAkJfQpAQCAtMjc0LDEwICsyNzQs OCBAQCBmaWxsX2hiYV9saW5lKFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVfc3RvcmUsIFR1cGxl RGVzYyB0dXBkZXNjLAogCQlzd2l0Y2ggKGhiYS0+aXBfY21wX21ldGhvZCkKIAkJewogCQkJ Y2FzZSBpcENtcE1hc2s6Ci0JCQkJaWYgKGhiYS0+aG9zdG5hbWUpCi0JCQkJewotCQkJCQlh ZGRyc3RyID0gaGJhLT5ob3N0bmFtZTsKLQkJCQl9CisJCQkJaWYgKGhiYS0+dG9rX2hvc3Ru YW1lLmF1dGh0b2tlbikKKwkJCQkJYWRkcnN0ciA9IGhiYS0+dG9rX2hvc3RuYW1lLmF1dGh0 b2tlbi0+c3RyaW5nOwogCQkJCWVsc2UKIAkJCQl7CiAJCQkJCS8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9saWJwcS9oYmEuaCBiL3NyYy9pbmNsdWRlL2xpYnBxL2hiYS5oCmluZGV4 IGQwNmRhODE4MDYuLjdhNTNhMzE3NzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBx L2hiYS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2hiYS5oCkBAIC03Nyw2ICs3NywzMiBA QCB0eXBlZGVmIGVudW0gQ2xpZW50Q2VydE5hbWUKIAljbGllbnRDZXJ0RE4KIH0gQ2xpZW50 Q2VydE5hbWU7CiAKKy8qCisgKiBBIHNpbmdsZSBzdHJpbmcgdG9rZW4gbGV4ZWQgZnJvbSBh biBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGZpbGUKKyAqIChwZ19pZGVudC5jb25m IG9yIHBnX2hiYS5jb25mKSwgdG9nZXRoZXIgd2l0aCB3aGV0aGVyIHRoZSB0b2tlbiBoYXMK KyAqIGJlZW4gcXVvdGVkLgorICovCit0eXBlZGVmIHN0cnVjdCBBdXRoVG9rZW4KK3sKKwlj aGFyCSAgICpzdHJpbmc7CisJYm9vbAkJcXVvdGVkOworfSBBdXRoVG9rZW47CisKKy8qCisg KiBEaXN0aW5ndWlzaCB0aGUgY2FzZSBhIHRva2VuIGhhcyB0byBiZSB0cmVhdGVkIGFzIGEg cmVndWxhcgorICogZXhwcmVzc2lvbiBvciBub3QuCisgKi8KK3R5cGVkZWYgc3RydWN0IEF1 dGhUb2tlbk9yUmVnZXgKK3sKKwlib29sCQlpc19yZWdleDsKKworCS8qCisJICogTm90IGFu IHVuaW9uIGFzIHdlIHN0aWxsIG5lZWQgdGhlIHRva2VuIHN0cmluZyBmb3IgZmlsbF9oYmFf bGluZSgpLgorCSAqLworCUF1dGhUb2tlbiAgKmF1dGh0b2tlbjsKKwlyZWdleF90ICAgICpy ZWdleDsKK30gQXV0aFRva2VuT3JSZWdleDsKKwogdHlwZWRlZiBzdHJ1Y3QgSGJhTGluZQog ewogCWludAkJCWxpbmVudW1iZXI7CkBAIC04OSw3ICsxMTUsNyBAQCB0eXBlZGVmIHN0cnVj dCBIYmFMaW5lCiAJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgbWFzazsKIAlpbnQJCQltYXNr bGVuOwkJLyogemVybyBpZiB3ZSBkb24ndCBoYXZlIGEgdmFsaWQgbWFzayAqLwogCUlQQ29t cGFyZU1ldGhvZCBpcF9jbXBfbWV0aG9kOwotCWNoYXIJICAgKmhvc3RuYW1lOworCUF1dGhU b2tlbk9yUmVnZXggdG9rX2hvc3RuYW1lOwogCVVzZXJBdXRoCWF1dGhfbWV0aG9kOwogCWNo YXIJICAgKnVzZXJtYXA7CiAJY2hhcgkgICAqcGFtc2VydmljZTsKQEAgLTEzMiwxNyArMTU4 LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSWRlbnRMaW5lCiAJcmVnZXhfdAkJcmU7CiB9IElkZW50 TGluZTsKIAotLyoKLSAqIEEgc2luZ2xlIHN0cmluZyB0b2tlbiBsZXhlZCBmcm9tIGFuIGF1 dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZQotICogKHBnX2lkZW50LmNvbmYgb3Ig cGdfaGJhLmNvbmYpLCB0b2dldGhlciB3aXRoIHdoZXRoZXIgdGhlIHRva2VuIGhhcwotICog YmVlbiBxdW90ZWQuCi0gKi8KLXR5cGVkZWYgc3RydWN0IEF1dGhUb2tlbgotewotCWNoYXIJ ICAgKnN0cmluZzsKLQlib29sCQlxdW90ZWQ7Ci19IEF1dGhUb2tlbjsKLQogLyoKICAqIFRv a2VuaXplZEF1dGhMaW5lIHJlcHJlc2VudHMgb25lIGxpbmUgbGV4ZWQgZnJvbSBhbiBhdXRo ZW50aWNhdGlvbgogICogY29uZmlndXJhdGlvbiBmaWxlLiAgRWFjaCBpdGVtIGluIHRoZSAi ZmllbGRzIiBsaXN0IGlzIGEgc3ViLWxpc3Qgb2YKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2F1 dGhlbnRpY2F0aW9uL3QvMDAxX3Bhc3N3b3JkLnBsIGIvc3JjL3Rlc3QvYXV0aGVudGljYXRp b24vdC8wMDFfcGFzc3dvcmQucGwKaW5kZXggOTNkZjc3YWE0ZS4uNTA2M2EyNjAxYyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKKysr IGIvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKQEAgLTgxLDYg KzgxLDE0IEBAICRub2RlLT5zYWZlX3BzcWwoCiAJIEdSQU5UIEFMTCBPTiBzeXN1c2VyX2Rh dGEgVE8gbWQ1X3JvbGU7Iik7CiAkRU5WeyJQR1BBU1NXT1JEIn0gPSAncGFzcyc7CiAKKyMg Q3JlYXRlIGEgcm9sZSB0aGF0IGNvbnRhaW5zIGEgY29tbWEgdG8gc3RyZXNzIHRoZSBwYXJz aW5nLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VUIHBhc3N3b3JkX2Vu Y3J5cHRpb249J21kNSc7IENSRUFURSBST0xFICJtZDUscm9sZSIgTE9HSU4gUEFTU1dPUkQg J3Bhc3MnO30KKyk7CisKKyMgQ3JlYXRlIGEgZGF0YWJhc2UgdG8gdGVzdCByZWd1bGFyIGV4 cHJlc3Npb24uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgZGF0YWJh c2UgcmVnZXhfdGVzdGRiOyIpOworCiAjIEZvciAidHJ1c3QiIG1ldGhvZCwgYWxsIHVzZXJz IHNob3VsZCBiZSBhYmxlIHRvIGNvbm5lY3QuIFRoZXNlIHVzZXJzIGFyZSBub3QKICMgY29u c2lkZXJlZCB0byBiZSBhdXRoZW50aWNhdGVkLgogcmVzZXRfcGdfaGJhKCRub2RlLCAnYWxs JywgJ2FsbCcsICd0cnVzdCcpOwpAQCAtMjAwLDQgKzIwOCwzNyBAQCBhcHBlbmRfdG9fZmls ZSgKIAogdGVzdF9jb25uKCRub2RlLCAndXNlcj1tZDVfcm9sZScsICdwYXNzd29yZCBmcm9t IHBncGFzcycsIDApOwogCisjIFRlc3Rpbmcgd2l0aCByZWd1bGFyIGV4cHJlc3Npb24gZm9y IHVzZXJuYW1lLiBOb3RlIHRoYXQgdGhlIHRoaXJkIHJlZ2V4CisjIG1hdGNoZXMgaW4gdGhp cyBjYXNlLgorcmVzZXRfcGdfaGJhKCRub2RlLCAnYWxsJywgJy9eLipub21hdGNoLiokLCBi YWR1c2VyLCAvXm1kLiokJywgJ3Bhc3N3b3JkJyk7Cit0ZXN0X2Nvbm4oJG5vZGUsICd1c2Vy PW1kNV9yb2xlJywgJ3Bhc3N3b3JkLCBtYXRjaGluZyByZWdleHAgZm9yIHVzZXJuYW1lJywK KwkwKTsKKworIyBUaGUgdGhpcmQgcmVnZXggZG9lcyBub3QgbWF0Y2ggYW55bW9yZS4KK3Jl c2V0X3BnX2hiYSgkbm9kZSwgJ2FsbCcsICcvXi4qbm9tYXRjaC4qJCwgYmFkdXNlciwgL15t X2QuKiQnLCAncGFzc3dvcmQnKTsKK3Rlc3RfY29ubigkbm9kZSwgJ3VzZXI9bWQ1X3JvbGUn LAorCSdwYXNzd29yZCwgbm9uIG1hdGNoaW5nIHJlZ2V4cCBmb3IgdXNlcm5hbWUnLAorCTIs IGxvZ191bmxpa2UgPT4gW3FyL2Nvbm5lY3Rpb24gYXV0aGVudGljYXRlZDovXSk7CisKKyMg dGVzdCB3aXRoIGEgY29tbWEgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbgorcmVzZXRfcGdf aGJhKCRub2RlLCAnYWxsJywgJyIvXi4qNSwuKmUkIicsICdwYXNzd29yZCcpOwordGVzdF9j b25uKCRub2RlLCAndXNlcj1tZDUscm9sZScsICdwYXNzd29yZCcsICdtYXRjaGluZyByZWdl eHAgZm9yIHVzZXJuYW1lJywKKwkwKTsKKworIyBUZXN0aW5nIHdpdGggcmVndWxhciBleHBy ZXNzaW9uIGZvciBkYm5hbWUuIFRoZSB0aGlyZCByZWdleCBtYXRjaGVzLgorcmVzZXRfcGdf aGJhKCRub2RlLCAnL14uKm5vbWF0Y2guKiQsIGJhZGRiLCAvXnJlZ2V4X3QuKmIkJywgJ2Fs bCcsCisJJ3Bhc3N3b3JkJyk7Cit0ZXN0X2Nvbm4oCisJJG5vZGUsICd1c2VyPW1kNV9yb2xl IGRibmFtZT1yZWdleF90ZXN0ZGInLCAncGFzc3dvcmQsCisJbWF0Y2hpbmcgcmVnZXhwIGZv ciBkYm5hbWUnLCAwKTsKKworIyBUaGUgdGhpcmQgcmVnZXggZG9lcyBub3QgbWF0Y2ggYW55 bW9yZS4KK3Jlc2V0X3BnX2hiYSgkbm9kZSwgJy9eLipub21hdGNoLiokLCBiYWRkYiwgL15y ZWdleF90LipiYSQnLAorCSdhbGwnLCAncGFzc3dvcmQnKTsKK3Rlc3RfY29ubigKKwkkbm9k ZSwKKwkndXNlcj1tZDVfcm9sZSBkYm5hbWU9cmVnZXhfdGVzdGRiJywKKwkncGFzc3dvcmQs IG5vbiBtYXRjaGluZyByZWdleHAgZm9yIGRibmFtZScsCisJMiwgbG9nX3VubGlrZSA9PiBb cXIvY29ubmVjdGlvbiBhdXRoZW50aWNhdGVkOi9dKTsKKwogZG9uZV90ZXN0aW5nKCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwgYi9zcmMvdGVzdC9zc2wv dC8wMDJfc2NyYW0ucGwKaW5kZXggZGVhYTRhYTA4Ni4uYjU3NTU1N2IzNyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBsCisrKyBiL3NyYy90ZXN0L3NzbC90LzAw Ml9zY3JhbS5wbApAQCAtMjIsNyArMjIsOCBAQCBpZiAoJEVOVnt3aXRoX3NzbH0gbmUgJ29w ZW5zc2wnKQogfQogZWxzaWYgKCRFTlZ7UEdfVEVTVF9FWFRSQX0gIX4gL1xic3NsXGIvKQog ewotCXBsYW4gc2tpcF9hbGwgPT4gJ1BvdGVudGlhbGx5IHVuc2FmZSB0ZXN0IFNTTCBub3Qg ZW5hYmxlZCBpbiBQR19URVNUX0VYVFJBJzsKKwlwbGFuIHNraXBfYWxsID0+CisJICAnUG90 ZW50aWFsbHkgdW5zYWZlIHRlc3QgU1NMIG5vdCBlbmFibGVkIGluIFBHX1RFU1RfRVhUUkEn OwogfQogCiBteSAkc3NsX3NlcnZlciA9IFNTTDo6U2VydmVyLT5uZXcoKTsKQEAgLTM3LDYg KzM4LDIwIEBAIHN1YiBzd2l0Y2hfc2VydmVyX2NlcnQKIAkkc3NsX3NlcnZlci0+c3dpdGNo X3NlcnZlcl9jZXJ0KEBfKTsKIH0KIAorIyBEZWxldGUgcGdfaGJhLmNvbmYgZnJvbSB0aGUg Z2l2ZW4gbm9kZSwgYWRkIGEgbmV3IGVudHJ5IHRvIGl0CisjIGFuZCB0aGVuIGV4ZWN1dGUg YSByZWxvYWQgdG8gcmVmcmVzaCBpdC4KK3N1YiByZXNldF9wZ19oYmEKK3sKKwlteSAkbm9k ZSAgICAgPSBzaGlmdDsKKwlteSAkaG9zdG5hbWUgPSBzaGlmdDsKKworCXVubGluaygkbm9k ZS0+ZGF0YV9kaXIgLiAnL3BnX2hiYS5jb25mJyk7CisJIyBqdXN0IGZvciB0ZXN0aW5nIHB1 cnBvc2VzLCB1c2UgYSBjb250aW51YXRpb24gbGluZQorCSRub2RlLT5hcHBlbmRfY29uZign cGdfaGJhLmNvbmYnLCAiaG9zdCBhbGwgYWxsICRob3N0bmFtZSBzY3JhbS1zaGEtMjU2Iik7 CisJJG5vZGUtPnJlbG9hZDsKKwlyZXR1cm47Cit9CisKIAogIyBUaGlzIGlzIHRoZSBob3N0 bmFtZSB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlci4KIG15ICRTRVJWRVJIT1NUQURE UiA9ICcxMjcuMC4wLjEnOwpAQCAtMTM2LDQgKzE1MSwyNSBAQCAkbm9kZS0+Y29ubmVjdF9v aygKIAkJcXIvY29ubmVjdGlvbiBhdXRoZW50aWNhdGVkOiBpZGVudGl0eT0ic3NsdGVzdHVz ZXIiIG1ldGhvZD1zY3JhbS1zaGEtMjU2LwogCV0pOwogCisjIFRlc3Rpbmcgd2l0aCByZWd1 bGFyIGV4cHJlc3Npb24gZm9yIGhvc3RuYW1lCitTS0lQOgoreworCSMgQmVpbmcgYWJsZSB0 byBkbyBhIHJldmVyc2UgbG9va3VwIG9mIGEgaG9zdG5hbWUgb24gV2luZG93cyBmb3IgbG9j YWxob3N0CisJIyBpcyBub3QgZ3VhcmFudGVlZCBvbiBhbGwgZW52aXJvbm1lbnRzIGJ5IGRl ZmF1bHQuCisJIyBTbywgc2tpcCB0aGUgcmVndWxhciBleHByZXNzaW9uIHRlc3QgZm9yIGhv c3RuYW1lIG9uIFdpbmRvd3MuCisJc2tpcCAiUmVndWxhciBleHByZXNzaW9uIGZvciBob3N0 bmFtZSBub3QgdGVzdGVkIG9uIFdpbmRvd3MiLCAyCisJICBpZiAoJHdpbmRvd3Nfb3MpOwor CisJIyBUZXN0IHJlZ3VsYXIgZXhwcmVzc2lvbiBvbiBob3N0bmFtZSwgdGhpcyBvbmUgbWF0 Y2hlcyBhbnkgaG9zdC4KKwlyZXNldF9wZ19oYmEoJG5vZGUsICcvXi4qJCcpOworCSRub2Rl LT5jb25uZWN0X29rKCIkY29tbW9uX2Nvbm5zdHIgdXNlcj1zc2x0ZXN0dXNlciIsCisJCSJC YXNpYyBTQ1JBTSBhdXRoZW50aWNhdGlvbiB3aXRoIFNTTCBtYXRjaGluZyByZWdleHAgb24g aG9zdG5hbWUiKTsKKwkjIFRlc3QgcmVndWxhciBleHByZXNzaW9uIG9uIGhvc3RuYW1lLCB0 aGlzIG9uZSBkb2VzIG5vdCBtYXRjaC4KKwlyZXNldF9wZ19oYmEoJG5vZGUsICcvXiQnKTsK Kwkkbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJIiRjb21tb25fY29ubnN0ciB1c2VyPXNzbHRl c3R1c2VyIiwKKwkJIkJhc2ljIFNDUkFNIGF1dGhlbnRpY2F0aW9uIHdpdGggU1NMIG5vbiBt YXRjaGluZyByZWdleHAgb24gaG9zdG5hbWUiLAorCQlsb2dfbGlrZSA9PiBbIHFyL25vIHBn X2hiYS5jb25mIGVudHJ5IGZvciBob3N0LyBdKTsKK30KKwogZG9uZV90ZXN0aW5nKCk7Cg== --------------iDRVpDpLvlNQQmGLoCdfKHtj--