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 1r7gB7-006Gil-Ck for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Nov 2023 18:17:53 +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 1r7gB6-00FXnU-1E for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Nov 2023 18:17:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r7gB5-00FXnH-L3 for pgsql-hackers@lists.postgresql.org; Mon, 27 Nov 2023 18:17:51 +0000 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r7gB2-008pi0-M4 for pgsql-hackers@postgresql.org; Mon, 27 Nov 2023 18:17:51 +0000 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-1fa37df6da8so963734fac.2 for ; Mon, 27 Nov 2023 10:17:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon.tech; s=google; t=1701109067; x=1701713867; darn=postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=NgVFBYLAkm/2vVl79RSV1w5V4CL8Tzk2wBwXBbO32rI=; b=YLL7Z34cx7KL/s4vWEpdDiGIC9nMv3gNFmgWae2y+D2qcTe0qDkuQ2YHuDtPap/KK5 CSjtV5qV/PIOa41TVdzXwr4wn3XTo4gdbG/UOC4CLjgO5zlwLNaI8XQhX7P2PaQZG/HW hb/S6c3l1FgvqRy/aWRdCqLUU4iEtIEGzp5Ss= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701109067; x=1701713867; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NgVFBYLAkm/2vVl79RSV1w5V4CL8Tzk2wBwXBbO32rI=; b=qOAkL4tUIeGbYGM3xwgVQC+DouZsMQm3KEiSSJ4RhEBthw8ttJ+LGznt2TvNPtQdvI NVF2yARmCt9I8U1lSS7q1exgp5NcifjULKQ/iIlX6rgvT4XIZ1YGqdgVYLddsQ9mTTr7 pdyYTqmf/txm9EZiqruTeaD7m8c5ICQkpurD4smmObOjM/BtQtrpQrFpjV9dgk/OJAIz zUllI6tbJKzzcIYAyy+ogGocwYlUuIaWzJTAYQjVBszx1cdk5cpN7rVe2PV4OyLvLqOE Nx72tXBrMDqDFx7/LBs+sXS9SHFQlF/pwW1jMyzPIT43+kBg0wV7REPaZZaMgbqs3RaD tn1g== X-Gm-Message-State: AOJu0YwZ2elqXkNEo8rI62cvhPk3zs43QYwV3KPBQ0f0dg5EwlOH/97A jO6ggUo6yW9zXuuP/wx9pU6Zt9gMTfvCMvawFyAxGA== X-Google-Smtp-Source: AGHT+IGLzB6MCA0OznJ2N7yP8GoUwsZgSCmJwLU8LUJ8YOquLa4T7pM47dSYAc3G4dV+EMUUHwty0g== X-Received: by 2002:a05:6870:d909:b0:1fa:1c6b:11a with SMTP id gq9-20020a056870d90900b001fa1c6b011amr11552333oab.28.1701109067037; Mon, 27 Nov 2023 10:17:47 -0800 (PST) Received: from localhost ([2607:fb91:128d:c7a0:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id qc7-20020a056871480700b001fa668a3d14sm301955oab.48.2023.11.27.10.17.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 Nov 2023 10:17:46 -0800 (PST) Content-Type: multipart/mixed; boundary=16f5354628d5098bf29dddf1f0a819e1349616c5f4113ae7e7323c6cec04 Mime-Version: 1.0 Date: Mon, 27 Nov 2023 12:17:45 -0600 Message-Id: Cc: "Andres Freund" , "Bo Anderson" , "pgsql-hackers" Subject: Re: SSL tests fail on OpenSSL v3.2.0 To: "Nazir Bilal Yavuz" From: "Tristan Partin" X-Mailer: aerc 0.16.0-85-g0be135a38186 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --16f5354628d5098bf29dddf1f0a819e1349616c5f4113ae7e7323c6cec04 Content-Type: multipart/alternative; boundary=24744e36acd92ca747c76bf7e5d94ad5b085e83ebdb8b7b69d32655de25f --24744e36acd92ca747c76bf7e5d94ad5b085e83ebdb8b7b69d32655de25f Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed Nazir, Thanks for opening a thread. Was just about to start one, here what we=20 came up with so far. Homebrew users discovered a regression[0] when using Postgres compiled=20 and linked against OpenSSL version 3.2. $ psql "postgresql://$DB?sslmode=3Drequire" psql: error: connection to server at "redacted" (redacted), port 5432 faile= d: ERROR: Parameter 'user' is missing in startup packet. double free or corruption (out) Aborted (core dumped) Analyzing the backtrace, OpenSSL was overwriting heap-allocated data in our PGconn struct because it thought BIO::ptr was a struct bss_sock_st *. OpenSSL then called a memset() on a member of that struct, and we zeroed out data in our PGconn struct. BIO_get_data(3) says the following: > These functions are mainly useful when implementing a custom BIO. > > The BIO_set_data() function associates the custom data pointed to by ptr > with the BIO a. This data can subsequently be retrieved via a call to > BIO_get_data(). This can be used by custom BIOs for storing > implementation specific information. If you take a look at my_BIO_s_socket(), we create a partially custom BIO, but for the most part are defaulting to the methods defined by BIO_s_socket(). We need to set application-specific data and not BIO private data, so that the BIO implementation we rely on, can properly assert that its private data is what it expects. The ssl test suite continues to pass with this patch. This patch should=20 be backported to every supported Postgres version most likely. [0]: https://github.com/Homebrew/homebrew-core/issues/155651 --=20 Tristan Partin Neon (https://neon.tech) --24744e36acd92ca747c76bf7e5d94ad5b085e83ebdb8b7b69d32655de25f-- --16f5354628d5098bf29dddf1f0a819e1349616c5f4113ae7e7323c6cec04 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0001-Use-BIO_-get-set-_app_data-instead-of-BIO_-get-se.patch Content-Type: text/x-patch; charset=utf-8; name=v1-0001-Use-BIO_-get-set-_app_data-instead-of-BIO_-get-se.patch RnJvbSA2NzIxMDNhNjdhYWYwZGFlNWJlNmM1YWRjYzVjZTE5ZTViNmQ3Njc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IE1vbiwgMjcgTm92IDIwMjMgMTE6NDk6NTIgLTA2MDAKU3ViamVjdDogW1BBVENIIHYxXSBV c2UgQklPX3tnZXQsc2V0fV9hcHBfZGF0YSgpIGluc3RlYWQgb2YKIEJJT197Z2V0LHNldH1fZGF0 YSgpCgpDb21waWxpbmcgUG9zdGdyZXMgYWdhaW5zdCBPcGVuU1NMIDMuMiBleHBvc2VkIGEgcmVn cmVzc2lvbjoKCiQgcHNxbCAicG9zdGdyZXNxbDovLyREQj9zc2xtb2RlPXJlcXVpcmUiCnBzcWw6 IGVycm9yOiBjb25uZWN0aW9uIHRvIHNlcnZlciBhdCAicmVkYWN0ZWQiIChyZWRhY3RlZCksIHBv cnQgNTQzMiBmYWlsZWQ6IEVSUk9SOiAgUGFyYW1ldGVyICd1c2VyJyBpcyBtaXNzaW5nIGluIHN0 YXJ0dXAgcGFja2V0Lgpkb3VibGUgZnJlZSBvciBjb3JydXB0aW9uIChvdXQpCkFib3J0ZWQgKGNv cmUgZHVtcGVkKQoKQW5hbHl6aW5nIHRoZSBiYWNrdHJhY2UsIG9wZW5zc2wgd2FzIG92ZXJ3cml0 aW5nIGhlYXAtYWxsb2NhdGVkIGRhdGEgaW4Kb3VyIFBHY29ubiBzdHJ1Y3QgYmVjYXVzZSBpdCB0 aG91Z2h0IEJJTzo6cHRyIHdhcyBhIHN0cnVjdCBic3Nfc29ja19zdAoqLiBPcGVuU1NMIHRoZW4g Y2FsbGVkIGEgbWVtc2V0KCkgb24gYSBtZW1iZXIgb2YgdGhhdCBzdHJ1Y3QsIGFuZCB3ZQp6ZXJv ZWQgb3V0IGRhdGEgaW4gb3VyIFBHY29ubiBzdHJ1Y3QuCgpCSU9fZ2V0X2RhdGEoMykgc2F5cyB0 aGUgZm9sbG93aW5nOgoKPiBUaGVzZSBmdW5jdGlvbnMgYXJlIG1haW5seSB1c2VmdWwgd2hlbiBp bXBsZW1lbnRpbmcgYSBjdXN0b20gQklPLgo+Cj4gVGhlIEJJT19zZXRfZGF0YSgpIGZ1bmN0aW9u IGFzc29jaWF0ZXMgdGhlIGN1c3RvbSBkYXRhIHBvaW50ZWQgdG8gYnkgcHRyCj4gd2l0aCB0aGUg QklPIGEuIFRoaXMgZGF0YSBjYW4gc3Vic2VxdWVudGx5IGJlIHJldHJpZXZlZCB2aWEgYSBjYWxs IHRvCj4gQklPX2dldF9kYXRhKCkuIFRoaXMgY2FuIGJlIHVzZWQgYnkgY3VzdG9tIEJJT3MgZm9y IHN0b3JpbmcKPiBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KCklmIHlvdSB0 YWtlIGEgbG9vayBhdCBteV9CSU9fc19zb2NrZXQoKSwgd2UgY3JlYXRlIGEgcGFydGlhbGx5IGN1 c3RvbQpCSU8sIGJ1dCBmb3IgdGhlIG1vc3QgcGFydCBhcmUgZGVmYXVsdGluZyB0byB0aGUgbWV0 aG9kcyBkZWZpbmVkIGJ5CkJJT19zX3NvY2tldCgpLiBXZSBuZWVkIHRvIHNldCBhcHBsaWNhdGlv bi1zcGVjaWZpYyBkYXRhIGFuZCBub3QgQklPCnByaXZhdGUgZGF0YSwgc28gdGhhdCB0aGUgQklP IGltcGxlbWVudGF0aW9uIHdlIHJlbHkgb24sIGNhbiBwcm9wZXJseQphc3NlcnQgdGhhdCBpdHMg cHJpdmF0ZSBkYXRhIGlzIHdoYXQgaXQgZXhwZWN0cy4KCkNvLWF1dGhvcmVkLWJ5OiBCbyBBbmRy ZXNvbiA8bWFpbEBib2FuZGVyc29uLm1lPgotLS0KIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMSAtCiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNz bC5jICAgIHwgMTEgKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluICAgICAg ICAgICAgICAgfCAgMyAtLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3Ns LmMgfCAyMCArKystLS0tLS0tLS0tLS0tLS0tLQogc3JjL3Rvb2xzL21zdmMvU29sdXRpb24ucG0g ICAgICAgICAgICAgICB8ICAyIC0tCiA1IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwg MzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZApp bmRleCBlZTU4ZWU3YTA2Li4wMDk1ZmIxODNhIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysg Yi9tZXNvbi5idWlsZApAQCAtMTI4NSw3ICsxMjg1LDYgQEAgaWYgc3Nsb3B0IGluIFsnYXV0bycs ICdvcGVuc3NsJ10KICAgICAgICMgZG9lc24ndCBoYXZlIHRoZXNlIE9wZW5TU0wgMS4xLjAgZnVu Y3Rpb25zLiBTbyBjaGVjayBmb3IgaW5kaXZpZHVhbAogICAgICAgIyBmdW5jdGlvbnMuCiAgICAg ICBbJ09QRU5TU0xfaW5pdF9zc2wnXSwKLSAgICAgIFsnQklPX2dldF9kYXRhJ10sCiAgICAgICBb J0JJT19tZXRoX25ldyddLAogICAgICAgWydBU04xX1NUUklOR19nZXQwX2RhdGEnXSwKICAgICAg IFsnSE1BQ19DVFhfbmV3J10sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1 cmUtb3BlbnNzbC5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYwppbmRl eCAzMWI2YTZlYWNkLi4xYjhiMzJjNWIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9i ZS1zZWN1cmUtb3BlbnNzbC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVu c3NsLmMKQEAgLTg0MiwxMSArODQyLDYgQEAgYmVfdGxzX3dyaXRlKFBvcnQgKnBvcnQsIHZvaWQg KnB0ciwgc2l6ZV90IGxlbiwgaW50ICp3YWl0Zm9yKQogICogc2VlIHNvY2tfcmVhZCgpIGFuZCBz b2NrX3dyaXRlKCkgaW4gT3BlblNTTCdzIGNyeXB0by9iaW8vYnNzX3NvY2suYy4KICAqLwogCi0j aWZuZGVmIEhBVkVfQklPX0dFVF9EQVRBCi0jZGVmaW5lIEJJT19nZXRfZGF0YShiaW8pIChiaW8t PnB0cikKLSNkZWZpbmUgQklPX3NldF9kYXRhKGJpbywgZGF0YSkgKGJpby0+cHRyID0gZGF0YSkK LSNlbmRpZgotCiBzdGF0aWMgQklPX01FVEhPRCAqbXlfYmlvX21ldGhvZHMgPSBOVUxMOwogCiBz dGF0aWMgaW50CkBAIC04NTYsNyArODUxLDcgQEAgbXlfc29ja19yZWFkKEJJTyAqaCwgY2hhciAq YnVmLCBpbnQgc2l6ZSkKIAogCWlmIChidWYgIT0gTlVMTCkKIAl7Ci0JCXJlcyA9IHNlY3VyZV9y YXdfcmVhZCgoKFBvcnQgKikgQklPX2dldF9kYXRhKGgpKSwgYnVmLCBzaXplKTsKKwkJcmVzID0g c2VjdXJlX3Jhd19yZWFkKCgoUG9ydCAqKSBCSU9fZ2V0X2FwcF9kYXRhKGgpKSwgYnVmLCBzaXpl KTsKIAkJQklPX2NsZWFyX3JldHJ5X2ZsYWdzKGgpOwogCQlpZiAocmVzIDw9IDApCiAJCXsKQEAg LTg3Niw3ICs4NzEsNyBAQCBteV9zb2NrX3dyaXRlKEJJTyAqaCwgY29uc3QgY2hhciAqYnVmLCBp bnQgc2l6ZSkKIHsKIAlpbnQJCQlyZXMgPSAwOwogCi0JcmVzID0gc2VjdXJlX3Jhd193cml0ZSgo KFBvcnQgKikgQklPX2dldF9kYXRhKGgpKSwgYnVmLCBzaXplKTsKKwlyZXMgPSBzZWN1cmVfcmF3 X3dyaXRlKCgoUG9ydCAqKSBCSU9fZ2V0X2FwcF9kYXRhKGgpKSwgYnVmLCBzaXplKTsKIAlCSU9f Y2xlYXJfcmV0cnlfZmxhZ3MoaCk7CiAJaWYgKHJlcyA8PSAwKQogCXsKQEAgLTk1Miw3ICs5NDcs NyBAQCBteV9TU0xfc2V0X2ZkKFBvcnQgKnBvcnQsIGludCBmZCkKIAkJU1NMZXJyKFNTTF9GX1NT TF9TRVRfRkQsIEVSUl9SX0JVRl9MSUIpOwogCQlnb3RvIGVycjsKIAl9Ci0JQklPX3NldF9kYXRh KGJpbywgcG9ydCk7CisJQklPX3NldF9hcHBfZGF0YShiaW8sIHBvcnQpOwogCiAJQklPX3NldF9m ZChiaW8sIGZkLCBCSU9fTk9DTE9TRSk7CiAJU1NMX3NldF9iaW8ocG9ydC0+c3NsLCBiaW8sIGJp byk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBiL3NyYy9pbmNsdWRl L3BnX2NvbmZpZy5oLmluCmluZGV4IGQ4YTI5ODU1NjcuLjVmMTY5MTgyNDMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5o LmluCkBAIC02Niw5ICs2Niw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJh Y2t0cmFjZV9zeW1ib2xzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0JBQ0tUUkFDRV9TWU1C T0xTCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgQklPX2dldF9kYXRhJyBmdW5j dGlvbi4gKi8KLSN1bmRlZiBIQVZFX0JJT19HRVRfREFUQQotCiAvKiBEZWZpbmUgdG8gMSBpZiB5 b3UgaGF2ZSB0aGUgYEJJT19tZXRoX25ldycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9CSU9f TUVUSF9ORVcKIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9w ZW5zc2wuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMKaW5kZXgg NGFlYWYwODMxMi4uZGM1YWE3OWZlOCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUt b3BlbnNzbC5jCkBAIC0xODA2LDIwICsxODA2LDYgQEAgUFFzc2xBdHRyaWJ1dGUoUEdjb25uICpj b25uLCBjb25zdCBjaGFyICphdHRyaWJ1dGVfbmFtZSkKIAlyZXR1cm4gTlVMTDsJCQkJLyogdW5r bm93biBhdHRyaWJ1dGUgKi8KIH0KIAotLyoKLSAqIFByaXZhdGUgc3Vic3RpdHV0ZSBCSU86IHRo aXMgZG9lcyB0aGUgc2VuZGluZyBhbmQgcmVjZWl2aW5nIHVzaW5nCi0gKiBwcXNlY3VyZV9yYXdf d3JpdGUoKSBhbmQgcHFzZWN1cmVfcmF3X3JlYWQoKSBpbnN0ZWFkLCB0byBhbGxvdyB0aG9zZQot ICogZnVuY3Rpb25zIHRvIGRpc2FibGUgU0lHUElQRSBhbmQgZ2l2ZSBiZXR0ZXIgZXJyb3IgbWVz c2FnZXMgb24gSS9PIGVycm9ycy4KLSAqCi0gKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNsb3NlbHkg bW9kZWxsZWQgb24gdGhlIHN0YW5kYXJkIHNvY2tldCBCSU8gaW4gT3BlblNTTDsKLSAqIHNlZSBz b2NrX3JlYWQoKSBhbmQgc29ja193cml0ZSgpIGluIE9wZW5TU0wncyBjcnlwdG8vYmlvL2Jzc19z b2NrLmMuCi0gKi8KLQotI2lmbmRlZiBIQVZFX0JJT19HRVRfREFUQQotI2RlZmluZSBCSU9fZ2V0 X2RhdGEoYmlvKSAoYmlvLT5wdHIpCi0jZGVmaW5lIEJJT19zZXRfZGF0YShiaW8sIGRhdGEpIChi aW8tPnB0ciA9IGRhdGEpCi0jZW5kaWYKLQogLyogcHJvdGVjdGVkIGJ5IHNzbF9jb25maWdfbXV0 ZXggKi8KIHN0YXRpYyBCSU9fTUVUSE9EICpteV9iaW9fbWV0aG9kczsKIApAQCAtMTgyOCw3ICsx ODE0LDcgQEAgbXlfc29ja19yZWFkKEJJTyAqaCwgY2hhciAqYnVmLCBpbnQgc2l6ZSkKIHsKIAlp bnQJCQlyZXM7CiAKLQlyZXMgPSBwcXNlY3VyZV9yYXdfcmVhZCgoUEdjb25uICopIEJJT19nZXRf ZGF0YShoKSwgYnVmLCBzaXplKTsKKwlyZXMgPSBwcXNlY3VyZV9yYXdfcmVhZCgoUEdjb25uICop IEJJT19nZXRfYXBwX2RhdGEoaCksIGJ1Ziwgc2l6ZSk7CiAJQklPX2NsZWFyX3JldHJ5X2ZsYWdz KGgpOwogCWlmIChyZXMgPCAwKQogCXsKQEAgLTE4NTgsNyArMTg0NCw3IEBAIG15X3NvY2tfd3Jp dGUoQklPICpoLCBjb25zdCBjaGFyICpidWYsIGludCBzaXplKQogewogCWludAkJCXJlczsKIAot CXJlcyA9IHBxc2VjdXJlX3Jhd193cml0ZSgoUEdjb25uICopIEJJT19nZXRfZGF0YShoKSwgYnVm LCBzaXplKTsKKwlyZXMgPSBwcXNlY3VyZV9yYXdfd3JpdGUoKFBHY29ubiAqKSBCSU9fZ2V0X2Fw cF9kYXRhKGgpLCBidWYsIHNpemUpOwogCUJJT19jbGVhcl9yZXRyeV9mbGFncyhoKTsKIAlpZiAo cmVzIDwgMCkKIAl7CkBAIC0xOTY4LDcgKzE5NTQsNyBAQCBteV9TU0xfc2V0X2ZkKFBHY29ubiAq Y29ubiwgaW50IGZkKQogCQlTU0xlcnIoU1NMX0ZfU1NMX1NFVF9GRCwgRVJSX1JfQlVGX0xJQik7 CiAJCWdvdG8gZXJyOwogCX0KLQlCSU9fc2V0X2RhdGEoYmlvLCBjb25uKTsKKwlCSU9fc2V0X2Fw cF9kYXRhKGJpbywgY29ubik7CiAKIAlTU0xfc2V0X2Jpbyhjb25uLT5zc2wsIGJpbywgYmlvKTsK IAlCSU9fc2V0X2ZkKGJpbywgZmQsIEJJT19OT0NMT1NFKTsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9tc3ZjL1NvbHV0aW9uLnBtIGIvc3JjL3Rvb2xzL21zdmMvU29sdXRpb24ucG0KaW5kZXggOThh NWI1ZDg3Mi4uYTk4MGI1MWY1ZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL21zdmMvU29sdXRpb24u cG0KKysrIGIvc3JjL3Rvb2xzL21zdmMvU29sdXRpb24ucG0KQEAgLTIyNCw3ICsyMjQsNiBAQCBz dWIgR2VuZXJhdGVGaWxlcwogCQlIQVZFX0FUT01JQ1MgPT4gMSwKIAkJSEFWRV9BVE9NSUNfSCA9 PiB1bmRlZiwKIAkJSEFWRV9CQUNLVFJBQ0VfU1lNQk9MUyA9PiB1bmRlZiwKLQkJSEFWRV9CSU9f R0VUX0RBVEEgPT4gdW5kZWYsCiAJCUhBVkVfQklPX01FVEhfTkVXID0+IHVuZGVmLAogCQlIQVZF X0NPTVBVVEVEX0dPVE8gPT4gdW5kZWYsCiAJCUhBVkVfQ09QWUZJTEUgPT4gdW5kZWYsCkBAIC01 MDIsNyArNTAxLDYgQEAgc3ViIEdlbmVyYXRlRmlsZXMKIAkJCXx8ICgkZGlnaXQxID49ICcxJyAm JiAkZGlnaXQyID49ICcxJyAmJiAkZGlnaXQzID49ICcwJykpCiAJCXsKIAkJCSRkZWZpbmV7SEFW RV9BU04xX1NUUklOR19HRVQwX0RBVEF9ID0gMTsKLQkJCSRkZWZpbmV7SEFWRV9CSU9fR0VUX0RB VEF9ID0gMTsKIAkJCSRkZWZpbmV7SEFWRV9CSU9fTUVUSF9ORVd9ID0gMTsKIAkJCSRkZWZpbmV7 SEFWRV9ITUFDX0NUWF9GUkVFfSA9IDE7CiAJCQkkZGVmaW5le0hBVkVfSE1BQ19DVFhfTkVXfSA9 IDE7Ci0tIApUcmlzdGFuIFBhcnRpbgpOZW9uIChodHRwczovL25lb24udGVjaCkKCg== --16f5354628d5098bf29dddf1f0a819e1349616c5f4113ae7e7323c6cec04--