Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2SfJ-000w9Z-Q8 for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Apr 2025 10:28:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u2SfI-001xXF-7R for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Apr 2025 10:28:16 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2SfH-001xWv-Ih for pgsql-hackers@lists.postgresql.org; Wed, 09 Apr 2025 10:28:16 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u2SfE-003r4Z-2s for pgsql-hackers@postgresql.org; Wed, 09 Apr 2025 10:28:14 +0000 Received: from [192.168.1.112] (iptv-hkibng21-58c090-167.dhcp.inet.fi [88.192.144.167]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4ZXfKd1DKcz49Pvf; Wed, 9 Apr 2025 13:28:04 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1744194485; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=8wEKTtStwiFPeZTOwXBQV/tJJ2pdNRJ+Lr2lqEFxbNk=; b=JOqdX4VtkEof9JWRbWMhm4jMxIsIi7MpeNWS8CgIvI4dUc0c95tlkoJxBuBtQwVK3ivVWO /oasPcPxxdzYdsinA/3AhnkhaQghzx9rSqT01tdCibnknxfahU/hHPZgBFNycKJaxcndQW FPfvgbDfg9xEvdLoNuJen4jxTT5qUKCNRbRFpLEsV+NjlKL0Rqq0y+2Zdq8IMVdAFNv1XF f1b2EXHAyzTphadUJLc05MV3IxgLKpHRB27HV4cjvlfSBDsR7L5IH3RbBNFCVkrx0EIaBj phQR4XiE0DYSo4eGPmzerzAdYCBwCkbzU/RaUgxkTvdghsVXWaZlhJ+tR5Xvpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1744194485; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=8wEKTtStwiFPeZTOwXBQV/tJJ2pdNRJ+Lr2lqEFxbNk=; b=GLiJTC/ujgUc43IJb620eoagP5vcE6r9D9/drmhJSC17Eh6DAVqXcxH4aEUGx6yC32UUVo JuNv1T6M/InYwfsETHP/xe8BQi/g0FQz2S406F8QoUT2yGJXJAz2+0s58cnw45hr+oFyGP d/hMuyUdD3hyWI9RBdtyfIbQkiKdFfLb2NctqvFl3uaWEhtZtMEB2ZLO+s2NBFnbfIkpDI a/z+cu1mrx7+1nl3bGoqonimQ4WOO9vKAhWYZ7t699817NgMFDPTSlkrLgVcSSJdLIavdo PcJJjEYsjO2wZqCSryJdfHByRY+jexsSs0cBB7/h+ujvjaulWTZcSoUJ//HoMg== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1744194485; a=rsa-sha256; cv=none; b=j1UOZeFw0Okv0oreQblJIjRpn5/Psk3bgcT+ZFTzcFOFb9dgQeZ2lkhSC56DjSiLakFWa3 8vI3UDAlWp982Vpmmw/T44UTMkhWRGZTN32PnIAXRnW9cu01Kw+DWQNVwnaOZ90lmBfZb3 +e9QciOZctr8vYSDu559BUOkiQyJ5cU8ut+9Ryez75y1cMWxAJMASA1a0EoOBGWHayrRfM 0jGFuplm5DCO8SYK7wWJY8qRO7Z3aHvp1o20GpjGUcNLJqjg4LdgSecuOOxu0eL1oQzyNy NaDA53JLURBBst2NoxAqYK870WswDR1j7B3vfPQVtbXrNUGhIlbyjetUCaw47A== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------f0X5R9X7WiY2bcOF4Qe43y9k" Message-ID: <4bd8421a-50ad-4169-a096-99247c2f563c@iki.fi> Date: Wed, 9 Apr 2025 13:28:03 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pgsql: Make cancel request keys longer To: Peter Eisentraut , "pgsql-hackers@postgresql.org" References: <61be9e31-7b7d-49d5-bc11-721800d89d64@eisentraut.org> <09323e6a-4743-4be2-9d7f-74b86e4dac64@iki.fi> <34d5d731-06cc-43af-88cd-b3a4c5c8d9df@iki.fi> <2afbd9c6-51b7-450f-9ae1-61e552368963@eisentraut.org> Content-Language: en-US From: Heikki Linnakangas In-Reply-To: <2afbd9c6-51b7-450f-9ae1-61e552368963@eisentraut.org> 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. --------------f0X5R9X7WiY2bcOF4Qe43y9k Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit (moving to pgsql-hackers) On 09/04/2025 12:39, Peter Eisentraut wrote: > On 09.04.25 10:53, Heikki Linnakangas wrote: >> On 08/04/2025 22:41, Heikki Linnakangas wrote: >>> On 08/04/2025 20:06, Peter Eisentraut wrote: >>>> While I was looking at this, I suggest to make the first argument >>>> void *.  This is consistent for passing binary data. >>> >>> Ok, sure. >> >> On second thoughts, -1 on that. 'void *' is appropriate for functions >> like libc's read() or pq_sendbytes(), where the buffer can point to >> anything. In other words, the caller is expected to have a pointer >> like 'foobar *', and it gets cast to 'void *' when you call the >> function. That's not the case with the cancellation key. The >> cancellation key is just an array of bytes, the caller is expected to >> pass an array of bytes, not a struct. >> >> The right precedent for that are e.g. SCRAM functions in scram- >> common.h, for example. They use "const uint8 *" for the hashes. >> >> I'll switch to "const uint *" everywhere that deals with cancel keys. >> There are a few more variables elsewhere in the backend and in libpq. > > I was having the same second thoughts overnight.  I agree with your > conclusion. Here's a patch to change cancellation keys to "uint8 *". I did the same for a few other places, namely the new scram_client_key_binary and scram_server_key_binary fields in pg_conn, and a few libpq functions that started to give compiler warnings after that. There probably would be more code that could be changed to follow this convention, but I didn't look hard. What do you think? I'm on the edge with the pg_b64_encode/decode functions, whether they should work on "uint8 *" or "void *". On one hand, you do base64 encoding on a byte array, which would support "uint8 *". But on the other hand, you might use it for encoding things with more structure, which would support "void *". I went with "void *", mostly out of convenience as many of the SCRAM functions that currently use pg_b64_encode/decode, use "char *" to represent byte arrays. But arguably those should be changed to use "uint8 *" too. I committed the other parts of your original patch, thanks! -- Heikki Linnakangas Neon (https://neon.tech) --------------f0X5R9X7WiY2bcOF4Qe43y9k Content-Type: text/x-patch; charset=UTF-8; name="0001-Use-void-for-arbitrary-buffers-uint8-for-byte-arrays.patch" Content-Disposition: attachment; filename*0="0001-Use-void-for-arbitrary-buffers-uint8-for-byte-arrays.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZDNhMGFjODliNzZmZTVmODJhYWQ1YTM1MjJlNTVmYzE2NWNkMzYwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgOSBBcHIgMjAyNSAxMzoxNzoxNyArMDMwMApT dWJqZWN0OiBbUEFUQ0ggMS8xXSBVc2UgJ3ZvaWQgKicgZm9yIGFyYml0cmFyeSBidWZmZXJz LCAndWludDggKicgZm9yIGJ5dGUKIGFycmF5cwoKQSAndm9pZCAqJyBhcmd1bWVudCBzdWdn ZXN0cyB0aGF0IHRoZSBjYWxsZXIgbWlnaHQgcGFzcyBhbiBhcmJpdHJhcnkKc3RydWN0LCB3 aGljaCBpcyBhcHByb3ByaWF0ZSBmb3IgZnVuY3Rpb25zIGxpa2UgbGliYydzIHJlYWQvd3Jp dGUsIG9yCnBxX3NlbmRieXRlcygpLiAndWludDggKicgaXMgbW9yZSBhcHByb3ByaWF0ZSBm b3IgYnl0ZSBhcnJheXMgdGhhdApoYXZlIG5vIHN0cnVjdHVyZSwgbGlrZSB0aGUgY2FuY2Vs bGF0aW9uIGtleXMgb3IgU0NSQU0gdG9rZW5zLiBDaGFuZ2UKYSBmZXcgcGxhY2VzIHRvIGZv bGxvdyB0aGF0IGNvbnZlbnRpb24uCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jl c3FsLm9yZy9tZXNzYWdlLWlkLzYxYmU5ZTMxLTdiN2QtNDlkNS1iYzExLTcyMTgwMGQ4OWQ2 NEBlaXNlbnRyYXV0Lm9yZwotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWdu YWwuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAg IHwgIDIgKy0KIHNyYy9jb21tb24vYmFzZTY0LmMgICAgICAgICAgICAgICAgICB8IDE2ICsr KysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1vbi9iYXNlNjQuaCAgICAgICAgICB8 ICA0ICsrLS0KIHNyYy9pbmNsdWRlL2xpYnBxL3BxY29tbS5oICAgICAgICAgICB8ICAyICst CiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgIHwgIDQgKystLQogc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtY2FuY2VsLmMgICAgIHwgIDIgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLW1pc2MuYyAgICAgICB8IDEwICsrKysrLS0tLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLXByb3RvY29sMy5jICB8ICA2ICsrKy0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvbGli cHEtaW50LmggICAgIHwgMTIgKysrKysrLS0tLS0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAzMyBp bnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKaW5kZXggYTNjMmNkMTIyNzcuLmY5ZGFmYmNhZjIyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02NCw3ICs2NCw3IEBAIHR5cGVkZWYg c3RydWN0CiB7CiAJcGdfYXRvbWljX3VpbnQzMiBwc3NfcGlkOwogCWludAkJCXBzc19jYW5j ZWxfa2V5X2xlbjsgLyogMCBtZWFucyBubyBjYW5jZWxsYXRpb24gaXMgcG9zc2libGUgKi8K LQljaGFyCQlwc3NfY2FuY2VsX2tleVtNQVhfQ0FOQ0VMX0tFWV9MRU5HVEhdOworCXVpbnQ4 CQlwc3NfY2FuY2VsX2tleVtNQVhfQ0FOQ0VMX0tFWV9MRU5HVEhdOwogCXZvbGF0aWxlIHNp Z19hdG9taWNfdCBwc3Nfc2lnbmFsRmxhZ3NbTlVNX1BST0NTSUdOQUxTXTsKIAlzbG9ja190 CQlwc3NfbXV0ZXg7CQkvKiBwcm90ZWN0cyB0aGUgYWJvdmUgZmllbGRzICovCiAKQEAgLTE2 Miw3ICsxNjIsNyBAQCBQcm9jU2lnbmFsU2htZW1Jbml0KHZvaWQpCiAgKgkJUmVnaXN0ZXIg dGhlIGN1cnJlbnQgcHJvY2VzcyBpbiB0aGUgUHJvY1NpZ25hbCBhcnJheQogICovCiB2b2lk Ci1Qcm9jU2lnbmFsSW5pdChjaGFyICpjYW5jZWxfa2V5LCBpbnQgY2FuY2VsX2tleV9sZW4p CitQcm9jU2lnbmFsSW5pdChjb25zdCB1aW50OCAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9r ZXlfbGVuKQogewogCVByb2NTaWduYWxTbG90ICpzbG90OwogCXVpbnQ2NAkJYmFycmllcl9n ZW5lcmF0aW9uOwpAQCAtNzI4LDcgKzcyOCw3IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyKFNJR05BTF9BUkdTKQogICogZmllbGRzIGluIHRoZSBQcm9jU2lnbmFsIHNsb3RzLgog ICovCiB2b2lkCi1TZW5kQ2FuY2VsUmVxdWVzdChpbnQgYmFja2VuZFBJRCwgY2hhciAqY2Fu Y2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKQorU2VuZENhbmNlbFJlcXVlc3QoaW50IGJh Y2tlbmRQSUQsIGNvbnN0IHVpbnQ4ICpjYW5jZWxfa2V5LCBpbnQgY2FuY2VsX2tleV9sZW4p CiB7CiAJQXNzZXJ0KGJhY2tlbmRQSUQgIT0gMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMKaW5kZXggMTg0N2U3Yzg1ZDMuLjkyYjA0NDZiODBjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L2dsb2JhbHMuYwpAQCAtNTAsNyArNTAsNyBAQCBwZ190aW1lX3QJTXlTdGFydFRpbWU7 CiBUaW1lc3RhbXBUeiBNeVN0YXJ0VGltZXN0YW1wOwogc3RydWN0IENsaWVudFNvY2tldCAq TXlDbGllbnRTb2NrZXQ7CiBzdHJ1Y3QgUG9ydCAqTXlQcm9jUG9ydDsKLWNoYXIJCU15Q2Fu Y2VsS2V5W01BWF9DQU5DRUxfS0VZX0xFTkdUSF07Cit1aW50OAkJTXlDYW5jZWxLZXlbTUFY X0NBTkNFTF9LRVlfTEVOR1RIXTsKIGludAkJCU15Q2FuY2VsS2V5TGVuZ3RoID0gMDsKIGlu dAkJCU15UE1DaGlsZFNsb3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vYmFzZTY0LmMg Yi9zcmMvY29tbW9uL2Jhc2U2NC5jCmluZGV4IDYwMjhmNDEzNDcyLi4wNWU5ZDE4ODI0ZiAx MDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9iYXNlNjQuYworKysgYi9zcmMvY29tbW9uL2Jhc2U2 NC5jCkBAIC00NiwxMSArNDYsMTEgQEAgc3RhdGljIGNvbnN0IGludDggYjY0bG9va3VwWzEy OF0gPSB7CiAgKiBmb3Igc2FmZXR5LgogICovCiBpbnQKLXBnX2I2NF9lbmNvZGUoY29uc3Qg Y2hhciAqc3JjLCBpbnQgbGVuLCBjaGFyICpkc3QsIGludCBkc3RsZW4pCitwZ19iNjRfZW5j b2RlKGNvbnN0IHZvaWQgKnNyYywgaW50IGxlbiwgY2hhciAqZHN0LCBpbnQgZHN0bGVuKQog ewogCWNoYXIJICAgKnA7CiAJY29uc3QgY2hhciAqcywKLQkJCSAgICplbmQgPSBzcmMgKyBs ZW47CisJCQkgICAqZW5kID0gKGNvbnN0IGNoYXIgKikgc3JjICsgbGVuOwogCWludAkJCXBv cyA9IDI7CiAJdWludDMyCQlidWYgPSAwOwogCkBAIC0xMTMsNyArMTEzLDcgQEAgZXJyb3I6 CiAgKiBidWZmZXIgemVyb2VkIGZvciBzYWZldHkuCiAgKi8KIGludAotcGdfYjY0X2RlY29k ZShjb25zdCBjaGFyICpzcmMsIGludCBsZW4sIGNoYXIgKmRzdCwgaW50IGRzdGxlbikKK3Bn X2I2NF9kZWNvZGUoY29uc3QgY2hhciAqc3JjLCBpbnQgbGVuLCB2b2lkICpkc3QsIGludCBk c3RsZW4pCiB7CiAJY29uc3QgY2hhciAqc3JjZW5kID0gc3JjICsgbGVuLAogCQkJICAgKnMg PSBzcmM7CkBAIC0xNzIsMjEgKzE3MiwyMSBAQCBwZ19iNjRfZGVjb2RlKGNvbnN0IGNoYXIg KnNyYywgaW50IGxlbiwgY2hhciAqZHN0LCBpbnQgZHN0bGVuKQogCQkJICogTGVhdmUgaWYg dGhlcmUgaXMgYW4gb3ZlcmZsb3cgaW4gdGhlIGFyZWEgYWxsb2NhdGVkIGZvciB0aGUKIAkJ CSAqIGRlY29kZWQgc3RyaW5nLgogCQkJICovCi0JCQlpZiAoKHAgLSBkc3QgKyAxKSA+IGRz dGxlbikKKwkJCWlmICgocCAtIChjaGFyICopIGRzdCArIDEpID4gZHN0bGVuKQogCQkJCWdv dG8gZXJyb3I7CiAJCQkqcCsrID0gKGJ1ZiA+PiAxNikgJiAyNTU7CiAKIAkJCWlmIChlbmQg PT0gMCB8fCBlbmQgPiAxKQogCQkJewogCQkJCS8qIG92ZXJmbG93IGNoZWNrICovCi0JCQkJ aWYgKChwIC0gZHN0ICsgMSkgPiBkc3RsZW4pCisJCQkJaWYgKChwIC0gKGNoYXIgKikgZHN0 ICsgMSkgPiBkc3RsZW4pCiAJCQkJCWdvdG8gZXJyb3I7CiAJCQkJKnArKyA9IChidWYgPj4g OCkgJiAyNTU7CiAJCQl9CiAJCQlpZiAoZW5kID09IDAgfHwgZW5kID4gMikKIAkJCXsKIAkJ CQkvKiBvdmVyZmxvdyBjaGVjayAqLwotCQkJCWlmICgocCAtIGRzdCArIDEpID4gZHN0bGVu KQorCQkJCWlmICgocCAtIChjaGFyICopIGRzdCArIDEpID4gZHN0bGVuKQogCQkJCQlnb3Rv IGVycm9yOwogCQkJCSpwKysgPSBidWYgJiAyNTU7CiAJCQl9CkBAIC0yMDQsOCArMjA0LDgg QEAgcGdfYjY0X2RlY29kZShjb25zdCBjaGFyICpzcmMsIGludCBsZW4sIGNoYXIgKmRzdCwg aW50IGRzdGxlbikKIAkJZ290byBlcnJvcjsKIAl9CiAKLQlBc3NlcnQoKHAgLSBkc3QpIDw9 IGRzdGxlbik7Ci0JcmV0dXJuIHAgLSBkc3Q7CisJQXNzZXJ0KChwIC0gKGNoYXIgKikgZHN0 KSA8PSBkc3RsZW4pOworCXJldHVybiBwIC0gKGNoYXIgKikgZHN0OwogCiBlcnJvcjoKIAlt ZW1zZXQoZHN0LCAwLCBkc3RsZW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbW9u L2Jhc2U2NC5oIGIvc3JjL2luY2x1ZGUvY29tbW9uL2Jhc2U2NC5oCmluZGV4IDNmNzRhYTMw MWYwLi4wYTlmYjA0NzE2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL2Jhc2U2 NC5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1vbi9iYXNlNjQuaApAQCAtMTEsOCArMTEsOCBA QAogI2RlZmluZSBCQVNFNjRfSAogCiAvKiBiYXNlIDY0ICovCi1wZ19ub2Rpc2NhcmQgZXh0 ZXJuIGludCBwZ19iNjRfZW5jb2RlKGNvbnN0IGNoYXIgKnNyYywgaW50IGxlbiwgY2hhciAq ZHN0LCBpbnQgZHN0bGVuKTsKLXBnX25vZGlzY2FyZCBleHRlcm4gaW50IHBnX2I2NF9kZWNv ZGUoY29uc3QgY2hhciAqc3JjLCBpbnQgbGVuLCBjaGFyICpkc3QsIGludCBkc3RsZW4pOwor cGdfbm9kaXNjYXJkIGV4dGVybiBpbnQgcGdfYjY0X2VuY29kZShjb25zdCB2b2lkICpzcmMs IGludCBsZW4sIGNoYXIgKmRzdCwgaW50IGRzdGxlbik7CitwZ19ub2Rpc2NhcmQgZXh0ZXJu IGludCBwZ19iNjRfZGVjb2RlKGNvbnN0IGNoYXIgKnNyYywgaW50IGxlbiwgdm9pZCAqZHN0 LCBpbnQgZHN0bGVuKTsKIGV4dGVybiBpbnQJcGdfYjY0X2VuY19sZW4oaW50IHNyY2xlbik7 CiBleHRlcm4gaW50CXBnX2I2NF9kZWNfbGVuKGludCBzcmNsZW4pOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9saWJwcS9wcWNvbW0uaCBiL3NyYy9pbmNsdWRlL2xpYnBxL3BxY29t bS5oCmluZGV4IGQxMTA2OWNmOGRjLi5mMDRjYTEzNTY1MyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbGlicHEvcHFjb21tLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvcHFjb21tLmgK QEAgLTE0MSw3ICsxNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBDYW5jZWxSZXF1ZXN0UGFja2V0 CiAJLyogTm90ZSB0aGF0IGVhY2ggZmllbGQgaXMgc3RvcmVkIGluIG5ldHdvcmsgYnl0ZSBv cmRlciEgKi8KIAlNc2dUeXBlCQljYW5jZWxSZXF1ZXN0Q29kZTsJLyogY29kZSB0byBpZGVu dGlmeSBhIGNhbmNlbCByZXF1ZXN0ICovCiAJdWludDMyCQliYWNrZW5kUElEOwkJLyogUElE IG9mIGNsaWVudCdzIGJhY2tlbmQgKi8KLQljaGFyCQljYW5jZWxBdXRoQ29kZVtGTEVYSUJM RV9BUlJBWV9NRU1CRVJdOwkvKiBzZWNyZXQga2V5IHRvCisJdWludDgJCWNhbmNlbEF1dGhD b2RlW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CS8qIHNlY3JldCBrZXkgdG8KIAkJCQkJCQkJ CQkJCQkJICogYXV0aG9yaXplIGNhbmNlbCAqLwogfSBDYW5jZWxSZXF1ZXN0UGFja2V0Owog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21p c2NhZG1pbi5oCmluZGV4IDcyZjU2NTVmYjM0Li4yNThlNTYyNGFkMCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgK QEAgLTE5Miw3ICsxOTIsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgcGdfdGltZV90IE15U3Rh cnRUaW1lOwogZXh0ZXJuIFBHRExMSU1QT1JUIFRpbWVzdGFtcFR6IE15U3RhcnRUaW1lc3Rh bXA7CiBleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFBvcnQgKk15UHJvY1BvcnQ7CiBleHRl cm4gUEdETExJTVBPUlQgc3RydWN0IExhdGNoICpNeUxhdGNoOwotZXh0ZXJuIFBHRExMSU1Q T1JUIGNoYXIgTXlDYW5jZWxLZXlbXTsKK2V4dGVybiBQR0RMTElNUE9SVCB1aW50OCBNeUNh bmNlbEtleVtdOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeUNhbmNlbEtleUxlbmd0aDsK IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTXlQTUNoaWxkU2xvdDsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaAppbmRleCBjZmUxNDYzMTQ0NS4uMzQ1ZDVhMGVjYjEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC03MywxMCArNzMsMTAgQEAgdHlwZWRlZiBlbnVt CiBleHRlcm4gU2l6ZSBQcm9jU2lnbmFsU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQg UHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKTsKIAotZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbElu aXQoY2hhciAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKTsKK2V4dGVybiB2b2lk IFByb2NTaWduYWxJbml0KGNvbnN0IHVpbnQ4ICpjYW5jZWxfa2V5LCBpbnQgY2FuY2VsX2tl eV9sZW4pOwogZXh0ZXJuIGludAlTZW5kUHJvY1NpZ25hbChwaWRfdCBwaWQsIFByb2NTaWdu YWxSZWFzb24gcmVhc29uLAogCQkJCQkJICAgUHJvY051bWJlciBwcm9jTnVtYmVyKTsKLWV4 dGVybiB2b2lkIFNlbmRDYW5jZWxSZXF1ZXN0KGludCBiYWNrZW5kUElELCBjaGFyICpjYW5j ZWxfa2V5LCBpbnQgY2FuY2VsX2tleV9sZW4pOworZXh0ZXJuIHZvaWQgU2VuZENhbmNlbFJl cXVlc3QoaW50IGJhY2tlbmRQSUQsIGNvbnN0IHVpbnQ4ICpjYW5jZWxfa2V5LCBpbnQgY2Fu Y2VsX2tleV9sZW4pOwogCiBleHRlcm4gdWludDY0IEVtaXRQcm9jU2lnbmFsQmFycmllcihQ cm9jU2lnbmFsQmFycmllclR5cGUgdHlwZSk7CiBleHRlcm4gdm9pZCBXYWl0Rm9yUHJvY1Np Z25hbEJhcnJpZXIodWludDY0IGdlbmVyYXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtY2FuY2VsLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jYW5j ZWwuYwppbmRleCBlODRlNjRiZjJhNy4uZDUxYTJkMmY3MGEgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWNhbmNlbC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNhbmNlbC5jCkBAIC00NjMsNyArNDYzLDcgQEAgUFFzZW5kQ2FuY2VsUmVxdWVzdChQ R2Nvbm4gKmNhbmNlbENvbm4pCiAJbWVtc2V0KCZyZXEsIDAsIG9mZnNldG9mKENhbmNlbFJl cXVlc3RQYWNrZXQsIGNhbmNlbEF1dGhDb2RlKSk7CiAJcmVxLmNhbmNlbFJlcXVlc3RDb2Rl ID0gKE1zZ1R5cGUpIHBnX2h0b24zMihDQU5DRUxfUkVRVUVTVF9DT0RFKTsKIAlyZXEuYmFj a2VuZFBJRCA9IHBnX2h0b24zMihjYW5jZWxDb25uLT5iZV9waWQpOwotCWlmIChwcVB1dG5j aGFyKChjaGFyICopICZyZXEsIG9mZnNldG9mKENhbmNlbFJlcXVlc3RQYWNrZXQsIGNhbmNl bEF1dGhDb2RlKSwgY2FuY2VsQ29ubikpCisJaWYgKHBxUHV0bmNoYXIoJnJlcSwgb2Zmc2V0 b2YoQ2FuY2VsUmVxdWVzdFBhY2tldCwgY2FuY2VsQXV0aENvZGUpLCBjYW5jZWxDb25uKSkK IAkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAlpZiAocHFQdXRuY2hhcihjYW5jZWxDb25uLT5i ZV9jYW5jZWxfa2V5LCBjYW5jZWxDb25uLT5iZV9jYW5jZWxfa2V5X2xlbiwgY2FuY2VsQ29u bikpCiAJCXJldHVybiBTVEFUVVNfRVJST1I7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1taXNjLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKaW5k ZXggZDc4NDQ1YzcwYWYuLmM3NGZlNDA0YmJlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1taXNjLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5j CkBAIC02Nyw3ICs2Nyw3IEBAIFBRbGliVmVyc2lvbih2b2lkKQogCiAKIC8qCi0gKiBwcUdl dGM6IGdldCAxIGNoYXJhY3RlciBmcm9tIHRoZSBjb25uZWN0aW9uCisgKiBwcUdldGM6IHJl YWQgMSBjaGFyYWN0ZXIgZnJvbSB0aGUgY29ubmVjdGlvbgogICoKICAqCUFsbCB0aGVzZSBy b3V0aW5lcyByZXR1cm4gMCBvbiBzdWNjZXNzLCBFT0Ygb24gZXJyb3IuCiAgKglOb3RlIHRo YXQgZm9yIHRoZSBHZXQgcm91dGluZXMsIEVPRiBvbmx5IG1lYW5zIHRoZXJlIGlzIG5vdCBl bm91Z2gKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcVB1dGMoY2hhciBjLCBQR2Nvbm4gKmNvbm4p CiAKIC8qCiAgKiBwcUdldHNbX2FwcGVuZF06Ci0gKiBnZXQgYSBudWxsLXRlcm1pbmF0ZWQg c3RyaW5nIGZyb20gdGhlIGNvbm5lY3Rpb24sCisgKiByZWFkIGEgbnVsbC10ZXJtaW5hdGVk IHN0cmluZyBmcm9tIHRoZSBjb25uZWN0aW9uLAogICogYW5kIHN0b3JlIGl0IGluIGFuIGV4 cGFuc2libGUgUFFFeHBCdWZmZXIuCiAgKiBJZiB3ZSBydW4gb3V0IG9mIG1lbW9yeSwgYWxs IG9mIHRoZSBzdHJpbmcgaXMgc3RpbGwgcmVhZCwKICAqIGJ1dCB0aGUgZXhjZXNzIGNoYXJh Y3RlcnMgYXJlIHNpbGVudGx5IGRpc2NhcmRlZC4KQEAgLTE1OSwxMCArMTU5LDEwIEBAIHBx UHV0cyhjb25zdCBjaGFyICpzLCBQR2Nvbm4gKmNvbm4pCiAKIC8qCiAgKiBwcUdldG5jaGFy OgotICoJZ2V0IGEgc3RyaW5nIG9mIGV4YWN0bHkgbGVuIGJ5dGVzIGluIGJ1ZmZlciBzLCBu byBudWxsIHRlcm1pbmF0aW9uCisgKglyZWFkIGV4YWN0bHkgbGVuIGJ5dGVzIGluIGJ1ZmZl ciBzLCBubyBudWxsIHRlcm1pbmF0aW9uCiAgKi8KIGludAotcHFHZXRuY2hhcihjaGFyICpz LCBzaXplX3QgbGVuLCBQR2Nvbm4gKmNvbm4pCitwcUdldG5jaGFyKHZvaWQgKnMsIHNpemVf dCBsZW4sIFBHY29ubiAqY29ubikKIHsKIAlpZiAobGVuID4gKHNpemVfdCkgKGNvbm4tPmlu RW5kIC0gY29ubi0+aW5DdXJzb3IpKQogCQlyZXR1cm4gRU9GOwpAQCAtMTk5LDcgKzE5OSw3 IEBAIHBxU2tpcG5jaGFyKHNpemVfdCBsZW4sIFBHY29ubiAqY29ubikKICAqCXdyaXRlIGV4 YWN0bHkgbGVuIGJ5dGVzIHRvIHRoZSBjdXJyZW50IG1lc3NhZ2UKICAqLwogaW50Ci1wcVB1 dG5jaGFyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIFBHY29ubiAqY29ubikKK3BxUHV0 bmNoYXIoY29uc3Qgdm9pZCAqcywgc2l6ZV90IGxlbiwgUEdjb25uICpjb25uKQogewogCWlm IChwcVB1dE1zZ0J5dGVzKHMsIGxlbiwgY29ubikpCiAJCXJldHVybiBFT0Y7CmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IGQ4NTkxMGY0MWZjLi4yODlkMWJlY2E3 NSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKQEAgLTE1MzIsNyArMTUz Miw3IEBAIGdldFBhcmFtZXRlclN0YXR1cyhQR2Nvbm4gKmNvbm4pCiBzdGF0aWMgaW50CiBn ZXRCYWNrZW5kS2V5RGF0YShQR2Nvbm4gKmNvbm4sIGludCBtc2dMZW5ndGgpCiB7Ci0JdWlu dDgJCWNhbmNlbF9rZXlfbGVuOworCWludAkJCWNhbmNlbF9rZXlfbGVuOwogCiAJaWYgKGNv bm4tPmJlX2NhbmNlbF9rZXkpCiAJewpAQCAtMjEyMSw3ICsyMTIxLDcgQEAgcHFGdW5jdGlv bkNhbGwzKFBHY29ubiAqY29ubiwgT2lkIGZuaWQsCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlp ZiAocHFQdXRuY2hhcigoY2hhciAqKSBhcmdzW2ldLnUucHRyLCBhcmdzW2ldLmxlbiwgY29u bikpCisJCQlpZiAocHFQdXRuY2hhcihhcmdzW2ldLnUucHRyLCBhcmdzW2ldLmxlbiwgY29u bikpCiAJCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAl9CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBw cUZ1bmN0aW9uQ2FsbDMoUEdjb25uICpjb25uLCBPaWQgZm5pZCwKIAkJCQkJfQogCQkJCQll bHNlCiAJCQkJCXsKLQkJCQkJCWlmIChwcUdldG5jaGFyKChjaGFyICopIHJlc3VsdF9idWYs CisJCQkJCQlpZiAocHFHZXRuY2hhcihyZXN1bHRfYnVmLAogCQkJCQkJCQkJICAgKmFjdHVh bF9yZXN1bHRfbGVuLAogCQkJCQkJCQkJICAgY29ubikpCiAJCQkJCQkJY29udGludWU7CmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCmluZGV4IDkzNjljMjE3ZmI1Li5hNmNmZDdmNWM5 ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTUzOSwxNiArNTM5LDE2IEBA IHN0cnVjdCBwZ19jb25uCiAJCQkJCQkJCSAqIHRyaWVkIGhvc3QgKi8KIAlib29sCQlzZW5k X2FwcG5hbWU7CS8qIG9rYXkgdG8gc2VuZCBhcHBsaWNhdGlvbl9uYW1lPyAqLwogCXNpemVf dAkJc2NyYW1fY2xpZW50X2tleV9sZW47Ci0Jdm9pZAkgICAqc2NyYW1fY2xpZW50X2tleV9i aW5hcnk7CS8qIGJpbmFyeSBTQ1JBTSBjbGllbnQga2V5ICovCisJdWludDgJICAgKnNjcmFt X2NsaWVudF9rZXlfYmluYXJ5OwkvKiBiaW5hcnkgU0NSQU0gY2xpZW50IGtleSAqLwogCXNp emVfdAkJc2NyYW1fc2VydmVyX2tleV9sZW47Ci0Jdm9pZAkgICAqc2NyYW1fc2VydmVyX2tl eV9iaW5hcnk7CS8qIGJpbmFyeSBTQ1JBTSBzZXJ2ZXIga2V5ICovCisJdWludDgJICAgKnNj cmFtX3NlcnZlcl9rZXlfYmluYXJ5OwkvKiBiaW5hcnkgU0NSQU0gc2VydmVyIGtleSAqLwog CVByb3RvY29sVmVyc2lvbiBtaW5fcHZlcnNpb247CS8qIHByb3RvY29sIHZlcnNpb24gdG8g cmVxdWVzdCAqLwogCVByb3RvY29sVmVyc2lvbiBtYXhfcHZlcnNpb247CS8qIHByb3RvY29s IHZlcnNpb24gdG8gcmVxdWVzdCAqLwogCiAJLyogTWlzY2VsbGFuZW91cyBzdHVmZiAqLwog CWludAkJCWJlX3BpZDsJCQkvKiBQSUQgb2YgYmFja2VuZCAtLS0gbmVlZGVkIGZvciBjYW5j ZWxzICovCi0JY2hhcgkgICAqYmVfY2FuY2VsX2tleTsJLyogcXVlcnkgY2FuY2VsbGF0aW9u IGtleSBhbmQgaXRzIGxlbmd0aCAqLwotCXVpbnQxNgkJYmVfY2FuY2VsX2tleV9sZW47CisJ aW50CQkJYmVfY2FuY2VsX2tleV9sZW47CisJdWludDgJICAgKmJlX2NhbmNlbF9rZXk7CS8q IHF1ZXJ5IGNhbmNlbGxhdGlvbiBrZXkgKi8KIAlwZ1BhcmFtZXRlclN0YXR1cyAqcHN0YXR1 czsgLyogUGFyYW1ldGVyU3RhdHVzIGRhdGEgKi8KIAlpbnQJCQljbGllbnRfZW5jb2Rpbmc7 CS8qIGVuY29kaW5nIGlkICovCiAJYm9vbAkJc3RkX3N0cmluZ3M7CS8qIHN0YW5kYXJkX2Nv bmZvcm1pbmdfc3RyaW5ncyAqLwpAQCAtNzg3LDkgKzc4Nyw5IEBAIGV4dGVybiBpbnQJcHFQ dXRjKGNoYXIgYywgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJcHFHZXRzKFBRRXhwQnVm ZmVyIGJ1ZiwgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJcHFHZXRzX2FwcGVuZChQUUV4 cEJ1ZmZlciBidWYsIFBHY29ubiAqY29ubik7CiBleHRlcm4gaW50CXBxUHV0cyhjb25zdCBj aGFyICpzLCBQR2Nvbm4gKmNvbm4pOwotZXh0ZXJuIGludAlwcUdldG5jaGFyKGNoYXIgKnMs IHNpemVfdCBsZW4sIFBHY29ubiAqY29ubik7CitleHRlcm4gaW50CXBxR2V0bmNoYXIodm9p ZCAqcywgc2l6ZV90IGxlbiwgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJcHFTa2lwbmNo YXIoc2l6ZV90IGxlbiwgUEdjb25uICpjb25uKTsKLWV4dGVybiBpbnQJcHFQdXRuY2hhcihj b25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCBQR2Nvbm4gKmNvbm4pOworZXh0ZXJuIGludAlw cVB1dG5jaGFyKGNvbnN0IHZvaWQgKnMsIHNpemVfdCBsZW4sIFBHY29ubiAqY29ubik7CiBl eHRlcm4gaW50CXBxR2V0SW50KGludCAqcmVzdWx0LCBzaXplX3QgYnl0ZXMsIFBHY29ubiAq Y29ubik7CiBleHRlcm4gaW50CXBxUHV0SW50KGludCB2YWx1ZSwgc2l6ZV90IGJ5dGVzLCBQ R2Nvbm4gKmNvbm4pOwogZXh0ZXJuIGludAlwcVB1dE1zZ1N0YXJ0KGNoYXIgbXNnX3R5cGUs IFBHY29ubiAqY29ubik7Ci0tIAoyLjM5LjUKCg== --------------f0X5R9X7WiY2bcOF4Qe43y9k--