Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d3K7U-0000Cg-4I for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Apr 2017 10:24:24 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1d3K7T-0000G8-8v for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Apr 2017 10:24:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1d3K5t-00062p-11 for pgsql-hackers@postgresql.org; Wed, 26 Apr 2017 10:22:45 +0000 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1d3K5o-0005sQ-P5 for pgsql-hackers@postgresql.org; Wed, 26 Apr 2017 10:22:44 +0000 Received: by mail-lf0-x22b.google.com with SMTP id c80so105093793lfh.3 for ; Wed, 26 Apr 2017 03:22:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to; bh=Ky3jd69x2v6P0i1eV5LeJekBC+AOTE+z64SE7bggU0I=; b=e9NR4P82ebPLVcrHdQGTUibB8pp3Jr72FD6h6IbdDTwslR+yWkYOc+UKw0Fg5k1HIT aY3nLKg9RqCCFBt4dv1YRbSu67EF234n8WsBCTDhYesruIvbZInhwR6HGVVP0X7WaYg+ 2diO3vp2vbaht2+CkoK/kxL3dhkSCmuqLwtxanLNErjibJY436PJU5IPsh14jF++Rw85 dM79wSEPPcUvl1sPdkOyXbpNXAZOP2M4U3wsVsNu+PM3IKmmAwj4HqzGHSQTTslODBlM YzJr02FSD3HzXR/T99JpuL9hwFYUD94uvaXcmVN+zrwSbeZ7/GcREHoLHsiBRlsHupN7 Mheg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:cc:from:message-id :date:user-agent:mime-version:in-reply-to; bh=Ky3jd69x2v6P0i1eV5LeJekBC+AOTE+z64SE7bggU0I=; b=JEV5nWh8eMJ2kEemuxg6jcMOAlbcQfLblRGkyWeYpYUY3+WrBYT4kWqcjF3ffbAdAZ dw37uMdcoCguXZkCrzAcCjcMt3wXvPMJ38+dLnhdzvgxGLD/nDyQR8wbj17ZdtW6v4vA FOEojVJIHS5LNcsonYAtGnaW4FWOD4t70iOsCet6fmmYuUBjCu89Z5HJuVGlSw9pGz+R mRvFSNIq4Mj1k14KpXR6WvW+OUKA3WmrFyrXcm2OhM512XKKed8AmW4yn4q4JOGXb+LU sdFu6KnEWP18BdEDiVN3ZtFQknru7DUPHnhTqgNOwdSq6V/s+UllsaFploCgOqKMewN3 socA== X-Gm-Message-State: AN3rC/55Cwy65BKYmaKehLHGc3aTXG3HCC38YObF+hBQ5vKPNfAbBZxr qqzH2s9egPT8Tg== X-Received: by 10.46.82.76 with SMTP id g73mr12175417ljb.26.1493202158803; Wed, 26 Apr 2017 03:22:38 -0700 (PDT) Received: from [192.168.1.99] (dsl-hkibrasgw1-50df7f-241.dhcp.inet.fi. [80.223.127.241]) by smtp.gmail.com with ESMTPSA id 199sm443985lfa.14.2017.04.26.03.22.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 26 Apr 2017 03:22:37 -0700 (PDT) Subject: Re: scram and \password To: Michael Paquier References: <5478ab75-404f-9490-9355-dc1365ce3d7f@iki.fi> <20170410035323.GA2846583@tornado.leadboat.com> <66e776c9-e02c-3683-28df-339f7f64ea66@iki.fi> Cc: Noah Misch , Robert Haas , Tom Lane , Jeff Janes , Joe Conway , pgsql-hackers From: Heikki Linnakangas Message-ID: <57f8c243-2362-e7b8-4c56-e752ba6edf6c@iki.fi> Date: Wed, 26 Apr 2017 13:22:36 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------6313335D1DBC5C0A073CEDC4" X-Pg-Spam-Score: -2.4 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------6313335D1DBC5C0A073CEDC4 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 04/25/2017 06:26 PM, Heikki Linnakangas wrote: > Thoughts? Unless someone has better ideas or objections, I'll go > implement that. This is what I came up with in the end. Some highlights and differences vs the plan I posted earlier: * If algorithm is not given explicitly, PQencryptPasswordConn() queries "SHOW password_encryption", and uses that. That is documented, and it is also documented that it will *not* issue queries, and hence will not block, if the algorithm is given explicitly. That's an important property for some applications. If you want the default behavior without blocking, query "SHOW password_encryption" yourself, and pass the result as the 'algorithm'. * In the previous draft, I envisioned an algorithm-specific 'options' argument. I left it out, on second thoughts (more on that below). * The old PQencryptPassword() function is unchanged, and always uses md5. Per public opinion. We talked about the alternative where PQencryptPasswordConn() would not look at password_encryption, but would always use the strongest possible algorithm supported by the server. That would avoid querying the server. But then I started thinking how this would work, if we make the number of iterations in the SCRAM verifier configurable in the future. The client would not know the desired number of iterations based only on the server version, it would need to query the server, and we would be back to square one. We could add an "options" argument to PQencryptPasswordConn() that the application could use to pass that information, but documenting how to fetch that information, if you don't want PQencryptPasswordConn() to block, gets tedious, and puts a lot of burden to applications. That is why I left out the "options" argument, after all. I'm now thinking that if we add password hashing options like the iteration count in the future, they will be tacked on to password_encryption. For example, "password_encryption='scram-sha-256, iterations=10000". That way, "password_encryption" will always contain enough information to construct password verifiers. What will happen to existing applications using PQencryptPasswordConn() if a new password_encryption algorithm (or options) is added in the future? With this scheme, the application doesn't need to know what algorithms exist. An application can pass algorithm=NULL, to use the server default, or do "show password_encryption" and pass that, for the non-blocking behavior. If you use an older libpq against a new server, so that libpq doesn't know about the algorithm used by the server, you get an error. For reviewer convenience, I put up the patched docs at http://hlinnaka.iki.fi/temp/scram-wip-docs/libpq-misc.html#libpq-pqencryptpasswordconn. Thoughts? Am I missing anything? As an alternative, I considered making password_encryption GUC_REPORT, so that libpq would always know it without having to issue a query. But it feels wrong to send that option to the client on every connection, when it's only needed in the rare case that you use PQencryptPasswordConn(). And if we added new settings like the iteration count in the future, those would need to be GUC_REPORT too. - Heikki --------------6313335D1DBC5C0A073CEDC4 Content-Type: application/x-download; name="0001-Move-scram_build_verifier-to-src-common.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Move-scram_build_verifier-to-src-common.patch" RnJvbSBhNjU2ZTBhYjJhYWVkMDE2ZWQ1MjQ0YzdiYjc5NzUyYWNmNWI3MWI3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFr YW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwg MjYgQXByIDIwMTcgMTI6NTM6NDkgKzAzMDAKU3ViamVjdDogW1BBVENIIDEv M10gTW92ZSBzY3JhbV9idWlsZF92ZXJpZmllciB0byBzcmMvY29tbW9uLgoK VGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIG5leHQgcGF0Y2ggdG8g YWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nClNDUkFNIHZlcmlmaWVycyB0byBs aWJwcS4KCk1pY2hhZWwgUGFxdWllciBhbmQgbWUKCkRpc2N1c3Npb246IGh0 dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FNa1UlM0Qx d2ZCZ0ZQYmZBTVlaUUU3OHAlM0RWaFpYN25OODZhV2twMFFjQ3AlM0QlMkJL eFolM0RiZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvbGli cHEvYXV0aC1zY3JhbS5jICAgIHwgNjIgKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2xpYnBxL2NyeXB0LmMg ICAgICAgICB8ICAyICstCiBzcmMvY29tbW9uL3NjcmFtLWNvbW1vbi5jICAg ICAgICAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9pbmNsdWRlL2NvbW1vbi9zY3JhbS1jb21tb24uaCB8ICA3 ICsrKy0tCiBzcmMvaW5jbHVkZS9saWJwcS9zY3JhbS5oICAgICAgICAgfCAg NCArLS0KIDUgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgNTUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEv YXV0aC1zY3JhbS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1zY3JhbS5j CmluZGV4IDE2YmVhNDQ2ZTMuLjU2Yjg5MzU4NDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2xpYnBxL2F1dGgtc2NyYW0uYworKysgYi9zcmMvYmFja2Vu ZC9saWJwcS9hdXRoLXNjcmFtLmMKQEAgLTIwNyw3ICsyMDcsNyBAQCBwZ19i ZV9zY3JhbV9pbml0KGNvbnN0IGNoYXIgKnVzZXJuYW1lLCBjb25zdCBjaGFy ICpzaGFkb3dfcGFzcykKIAkJCSAqLwogCQkJY2hhcgkgICAqdmVyaWZpZXI7 CiAKLQkJCXZlcmlmaWVyID0gc2NyYW1fYnVpbGRfdmVyaWZpZXIodXNlcm5h bWUsIHNoYWRvd19wYXNzLCAwKTsKKwkJCXZlcmlmaWVyID0gcGdfYmVfc2Ny YW1fYnVpbGRfdmVyaWZpZXIoc2hhZG93X3Bhc3MpOwogCiAJCQkodm9pZCkg cGFyc2Vfc2NyYW1fdmVyaWZpZXIodmVyaWZpZXIsICZzdGF0ZS0+aXRlcmF0 aW9ucywgJnN0YXRlLT5zYWx0LAogCQkJCQkJCQkJCXN0YXRlLT5TdG9yZWRL ZXksIHN0YXRlLT5TZXJ2ZXJLZXkpOwpAQCAtMzg3LDIxICszODcsMTQgQEAg cGdfYmVfc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3BhcSwgY2hhciAqaW5wdXQs IGludCBpbnB1dGxlbiwKIC8qCiAgKiBDb25zdHJ1Y3QgYSB2ZXJpZmllciBz dHJpbmcgZm9yIFNDUkFNLCBzdG9yZWQgaW4gcGdfYXV0aGlkLnJvbHBhc3N3 b3JkLgogICoKLSAqIElmIGl0ZXJhdGlvbnMgaXMgMCwgZGVmYXVsdCBudW1i ZXIgb2YgaXRlcmF0aW9ucyBpcyB1c2VkLiAgVGhlIHJlc3VsdCBpcwotICog cGFsbG9jJ2QsIHNvIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWlu ZyBpdC4KKyAqIFRoZSByZXN1bHQgaXMgcGFsbG9jJ2QsIHNvIGNhbGxlciBp cyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBpdC4KICAqLwogY2hhciAqCi1z Y3JhbV9idWlsZF92ZXJpZmllcihjb25zdCBjaGFyICp1c2VybmFtZSwgY29u c3QgY2hhciAqcGFzc3dvcmQsCi0JCQkJCSBpbnQgaXRlcmF0aW9ucykKK3Bn X2JlX3NjcmFtX2J1aWxkX3ZlcmlmaWVyKGNvbnN0IGNoYXIgKnBhc3N3b3Jk KQogewogCWNoYXIJICAgKnByZXBfcGFzc3dvcmQgPSBOVUxMOwogCXBnX3Nh c2xwcmVwX3JjIHJjOwotCWNoYXIJCXNhbHRidWZbU0NSQU1fU0FMVF9MRU5d OwotCXVpbnQ4CQlrZXlidWZbU0NSQU1fS0VZX0xFTl07Ci0JY2hhcgkgICAq ZW5jb2RlZF9zYWx0OwotCWNoYXIJICAgKmVuY29kZWRfc3RvcmVka2V5Owot CWNoYXIJICAgKmVuY29kZWRfc2VydmVya2V5OwotCWludAkJCWVuY29kZWRf bGVuOworCWNoYXIJCXNhbHRidWZbU0NSQU1fREVGQVVMVF9TQUxUX0xFTl07 CiAJY2hhcgkgICAqcmVzdWx0OwogCiAJLyoKQEAgLTQxMywxMSArNDA2LDgg QEAgc2NyYW1fYnVpbGRfdmVyaWZpZXIoY29uc3QgY2hhciAqdXNlcm5hbWUs IGNvbnN0IGNoYXIgKnBhc3N3b3JkLAogCWlmIChyYyA9PSBTQVNMUFJFUF9T VUNDRVNTKQogCQlwYXNzd29yZCA9IChjb25zdCBjaGFyICopIHByZXBfcGFz c3dvcmQ7CiAKLQlpZiAoaXRlcmF0aW9ucyA8PSAwKQotCQlpdGVyYXRpb25z ID0gU0NSQU1fSVRFUkFUSU9OU19ERUZBVUxUOwotCi0JLyogR2VuZXJhdGUg c2FsdCwgYW5kIGVuY29kZSBpdCBpbiBiYXNlNjQgKi8KLQlpZiAoIXBnX2Jh Y2tlbmRfcmFuZG9tKHNhbHRidWYsIFNDUkFNX1NBTFRfTEVOKSkKKwkvKiBH ZW5lcmF0ZSBzYWx0ICovCisJaWYgKCFwZ19iYWNrZW5kX3JhbmRvbShzYWx0 YnVmLCBTQ1JBTV9ERUZBVUxUX1NBTFRfTEVOKSkKIAl7CiAJCWVyZXBvcnQo TE9HLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5URVJOQUxfRVJST1IpLApA QCAtNDI1LDM3ICs0MTUsMTEgQEAgc2NyYW1fYnVpbGRfdmVyaWZpZXIoY29u c3QgY2hhciAqdXNlcm5hbWUsIGNvbnN0IGNoYXIgKnBhc3N3b3JkLAogCQly ZXR1cm4gTlVMTDsKIAl9CiAKLQllbmNvZGVkX3NhbHQgPSBwYWxsb2MocGdf YjY0X2VuY19sZW4oU0NSQU1fU0FMVF9MRU4pICsgMSk7Ci0JZW5jb2RlZF9s ZW4gPSBwZ19iNjRfZW5jb2RlKHNhbHRidWYsIFNDUkFNX1NBTFRfTEVOLCBl bmNvZGVkX3NhbHQpOwotCWVuY29kZWRfc2FsdFtlbmNvZGVkX2xlbl0gPSAn XDAnOwotCi0JLyogQ2FsY3VsYXRlIFN0b3JlZEtleSwgYW5kIGVuY29kZSBp dCBpbiBiYXNlNjQgKi8KLQlzY3JhbV9DbGllbnRPclNlcnZlcktleShwYXNz d29yZCwgc2FsdGJ1ZiwgU0NSQU1fU0FMVF9MRU4sCi0JCQkJCQkJaXRlcmF0 aW9ucywgU0NSQU1fQ0xJRU5UX0tFWV9OQU1FLCBrZXlidWYpOwotCXNjcmFt X0goa2V5YnVmLCBTQ1JBTV9LRVlfTEVOLCBrZXlidWYpOwkJLyogU3RvcmVk S2V5ICovCi0KLQllbmNvZGVkX3N0b3JlZGtleSA9IHBhbGxvYyhwZ19iNjRf ZW5jX2xlbihTQ1JBTV9LRVlfTEVOKSArIDEpOwotCWVuY29kZWRfbGVuID0g cGdfYjY0X2VuY29kZSgoY29uc3QgY2hhciAqKSBrZXlidWYsIFNDUkFNX0tF WV9MRU4sCi0JCQkJCQkJCWVuY29kZWRfc3RvcmVka2V5KTsKLQllbmNvZGVk X3N0b3JlZGtleVtlbmNvZGVkX2xlbl0gPSAnXDAnOwotCi0JLyogQW5kIHNh bWUgZm9yIFNlcnZlcktleSAqLwotCXNjcmFtX0NsaWVudE9yU2VydmVyS2V5 KHBhc3N3b3JkLCBzYWx0YnVmLCBTQ1JBTV9TQUxUX0xFTiwgaXRlcmF0aW9u cywKLQkJCQkJCQlTQ1JBTV9TRVJWRVJfS0VZX05BTUUsIGtleWJ1Zik7Ci0K LQllbmNvZGVkX3NlcnZlcmtleSA9IHBhbGxvYyhwZ19iNjRfZW5jX2xlbihT Q1JBTV9LRVlfTEVOKSArIDEpOwotCWVuY29kZWRfbGVuID0gcGdfYjY0X2Vu Y29kZSgoY29uc3QgY2hhciAqKSBrZXlidWYsIFNDUkFNX0tFWV9MRU4sCi0J CQkJCQkJCWVuY29kZWRfc2VydmVya2V5KTsKLQllbmNvZGVkX3NlcnZlcmtl eVtlbmNvZGVkX2xlbl0gPSAnXDAnOwotCi0JcmVzdWx0ID0gcHNwcmludGYo IlNDUkFNLVNIQS0yNTYkJWQ6JXMkJXM6JXMiLCBpdGVyYXRpb25zLCBlbmNv ZGVkX3NhbHQsCi0JCQkJCSAgZW5jb2RlZF9zdG9yZWRrZXksIGVuY29kZWRf c2VydmVya2V5KTsKKwlyZXN1bHQgPSBzY3JhbV9idWlsZF92ZXJpZmllcihz YWx0YnVmLCBTQ1JBTV9ERUZBVUxUX1NBTFRfTEVOLAorCQkJCQkJCQkgIFND UkFNX0RFRkFVTFRfSVRFUkFUSU9OUywgcGFzc3dvcmQpOwogCiAJaWYgKHBy ZXBfcGFzc3dvcmQpCiAJCXBmcmVlKHByZXBfcGFzc3dvcmQpOwotCXBmcmVl KGVuY29kZWRfc2FsdCk7Ci0JcGZyZWUoZW5jb2RlZF9zdG9yZWRrZXkpOwot CXBmcmVlKGVuY29kZWRfc2VydmVya2V5KTsKIAogCXJldHVybiByZXN1bHQ7 CiB9CkBAIC02MzAsMTIgKzU5NCwxMiBAQCBtb2NrX3NjcmFtX3ZlcmlmaWVy KGNvbnN0IGNoYXIgKnVzZXJuYW1lLCBpbnQgKml0ZXJhdGlvbnMsIGNoYXIg KipzYWx0LAogCS8qIEdlbmVyYXRlIGRldGVybWluaXN0aWMgc2FsdCAqLwog CXJhd19zYWx0ID0gc2NyYW1fTW9ja1NhbHQodXNlcm5hbWUpOwogCi0JZW5j b2RlZF9zYWx0ID0gKGNoYXIgKikgcGFsbG9jKHBnX2I2NF9lbmNfbGVuKFND UkFNX1NBTFRfTEVOKSArIDEpOwotCWVuY29kZWRfbGVuID0gcGdfYjY0X2Vu Y29kZShyYXdfc2FsdCwgU0NSQU1fU0FMVF9MRU4sIGVuY29kZWRfc2FsdCk7 CisJZW5jb2RlZF9zYWx0ID0gKGNoYXIgKikgcGFsbG9jKHBnX2I2NF9lbmNf bGVuKFNDUkFNX0RFRkFVTFRfU0FMVF9MRU4pICsgMSk7CisJZW5jb2RlZF9s ZW4gPSBwZ19iNjRfZW5jb2RlKHJhd19zYWx0LCBTQ1JBTV9ERUZBVUxUX1NB TFRfTEVOLCBlbmNvZGVkX3NhbHQpOwogCWVuY29kZWRfc2FsdFtlbmNvZGVk X2xlbl0gPSAnXDAnOwogCiAJKnNhbHQgPSBlbmNvZGVkX3NhbHQ7Ci0JKml0 ZXJhdGlvbnMgPSBTQ1JBTV9JVEVSQVRJT05TX0RFRkFVTFQ7CisJKml0ZXJh dGlvbnMgPSBTQ1JBTV9ERUZBVUxUX0lURVJBVElPTlM7CiAKIAkvKiBTdG9y ZWRLZXkgYW5kIFNlcnZlcktleSBhcmUgbm90IHVzZWQgaW4gYSBkb29tZWQg YXV0aGVudGljYXRpb24gKi8KIAltZW1zZXQoc3RvcmVkX2tleSwgMCwgU0NS QU1fS0VZX0xFTik7CkBAIC0xMTkyLDkgKzExNTYsOSBAQCBzY3JhbV9Nb2Nr U2FsdChjb25zdCBjaGFyICp1c2VybmFtZSkKIAkgKiBHZW5lcmF0ZSBzYWx0 IHVzaW5nIGEgU0hBMjU2IGhhc2ggb2YgdGhlIHVzZXJuYW1lIGFuZCB0aGUg Y2x1c3RlcidzCiAJICogbW9jayBhdXRoZW50aWNhdGlvbiBub25jZS4gIChU aGlzIHdvcmtzIGFzIGxvbmcgYXMgdGhlIHNhbHQgbGVuZ3RoIGlzCiAJICog bm90IGxhcmdlciB0aGUgU0hBMjU2IGRpZ2VzdCBsZW5ndGguIElmIHRoZSBz YWx0IGlzIHNtYWxsZXIsIHRoZSBjYWxsZXIKLQkgKiB3aWxsIGp1c3QgaWdu b3JlIHRoZSBleHRyYSBkYXRhKSkKKwkgKiB3aWxsIGp1c3QgaWdub3JlIHRo ZSBleHRyYSBkYXRhLikKIAkgKi8KLQlTdGF0aWNBc3NlcnRTdG10KFBHX1NI QTI1Nl9ESUdFU1RfTEVOR1RIID49IFNDUkFNX1NBTFRfTEVOLAorCVN0YXRp Y0Fzc2VydFN0bXQoUEdfU0hBMjU2X0RJR0VTVF9MRU5HVEggPj0gU0NSQU1f REVGQVVMVF9TQUxUX0xFTiwKIAkJCQkJICJzYWx0IGxlbmd0aCBncmVhdGVy IHRoYW4gU0hBMjU2IGRpZ2VzdCBsZW5ndGgiKTsKIAogCXBnX3NoYTI1Nl9p bml0KCZjdHgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvY3J5 cHQuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2NyeXB0LmMKaW5kZXggZDAwMzBm MmI2ZC4uOWZlNzliNDg5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGli cHEvY3J5cHQuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9jcnlwdC5jCkBA IC0xNTYsNyArMTU2LDcgQEAgZW5jcnlwdF9wYXNzd29yZChQYXNzd29yZFR5 cGUgdGFyZ2V0X3R5cGUsIGNvbnN0IGNoYXIgKnJvbGUsCiAJCQlzd2l0Y2gg KGd1ZXNzZWRfdHlwZSkKIAkJCXsKIAkJCQljYXNlIFBBU1NXT1JEX1RZUEVf UExBSU5URVhUOgotCQkJCQlyZXR1cm4gc2NyYW1fYnVpbGRfdmVyaWZpZXIo cm9sZSwgcGFzc3dvcmQsIDApOworCQkJCQlyZXR1cm4gcGdfYmVfc2NyYW1f YnVpbGRfdmVyaWZpZXIocGFzc3dvcmQpOwogCiAJCQkJY2FzZSBQQVNTV09S RF9UWVBFX01ENToKIApkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9zY3JhbS1j b21tb24uYyBiL3NyYy9jb21tb24vc2NyYW0tY29tbW9uLmMKaW5kZXggZGY5 ZjBlYWE5MC4uMzhhMjNkZTczZSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9z Y3JhbS1jb21tb24uYworKysgYi9zcmMvY29tbW9uL3NjcmFtLWNvbW1vbi5j CkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgog I2luY2x1ZGUgPGFycGEvaW5ldC5oPgogCisjaW5jbHVkZSAiY29tbW9uL2Jh c2U2NC5oIgogI2luY2x1ZGUgImNvbW1vbi9zY3JhbS1jb21tb24uaCIKIAog I2RlZmluZSBITUFDX0lQQUQgMHgzNgpAQCAtMTY1LDMgKzE2Niw2NSBAQCBz Y3JhbV9DbGllbnRPclNlcnZlcktleShjb25zdCBjaGFyICpwYXNzd29yZCwK IAlzY3JhbV9ITUFDX3VwZGF0ZSgmY3R4LCBrZXlzdHIsIHN0cmxlbihrZXlz dHIpKTsKIAlzY3JhbV9ITUFDX2ZpbmFsKHJlc3VsdCwgJmN0eCk7CiB9CisK KworLyoKKyAqIENvbnN0cnVjdCBhIHZlcmlmaWVyIHN0cmluZyBmb3IgU0NS QU0sIHN0b3JlZCBpbiBwZ19hdXRoaWQucm9scGFzc3dvcmQuCisgKgorICog VGhlIHBhc3N3b3JkIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBwcm9jZXNz ZWQgd2l0aCBTQVNMcHJlcCwgaWYgbmVjZXNzYXJ5IQorICoKKyAqIElmIGl0 ZXJhdGlvbnMgaXMgMCwgZGVmYXVsdCBudW1iZXIgb2YgaXRlcmF0aW9ucyBp cyB1c2VkLiAgVGhlIHJlc3VsdCBpcworICogcGFsbG9jJ2Qgb3IgbWFsbG9j J2QsIHNvIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBpdC4K KyAqLworY2hhciAqCitzY3JhbV9idWlsZF92ZXJpZmllcihjb25zdCBjaGFy ICpzYWx0LCBpbnQgc2FsdGxlbiwgaW50IGl0ZXJhdGlvbnMsCisJCQkJCSBj b25zdCBjaGFyICpwYXNzd29yZCkKK3sKKwl1aW50OAkJc3RvcmVka2V5YnVm W1NDUkFNX0tFWV9MRU5dOworCXVpbnQ4CQlzZXJ2ZXJrZXlidWZbU0NSQU1f S0VZX0xFTl07CisJY2hhcgkgICAqcmVzdWx0OworCWNoYXIJICAgKnA7CisJ aW50CQkJbWF4bGVuOworCisJaWYgKGl0ZXJhdGlvbnMgPD0gMCkKKwkJaXRl cmF0aW9ucyA9IFNDUkFNX0RFRkFVTFRfSVRFUkFUSU9OUzsKKworCS8qIENh bGN1bGF0ZSBTdG9yZWRLZXkgYW5kIFNlcnZlcktleSAqLworCXNjcmFtX0Ns aWVudE9yU2VydmVyS2V5KHBhc3N3b3JkLCBzYWx0LCBzYWx0bGVuLAorCQkJ CQkJCWl0ZXJhdGlvbnMsIFNDUkFNX0NMSUVOVF9LRVlfTkFNRSwgc3RvcmVk a2V5YnVmKTsKKwlzY3JhbV9IKHN0b3JlZGtleWJ1ZiwgU0NSQU1fS0VZX0xF Tiwgc3RvcmVka2V5YnVmKTsKKworCXNjcmFtX0NsaWVudE9yU2VydmVyS2V5 KHBhc3N3b3JkLCBzYWx0LCBzYWx0bGVuLCBpdGVyYXRpb25zLAorCQkJCQkJ CVNDUkFNX1NFUlZFUl9LRVlfTkFNRSwgc2VydmVya2V5YnVmKTsKKworCS8q CisJICogVGhlIGZvcm1hdCBpczoKKwkgKiBTQ1JBTS1TSEEtMjU2JDxpdGVy YXRpb24gY291bnQ+OjxzYWx0PiQ8U3RvcmVkS2V5Pjo8U2VydmVyS2V5Pgor CSAqLworCW1heGxlbiA9IHN0cmxlbigiU0NSQU0tU0hBLTI1NiIpICsgMQor CQkrIDEwICsgMQkJCQkJCQkJLyogaXRlcmF0aW9uIGNvdW50ICovCisJCSsg cGdfYjY0X2VuY19sZW4oc2FsdGxlbikgKyAxCQkJLyogQmFzZTY0LWVuY29k ZWQgc2FsdCAqLworCQkrIHBnX2I2NF9lbmNfbGVuKFNDUkFNX0tFWV9MRU4p ICsgMQkJLyogQmFzZTY0LWVuY29kZWQgU3RvcmVkS2V5ICovCisJCSsgcGdf YjY0X2VuY19sZW4oU0NSQU1fS0VZX0xFTikgKyAxOwkvKiBCYXNlNjQtZW5j b2RlZCBTZXJ2ZXJLZXkgKi8KKworI2lmZGVmIEZST05URU5ECisJcmVzdWx0 ID0gbWFsbG9jKG1heGxlbik7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBO VUxMOworI2Vsc2UKKwlyZXN1bHQgPSBwYWxsb2MobWF4bGVuKTsKKyNlbmRp ZgorCisJcCA9IHJlc3VsdCArIHNwcmludGYocmVzdWx0LCAiU0NSQU0tU0hB LTI1NiQlZDoiLCBpdGVyYXRpb25zKTsKKworCXAgKz0gcGdfYjY0X2VuY29k ZShzYWx0LCBzYWx0bGVuLCBwKTsKKwkqKHArKykgPSAnJCc7CisJcCArPSBw Z19iNjRfZW5jb2RlKChjaGFyICopIHN0b3JlZGtleWJ1ZiwgU0NSQU1fS0VZ X0xFTiwgcCk7CisJKihwKyspID0gJzonOworCXAgKz0gcGdfYjY0X2VuY29k ZSgoY2hhciAqKSBzZXJ2ZXJrZXlidWYsIFNDUkFNX0tFWV9MRU4sIHApOwor CSoocCsrKSA9ICdcMCc7CisKKwlBc3NlcnQocCAtIHJlc3VsdCA8PSBtYXhs ZW4pOworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1vbi9zY3JhbS1jb21tb24uaCBiL3NyYy9pbmNsdWRlL2Nv bW1vbi9zY3JhbS1jb21tb24uaAppbmRleCA2NzQwMDY5ZWVlLi5jYzY5YWFm YWRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tb24vc2NyYW0tY29t bW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbW9uL3NjcmFtLWNvbW1vbi5o CkBAIC0yOSwxMCArMjksMTAgQEAKICNkZWZpbmUgU0NSQU1fUkFXX05PTkNF X0xFTgkJCTEwCiAKIC8qIGxlbmd0aCBvZiBzYWx0IHdoZW4gZ2VuZXJhdGlu ZyBuZXcgdmVyaWZpZXJzICovCi0jZGVmaW5lIFNDUkFNX1NBTFRfTEVOCQkJ CTEwCisjZGVmaW5lIFNDUkFNX0RFRkFVTFRfU0FMVF9MRU4JCTEwCiAKIC8q IGRlZmF1bHQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgd2hlbiBnZW5lcmF0aW5n IHZlcmlmaWVyICovCi0jZGVmaW5lIFNDUkFNX0lURVJBVElPTlNfREVGQVVM VAk0MDk2CisjZGVmaW5lIFNDUkFNX0RFRkFVTFRfSVRFUkFUSU9OUwk0MDk2 CiAKIC8qIEJhc2UgbmFtZSBvZiBrZXlzIHVzZWQgZm9yIHByb29mIGdlbmVy YXRpb24gKi8KICNkZWZpbmUgU0NSQU1fU0VSVkVSX0tFWV9OQU1FICJTZXJ2 ZXIgS2V5IgpAQCAtNTYsNCArNTYsNyBAQCBleHRlcm4gdm9pZCBzY3JhbV9D bGllbnRPclNlcnZlcktleShjb25zdCBjaGFyICpwYXNzd29yZCwgY29uc3Qg Y2hhciAqc2FsdCwKIAkJCQkJCWludCBzYWx0bGVuLCBpbnQgaXRlcmF0aW9u cywKIAkJCQkJCWNvbnN0IGNoYXIgKmtleXN0ciwgdWludDggKnJlc3VsdCk7 CiAKK2V4dGVybiBjaGFyICpzY3JhbV9idWlsZF92ZXJpZmllcihjb25zdCBj aGFyICpzYWx0LCBpbnQgc2FsdGxlbiwgaW50IGl0ZXJhdGlvbnMsCisJCQkJ CSBjb25zdCBjaGFyICpwYXNzd29yZCk7CisKICNlbmRpZiAgIC8qIFNDUkFN X0NPTU1PTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9z Y3JhbS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvc2NyYW0uaAppbmRleCBlMzcz ZjBjMDdlLi4wNjBiOGFmNjllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9s aWJwcS9zY3JhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL3NjcmFtLmgK QEAgLTI3LDkgKzI3LDcgQEAgZXh0ZXJuIGludCBwZ19iZV9zY3JhbV9leGNo YW5nZSh2b2lkICpvcGFxLCBjaGFyICppbnB1dCwgaW50IGlucHV0bGVuLAog CQkJCQkgY2hhciAqKm91dHB1dCwgaW50ICpvdXRwdXRsZW4sIGNoYXIgKips b2dkZXRhaWwpOwogCiAvKiBSb3V0aW5lcyB0byBoYW5kbGUgYW5kIGNoZWNr IFNDUkFNLVNIQS0yNTYgdmVyaWZpZXIgKi8KLWV4dGVybiBjaGFyICpzY3Jh bV9idWlsZF92ZXJpZmllcihjb25zdCBjaGFyICp1c2VybmFtZSwKLQkJCQkJ IGNvbnN0IGNoYXIgKnBhc3N3b3JkLAotCQkJCQkgaW50IGl0ZXJhdGlvbnMp OworZXh0ZXJuIGNoYXIgKnBnX2JlX3NjcmFtX2J1aWxkX3ZlcmlmaWVyKGNv bnN0IGNoYXIgKnBhc3N3b3JkKTsKIGV4dGVybiBib29sIGlzX3NjcmFtX3Zl cmlmaWVyKGNvbnN0IGNoYXIgKnZlcmlmaWVyKTsKIGV4dGVybiBib29sIHNj cmFtX3ZlcmlmeV9wbGFpbl9wYXNzd29yZChjb25zdCBjaGFyICp1c2VybmFt ZSwKIAkJCQkJCQljb25zdCBjaGFyICpwYXNzd29yZCwgY29uc3QgY2hhciAq dmVyaWZpZXIpOwotLSAKMi4xMS4wCgo= --------------6313335D1DBC5C0A073CEDC4 Content-Type: application/x-download; name="0002-Add-PQencryptPasswordConn-function-to-libpq.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Add-PQencryptPasswordConn-function-to-libpq.patch" RnJvbSBlZWE4NGM0ODEyOWE2MTNlNjM4NWZhY2I3NmQ1YTE5OTc4OTA2Yjdh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFr YW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwg MjYgQXByIDIwMTcgMTI6NTU6MzUgKzAzMDAKU3ViamVjdDogW1BBVENIIDIv M10gQWRkIFBRZW5jcnlwdFBhc3N3b3JkQ29ubiBmdW5jdGlvbiB0byBsaWJw cS4KClRoZSBuZXcgZnVuY3Rpb24gc3VwcG9ydHMgY3JlYXRpbmcgU0NSQU0g dmVyaWZpZXJzLCBpbiBhZGRpdGlvbiB0byBtZDUKaGFzaGVzLiBUaGUgYWxn b3JpdGhtIGlzIGNob3NlbiBiYXNlZCBvbiBwYXNzd29yZF9lbmNyeXB0aW9u LCBieSBkZWZhdWx0LgoKTWljaGFlbCBQYXF1aWVyIGFuZCBtZQoKRGlzY3Vz c2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9D QU1rVSUzRDF3ZkJnRlBiZkFNWVpRRTc4cCUzRFZoWlg3bk44NmFXa3AwUWND cCUzRCUyQkt4WiUzRGJnJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3Jj L3NnbWwvbGlicHEuc2dtbCAgICAgICAgICAgICAgfCAgNjYgKysrKysrKysr KysrKysrLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dCAg ICAgfCAgIDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3Jh bS5jIHwgIDMyICsrKysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC5jICAgICAgIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmggICAg ICAgfCAgIDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCAg ICAgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMo KyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9saWJwcS5zZ21sIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKaW5kZXgg NGJjNWJmMzE5Mi4uMjIyODM4NmVlYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwK QEAgLTU4NzUsMTEgKzU4NzUsMTEgQEAgdm9pZCBQUWNvbm5pbmZvRnJlZShQ UWNvbm5pbmZvT3B0aW9uICpjb25uT3B0aW9ucyk7CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgogCi0gICA8dmFybGlzdGVudHJ5IGlk PSJsaWJwcS1wcWVuY3J5cHRwYXNzd29yZCI+CisgICA8dmFybGlzdGVudHJ5 IGlkPSJsaWJwcS1wcWVuY3J5cHRwYXNzd29yZGNvbm4iPgogICAgIDx0ZXJt PgotICAgICA8ZnVuY3Rpb24+UFFlbmNyeXB0UGFzc3dvcmQ8L2Z1bmN0aW9u PgorICAgICA8ZnVuY3Rpb24+UFFlbmNyeXB0UGFzc3dvcmRDb25uPC9mdW5j dGlvbj4KICAgICAgPGluZGV4dGVybT4KLSAgICAgIDxwcmltYXJ5PlBRZW5j cnlwdFBhc3N3b3JkPC9wcmltYXJ5PgorICAgICAgPHByaW1hcnk+UFFlbmNy eXB0UGFzc3dvcmRDb25uPC9wcmltYXJ5PgogICAgICA8L2luZGV4dGVybT4K ICAgICA8L3Rlcm0+CiAKQEAgLTU4ODcsMjAgKzU4ODcsNjQgQEAgdm9pZCBQ UWNvbm5pbmZvRnJlZShQUWNvbm5pbmZvT3B0aW9uICpjb25uT3B0aW9ucyk7 CiAgICAgIDxwYXJhPgogICAgICAgUHJlcGFyZXMgdGhlIGVuY3J5cHRlZCBm b3JtIG9mIGEgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8Lz4gcGFzc3dvcmQu CiA8c3lub3BzaXM+Ci1jaGFyICogUFFlbmNyeXB0UGFzc3dvcmQoY29uc3Qg Y2hhciAqcGFzc3dkLCBjb25zdCBjaGFyICp1c2VyKTsKK2NoYXIgKlBRZW5j cnlwdFBhc3N3b3JkQ29ubihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBh c3N3ZCwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqYWxnb3JpdGht KTsKIDwvc3lub3BzaXM+CiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGVu ZGVkIHRvIGJlIHVzZWQgYnkgY2xpZW50IGFwcGxpY2F0aW9ucyB0aGF0CiAg ICAgICB3aXNoIHRvIHNlbmQgY29tbWFuZHMgbGlrZSA8bGl0ZXJhbD5BTFRF UiBVU0VSIGpvZSBQQVNTV09SRAogICAgICAgJ3B3ZCc8Lz4uICBJdCBpcyBn b29kIHByYWN0aWNlIG5vdCB0byBzZW5kIHRoZSBvcmlnaW5hbCBjbGVhcnRl eHQKICAgICAgIHBhc3N3b3JkIGluIHN1Y2ggYSBjb21tYW5kLCBiZWNhdXNl IGl0IG1pZ2h0IGJlIGV4cG9zZWQgaW4gY29tbWFuZAogICAgICAgbG9ncywg YWN0aXZpdHkgZGlzcGxheXMsIGFuZCBzbyBvbi4gIEluc3RlYWQsIHVzZSB0 aGlzIGZ1bmN0aW9uIHRvCi0gICAgICBjb252ZXJ0IHRoZSBwYXNzd29yZCB0 byBlbmNyeXB0ZWQgZm9ybSBiZWZvcmUgaXQgaXMgc2VudC4gIFRoZQotICAg ICAgYXJndW1lbnRzIGFyZSB0aGUgY2xlYXJ0ZXh0IHBhc3N3b3JkLCBhbmQg dGhlIFNRTCBuYW1lIG9mIHRoZSB1c2VyCi0gICAgICBpdCBpcyBmb3IuICBU aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGFsbG9jYXRlZCBieQotICAg ICAgPGZ1bmN0aW9uPm1hbGxvYzwvZnVuY3Rpb24+LCBvciA8c3ltYm9sPk5V TEw8L3N5bWJvbD4gaWYgb3V0IG9mCi0gICAgICBtZW1vcnkuICBUaGUgY2Fs bGVyIGNhbiBhc3N1bWUgdGhlIHN0cmluZyBkb2Vzbid0IGNvbnRhaW4gYW55 Ci0gICAgICBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCB3b3VsZCByZXF1aXJl IGVzY2FwaW5nLiAgVXNlCi0gICAgICA8ZnVuY3Rpb24+UFFmcmVlbWVtPC8+ IHRvIGZyZWUgdGhlIHJlc3VsdCB3aGVuIGRvbmUgd2l0aCBpdC4KKyAgICAg IGNvbnZlcnQgdGhlIHBhc3N3b3JkIHRvIGVuY3J5cHRlZCBmb3JtIGJlZm9y ZSBpdCBpcyBzZW50LgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+Cisg ICAgICBUaGUgPHBhcmFtZXRlcj5wYXNzd2Q8Lz4gYW5kIDxwYXJhbWV0ZXI+ dXNlcjwvPiBhcmd1bWVudHMKKyAgICAgIGFyZSB0aGUgY2xlYXJ0ZXh0IHBh c3N3b3JkLCBhbmQgdGhlIFNRTCBuYW1lIG9mIHRoZSB1c2VyIGl0IGlzIGZv ci4KKyAgICAgIDxwYXJhbWV0ZXI+YWxnb3JpdGhtPC8+IHNwZWNpZmllcyB0 aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0KKyAgICAgIHRvIHVzZSB0byBlbmNy eXB0IHRoZSBwYXNzd29yZC4gQ3VycmVudGx5IHN1cHBvcnRlZCBhbGdvcml0 aG1zIGFyZQorICAgICAgPGxpdGVyYWw+bWQ1PC8+IGFuZCA8bGl0ZXJhbD5z Y3JhbS1zaGEtMjU2PC8+LiA8bGl0ZXJhbD5zY3JhbS1zaGEtMjU2PC8+Cisg ICAgICB3YXMgaW50cm9kdWNlZCBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvPiB2ZXJzaW9uIDEwLCBhbmQgd2lsbAorICAgICAgbm90IHdvcmsgY29y cmVjdGx5IHdpdGggb2xkZXIgc2VydmVyIHZlcnNpb25zLiBJZiA8cGFyYW1l dGVyPmFsZ29yaXRobTwvPgorICAgICAgaXMgPHN5bWJvbD5OVUxMPC8+LCB0 aGlzIGZ1bmN0aW9uIHdpbGwgcXVlcnkgdGhlIHNlcnZlciBmb3IgdGhlIGN1 cnJlbnQKKyAgICAgIHZhbHVlIG9mIHRoZSA8eHJlZiBsaW5rZW5kPSJndWMt cGFzc3dvcmQtZW5jcnlwdGlvbiI+IHNldHRpbmcuIFRoYXQgY2FuCisgICAg ICBibG9jaywgYW5kIHdpbGwgZmFpbCBpZiB0aGUgY3VycmVudCB0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkLCBvciBpZiB0aGUKKyAgICAgIGNvbm5lY3Rpb24g aXMgYnVzeSBleGVjdXRpbmcgYW5vdGhlciBxdWVyeS4gSWYgeW91IHdpc2gg dG8gdXNlIHRoZQorICAgICAgZGVmYXVsdCBhbGdvcml0aG0gZm9yIHRoZSBz ZXJ2ZXIgYnV0IHdhbnQgdG8gYXZvaWQgYmxvY2tpbmcsIHF1ZXJ5CisgICAg ICA8dmFybmFtZT5wYXNzd29yZF9lbmNyeXB0aW9uPC8+IHlvdXJzZWxmIGJl Zm9yZSBjYWxsaW5nCisgICAgICA8ZnVuY3Rpb24+UFFlbmNyeXB0UGFzc3dv cmRDb25uPC8+LCBhbmQgcGFzcyB0aGF0IHZhbHVlIGFzIHRoZQorICAgICAg PHBhcmFtZXRlcj5hbGdvcml0aG08Lz4uCisgICAgIDwvcGFyYT4KKworICAg ICA8cGFyYT4KKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcg YWxsb2NhdGVkIGJ5IDxmdW5jdGlvbj5tYWxsb2M8Lz4uCisgICAgICBUaGUg Y2FsbGVyIGNhbiBhc3N1bWUgdGhlIHN0cmluZyBkb2Vzbid0IGNvbnRhaW4g YW55IHNwZWNpYWwgY2hhcmFjdGVycworICAgICAgdGhhdCB3b3VsZCByZXF1 aXJlIGVzY2FwaW5nLiAgVXNlIDxmdW5jdGlvbj5QUWZyZWVtZW08Lz4gdG8g ZnJlZSB0aGUKKyAgICAgIHJlc3VsdCB3aGVuIGRvbmUgd2l0aCBpdC4gT24g ZXJyb3IsIHJldHVybnMgPHN5bWJvbD5OVUxMPC8+LCBhbmQKKyAgICAgIGEg c3VpdGFibGUgbWVzc2FnZSBpcyBzdG9yZWQgaW4gdGhlIGNvbm5lY3Rpb24g b2JqZWN0LgorICAgICA8L3BhcmE+CisKKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBx LXBxZW5jcnlwdHBhc3N3b3JkIj4KKyAgICA8dGVybT4KKyAgICAgPGZ1bmN0 aW9uPlBRZW5jcnlwdFBhc3N3b3JkPC9mdW5jdGlvbj4KKyAgICAgPGluZGV4 dGVybT4KKyAgICAgIDxwcmltYXJ5PlBRZW5jcnlwdFBhc3N3b3JkPC9wcmlt YXJ5PgorICAgICA8L2luZGV4dGVybT4KKyAgICA8L3Rlcm0+CisKKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgUHJlcGFyZXMgdGhlIG1k NS1lbmNyeXB0ZWQgZm9ybSBvZiBhIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FM PC8+IHBhc3N3b3JkLgorIDxzeW5vcHNpcz4KK2NoYXIgKlBRZW5jcnlwdFBh c3N3b3JkKGNvbnN0IGNoYXIgKnBhc3N3ZCwgY29uc3QgY2hhciAqdXNlcik7 CisgPC9zeW5vcHNpcz4KKyAgICAgIDxmdW5jdGlvbj5QUWVuY3J5cHRQYXNz d29yZDwvPiBpcyBhbiBvbGRlciwgZGVwcmVjYXRlZCB2ZXJzaW9uIG9mIAor ICAgICAgPGZ1bmN0aW9uPlBRZW5jcnlwdFBhc3N3b2RDb25uPC8+LiBUaGUg ZGlmZmVyZW5jZSBpcyB0aGF0CisgICAgICA8ZnVuY3Rpb24+UFFlbmNyeXB0 UGFzc3dvcmQ8Lz4gZG9lcyBub3QgCisgICAgICByZXF1aXJlIGEgY29ubmVj dGlvbiBvYmplY3QsIGFuZCA8bGl0ZXJhbD5tZDU8Lz4gaXMgYWx3YXlzIHVz ZWQgYXMgdGhlCisgICAgICBlbmNyeXB0aW9uIGFsZ29yaXRobS4KICAgICAg PC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0 IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggMjFk ZDc3MmNhOS4uZDZhMzhkMGRmOCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvZXhwb3J0cy50eHQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGli cHEvZXhwb3J0cy50eHQKQEAgLTE3MSwzICsxNzEsNCBAQCBQUXNzbEF0dHJp YnV0ZU5hbWVzICAgICAgIDE2OAogUFFzc2xBdHRyaWJ1dGUgICAgICAgICAg ICAxNjkKIFBRc2V0RXJyb3JDb250ZXh0VmlzaWJpbGl0eSAxNzAKIFBRcmVz dWx0VmVyYm9zZUVycm9yTWVzc2FnZSAxNzEKK1BRZW5jcnlwdFBhc3N3b3Jk Q29ubiAgICAgMTcyCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLXNjcmFtLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1h dXRoLXNjcmFtLmMKaW5kZXggYzU2ZTkxZTBlMC4uNjkxMGMxZTZkYiAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtc2NyYW0uYwpA QCAtNjEwLDYgKzYxMCwzOCBAQCB2ZXJpZnlfc2VydmVyX3Byb29mKGZlX3Nj cmFtX3N0YXRlICpzdGF0ZSkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorY2hhciAq CitwZ19mZV9zY3JhbV9idWlsZF92ZXJpZmllcihjb25zdCBjaGFyICpwYXNz d29yZCkKK3sKKwljaGFyCSAgICpwcmVwX3Bhc3N3b3JkID0gTlVMTDsKKwlw Z19zYXNscHJlcF9yYyByYzsKKwljaGFyCQlzYWx0YnVmW1NDUkFNX0RFRkFV TFRfU0FMVF9MRU5dOworCWNoYXIJICAgKnJlc3VsdDsKKworCS8qCisJICog Tm9ybWFsaXplIHRoZSBwYXNzd29yZCB3aXRoIFNBU0xwcmVwLiAgSWYgdGhh dCBkb2Vzbid0IHdvcmssIGJlY2F1c2UKKwkgKiB0aGUgcGFzc3dvcmQgaXNu J3QgdmFsaWQgVVRGLTggb3IgY29udGFpbnMgcHJvaGliaXRlZCBjaGFyYWN0 ZXJzLCBqdXN0CisJICogcHJvY2VlZCB3aXRoIHRoZSBvcmlnaW5hbCBwYXNz d29yZC4gIChTZWUgY29tbWVudHMgYXQgdG9wIG9mIGZpbGUuKQorCSAqLwor CXJjID0gcGdfc2FzbHByZXAocGFzc3dvcmQsICZwcmVwX3Bhc3N3b3JkKTsK KwlpZiAocmMgPT0gU0FTTFBSRVBfT09NKQorCQlyZXR1cm4gTlVMTDsKKwlp ZiAocmMgPT0gU0FTTFBSRVBfU1VDQ0VTUykKKwkJcGFzc3dvcmQgPSAoY29u c3QgY2hhciAqKSBwcmVwX3Bhc3N3b3JkOworCisJLyogR2VuZXJhdGUgc2Fs dCAqLworCWlmICghcGdfZnJvbnRlbmRfcmFuZG9tKHNhbHRidWYsIFNDUkFN X0RFRkFVTFRfU0FMVF9MRU4pKQorCQlyZXR1cm4gTlVMTDsKKworCXJlc3Vs dCA9IHNjcmFtX2J1aWxkX3ZlcmlmaWVyKHNhbHRidWYsIFNDUkFNX0RFRkFV TFRfU0FMVF9MRU4sCisJCQkJCQkJCSAgU0NSQU1fREVGQVVMVF9JVEVSQVRJ T05TLCBwYXNzd29yZCk7CisKKwlpZiAocHJlcF9wYXNzd29yZCkKKwkJZnJl ZShwcmVwX3Bhc3N3b3JkKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8q CiAgKiBSYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KICAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5jIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtYXV0aC5jCmluZGV4IGQ4MWVlNGY5NDQuLjUxNzg1 NGEzMDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1 dGguYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMKQEAg LTEwNzcsNyArMTA3NywzMyBAQCBwZ19mZV9nZXRhdXRobmFtZShQUUV4cEJ1 ZmZlciBlcnJvck1lc3NhZ2UpCiAKIAogLyoKLSAqIFBRZW5jcnlwdFBhc3N3 b3JkIC0tIGV4cG9ydGVkIHJvdXRpbmUgdG8gZW5jcnlwdCBhIHBhc3N3b3Jk CisgKiBQUWVuY3J5cHRQYXNzd29yZCAtLSBleHBvcnRlZCByb3V0aW5lIHRv IGVuY3J5cHQgYSBwYXNzd29yZCB3aXRoIE1ENQorICoKKyAqIFRoaXMgZnVu Y3Rpb24gaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIFBRZW5jcnlwdFBhc3N3 b3JkQ29ubiB3aXRoCisgKiAibWQ1IiBhcyB0aGUgZW5jcnlwdGlvbiBtZXRo b2QsIGV4Y2VwdCB0aGF0IHRoaXMgZG9lc24ndCByZXF1aXJlCisgKiBhIGNv bm5lY3Rpb24gb2JqZWN0LiBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQs IHVzZQorICogUFFlbmNyeXB0UGFzc3dvcmRDb25uIGluc3RlYWQuCisgKi8K K2NoYXIgKgorUFFlbmNyeXB0UGFzc3dvcmQoY29uc3QgY2hhciAqcGFzc3dk LCBjb25zdCBjaGFyICp1c2VyKQoreworCWNoYXIJICAgKmNyeXB0X3B3ZDsK KworCWNyeXB0X3B3ZCA9IG1hbGxvYyhNRDVfUEFTU1dEX0xFTiArIDEpOwor CWlmICghY3J5cHRfcHdkKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghcGdf bWQ1X2VuY3J5cHQocGFzc3dkLCB1c2VyLCBzdHJsZW4odXNlciksIGNyeXB0 X3B3ZCkpCisJeworCQlmcmVlKGNyeXB0X3B3ZCk7CisJCXJldHVybiBOVUxM OworCX0KKworCXJldHVybiBjcnlwdF9wd2Q7Cit9CisKKy8qCisgKiBQUWVu Y3J5cHRQYXNzd29yZENvbm4gLS0gZXhwb3J0ZWQgcm91dGluZSB0byBlbmNy eXB0IGEgcGFzc3dvcmQKICAqCiAgKiBUaGlzIGlzIGludGVuZGVkIHRvIGJl IHVzZWQgYnkgY2xpZW50IGFwcGxpY2F0aW9ucyB0aGF0IHdpc2ggdG8gc2Vu ZAogICogY29tbWFuZHMgbGlrZSBBTFRFUiBVU0VSIGpvZSBQQVNTV09SRCAn cHdkJy4gIFRoZSBwYXNzd29yZCBuZWVkIG5vdApAQCAtMTA4NywyNyArMTEx MywxMDIgQEAgcGdfZmVfZ2V0YXV0aG5hbWUoUFFFeHBCdWZmZXIgZXJyb3JN ZXNzYWdlKQogICogYmUgZGVwZW5kZW50IG9uIGxvdy1sZXZlbCBkZXRhaWxz IGxpa2Ugd2hldGhlciB0aGUgZW5jcnlwdGlvbiBpcyBNRDUKICAqIG9yIHNv bWV0aGluZyBlbHNlLgogICoKLSAqIEFyZ3VtZW50cyBhcmUgdGhlIGNsZWFy dGV4dCBwYXNzd29yZCwgYW5kIHRoZSBTUUwgbmFtZSBvZiB0aGUgdXNlciBp dAotICogaXMgZm9yLgorICogQXJndW1lbnRzIGFyZSBhIGNvbm5lY3Rpb24g b2JqZWN0LCB0aGUgY2xlYXJ0ZXh0IHBhc3N3b3JkLCB0aGUgU1FMCisgKiBu YW1lIG9mIHRoZSB1c2VyIGl0IGlzIGZvciwgYW5kIGEgc3RyaW5nIGluZGlj YXRpbmcgdGhlIGFsZ29yaXRobSB0bworICogdXNlIGZvciBlbmNyeXB0aW5n IHRoZSBwYXNzd29yZC4gSWYgYWxnb3JpdGhtIGlzIE5VTEwsIHRoaXMgcXVl cmllcworICogdGhlIHNlcnZlciBmb3IgdGhlIGN1cnJlbnQgJ3Bhc3N3b3Jk X2VuY3J5cHRpb24nIHZhbHVlLiBJZiB5b3Ugd2lzaAorICogdG8gYXZvaWQg dGhhdCwgZS5nLiB0byBhdm9pZCBibG9ja2luZywgeW91IGNhbiBleGVjdXRl CisgKiAnc2hvdyBwYXNzd29yZF9lbmNyeXB0aW9uJyB5b3Vyc2VsZiBiZWZv cmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbmQgcGFzcworICogaXQgYXMg dGhlIGFsZ29yaXRobS4KICAqCi0gKiBSZXR1cm4gdmFsdWUgaXMgYSBtYWxs b2MnZCBzdHJpbmcsIG9yIE5VTEwgaWYgb3V0LW9mLW1lbW9yeS4gIFRoZSBj bGllbnQKLSAqIG1heSBhc3N1bWUgdGhlIHN0cmluZyBkb2Vzbid0IGNvbnRh aW4gYW55IHNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IHdvdWxkCi0gKiByZXF1 aXJlIGVzY2FwaW5nLgorICogUmV0dXJuIHZhbHVlIGlzIGEgbWFsbG9jJ2Qg c3RyaW5nLiBUaGUgY2xpZW50IG1heSBhc3N1bWUgdGhlIHN0cmluZworICog ZG9lc24ndCBjb250YWluIGFueSBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCB3 b3VsZCByZXF1aXJlIGVzY2FwaW5nLgorICogT24gZXJyb3IsIGFuIGVycm9y IG1lc3NhZ2UgaXMgc3RvcmVkIGluIHRoZSBjb25uZWN0aW9uIG9iamVjdCwg YW5kCisgKiByZXR1cm5zIE5VTEwuCiAgKi8KIGNoYXIgKgotUFFlbmNyeXB0 UGFzc3dvcmQoY29uc3QgY2hhciAqcGFzc3dkLCBjb25zdCBjaGFyICp1c2Vy KQorUFFlbmNyeXB0UGFzc3dvcmRDb25uKFBHY29ubiAqY29ubiwgY29uc3Qg Y2hhciAqcGFzc3dkLCBjb25zdCBjaGFyICp1c2VyLAorCQkJCQkgIGNvbnN0 IGNoYXIgKmFsZ29yaXRobSkKIHsKLQljaGFyCSAgICpjcnlwdF9wd2Q7Cisj ZGVmaW5lIE1BWF9BTEdPUklUSE1fTkFNRV9MRU4gNTAKKwljaGFyCQlhbGdv YnVmW01BWF9BTEdPUklUSE1fTkFNRV9MRU4gKyAxXTsKKwljaGFyCSAgICpj cnlwdF9wd2QgPSBOVUxMOwogCi0JY3J5cHRfcHdkID0gbWFsbG9jKE1ENV9Q QVNTV0RfTEVOICsgMSk7Ci0JaWYgKCFjcnlwdF9wd2QpCisJaWYgKCFjb25u KQogCQlyZXR1cm4gTlVMTDsKIAotCWlmICghcGdfbWQ1X2VuY3J5cHQocGFz c3dkLCB1c2VyLCBzdHJsZW4odXNlciksIGNyeXB0X3B3ZCkpCisJLyogSWYg bm8gYWxnb3JpdGhtIHdhcyBnaXZlbiwgYXNrIHRoZSBzZXJ2ZXIuICovCisJ aWYgKGFsZ29yaXRobSA9PSBOVUxMKQogCXsKLQkJZnJlZShjcnlwdF9wd2Qp OworCQlQR3Jlc3VsdCAgICpyZXM7CisJCWNoYXIJICAgKnZhbDsKKworCQly ZXMgPSBQUWV4ZWMoY29ubiwgInNob3cgcGFzc3dvcmRfZW5jcnlwdGlvbiIp OworCQlpZiAocmVzID09IE5VTEwpCisJCXsKKwkJCS8qIFBRZXhlYygpIHNo b3VsZCd2ZSBzZXQgY29ubi0+ZXJyb3JNZXNzYWdlIGFscmVhZHkgKi8KKwkJ CXJldHVybiBOVUxMOworCQl9CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ICE9IFBHUkVTX1RVUExFU19PSykKKwkJeworCQkJLyogUFFleGVjKCkgc2hv dWxkJ3ZlIHNldCBjb25uLT5lcnJvck1lc3NhZ2UgYWxyZWFkeSAqLworCQkJ UFFjbGVhcihyZXMpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwkJaWYgKFBR bnR1cGxlcyhyZXMpICE9IDEgfHwgUFFuZmllbGRzKHJlcykgIT0gMSkKKwkJ eworCQkJUFFjbGVhcihyZXMpOworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNv bm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRleHQoInVu ZXhwZWN0ZWQgc2hhcGUgb2YgcmVzdWx0IHNldCByZXR1cm5lZCBmb3IgU0hP V1xuIikpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwkJdmFsID0gUFFnZXR2 YWx1ZShyZXMsIDAsIDApOworCisJCWlmIChzdHJsZW4odmFsKSA+IE1BWF9B TEdPUklUSE1fTkFNRV9MRU4pCisJCXsKKwkJCVBRY2xlYXIocmVzKTsKKwkJ CXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJwYXNzd29yZF9lbmNyeXB0aW9uIHZhbHVl IHRvbyBsb25nXG4iKSk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCQlzdHJj cHkoYWxnb2J1ZiwgdmFsKTsKKwkJUFFjbGVhcihyZXMpOworCisJCWFsZ29y aXRobSA9IGFsZ29idWY7CisJfQorCisJLyogT2ssIG5vdyB3ZSBrbm93IHdo YXQgYWxnb3JpdGhtIHRvIHVzZSAqLworCisJaWYgKHN0cmNtcChhbGdvcml0 aG0sICJzY3JhbS1zaGEtMjU2IikgPT0gMCkKKwl7CisJCWNyeXB0X3B3ZCA9 IHBnX2ZlX3NjcmFtX2J1aWxkX3ZlcmlmaWVyKHBhc3N3ZCk7CisJfQorCWVs c2UgaWYgKHN0cmNtcChhbGdvcml0aG0sICJtZDUiKSA9PSAwKQorCXsKKwkJ Y3J5cHRfcHdkID0gbWFsbG9jKE1ENV9QQVNTV0RfTEVOICsgMSk7CisJCWlm IChjcnlwdF9wd2QpCisJCXsKKwkJCWlmICghcGdfbWQ1X2VuY3J5cHQocGFz c3dkLCB1c2VyLCBzdHJsZW4odXNlciksIGNyeXB0X3B3ZCkpCisJCQl7CisJ CQkJZnJlZShjcnlwdF9wd2QpOworCQkJCWNyeXB0X3B3ZCA9IE5VTEw7CisJ CQl9CisJCX0KKwl9CisJZWxzZSBpZiAoc3RyY21wKGFsZ29yaXRobSwgInBs YWluIikgPT0gMCkKKwl7CisJCWNyeXB0X3B3ZCA9IHN0cmR1cChwYXNzd2Qp OworCX0KKwllbHNlCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmtub3du IHBhc3N3b3JkIGVuY3J5cHRpb24gYWxnb3JpdGhtXG4iKSk7CiAJCXJldHVy biBOVUxMOwogCX0KIAorCWlmICghY3J5cHRfcHdkKQorCQlwcmludGZQUUV4 cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisKIAlyZXR1cm4gY3J5cHRf cHdkOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5oCmluZGV4 IGE1YzczOWYwMWEuLjlmNGMyYTUwZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGguaAorKysgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1hdXRoLmgKQEAgLTI4LDUgKzI4LDYgQEAgZXh0ZXJuIHZvaWQg cGdfZmVfc2NyYW1fZnJlZSh2b2lkICpvcGFxKTsKIGV4dGVybiB2b2lkIHBn X2ZlX3NjcmFtX2V4Y2hhbmdlKHZvaWQgKm9wYXEsIGNoYXIgKmlucHV0LCBp bnQgaW5wdXRsZW4sCiAJCQkJCSBjaGFyICoqb3V0cHV0LCBpbnQgKm91dHB1 dGxlbiwKIAkJCQkJIGJvb2wgKmRvbmUsIGJvb2wgKnN1Y2Nlc3MsIFBRRXhw QnVmZmVyIGVycm9yTWVzc2FnZSk7CitleHRlcm4gY2hhciAqcGdfZmVfc2Ny YW1fYnVpbGRfdmVyaWZpZXIoY29uc3QgY2hhciAqcGFzc3dvcmQpOwogCiAj ZW5kaWYgICAvKiBGRV9BVVRIX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9saWJwcS1mZS5oCmluZGV4IDYzNWFmNWI1MGUuLmMxNDk3ZjAwYjYgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaApAQCAtNTk3LDYg KzU5Nyw3IEBAIGV4dGVybiBpbnQJUFFlbnYyZW5jb2Rpbmcodm9pZCk7CiAv KiA9PT0gaW4gZmUtYXV0aC5jID09PSAqLwogCiBleHRlcm4gY2hhciAqUFFl bmNyeXB0UGFzc3dvcmQoY29uc3QgY2hhciAqcGFzc3dkLCBjb25zdCBjaGFy ICp1c2VyKTsKK2V4dGVybiBjaGFyICpQUWVuY3J5cHRQYXNzd29yZENvbm4o UEdjb25uICpjb25uLCBjb25zdCBjaGFyICpwYXNzd2QsIGNvbnN0IGNoYXIg KnVzZXIsIGNvbnN0IGNoYXIgKm1ldGhvZCk7CiAKIC8qID09PSBpbiBlbmNu YW1lcy5jID09PSAqLwogCi0tIAoyLjExLjAKCg== --------------6313335D1DBC5C0A073CEDC4 Content-Type: application/x-download; name="0003-Use-new-PQencryptPasswordConn-function-in-psql-and-c.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0003-Use-new-PQencryptPasswordConn-function-in-psql-and-c.pa"; filename*1="tch" RnJvbSBhMzM1Mzg5YmJlMzFmZGYzNjUyNTBmZGJkZjFmNWQwMTk0MGRhZDg2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFr YW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwg MjYgQXByIDIwMTcgMTI6NTc6MTIgKzAzMDAKU3ViamVjdDogW1BBVENIIDMv M10gVXNlIG5ldyBQUWVuY3J5cHRQYXNzd29yZENvbm4gZnVuY3Rpb24gaW4g cHNxbCBhbmQKIGNyZWF0ZXVzZXIKClRoaXMgZml4ZXMgdGhlIGlzc3VlIHJl cG9ydGVkIGJ5IEplZmYgSmFuZXMsIHRoYXQgdGhlcmUgd2FzIHByZXZpb3Vz bHkKbm8gd2F5IHRvIGNyZWF0ZSBhIFNDUkFNIHZlcmlmaWVyIHdpdGggIlxw YXNzd29yZCIuCgpNaWNoYWVsIFBhcXVpZXIgYW5kIG1lCgpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBTWtV JTNEMXdmQmdGUGJmQU1ZWlFFNzhwJTNEVmhaWDduTjg2YVdrcDBRY0NwJTNE JTJCS3haJTNEYmclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iaW4vcHNx bC9jb21tYW5kLmMgICAgICAgfCAyICstCiBzcmMvYmluL3NjcmlwdHMvY3Jl YXRldXNlci5jIHwgNiArKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmlu ZGV4IDg1OWRlZDcxZjYuLjUxYmQ4ZjljYzkgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YwpAQCAtMTg3OCw3ICsxODc4LDcgQEAgZXhlY19jb21tYW5kX3Bhc3N3b3Jk KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNo KQogCQkJZWxzZQogCQkJCXVzZXIgPSBQUXVzZXIocHNldC5kYik7CiAKLQkJ CWVuY3J5cHRlZF9wYXNzd29yZCA9IFBRZW5jcnlwdFBhc3N3b3JkKHB3MSwg dXNlcik7CisJCQllbmNyeXB0ZWRfcGFzc3dvcmQgPSBQUWVuY3J5cHRQYXNz d29yZENvbm4ocHNldC5kYiwgcHcxLCB1c2VyLCBOVUxMKTsKIAogCQkJaWYg KCFlbmNyeXB0ZWRfcGFzc3dvcmQpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMv YmluL3NjcmlwdHMvY3JlYXRldXNlci5jIGIvc3JjL2Jpbi9zY3JpcHRzL2Ny ZWF0ZXVzZXIuYwppbmRleCAzZDc0Nzk3YThmLi4wODdhNWNhMDVmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvY3JlYXRldXNlci5jCisrKyBiL3Ny Yy9iaW4vc2NyaXB0cy9jcmVhdGV1c2VyLmMKQEAgLTI3NCw4ICsyNzQsMTAg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl7CiAJCQljaGFy CSAgICplbmNyeXB0ZWRfcGFzc3dvcmQ7CiAKLQkJCWVuY3J5cHRlZF9wYXNz d29yZCA9IFBRZW5jcnlwdFBhc3N3b3JkKG5ld3Bhc3N3b3JkLAotCQkJCQkJ CQkJCQkJICAgbmV3dXNlcik7CisJCQllbmNyeXB0ZWRfcGFzc3dvcmQgPSBQ UWVuY3J5cHRQYXNzd29yZENvbm4oY29ubiwKKwkJCQkJCQkJCQkJCQkgICBu ZXdwYXNzd29yZCwKKwkJCQkJCQkJCQkJCQkgICBuZXd1c2VyLAorCQkJCQkJ CQkJCQkJCSAgIE5VTEwpOwogCQkJaWYgKCFlbmNyeXB0ZWRfcGFzc3dvcmQp CiAJCQl7CiAJCQkJZnByaW50ZihzdGRlcnIsIF8oIlBhc3N3b3JkIGVuY3J5 cHRpb24gZmFpbGVkLlxuIikpOwotLSAKMi4xMS4wCgo= --------------6313335D1DBC5C0A073CEDC4 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------6313335D1DBC5C0A073CEDC4--