Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iB6yM-0007T4-KP for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2019 00:40:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iB6yK-0004l7-Q8 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2019 00:40:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iB6yK-0004ki-4f for pgsql-hackers@lists.postgresql.org; Fri, 20 Sep 2019 00:40:28 +0000 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1iB6yC-0003XA-Hu for pgsql-hackers@postgresql.org; Fri, 20 Sep 2019 00:40:26 +0000 Received: by mail-pf1-x442.google.com with SMTP id y5so3377004pfo.4 for ; Thu, 19 Sep 2019 17:40:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version; bh=5yMsA9YM3ZclL3SUtkpY0aPYuzK52Nw24jiaFO+t3Gs=; b=yKAjQPH/34S5O8PAdBassGIFOxhSxyAuhmN5yQnG03NUFBDi6DMewBBC/FoZNBJrja OGNHRDlqa9eEUKTctESb1GKbnaOyo5jqM7KkQB+CpYw1SRw6wvzwNIjGsDbmPOktxjwm ibC+oX7YvsZhctLXRWK+AVrrPXGHsce3GE5ZPKnB8ppBnsvw4fVFGRUmXYPMrxuGjDle HplmXq3Po1EBwiKNzmcFAlr4LVB7KXGDBqEjUVgfSq7QVh9t9L0G/nQBXPRYUUm5/NhA TNiw/Z5mRA5v5e119/JJ6Xi+lNWeBDLj09jHHWwNBEqURV0kkN8wWkorIkeT9bKzDqf7 E0Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version; bh=5yMsA9YM3ZclL3SUtkpY0aPYuzK52Nw24jiaFO+t3Gs=; b=DgGHWw1oZVwlMIk9qdeGIgFPjz17QNL0LSpR5mZyW+EdLu/XWE10yz/PzOFZ+rwsBB ESBE0NuAfWKTB5Y3Hhh5bEcGIX0vBAOemH1levzEJ13/pKph7AnnPiVCB48s/bTj9iP8 5sg4A78gKY72EB3LXyZPe3h+ithC7D2WtuWarGXFLAOXuyanLOAfcnzFzBZ8SfZ6Qh2I OH+7GF6SwFrw6vMz3/PTrzGjIzwWBkmHJRterX1MCVyTJLU3kMj4Si39rszz5OynH/dz 0J+Mm4secG0cJqDp2sEs0h4L/Mwgg9xAjTQOTv/UhIzsAsYff0W6fEAaOOfEyIhCzaeH jNjQ== X-Gm-Message-State: APjAAAUrnbZQjBXWoFKB1ORPoV+zblTkFdvuIpD0p6EqH6NPROg/W9iv IoaAWcT6Kb3GS9UefP487+sbvQ== X-Google-Smtp-Source: APXvYqw3wfqeRvJyFwtwRe2R1RpOlFE1CxLPIDE4tgJCobfycOuGNEmA8Upl0g1uBWDq5AvI08RXig== X-Received: by 2002:a63:4423:: with SMTP id r35mr12104054pga.235.1568940018395; Thu, 19 Sep 2019 17:40:18 -0700 (PDT) Received: from jdavis ([2600:1010:b01a:fd3a:715d:d32e:8d29:d5f1]) by smtp.gmail.com with ESMTPSA id c14sm186248pfm.179.2019.09.19.17.40.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 19 Sep 2019 17:40:17 -0700 (PDT) Message-ID: <130e2ca6a081e8352d21d386efd54d7329849e45.camel@j-davis.com> Subject: Re: Add "password_protocol" connection parameter to libpq From: Jeff Davis To: Michael Paquier Cc: "Jonathan S. Katz" , Stephen Frost , Peter Eisentraut , pgsql-hackers@postgresql.org Date: Thu, 19 Sep 2019 17:40:15 -0700 In-Reply-To: <20190917070414.GH1660@paquier.xyz> References: <20190814023857.GB14446@paquier.xyz> <54269124d50791eacb71f1fead40422185ae8ddc.camel@j-davis.com> <20190816012815.GW16436@tamriel.snowman.net> <20190819055100.GC18166@paquier.xyz> <4863222980d349a6251065ea67f00ac41dedb162.camel@j-davis.com> <20190821071224.GA26424@paquier.xyz> <20190906070501.GF1608@paquier.xyz> <54d4b3ea8ed20690fad43a988aabe897864db888.camel@j-davis.com> <20190917070414.GH1660@paquier.xyz> Content-Type: multipart/mixed; boundary="=-ilDmuLq1yDWcfy7GkQRH" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.1 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=-ilDmuLq1yDWcfy7GkQRH Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Tue, 2019-09-17 at 16:04 +0900, Michael Paquier wrote: > basically maps into checking after FE_SCRAM_FINISHED. Instead of > those two flags, wouldn't it be cleaner to add an extra routine to > fe-auth-scram.c which does the same sanity checks, say > pg_fe_scram_check_state()? This needs to be careful about three > things, taking in input an opaque pointer to fe_scram_state if > channel > binding is required: > - The data is not NULL. > - The sasl mechanism selected is SCRAM-SHA-256-PLUS. > - The state is FE_SCRAM_FINISHED. Yes, I think this does come out a bit cleaner, thank you. > What do you think? There is no need to save down the connection > parameter value into fe_scram_state. I'm not sure I understand this comment, but I removed the extra boolean flags. > Nit here as there are only two mechanisms handled: I would rather > cause the error if the selected mechanism does not match > SCRAM-SHA-256-PLUS, instead of complaining if the selected mechanism > matches SCRAM-SHA-256. Either way is actually fine :) Done. > + printfPQExpBuffer(&conn->errorMessage, > + libpq_gettext("Channel binding required but > not > offered by server\n")); > + result = false; > Should that be "completed by server" instead? Done. > is required". Or you have in mind that this error message is better? I felt it would be a more useful error message. > I think that pgindent would complain with the comment block in > check_expected_areq(). Changed. Regards, Jeff Davis --=-ilDmuLq1yDWcfy7GkQRH Content-Disposition: attachment; filename="0001-Add-libpq-parameter-channel_binding.patch" Content-Type: text/x-patch; name="0001-Add-libpq-parameter-channel_binding.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAzZmEyYWI1NTkyOTgwMzI4MDQxNjQ1NDU0OGVjOTdhOTYwZWMwMzg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDIwIEF1ZyAyMDE5IDE4OjU5OjIzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIGxpYnBx IHBhcmFtZXRlciAnY2hhbm5lbF9iaW5kaW5nJy4KCkFsbG93IGNsaWVudHMgdG8gcmVxdWlyZSBj aGFubmVsIGJpbmRpbmcgdG8gZW5oYW5jZSBzZWN1cml0eSBhZ2FpbnN0CnVudHJ1c3RlZCBzZXJ2 ZXJzLgoKQXV0aG9yOiBKZWZmIERhdmlzCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v MjI3MDE1ZDg0MTdmMmI0ZmVmMDNmODk2NmRiZmE1Y2JjYzRmNDRkYS5jYW1lbCU0MGotZGF2aXMu Y29tCi0tLQogZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgfCAzMiAr KysrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMgICAgICB8IDIy ICsrKysrLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguYyAgICAgICAgICAgIHwgNzQg KysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguaCAg ICAgICAgICAgIHwgIDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jICAgICAg ICAgfCAzNCArKysrKysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAg ICAgICAgfCAgMSArCiBzcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMl9zYXNscHJlcC5wbCB8 IDEyICsrKy0KIHNyYy90ZXN0L3NzbC90LzAwMl9zY3JhbS5wbCAgICAgICAgICAgICAgIHwgMTUg KysrKy0KIHNyYy90ZXN0L3NzbC90L1NTTFNlcnZlci5wbSAgICAgICAgICAgICAgIHwgIDkgKyst CiA5IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5z Z21sCmluZGV4IDExODkzNDFjYTE1Li5jNTg1MjdiMGMzYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAgLTExMjIsNiAr MTEyMiwyOCBAQCBwb3N0Z3Jlc3FsOi8vJTJGdmFyJTJGbGliJTJGcG9zdGdyZXNxbC9kYm5hbWUK ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9ImxpYnBxLWNvbm5lY3QtY2hhbm5lbC1iaW5kaW5nIiB4cmVmbGFiZWw9ImNoYW5u ZWxfYmluZGluZyI+CisgICAgICA8dGVybT48bGl0ZXJhbD5jaGFubmVsX2JpbmRpbmc8L2xpdGVy YWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMg b3B0aW9uIGNvbnRyb2xzIHRoZSBjbGllbnQncyB1c2Ugb2YgY2hhbm5lbCBiaW5kaW5nLiBBIHNl dHRpbmcKKyAgICAgICAgb2YgPGxpdGVyYWw+cmVxdWlyZTwvbGl0ZXJhbD4gbWVhbnMgdGhhdCB0 aGUgY29ubmVjdGlvbiBtdXN0IGVtcGxveQorICAgICAgICBjaGFubmVsIGJpbmRpbmcsIDxsaXRl cmFsPnByZWZlcjwvbGl0ZXJhbD4gbWVhbnMgdGhhdCB0aGUgY2xpZW50IHdpbGwKKyAgICAgICAg Y2hvb3NlIGNoYW5uZWwgYmluZGluZyBpZiBhdmFpbGFibGUsIGFuZCA8bGl0ZXJhbD5kaXNhYmxl PC9saXRlcmFsPgorICAgICAgICBwcmV2ZW50cyB0aGUgdXNlIG9mIGNoYW5uZWwgYmluZGluZy4g VGhlIGRlZmF1bHQKKyAgICAgICAgaXMgPGxpdGVyYWw+cHJlZmVyPC9saXRlcmFsPiBpZgorICAg ICAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGlzIGNvbXBpbGVkIHdp dGggU1NMIHN1cHBvcnQ7CisgICAgICAgIG90aGVyd2lzZSB0aGUgZGVmYXVsdCBpcyA8bGl0ZXJh bD5kaXNhYmxlPC9saXRlcmFsPi4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg ICBDaGFubmVsIGJpbmRpbmcgaXMgYSBtZXRob2QgZm9yIHRoZSBzZXJ2ZXIgdG8gYXV0aGVudGlj YXRlIGl0c2VsZiB0bworICAgICAgICB0aGUgY2xpZW50LiBJdCBpcyBvbmx5IHN1cHBvcnRlZCBv dmVyIFNTTCBjb25uZWN0aW9ucworICAgICAgICB3aXRoIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FM PC9wcm9kdWN0bmFtZT4gMTEgb3IgbGF0ZXIgc2VydmVycyB1c2luZworICAgICAgICB0aGUgPGxp dGVyYWw+U0NSQU08L2xpdGVyYWw+IGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJs aXN0ZW50cnkgaWQ9ImxpYnBxLWNvbm5lY3QtY29ubmVjdC10aW1lb3V0IiB4cmVmbGFiZWw9ImNv bm5lY3RfdGltZW91dCI+CiAgICAgICA8dGVybT48bGl0ZXJhbD5jb25uZWN0X3RpbWVvdXQ8L2xp dGVyYWw+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgpAQCAtNjg2NCw2ICs2ODg2LDE2IEBAIG15 RXZlbnRQcm9jKFBHRXZlbnRJZCBldnRJZCwgdm9pZCAqZXZ0SW5mbywgdm9pZCAqcGFzc1Rocm91 Z2gpCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogCisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PGVudmFyPlBHQ0hB Tk5FTEJJTkRJTkc8L2VudmFyPjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAg PGVudmFyPlBHQ0hBTk5FTEJJTkRJTkc8L2VudmFyPiBiZWhhdmVzIHRoZSBzYW1lIGFzIHRoZSA8 eHJlZgorICAgICAgbGlua2VuZD0ibGlicHEtY29ubmVjdC1jaGFubmVsLWJpbmRpbmciLz4gY29u bmVjdGlvbiBwYXJhbWV0ZXIuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorCiAgICAg PGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLXNjcmFtLmMKaW5kZXggN2E4MzM1YmY5ZjguLjNiNDBjNGIwODNjIDEwMDY0NAot LS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMKKysrIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jCkBAIC0xMTksNiArMTE5LDE4IEBAIHBnX2ZlX3Nj cmFtX2luaXQoUEdjb25uICpjb25uLAogCXJldHVybiBzdGF0ZTsKIH0KIAorLyoKKyAqIFJldHVy biB0cnVlIGlmIGNoYW5uZWwgYmluZGluZyB3YXMgc3VjY2Vzc2Z1bDsgZmFsc2Ugb3RoZXJ3aXNl LgorICovCitib29sCitwZ19mZV9zY3JhbV9jaGFubmVsX2JvdW5kKHZvaWQgKm9wYXEpCit7CisJ ZmVfc2NyYW1fc3RhdGUgKnN0YXRlID0gKGZlX3NjcmFtX3N0YXRlICopIG9wYXE7CisKKwlyZXR1 cm4gKHN0YXRlICE9IE5VTEwgJiYgc3RhdGUtPnN0YXRlID09IEZFX1NDUkFNX0ZJTklTSEVEICYm CisJCQlzdHJjbXAoc3RhdGUtPnNhc2xfbWVjaGFuaXNtLCBTQ1JBTV9TSEFfMjU2X1BMVVNfTkFN RSkgPT0gMCk7Cit9CisKIC8qCiAgKiBGcmVlIFNDUkFNIGV4Y2hhbmdlIHN0YXR1cwogICovCkBA IC0yMjUsOSArMjM3LDcgQEAgcGdfZmVfc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3BhcSwgY2hhciAq aW5wdXQsIGludCBpbnB1dGxlbiwKIAogCQkJLyoKIAkJCSAqIFZlcmlmeSBzZXJ2ZXIgc2lnbmF0 dXJlLCB0byBtYWtlIHN1cmUgd2UncmUgdGFsa2luZyB0byB0aGUKLQkJCSAqIGdlbnVpbmUgc2Vy dmVyLiAgWFhYOiBBIGZha2Ugc2VydmVyIGNvdWxkIHNpbXBseSBub3QgcmVxdWlyZQotCQkJICog YXV0aGVudGljYXRpb24sIHRob3VnaC4gIFRoZXJlIGlzIGN1cnJlbnRseSBubyBvcHRpb24gaW4g bGlicHEKLQkJCSAqIHRvIHJlamVjdCBhIGNvbm5lY3Rpb24sIGlmIFNDUkFNIGF1dGhlbnRpY2F0 aW9uIGRpZCBub3QgaGFwcGVuLgorCQkJICogZ2VudWluZSBzZXJ2ZXIuCiAJCQkgKi8KIAkJCWlm ICh2ZXJpZnlfc2VydmVyX3NpZ25hdHVyZShzdGF0ZSkpCiAJCQkJKnN1Y2Nlc3MgPSB0cnVlOwpA QCAtMzU4LDcgKzM2OCw3IEBAIGJ1aWxkX2NsaWVudF9maXJzdF9tZXNzYWdlKGZlX3NjcmFtX3N0 YXRlICpzdGF0ZSkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgInA9dGxzLXNlcnZlci1l bmQtcG9pbnQiKTsKIAl9CiAjaWZkZWYgSEFWRV9QR1RMU19HRVRfUEVFUl9DRVJUSUZJQ0FURV9I QVNICi0JZWxzZSBpZiAoY29ubi0+c3NsX2luX3VzZSkKKwllbHNlIGlmIChjb25uLT5zc2xfaW5f dXNlICYmIGNvbm4tPmNoYW5uZWxfYmluZGluZ1swXSAhPSAnZCcpCiAJewogCQkvKgogCQkgKiBD bGllbnQgc3VwcG9ydHMgY2hhbm5lbCBiaW5kaW5nLCBidXQgdGhpbmtzIHRoZSBzZXJ2ZXIgZG9l cyBub3QuCkBAIC0zNjksNyArMzc5LDcgQEAgYnVpbGRfY2xpZW50X2ZpcnN0X21lc3NhZ2UoZmVf c2NyYW1fc3RhdGUgKnN0YXRlKQogCWVsc2UKIAl7CiAJCS8qCi0JCSAqIENsaWVudCBkb2VzIG5v dCBzdXBwb3J0IGNoYW5uZWwgYmluZGluZy4KKwkJICogQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQg Y2hhbm5lbCBiaW5kaW5nLCBvciBoYXMgZGlzYWJsZWQgaXQuCiAJCSAqLwogCQlhcHBlbmRQUUV4 cEJ1ZmZlckNoYXIoJmJ1ZiwgJ24nKTsKIAl9CkBAIC00OTgsNyArNTA4LDcgQEAgYnVpbGRfY2xp ZW50X2ZpbmFsX21lc3NhZ2UoZmVfc2NyYW1fc3RhdGUgKnN0YXRlKQogI2VuZGlmCQkJCQkJCS8q IEhBVkVfUEdUTFNfR0VUX1BFRVJfQ0VSVElGSUNBVEVfSEFTSCAqLwogCX0KICNpZmRlZiBIQVZF X1BHVExTX0dFVF9QRUVSX0NFUlRJRklDQVRFX0hBU0gKLQllbHNlIGlmIChjb25uLT5zc2xfaW5f dXNlKQorCWVsc2UgaWYgKGNvbm4tPnNzbF9pbl91c2UgJiYgY29ubi0+Y2hhbm5lbF9iaW5kaW5n WzBdICE9ICdkJykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgImM9ZVN3cyIpOwkvKiBi YXNlNjQgb2YgInksLCIgKi8KICNlbmRpZgogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGguYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguYwppbmRl eCBhYjIyNzQyMWIzYi4uMGVmOGZhODlkMDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGguYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMKQEAgLTQy Myw2ICs0MjMsMTQgQEAgcGdfU0FTTF9pbml0KFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4p CiAKIAlpbml0UFFFeHBCdWZmZXIoJm1lY2hhbmlzbV9idWYpOwogCisJaWYgKGNvbm4tPmNoYW5u ZWxfYmluZGluZ1swXSA9PSAncicgJiYgLyogcmVxdWlyZSAqLworCQkhY29ubi0+c3NsX2luX3Vz ZSkKKwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkg IGxpYnBxX2dldHRleHQoIkNoYW5uZWwgYmluZGluZyByZXF1aXJlZCwgYnV0IFNTTCBub3QgaW4g dXNlXG4iKSk7CisJCWdvdG8gZXJyb3I7CisJfQorCiAJaWYgKGNvbm4tPnNhc2xfc3RhdGUpCiAJ ewogCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLApAQCAtNDU1LDkgKzQ2 Myw5IEBAIHBnX1NBU0xfaW5pdChQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuKQogCQkvKgog CQkgKiBTZWxlY3QgdGhlIG1lY2hhbmlzbSB0byB1c2UuICBQaWNrIFNDUkFNLVNIQS0yNTYtUExV UyBvdmVyIGFueXRoaW5nCiAJCSAqIGVsc2UgaWYgYSBjaGFubmVsIGJpbmRpbmcgdHlwZSBpcyBz ZXQgYW5kIGlmIHRoZSBjbGllbnQgc3VwcG9ydHMKLQkJICogaXQuIFBpY2sgU0NSQU0tU0hBLTI1 NiBpZiBub3RoaW5nIGVsc2UgaGFzIGFscmVhZHkgYmVlbiBwaWNrZWQuICBJZgotCQkgKiB3ZSBh ZGQgbW9yZSBtZWNoYW5pc21zLCBhIG1vcmUgcmVmaW5lZCBwcmlvcml0eSBtZWNoYW5pc20gbWln aHQKLQkJICogYmVjb21lIG5lY2Vzc2FyeS4KKwkJICogaXQgKGFuZCBkaWQgbm90IHNldCBjaGFu bmVsX2JpbmRpbmc9ZGlzYWJsZSkuIFBpY2sgU0NSQU0tU0hBLTI1NiBpZgorCQkgKiBub3RoaW5n IGVsc2UgaGFzIGFscmVhZHkgYmVlbiBwaWNrZWQuICBJZiB3ZSBhZGQgbW9yZSBtZWNoYW5pc21z LCBhCisJCSAqIG1vcmUgcmVmaW5lZCBwcmlvcml0eSBtZWNoYW5pc20gbWlnaHQgYmVjb21lIG5l Y2Vzc2FyeS4KIAkJICovCiAJCWlmIChzdHJjbXAobWVjaGFuaXNtX2J1Zi5kYXRhLCBTQ1JBTV9T SEFfMjU2X1BMVVNfTkFNRSkgPT0gMCkKIAkJewpAQCAtNDY2LDEwICs0NzQsMTEgQEAgcGdfU0FT TF9pbml0KFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4pCiAJCQkJLyoKIAkJCQkgKiBUaGUg c2VydmVyIGhhcyBvZmZlcmVkIFNDUkFNLVNIQS0yNTYtUExVUywgd2hpY2ggaXMgb25seQogCQkJ CSAqIHN1cHBvcnRlZCBieSB0aGUgY2xpZW50IGlmIGEgaGFzaCBvZiB0aGUgcGVlciBjZXJ0aWZp Y2F0ZQotCQkJCSAqIGNhbiBiZSBjcmVhdGVkLgorCQkJCSAqIGNhbiBiZSBjcmVhdGVkLCBhbmQg aWYgY2hhbm5lbF9iaW5kaW5nIGlzIG5vdCBkaXNhYmxlZC4KIAkJCQkgKi8KICNpZmRlZiBIQVZF X1BHVExTX0dFVF9QRUVSX0NFUlRJRklDQVRFX0hBU0gKLQkJCQlzZWxlY3RlZF9tZWNoYW5pc20g PSBTQ1JBTV9TSEFfMjU2X1BMVVNfTkFNRTsKKwkJCQlpZiAoY29ubi0+Y2hhbm5lbF9iaW5kaW5n WzBdICE9ICdkJykgLyogZGlzYWJsZSAqLworCQkJCQlzZWxlY3RlZF9tZWNoYW5pc20gPSBTQ1JB TV9TSEFfMjU2X1BMVVNfTkFNRTsKICNlbmRpZgogCQkJfQogCQkJZWxzZQpAQCAtNDkzLDYgKzUw MiwxNCBAQCBwZ19TQVNMX2luaXQoUEdjb25uICpjb25uLCBpbnQgcGF5bG9hZGxlbikKIAkJCXNl bGVjdGVkX21lY2hhbmlzbSA9IFNDUkFNX1NIQV8yNTZfTkFNRTsKIAl9CiAKKwlpZiAoY29ubi0+ Y2hhbm5lbF9iaW5kaW5nWzBdID09ICdyJyAmJiAvKiByZXF1aXJlICovCisJCXN0cmNtcChzZWxl Y3RlZF9tZWNoYW5pc20sIFNDUkFNX1NIQV8yNTZfUExVU19OQU1FKSAhPSAwKQorCXsKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgiY2hhbm5lbCBiaW5kaW5nIGlzIHJlcXVpcmVkLCBidXQgc2VydmVyIGRpZCBub3Qgb2ZmZXIg YW4gYXV0aGVudGljYXRpb24gbWV0aG9kIHRoYXQgc3VwcG9ydHMgY2hhbm5lbCBiaW5kaW5nXG4i KSk7CisJCWdvdG8gZXJyb3I7CisJfQorCiAJaWYgKCFzZWxlY3RlZF9tZWNoYW5pc20pCiAJewog CQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLApAQCAtNzc0LDYgKzc5MSw1 MCBAQCBwZ19wYXNzd29yZF9zZW5kYXV0aChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBhc3N3 b3JkLCBBdXRoUmVxdWVzdCBhcmVxKQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBWZXJpZnkg dGhhdCB0aGUgYXV0aGVudGljYXRpb24gcmVxdWVzdCBpcyBleHBlY3RlZCwgZ2l2ZW4gdGhlIGNv bm5lY3Rpb24KKyAqIHBhcmFtZXRlcnMuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgd2hl biB0aGUgY2xpZW50IHdpc2hlcyB0bworICogYXV0aGVudGljYXRlIHRoZSBzZXJ2ZXIgYmVmb3Jl IGFueSBzZW5zaXRpdmUgaW5mb3JtYXRpb24gaXMgZXhjaGFuZ2VkLgorICovCitzdGF0aWMgYm9v bAorY2hlY2tfZXhwZWN0ZWRfYXJlcShBdXRoUmVxdWVzdCBhcmVxLCBQR2Nvbm4gKmNvbm4pCit7 CisJYm9vbCByZXN1bHQgPSB0cnVlOworCisJLyoKKwkgKiBXaGVuIGNoYW5uZWxfYmluZGluZz1y ZXF1aXJlLCB3ZSBtdXN0IHByb3RlY3QgYWdhaW5zdCB0d28gY2FzZXM6ICgxKSB3ZQorCSAqIG11 c3Qgbm90IHJlc3BvbmQgdG8gbm9uLVNBU0wgYXV0aGVudGljYXRpb24gcmVxdWVzdHMsIHdoaWNo IG1pZ2h0IGxlYWsKKwkgKiBpbmZvcm1hdGlvbiBzdWNoIGFzIHRoZSBjbGllbnQncyBwYXNzd29y ZDsgYW5kICgyKSBldmVuIGlmIHdlIHJlY2VpdmUKKwkgKiBBVVRIX1JFUV9PSywgd2Ugc3RpbGwg bXVzdCBlbnN1cmUgdGhhdCBjaGFubmVsIGJpbmRpbmcgaGFzIGhhcHBlbmVkIGluCisJICogb3Jk ZXIgdG8gYXV0aGVudGljYXRlIHRoZSBzZXJ2ZXIuCisJICovCisJaWYgKGNvbm4tPmNoYW5uZWxf YmluZGluZ1swXSA9PSAncicgLyogcmVxdWlyZSAqLykKKwl7CisJCXN3aXRjaCAoYXJlcSkKKwkJ eworCQkJY2FzZSBBVVRIX1JFUV9TQVNMOgorCQkJY2FzZSBBVVRIX1JFUV9TQVNMX0NPTlQ6CisJ CQljYXNlIEFVVEhfUkVRX1NBU0xfRklOOgorCQkJCWJyZWFrOworCQkJY2FzZSBBVVRIX1JFUV9P SzoKKwkJCQlpZiAoIXBnX2ZlX3NjcmFtX2NoYW5uZWxfYm91bmQoY29ubi0+c2FzbF9zdGF0ZSkp CisJCQkJeworCQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJ CQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJDaGFubmVsIGJpbmRpbmcgcmVxdWlyZWQgYnV0IG5vdCBj b21wbGV0ZWQgYnkgc2VydmVyXG4iKSk7CisJCQkJCXJlc3VsdCA9IGZhbHNlOworCQkJCX0KKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKKwkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJDaGFubmVsIGJpbmRpbmcgcmVxdWly ZWQgYnV0IG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyJ3MgYXV0aGVudGljYXRpb24gcmVxdWVzdFxu IikpOworCQkJCXJlc3VsdCA9IGZhbHNlOworCQkJCWJyZWFrOworCQl9CisJfQorCisJcmV0dXJu IHJlc3VsdDsKK30KKwogLyoKICAqIHBnX2ZlX3NlbmRhdXRoCiAgKgkJY2xpZW50IGRlbXV4IHJv dXRpbmUgZm9yIHByb2Nlc3NpbmcgYW4gYXV0aGVudGljYXRpb24gcmVxdWVzdApAQCAtNzg4LDYg Kzg0OSw5IEBAIHBnX3Bhc3N3b3JkX3NlbmRhdXRoKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAq cGFzc3dvcmQsIEF1dGhSZXF1ZXN0IGFyZXEpCiBpbnQKIHBnX2ZlX3NlbmRhdXRoKEF1dGhSZXF1 ZXN0IGFyZXEsIGludCBwYXlsb2FkbGVuLCBQR2Nvbm4gKmNvbm4pCiB7CisJaWYgKCFjaGVja19l eHBlY3RlZF9hcmVxKGFyZXEsIGNvbm4pKQorCQlyZXR1cm4gU1RBVFVTX0VSUk9SOworCiAJc3dp dGNoIChhcmVxKQogCXsKIAkJY2FzZSBBVVRIX1JFUV9PSzoKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGguaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguaApp bmRleCAxMjJiYTVjY2JhZi4uMmYxYWY1M2ZiMDggMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWF1dGguaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmgKQEAg LTI2LDYgKzI2LDcgQEAgZXh0ZXJuIGNoYXIgKnBnX2ZlX2dldGF1dGhuYW1lKFBRRXhwQnVmZmVy IGVycm9yTWVzc2FnZSk7CiBleHRlcm4gdm9pZCAqcGdfZmVfc2NyYW1faW5pdChQR2Nvbm4gKmNv bm4sCiAJCQkJCQkJICBjb25zdCBjaGFyICpwYXNzd29yZCwKIAkJCQkJCQkgIGNvbnN0IGNoYXIg KnNhc2xfbWVjaGFuaXNtKTsKK2V4dGVybiBib29sIHBnX2ZlX3NjcmFtX2NoYW5uZWxfYm91bmQo dm9pZCAqb3BhcSk7CiBleHRlcm4gdm9pZCBwZ19mZV9zY3JhbV9mcmVlKHZvaWQgKm9wYXEpOwog ZXh0ZXJuIHZvaWQgcGdfZmVfc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3BhcSwgY2hhciAqaW5wdXQs IGludCBpbnB1dGxlbiwKIAkJCQkJCQkJIGNoYXIgKipvdXRwdXQsIGludCAqb3V0cHV0bGVuLApk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmluZGV4IDhiYTAxNTkzMTNjLi5hN2RiNDczNTk4MyAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAtMTI0LDYgKzEyNCwxMSBAQCBzdGF0aWMg aW50CWxkYXBTZXJ2aWNlTG9va3VwKGNvbnN0IGNoYXIgKnB1cmwsIFBRY29ubmluZm9PcHRpb24g Km9wdGlvbnMsCiAjZGVmaW5lIERlZmF1bHRUdHkJCSIiCiAjZGVmaW5lIERlZmF1bHRPcHRpb24J IiIKICNkZWZpbmUgRGVmYXVsdEF1dGh0eXBlCQkgICIiCisjaWZkZWYgVVNFX1NTTAorI2RlZmlu ZSBEZWZhdWx0Q2hhbm5lbEJpbmRpbmcJInByZWZlciIKKyNlbHNlCisjZGVmaW5lIERlZmF1bHRD aGFubmVsQmluZGluZwkiZGlzYWJsZSIKKyNlbmRpZgogI2RlZmluZSBEZWZhdWx0VGFyZ2V0U2Vz c2lvbkF0dHJzCSJhbnkiCiAjaWZkZWYgVVNFX1NTTAogI2RlZmluZSBEZWZhdWx0U1NMTW9kZSAi cHJlZmVyIgpAQCAtMjExLDYgKzIxNiwxMCBAQCBzdGF0aWMgY29uc3QgaW50ZXJuYWxQUWNvbm5p bmZvT3B0aW9uIFBRY29ubmluZm9PcHRpb25zW10gPSB7CiAJCSJEYXRhYmFzZS1QYXNzd29yZC1G aWxlIiwgIiIsIDY0LAogCW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCBwZ3Bhc3NmaWxlKX0sCiAK Kwl7ImNoYW5uZWxfYmluZGluZyIsICJQR0NIQU5ORUxCSU5ESU5HIiwgTlVMTCwgTlVMTCwKKwkg IkNoYW5uZWwtQmluZGluZyIsICIiLCA3LCAvKiBzaXplb2YoInJlcXVpcmUiKSAqLworCW9mZnNl dG9mKHN0cnVjdCBwZ19jb25uLCBjaGFubmVsX2JpbmRpbmcpfSwKKwogCXsiY29ubmVjdF90aW1l b3V0IiwgIlBHQ09OTkVDVF9USU1FT1VUIiwgTlVMTCwgTlVMTCwKIAkJIkNvbm5lY3QtdGltZW91 dCIsICIiLCAxMCwJLyogc3RybGVuKElOVDMyX01BWCkgPT0gMTAgKi8KIAlvZmZzZXRvZihzdHJ1 Y3QgcGdfY29ubiwgY29ubmVjdF90aW1lb3V0KX0sCkBAIC0xMTk3LDYgKzEyMDYsMjkgQEAgY29u bmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAkJfQogCX0KIAorCS8qCisJICogdmFsaWRhdGUg Y2hhbm5lbF9iaW5kaW5nIG9wdGlvbgorCSAqLworCWlmIChjb25uLT5jaGFubmVsX2JpbmRpbmcp CisJeworCQlpZiAoc3RyY21wKGNvbm4tPmNoYW5uZWxfYmluZGluZywgImRpc2FibGUiKSAhPSAw CisJCQkmJiBzdHJjbXAoY29ubi0+Y2hhbm5lbF9iaW5kaW5nLCAicHJlZmVyIikgIT0gMAorCQkJ JiYgc3RyY21wKGNvbm4tPmNoYW5uZWxfYmluZGluZywgInJlcXVpcmUiKSAhPSAwKQorCQl7CisJ CQljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX0JBRDsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIGNoYW5u ZWxfYmluZGluZyB2YWx1ZTogXCIlc1wiXG4iKSwKKwkJCQkJCQkgIGNvbm4tPmNoYW5uZWxfYmlu ZGluZyk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJY29ubi0+Y2hh bm5lbF9iaW5kaW5nID0gc3RyZHVwKERlZmF1bHRDaGFubmVsQmluZGluZyk7CisJCWlmICghY29u bi0+Y2hhbm5lbF9iaW5kaW5nKQorCQkJZ290byBvb21fZXJyb3I7CisJfQorCiAJLyoKIAkgKiB2 YWxpZGF0ZSBzc2xtb2RlIG9wdGlvbgogCSAqLwpAQCAtMzkwNSw2ICszOTM3LDggQEAgZnJlZVBH Y29ubihQR2Nvbm4gKmNvbm4pCiAJfQogCWlmIChjb25uLT5wZ3Bhc3NmaWxlKQogCQlmcmVlKGNv bm4tPnBncGFzc2ZpbGUpOworCWlmIChjb25uLT5jaGFubmVsX2JpbmRpbmcpCisJCWZyZWUoY29u bi0+Y2hhbm5lbF9iaW5kaW5nKTsKIAlpZiAoY29ubi0+a2VlcGFsaXZlcykKIAkJZnJlZShjb25u LT5rZWVwYWxpdmVzKTsKIAlpZiAoY29ubi0+a2VlcGFsaXZlc19pZGxlKQpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1pbnQuaAppbmRleCBkMzdiYjNjZTQwNC4uMGViNDEzMjc2NzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWludC5oCkBAIC0zNDcsNiArMzQ3LDcgQEAgc3RydWN0IHBnX2Nvbm4KIAljaGFyCSAg ICpwZ3VzZXI7CQkJLyogUG9zdGdyZXMgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLCBpZiBhbnkgKi8K IAljaGFyCSAgICpwZ3Bhc3M7CiAJY2hhcgkgICAqcGdwYXNzZmlsZTsJCS8qIHBhdGggdG8gYSBm aWxlIGNvbnRhaW5pbmcgcGFzc3dvcmQocykgKi8KKwljaGFyCSAgICpjaGFubmVsX2JpbmRpbmc7 CS8qIGNoYW5uZWwgYmluZGluZyBtb2RlIChyZXF1aXJlLHByZWZlcikgKi8KIAljaGFyCSAgICpr ZWVwYWxpdmVzOwkJLyogdXNlIFRDUCBrZWVwYWxpdmVzPyAqLwogCWNoYXIJICAgKmtlZXBhbGl2 ZXNfaWRsZTsJLyogdGltZSBiZXR3ZWVuIFRDUCBrZWVwYWxpdmVzICovCiAJY2hhcgkgICAqa2Vl cGFsaXZlc19pbnRlcnZhbDsJLyogdGltZSBiZXR3ZWVuIFRDUCBrZWVwYWxpdmUKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDAyX3Nhc2xwcmVwLnBsIGIvc3JjL3Rlc3Qv YXV0aGVudGljYXRpb24vdC8wMDJfc2FzbHByZXAucGwKaW5kZXggYzRiMzM1YzQ1ZmUuLjM3ZjZk MTljM2ExIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMl9zYXNscHJl cC5wbAorKysgYi9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMl9zYXNscHJlcC5wbApAQCAt MTQsNyArMTQsNyBAQCBpZiAoJHdpbmRvd3Nfb3MpCiB9CiBlbHNlCiB7Ci0JcGxhbiB0ZXN0cyA9 PiAxMjsKKwlwbGFuIHRlc3RzID0+IDE0OwogfQogCiAjIERlbGV0ZSBwZ19oYmEuY29uZiBmcm9t IHRoZSBnaXZlbiBub2RlLCBhZGQgYSBuZXcgZW50cnkgdG8gaXQKQEAgLTEwNCwzICsxMDQsMTMg QEAgdGVzdF9sb2dpbigkbm9kZSwgJ3Nhc2xwcmVwdGVzdDZfcm9sZScsICJmb29iYXIiLCAgICAg Mik7CiB0ZXN0X2xvZ2luKCRub2RlLCAnc2FzbHByZXB0ZXN0N19yb2xlJywgImZvb1x4ZDhceGE3 MWJhciIsIDApOwogdGVzdF9sb2dpbigkbm9kZSwgJ3Nhc2xwcmVwdGVzdDdfcm9sZScsICJmb28x XHhkOFx4YTdiYXIiLCAyKTsKIHRlc3RfbG9naW4oJG5vZGUsICdzYXNscHJlcHRlc3Q3X3JvbGUn LCAiZm9vYmFyIiwgICAgICAgICAgMik7CisKKyMgdXNpbmcgdGhlIHBhc3N3b3JkIGF1dGhlbnRp Y2F0aW9uIG1ldGhvZDsgY2hhbm5lbCBiaW5kaW5nIGNhbid0IHdvcmsKK3Jlc2V0X3BnX2hiYSgk bm9kZSwgJ3Bhc3N3b3JkJyk7CiskRU5WeyJQR0NIQU5ORUxCSU5ESU5HIn0gPSAncmVxdWlyZSc7 Cit0ZXN0X2xvZ2luKCRub2RlLCAnc2FzbHByZXB0ZXN0NGFfcm9sZScsICJhIiwgMik7CisKKyMg U1NMIG5vdCBpbiB1c2U7IGNoYW5uZWwgYmluZGluZyBzdGlsbCBjYW4ndCB3b3JrCityZXNldF9w Z19oYmEoJG5vZGUsICdzY3JhbS1zaGEtMjU2Jyk7CiskRU5WeyJQR0NIQU5ORUxCSU5ESU5HIn0g PSAncmVxdWlyZSc7Cit0ZXN0X2xvZ2luKCRub2RlLCAnc2FzbHByZXB0ZXN0NGFfcm9sZScsICJh IiwgMik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwgYi9zcmMvdGVz dC9zc2wvdC8wMDJfc2NyYW0ucGwKaW5kZXggN2M0YjgyMWNiNzguLmFmNTA4ZTc0ZjVjIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3Qv MDAyX3NjcmFtLnBsCkBAIC0xOCw3ICsxOCw3IEBAIGlmICgkRU5We3dpdGhfb3BlbnNzbH0gbmUg J3llcycpCiAJcGxhbiBza2lwX2FsbCA9PiAnU1NMIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWls ZCc7CiB9CiAKLW15ICRudW1iZXJfb2ZfdGVzdHMgPSAxOworbXkgJG51bWJlcl9vZl90ZXN0cyA9 IDU7CiAKICMgVGhpcyBpcyB0aGUgaG9zdG5hbWUgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBzZXJ2 ZXIuCiBteSAkU0VSVkVSSE9TVEFERFIgPSAnMTI3LjAuMC4xJzsKQEAgLTQyLDExICs0MiwyMiBA QCAkbm9kZS0+c3RhcnQ7CiBjb25maWd1cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbCgkbm9kZSwgJFNF UlZFUkhPU1RBRERSLCAic2NyYW0tc2hhLTI1NiIsCiAJInBhc3MiLCAic2NyYW0tc2hhLTI1NiIp Owogc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9ubHknKTsKKyRFTlZ7UEdV U0VSfSA9ICJzc2x0ZXN0dXNlciI7CiAkRU5We1BHUEFTU1dPUkR9ID0gInBhc3MiOwogJGNvbW1v bl9jb25uc3RyID0KLSAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsbW9kZT1y ZXF1aXJlIHNzbGNlcnQ9aW52YWxpZCBzc2xyb290Y2VydD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJW RVJIT1NUQUREUiI7CisgICJkYm5hbWU9dHJ1c3RkYiBzc2xtb2RlPXJlcXVpcmUgc3NsY2VydD1p bnZhbGlkIHNzbHJvb3RjZXJ0PWludmFsaWQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIjsKIAog IyBEZWZhdWx0IHNldHRpbmdzCiB0ZXN0X2Nvbm5lY3Rfb2soJGNvbW1vbl9jb25uc3RyLCAnJywg IkJhc2ljIFNDUkFNIGF1dGhlbnRpY2F0aW9uIHdpdGggU1NMIik7CiAKKyMgVGVzdCBjaGFubmVs X2JpbmRpbmcKKyRFTlZ7UEdDSEFOTkVMQklORElOR30gPSAiZGlzYWJsZSI7Cit0ZXN0X2Nvbm5l Y3Rfb2soJGNvbW1vbl9jb25uc3RyLCAnJywgIlNDUkFNIHdpdGggU1NMIGFuZCBjaGFubmVsX2Jp bmRpbmc9ZGlzYWJsZSIpOworJEVOVntQR0NIQU5ORUxCSU5ESU5HfSA9ICJyZXF1aXJlIjsKK3Rl c3RfY29ubmVjdF9vaygkY29tbW9uX2Nvbm5zdHIsICcnLCAiU0NSQU0gd2l0aCBTU0wgYW5kIGNo YW5uZWxfYmluZGluZz1yZXF1aXJlIik7CisKKyMgTm93IHRlc3Qgd2hlbiB0aGUgdXNlciBoYXMg YW4gTUQ1LWVuY3J5cHRlZCBwYXNzd29yZDsgc2hvdWxkIGZhaWwKKyRFTlZ7UEdVU0VSfSA9ICJt ZDV0ZXN0dXNlciI7Cit0ZXN0X2Nvbm5lY3RfZmFpbHMoJGNvbW1vbl9jb25uc3RyLCAnJywgcXIv Q2hhbm5lbCBiaW5kaW5nIHJlcXVpcmVkIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlcidzIGF1 dGhlbnRpY2F0aW9uIHJlcXVlc3QvLCAiTUQ1IHdpdGggU1NMIGFuZCBjaGFubmVsX2JpbmRpbmc9 cmVxdWlyZSIpOworCiBkb25lX3Rlc3RpbmcoJG51bWJlcl9vZl90ZXN0cyk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zc2wvdC9TU0xTZXJ2ZXIucG0gYi9zcmMvdGVzdC9zc2wvdC9TU0xTZXJ2ZXIu cG0KaW5kZXggZDI1YzM4ZGJiYzcuLjkyODhiNDI4MTE1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z c2wvdC9TU0xTZXJ2ZXIucG0KKysrIGIvc3JjL3Rlc3Qvc3NsL3QvU1NMU2VydmVyLnBtCkBAIC0x MDIsNiArMTAyLDcgQEAgc3ViIGNvbmZpZ3VyZV90ZXN0X3NlcnZlcl9mb3Jfc3NsCiAKIAkjIENy ZWF0ZSB0ZXN0IHVzZXJzIGFuZCBkYXRhYmFzZXMKIAkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAi Q1JFQVRFIFVTRVIgc3NsdGVzdHVzZXIiKTsKKwkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAiQ1JF QVRFIFVTRVIgbWQ1dGVzdHVzZXIiKTsKIAkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IFVTRVIgYW5vdGhlcnVzZXIiKTsKIAkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFVT RVIgeWV0YW5vdGhlcnVzZXIiKTsKIAkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIERB VEFCQVNFIHRydXN0ZGIiKTsKQEAgLTExMyw2ICsxMTQsMTAgQEAgc3ViIGNvbmZpZ3VyZV90ZXN0 X3NlcnZlcl9mb3Jfc3NsCiAJewogCQkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLAogCQkJIlNFVCBw YXNzd29yZF9lbmNyeXB0aW9uPSckcGFzc3dvcmRfZW5jJzsgQUxURVIgVVNFUiBzc2x0ZXN0dXNl ciBQQVNTV09SRCAnJHBhc3N3b3JkJzsiCisJCSAgKTsKKwkJIyBBIHNwZWNpYWwgdXNlciB0aGF0 IGFsd2F5cyBoYXMgYW4gbWQ1LWVuY3J5cHRlZCBwYXNzd29yZAorCQkkbm9kZS0+cHNxbCgncG9z dGdyZXMnLAorCQkJIlNFVCBwYXNzd29yZF9lbmNyeXB0aW9uPSdtZDUnOyBBTFRFUiBVU0VSIG1k NXRlc3R1c2VyIFBBU1NXT1JEICckcGFzc3dvcmQnOyIKIAkJKTsKIAkJJG5vZGUtPnBzcWwoJ3Bv c3RncmVzJywKIAkJCSJTRVQgcGFzc3dvcmRfZW5jcnlwdGlvbj0nJHBhc3N3b3JkX2VuYyc7IEFM VEVSIFVTRVIgYW5vdGhlcnVzZXIgUEFTU1dPUkQgJyRwYXNzd29yZCc7IgpAQCAtMTI4LDcgKzEz Myw3IEBAIHN1YiBjb25maWd1cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbAogCXByaW50ICRjb25mICJs b2dfc3RhdGVtZW50PWFsbFxuIjsKIAogCSMgZW5hYmxlIFNTTCBhbmQgc2V0IHVwIHNlcnZlciBr ZXkKLQlwcmludCAkY29uZiAiaW5jbHVkZSAnc3NsY29uZmlnLmNvbmYnIjsKKwlwcmludCAkY29u ZiAiaW5jbHVkZSAnc3NsY29uZmlnLmNvbmYnXG4iOwogCiAJY2xvc2UgJGNvbmY7CiAKQEAgLTE4 Niw2ICsxOTEsOCBAQCBzdWIgY29uZmlndXJlX2hiYV9mb3Jfc3NsCiAJb3BlbiBteSAkaGJhLCAn PicsICIkcGdkYXRhL3BnX2hiYS5jb25mIjsKIAlwcmludCAkaGJhCiAJICAiIyBUWVBFICBEQVRB QkFTRSAgICAgICAgVVNFUiAgICAgICAgICAgIEFERFJFU1MgICAgICAgICAgICAgICAgIE1FVEhP RCAgICAgICAgICAgICBPUFRJT05TXG4iOworCXByaW50ICRoYmEKKwkgICJob3N0c3NsIHRydXN0 ZGIgICAgICAgICBtZDV0ZXN0dXNlciAgICAgJHNlcnZlcmhvc3QvMzIgICAgICAgICAgICBtZDVc biI7CiAJcHJpbnQgJGhiYQogCSAgImhvc3Rzc2wgdHJ1c3RkYiAgICAgICAgIGFsbCAgICAgICAg ICAgICAkc2VydmVyaG9zdC8zMiAgICAgICAgICAgICRhdXRobWV0aG9kXG4iOwogCXByaW50ICRo YmEKLS0gCjIuMTcuMQoK --=-ilDmuLq1yDWcfy7GkQRH--