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.96) (envelope-from ) id 1wAmsC-000KZ3-1E for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 10:44:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAmsA-005Gsf-2T for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 10:44:31 +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.96) (envelope-from ) id 1wAmsA-005GsX-1I for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 10:44:31 +0000 Received: from mail-oa1-x2c.google.com ([2001:4860:4864:20::2c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAms8-00000000AJG-3DpG for pgsql-hackers@postgresql.org; Thu, 09 Apr 2026 10:44:30 +0000 Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-40429b1d8baso255707fac.0 for ; Thu, 09 Apr 2026 03:44:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775731466; cv=none; d=google.com; s=arc-20240605; b=KloiJ5b9knQS4FAGEL+z8MCqCIOZtSgFHR63EU6FfyIQviFdLTjkzpFVgbdjzD4p8t 72rp6M0PQtNiIxD/VF6F/QgsxID4EVHs+JPMkU0LGsPhW+1EH5IeCIozewqoLD8TtBGd ZYVNXsMLP+2etDcJ94vGC4Zk4jY5H1Md1iqGnTdWnqjFxsvVh8P01QD4y4pbKlVQVYtM PkVeywtL0XwU6emfECUiNI4ktKtH6RxV0LoOzkZb4+VmM/oHIUxsBPREQb0Pcu91lo7+ yKLOQcQLIYhnY0nlSqkPddG8qcuaMQXiZMgbmdf5wA4tWZHH3CZgFfmrlVT3PqS976jn XD1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ICvl3o2MSDfoqNhlttO2KJzxh4yR4MQMSBSh4fETuBY=; fh=2cswZoDB8YDxuD5NGEbdpPfixyPGDbTDKFNODbySb3w=; b=NIZLUk1G+wyJbiOiBHumib8cYT+qtuX2I9FMNRydV/kp3kJ8/VpKoStKz6jcVjUhHI 5jm9Y+u3mw8GSGseJVXGOGkfqDStZeQ7bcBPrUCo6/Hs31Jd88NXWCC3aJg46+G0dsDD EF77beVDytt/ee0iZ8zxvr+KYv5W6Lr06U9xPvRr20qB8ZW7vTuJoHGuZYQdqXnWVEvs I+gqkWsRn7vRGt1CFgkzfI/5sErAxhzO3cheMjqitltilhbyIoP2rmr+avIbV4r85lSv 6QzlzkCwyG5oZ0nYtmC9qh8NIJXPmryK2tHYGe1Dbr5bvNZKuihe4hjcqbDA8ogDv3gY 6Ozg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775731466; x=1776336266; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ICvl3o2MSDfoqNhlttO2KJzxh4yR4MQMSBSh4fETuBY=; b=euZNiAiES5OagSLh+DNPYRsVZmPEfeoraN2alPatW5vNYIAWfqve6FJlEOublKG0g1 UeyxDV+J1X+QE13pHL8wK68ip3U8mzFx7MKT7JfE5ZvsD27nO74cD0FuWNbE64f/f3vK cISObCF8d1Tl6DjdPnx6Hi1MLrJ2wu3Z131V9KEoyfRNQXo3mgmFCdigx3pF2oTTRAyi YvUlECwKFE9bXtbrPctBjBbbvG1/QKxkvUpaBSdQKv8BbB0gzoYqcQFdT3aVSpJjLW/Q Z1qRuA7uleac/T8mhRyMe5V/DMZIVbumuXjz4SFGZt8IZert0X47yvRwlau3tAFriyFz DQtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775731466; x=1776336266; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ICvl3o2MSDfoqNhlttO2KJzxh4yR4MQMSBSh4fETuBY=; b=lEVd/HToEBtGuJogt+nQBhahH7C/GmPCbEqxPPfv92tzM8ats6manWbT41/U2TNXxS G0f74/xj0huTL7QMgVBie18sENjNkS5Bb/qxOA+KYf7gFD+3fePk4iSnXlA2vUpST1Pr IaUU8tkLmdiBJ31MutIGNufq/6ayxzSqZfNlUl8pD71Rb6frtlI37BHmvQ0U7lLsjuU/ uGTm+uLtIXPh4Bb1ZeZFS/nrImRiOfK6dHiKVQeBC6h593t+T6uYYD9S6bWDiyPp8xhg WqtJv2O1/pFAamMe79kZsiXiYj9NLaq3Nvc0qZKumFgZYcaEs/8GSf3JmlVHnnTLvHjp q/0g== X-Forwarded-Encrypted: i=1; AJvYcCX+PLplTIHhMSqQdSCp+j71tPkFZ9yISm16xab/YbzRR4d4uVjdi9GiWV7mJV9BgB0jfF6gNMWh1Yt6tpiG@postgresql.org X-Gm-Message-State: AOJu0YwWT7iTUVcMCTskw4M8dChCWsTGrtR5iSkrv4VymZooJVZHY28k akq68fVao/MdgXEGSPXJUXxhXLsGSmDxHjYX23vjCY9um+B1W/2KHQ02Dt/0gsPXtIy73lli6uu 2TIJqrF0MkuWoJdUOebIcTWlLr9nkLSw= X-Gm-Gg: AeBDieuIQPvIawXHpDuxKo13uCbV3MabW6E/qXD5YMCkxjbM6x1qF8Uo78pgUeUnubp 6kYNYTT3GMUQg/orSTLU/jz8l6kZKjoZClESOap9kWhmGGWhJqhMP+NHxWOA20FZ9ySipBvZSoV H1pmszb9ENQ8o7zX6/lMBNCBJJryINg7nh7fUTFTcrL2HxUCxwPoZt5yQ1Y6VgOp/RaBQknnbRa NCG4QEeNWiLxkTp7A9FLSgd/mD6dm7ltSVLZ3dzDPvPhk2h/txFxOqBxGB8/2rqXsVwVHbJJPwj 4KDzurmb4w== X-Received: by 2002:a05:6871:3289:b0:41c:63f2:bfb8 with SMTP id 586e51a60fabf-4230fd5934bmr14570826fac.13.1775731466226; Thu, 09 Apr 2026 03:44:26 -0700 (PDT) MIME-Version: 1.0 References: <3007317.1765210195@sss.pgh.pa.us> In-Reply-To: From: Shruthi Gowda Date: Thu, 9 Apr 2026 16:14:13 +0530 X-Gm-Features: AQROBzDHy5T-y0XLWRCoLif26VU6-OHlKjfYxQcnichlCU7mpzpPHCWP7bYjX9A Message-ID: Subject: Re: [BUG] CRASH: ECPGprepared_statement() and ECPGdeallocate_all() when connection is NULL To: Nishant Sharma Cc: Mahendra Singh Thalor , Fujii Masao , Tom Lane , PostgreSQL Development Content-Type: multipart/mixed; boundary="00000000000042f163064f04b339" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000042f163064f04b339 Content-Type: multipart/alternative; boundary="00000000000042f161064f04b337" --00000000000042f161064f04b337 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 24, 2026 at 11:29=E2=80=AFAM Nishant Sharma < nishant.sharma@enterprisedb.com> wrote: > Here are some review comments on v3 patch:- > > 1. > > Change in descriptor.c file - In my opinion, we can use `if(conn)` > with ecpg_raise, like other occurrence of ecpg_get_connection() call c= heck > in this file, and not using ecpg_init(). Three reasons: a) Consistency= in > checking conn after ecpg_get_connection() call in this file with if ch= eck. > b) We don't need to remove 'ecpg_init_sqlca(sqlca);' line due to call = to > ecpg_init(). c) #2 comment below. > 2. > > If you agree with #1, then I see many other reasons for which > ECPGget_desc() returns and we can avoid ecpg_get_connection() call at = top > of that function for those reasons and keep the check at the required > location only instead of moving at top of the function. > 3. > > I see there is one more location of ecpg_get_connection() call where > there is no check of NULL conn. In function ecpg_freeStmtCacheEntry() = of > file prepare.c? I understand it's not required for a call in > ecpg_auto_prepare(), as the caller already validated that connection > string. But I think, conn in ecpg_freeStmtCacheEntry() is different fr= om > the one that was validated. > 4. > > +1 to Mahindra, new test cases specific to the crash required for this > change? > > > > Regards, > Nishant Sharma, > EDB, Pune. > https://www.enterprisedb.com/ > Thanks, Nishant, for the review. I agree with points 1 and 2 and have revised the patch accordingly. Regarding point 3, you are correct; the conn in ecpg_freeStmtCacheEntry() differs from the one validated in the caller. I have now added the necessary validation in the latest version. I have also included a test case patch covering all execution paths except for the ecpg_freeStmtCacheEntry() flow. I was unable to trigger that specific flow, and it appears none of the existing test cases cover that line either. Thanks & Regards, Shruthi K C EnterpriseDB: http://www.enterprisedb.com --00000000000042f161064f04b337 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Tue, Mar 24,= 2026 at 11:29=E2=80=AFAM Nishant Sharma <nishant.sharma@enterprisedb.com> wrote:

Here are some review = comments on v3 patch:-

  1. Change in descriptor.c file - In my o= pinion, we can use `if(conn)` with ecpg_raise, like other occurrence of ecpg_get_connection() call check in this file, and not using ecpg_init(). Three reasons: a) Consistency in checking conn after ecpg_get_connection() call in this file with if check. b) We don't need to remove 'ecpg_init_sqlca(sqlca);' line due to call to ecpg_init(). c) #2 comment below.

  2. If you agree with #1, then I see many other reasons= for which ECPGget_desc() returns and we can avoid ecpg_get_connection() call at top of that function for those reasons and keep the check at the required location only instead of moving at top of the function.

  3. I see there is one more location of ecpg_get_connection() call where there is no check of NULL conn. In function ecpg_freeStmtCacheEntry() of file prepare.c? I understand it's not required for a call in ecpg_auto_prepare(), as the caller already validated that connection string. But I think, conn in ecpg_freeStmtCacheEntry() is different from the one that was validated.

  4. +1 to Mahindra, new test cases specific to the crash required for this change?


<= span style=3D"font-size:14px">
= Regards,
Nishant Sharma,
<= span style=3D"font-size:14px">EDB, Pune.
=

Thanks, Nishant, for the review. I agree with points= 1 and 2 and have revised the patch accordingly. Regarding point 3, you are= correct; the conn in ecpg_freeStmtCacheEntry() d= iffers from the one validated in the caller. I have now added the necessary= validation in the latest version.

I have also included a test case p= atch covering all execution paths except for the ecpg_freeStmtCacheEn= try() flow. I was unable to trigger that specific flow, and it appea= rs none of the existing test cases cover that line either.


Thanks & Regards,

Shruthi K C

EnterpriseDB:=C2=A0http://www.enterprisedb.com


--00000000000042f161064f04b337-- --00000000000042f163064f04b339 Content-Type: application/octet-stream; name="v4-0001-Add-missing-connection-validation-in-ECPG.patch" Content-Disposition: attachment; filename="v4-0001-Add-missing-connection-validation-in-ECPG.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnrcg4ba0 RnJvbSA3NWVlNmI2Y2I1Zjg2MTM5ZGViN2IwZjNjYWE4YWI1ZjY5NDU1YmNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaHJ1dGhpIGdvd2RhIDxzaHJ1dGhpLmtjQGVudGVycHJpc2Vk Yi5jb20+CkRhdGU6IFdlZCwgOCBBcHIgMjAyNiAxMTozMjoxNiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjRdIEFkZCBtaXNzaW5nIGNvbm5lY3Rpb24gdmFsaWRhdGlvbiBpbiBFQ1BHCgpFQ1BHZGVh bGxvY2F0ZV9hbGwoKSwgRUNQR3ByZXBhcmVkX3N0YXRlbWVudCgpLCBFQ1BHZ2V0X2Rlc2MoKSwg YW5kCmVjcGdfZnJlZVN0bXRDYWNoZUVudHJ5KCkgY291bGQgY3Jhc2ggb3IgbWlzYmVoYXZlIHdo ZW4gb3BlcmF0aW5nIG9uCk5VTEwgb3IgaW52YWxpZCBjb25uZWN0aW9ucy4gQWRkIHByb3BlciBj b25uZWN0aW9uIHZhbGlkYXRpb24gdG8KcHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwgcG9pbnRl cnMuCi0tLQogc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL2Rlc2NyaXB0b3IuYyB8ICA4ICsr KysrKysrCiBzcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvcHJlcGFyZS5jICAgIHwgMjUgKysr KysrKysrKysrKysrKy0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGli L2Rlc2NyaXB0b3IuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9kZXNjcmlwdG9yLmMK aW5kZXggMzljZDUxMzBlYzkuLjg4ZjFlOTg1OGIwIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL2VjcGdsaWIvZGVzY3JpcHRvci5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNw Z2xpYi9kZXNjcmlwdG9yLmMKQEAgLTUwNyw2ICs1MDcsMTQgQEAgRUNQR2dldF9kZXNjKGludCBs aW5lbm8sIGNvbnN0IGNoYXIgKmRlc2NfbmFtZSwgaW50IGluZGV4LC4uLikKIAogCQkvKiBkZXNw ZXJhdGUgdHJ5IHRvIGd1ZXNzIHNvbWV0aGluZyBzZW5zaWJsZSAqLwogCQlzdG10LmNvbm5lY3Rp b24gPSBlY3BnX2dldF9jb25uZWN0aW9uKE5VTEwpOworCQlpZiAoc3RtdC5jb25uZWN0aW9uID09 IE5VTEwpCisJCXsKKwkJCWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX05PX0NPTk4sIEVDUEdfU1FM U1RBVEVfQ09OTkVDVElPTl9ET0VTX05PVF9FWElTVCwKKwkJCQkJICAgZWNwZ19nZXR0ZXh0KCJO VUxMIikpOworCQkJdmFfZW5kKGFyZ3MpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKIAkJZWNw Z19zdG9yZV9yZXN1bHQoRUNQR3Jlc3VsdCwgaW5kZXgsICZzdG10LCAmZGF0YV92YXIpOwogCiAj aWZkZWYgSEFWRV9VU0VMT0NBTEUKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNw Z2xpYi9wcmVwYXJlLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvcHJlcGFyZS5jCmlu ZGV4IDVjN2M1Mzk3NTM1Li5mOTQ4OTA0NDcyNCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv ZWNwZy9lY3BnbGliL3ByZXBhcmUuYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIv cHJlcGFyZS5jCkBAIC0zODEsOCArMzgxLDEyIEBAIGVjcGdfZGVhbGxvY2F0ZV9hbGxfY29ubihp bnQgbGluZW5vLCBlbnVtIENPTVBBVF9NT0RFIGMsIHN0cnVjdCBjb25uZWN0aW9uICpjb24pCiBi b29sCiBFQ1BHZGVhbGxvY2F0ZV9hbGwoaW50IGxpbmVubywgaW50IGNvbXBhdCwgY29uc3QgY2hh ciAqY29ubmVjdGlvbl9uYW1lKQogewotCXJldHVybiBlY3BnX2RlYWxsb2NhdGVfYWxsX2Nvbm4o bGluZW5vLCBjb21wYXQsCi0JCQkJCQkJCQllY3BnX2dldF9jb25uZWN0aW9uKGNvbm5lY3Rpb25f bmFtZSkpOworCXN0cnVjdCBjb25uZWN0aW9uICpjb24gPSBlY3BnX2dldF9jb25uZWN0aW9uKGNv bm5lY3Rpb25fbmFtZSk7CisKKwlpZiAoIWVjcGdfaW5pdChjb24sIGNvbm5lY3Rpb25fbmFtZSwg bGluZW5vKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIGVjcGdfZGVhbGxvY2F0ZV9hbGxf Y29ubihsaW5lbm8sIGNvbXBhdCwgY29uKTsKIH0KIAogY2hhciAqCkBAIC0zOTUsMTMgKzM5OSwx NSBAQCBlY3BnX3ByZXBhcmVkKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBjb25uZWN0aW9uICpj b24pCiB9CiAKIC8qIHJldHVybiB0aGUgcHJlcGFyZWQgc3RhdGVtZW50ICovCi0vKiBsaW5lbm8g aXMgbm90IHVzZWQgaGVyZSwgYnV0IGtlcHQgaW4gdG8gbm90IGJyZWFrIEFQSSAqLwogY2hhciAq CiBFQ1BHcHJlcGFyZWRfc3RhdGVtZW50KGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fbmFtZSwgY29u c3QgY2hhciAqbmFtZSwgaW50IGxpbmVubykKIHsKLQkodm9pZCkgbGluZW5vOwkJCQkvKiBrZWVw IHRoZSBjb21waWxlciBxdWlldCAqLworCXN0cnVjdCBjb25uZWN0aW9uICpjb24gPSBlY3BnX2dl dF9jb25uZWN0aW9uKGNvbm5lY3Rpb25fbmFtZSk7CisKKwlpZiAoIWVjcGdfaW5pdChjb24sIGNv bm5lY3Rpb25fbmFtZSwgbGluZW5vKSkKKwkJcmV0dXJuIE5VTEw7CiAKLQlyZXR1cm4gZWNwZ19w cmVwYXJlZChuYW1lLCBlY3BnX2dldF9jb25uZWN0aW9uKGNvbm5lY3Rpb25fbmFtZSkpOworCXJl dHVybiBlY3BnX3ByZXBhcmVkKG5hbWUsIGNvbik7CiB9CiAKIC8qCkBAIC00OTksOSArNTA1LDEy IEBAIGVjcGdfZnJlZVN0bXRDYWNoZUVudHJ5KGludCBsaW5lbm8sIGludCBjb21wYXQsCiAJY29u ID0gZWNwZ19nZXRfY29ubmVjdGlvbihlbnRyeS0+Y29ubmVjdGlvbik7CiAKIAkvKiBmcmVlIHRo ZSAncHJlcGFyZWRfc3RhdGVtZW50JyBsaXN0IGVudHJ5ICovCi0JdGhpcyA9IGVjcGdfZmluZF9w cmVwYXJlZF9zdGF0ZW1lbnQoZW50cnktPnN0bXRJRCwgY29uLCAmcHJldik7Ci0JaWYgKHRoaXMg JiYgIWRlYWxsb2NhdGVfb25lKGxpbmVubywgY29tcGF0LCBjb24sIHByZXYsIHRoaXMpKQotCQly ZXR1cm4gLTE7CisJaWYgKGNvbikKKwl7CisJCXRoaXMgPSBlY3BnX2ZpbmRfcHJlcGFyZWRfc3Rh dGVtZW50KGVudHJ5LT5zdG10SUQsIGNvbiwgJnByZXYpOworCQlpZiAodGhpcyAmJiAhZGVhbGxv Y2F0ZV9vbmUobGluZW5vLCBjb21wYXQsIGNvbiwgcHJldiwgdGhpcykpCisJCQlyZXR1cm4gLTE7 CisJfQogCiAJZW50cnktPnN0bXRJRFswXSA9ICdcMCc7CiAKLS0gCjIuNDMuMAoK --00000000000042f163064f04b339 Content-Type: application/octet-stream; name="v1_test-0001-Tests-for-NULL-connection-validation.patch" Content-Disposition: attachment; filename="v1_test-0001-Tests-for-NULL-connection-validation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnrcg7ds1 RnJvbSAyMGQzNTg0OWU4NDIzM2MyODg1ODI3MTY1NWI5MWUwOWVkZDY2ODYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaHJ1dGhpIGdvd2RhIDxzaHJ1dGhpLmtjQGVudGVycHJpc2Vk Yi5jb20+CkRhdGU6IFRodSwgOSBBcHIgMjAyNiAwODozNzozNiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjFfdGVzdF0gVGVzdHMgZm9yIE5VTEwgY29ubmVjdGlvbiB2YWxpZGF0aW9uCgotLS0KIHNy Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L01ha2VmaWxlICAgICB8ICAgMyArLQogc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvbWVzb24uYnVpbGQgIHwgICAxICsKIC4uLi9l Y3BnL3Rlc3QvY29ubmVjdC90ZXN0X251bGxfY29ubmVjdGlvbi5jICB8IDE1MCArKysrKysrKysr KysrKysrKysKIC4uLi90ZXN0L2Nvbm5lY3QvdGVzdF9udWxsX2Nvbm5lY3Rpb24ucGdjICAgICB8 ICA2OSArKysrKysrKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2VjcGdfc2NoZWR1bGUgICAg ICAgIHwgICAxICsKIC4uLi9jb25uZWN0LXRlc3RfbnVsbF9jb25uZWN0aW9uLnN0ZGVyciAgICAg ICB8ICA1MCArKysrKysKIC4uLi9jb25uZWN0LXRlc3RfbnVsbF9jb25uZWN0aW9uLnN0ZG91dCAg ICAgICB8ICAgOCArCiA3IGZpbGVzIGNoYW5nZWQsIDI4MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5l Y3QvdGVzdF9udWxsX2Nvbm5lY3Rpb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9jb25uZWN0L3Rlc3RfbnVsbF9jb25uZWN0aW9uLnBnYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3Rf bnVsbF9jb25uZWN0aW9uLnN0ZGVycgogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2Vz L2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3RfbnVsbF9jb25uZWN0aW9uLnN0ZG91dAoK ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L01ha2VmaWxlIGIv c3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvTWFrZWZpbGUKaW5kZXggMjYwMmQ1ZDI4 NmYuLjAyMTUxNzMzYzRjIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29u bmVjdC9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29ubmVjdC9NYWtl ZmlsZQpAQCAtNyw2ICs3LDcgQEAgVEVTVFMgPSB0ZXN0MSB0ZXN0MS5jIFwKICAgICAgICAgdGVz dDIgdGVzdDIuYyBcCiAgICAgICAgIHRlc3QzIHRlc3QzLmMgXAogICAgICAgICB0ZXN0NCB0ZXN0 NC5jIFwKLSAgICAgICAgdGVzdDUgdGVzdDUuYworICAgICAgICB0ZXN0NSB0ZXN0NS5jIFwKKyAg ICAgICAgdGVzdF9udWxsX2Nvbm5lY3Rpb24gdGVzdF9udWxsX2Nvbm5lY3Rpb24uYwogCiBhbGw6 ICQoVEVTVFMpCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29ubmVjdC9t ZXNvbi5idWlsZCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L21lc29uLmJ1aWxk CmluZGV4IDU5MWUwNGJjNDIyLi4xMTQ3YjRlOGY1MSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L2Nvbm5lY3QvbWVzb24uYnVpbGQKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNw Zy90ZXN0L2Nvbm5lY3QvbWVzb24uYnVpbGQKQEAgLTYsNiArNiw3IEBAIHBnY19maWxlcyA9IFsK ICAgJ3Rlc3QzJywKICAgJ3Rlc3Q0JywKICAgJ3Rlc3Q1JywKKyAgJ3Rlc3RfbnVsbF9jb25uZWN0 aW9uJywKIF0KIAogZm9yZWFjaCBwZ2NfZmlsZSA6IHBnY19maWxlcwpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvdGVzdF9udWxsX2Nvbm5lY3Rpb24uYyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L3Rlc3RfbnVsbF9jb25uZWN0aW9uLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVmMGFmMWZlMTU3Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvdGVzdF9udWxsX2Nv bm5lY3Rpb24uYwpAQCAtMCwwICsxLDE1MCBAQAorLyogUHJvY2Vzc2VkIGJ5IGVjcGcgKHJlZ3Jl c3Npb24gbW9kZSkgKi8KKy8qIFRoZXNlIGluY2x1ZGUgZmlsZXMgYXJlIGFkZGVkIGJ5IHRoZSBw cmVwcm9jZXNzb3IgKi8KKyNpbmNsdWRlIDxlY3BnbGliLmg+CisjaW5jbHVkZSA8ZWNwZ2Vycm5v Lmg+CisjaW5jbHVkZSA8c3FsY2EuaD4KKy8qIEVuZCBvZiBhdXRvbWF0aWMgaW5jbHVkZSBzZWN0 aW9uICovCisjZGVmaW5lIEVDUEdkZWJ1ZyhYLFkpIEVDUEdkZWJ1ZygoWCkrMTAwLChZKSkKKwor I2xpbmUgMSAidGVzdF9udWxsX2Nvbm5lY3Rpb24ucGdjIgorLyoKKyAqIFRoaXMgdGVzdCB2ZXJp ZmllcyB0aGF0IGVjcGcgZnVuY3Rpb25zIHByb3Blcmx5IGhhbmRsZSBOVUxMIGNvbm5lY3Rpb25z CisgKiAoaS5lLiwgd2hlbiBhIGNvbm5lY3Rpb24gbmFtZSBkb2Vzbid0IGV4aXN0IG9yIGhhcyBi ZWVuIGRpc2Nvbm5lY3RlZCkuCisgKiBCZWZvcmUgdGhlIGZpeCwgdGhlc2Ugb3BlcmF0aW9ucyB3 b3VsZCBjYXVzZSBhIHNlZ21lbnRhdGlvbiBmYXVsdC4KKyAqLworCisjaW5jbHVkZSA8c3RkbGli Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisjbGluZSAx ICIuLy4uL3JlZ3Jlc3Npb24uaCIKKworCisKKworCisKKyNsaW5lIDExICJ0ZXN0X251bGxfY29u bmVjdGlvbi5wZ2MiCisKKworaW50CittYWluKHZvaWQpCit7CisvKiBleGVjIHNxbCBiZWdpbiBk ZWNsYXJlIHNlY3Rpb24gKi8KKworCisKKworCisKKyNsaW5lIDE3ICJ0ZXN0X251bGxfY29ubmVj dGlvbi5wZ2MiCisgY2hhciAqIHF1ZXJ5ID0gIlNFTEVDVCAxIiA7CisKKyNsaW5lIDE4ICJ0ZXN0 X251bGxfY29ubmVjdGlvbi5wZ2MiCisgaW50IHZhbDFvdXRwdXQgPSAyIDsKKworI2xpbmUgMTkg InRlc3RfbnVsbF9jb25uZWN0aW9uLnBnYyIKKyBpbnQgdmFsMSA9IDEgOworCisjbGluZSAyMCAi dGVzdF9udWxsX2Nvbm5lY3Rpb24ucGdjIgorIGNoYXIgdmFsMiBbIDUgXSA9ICJkYXRhMSIgOwor CisjbGluZSAyMSAidGVzdF9udWxsX2Nvbm5lY3Rpb24ucGdjIgorIGNoYXIgKiBzdG10MSA9ICJT RUxFQ1QgKiBmcm9tIHRlc3QxIHdoZXJlIGEgPSAkMSBhbmQgYiA9ICQyIiA7CisvKiBleGVjIHNx bCBlbmQgZGVjbGFyZSBzZWN0aW9uICovCisjbGluZSAyMiAidGVzdF9udWxsX2Nvbm5lY3Rpb24u cGdjIgorCisKKwlFQ1BHZGVidWcoMSwgc3RkZXJyKTsKKworCS8qIENvbm5lY3QgdG8gdGhlIGRh dGFiYXNlICovCisJeyBFQ1BHY29ubmVjdChfX0xJTkVfXywgMCwgImVjcGcxX3JlZ3Jlc3Npb24i ICwgTlVMTCwgTlVMTCAsICJteWNvbm4iLCAwKTsgfQorI2xpbmUgMjcgInRlc3RfbnVsbF9jb25u ZWN0aW9uLnBnYyIKKworCisJLyogVGVzdCAxOiBUcnkgdG8gZ2V0IGRlc2NyaXB0b3Igb24gYSBk aXNjb25uZWN0ZWQgY29ubmVjdGlvbiAqLworCXByaW50ZigiVGVzdCAxOiBUcnkgdG8gZ2V0IGRl c2NyaXB0b3Igb24gYSBkaXNjb25uZWN0ZWQgY29ubmVjdGlvbiBcbiIpOworCXsgRUNQR2RvKF9f TElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAiY3JlYXRlIHRhYmxlIHRlc3Qx ICggYSBpbnQgLCBiIHRleHQgKSIsIEVDUEd0X0VPSVQsIEVDUEd0X0VPUlQpO30KKyNsaW5lIDMx ICJ0ZXN0X251bGxfY29ubmVjdGlvbi5wZ2MiCisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwg TlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgImluc2VydCBpbnRvIHRlc3QxICggYSAsIGIgKSB2YWx1 ZXMgKCAxICwgJ2RhdGExJyApIiwgRUNQR3RfRU9JVCwgRUNQR3RfRU9SVCk7fQorI2xpbmUgMzIg InRlc3RfbnVsbF9jb25uZWN0aW9uLnBnYyIKKworCisJRUNQR2FsbG9jYXRlX2Rlc2MoX19MSU5F X18sICJpbmRlc2MiKTsKKyNsaW5lIDM0ICJ0ZXN0X251bGxfY29ubmVjdGlvbi5wZ2MiCisKKwlF Q1BHYWxsb2NhdGVfZGVzYyhfX0xJTkVfXywgIm91dGRlc2MiKTsKKyNsaW5lIDM1ICJ0ZXN0X251 bGxfY29ubmVjdGlvbi5wZ2MiCisKKworCXsgRUNQR3ByZXBhcmUoX19MSU5FX18sIE5VTEwsIDAs ICJmb28yIiwgc3RtdDEpO30KKyNsaW5lIDM3ICJ0ZXN0X251bGxfY29ubmVjdGlvbi5wZ2MiCisK KworCXsgRUNQR3NldF9kZXNjKF9fTElORV9fLCAiaW5kZXNjIiwgMSxFQ1BHZF9kYXRhLAorCUVD UEd0X2ludCwmKHZhbDEpLChsb25nKTEsKGxvbmcpMSxzaXplb2YoaW50KSwgRUNQR2RfRU9EVCk7 Cit9CisjbGluZSAzOSAidGVzdF9udWxsX2Nvbm5lY3Rpb24ucGdjIgorCisJeyBFQ1BHc2V0X2Rl c2MoX19MSU5FX18sICJpbmRlc2MiLCAyLEVDUEdkX2RhdGEsCisJRUNQR3RfY2hhciwodmFsMiks KGxvbmcpNSwobG9uZykxLCg1KSpzaXplb2YoY2hhciksIEVDUEdkX0VPRFQpOworfQorI2xpbmUg NDAgInRlc3RfbnVsbF9jb25uZWN0aW9uLnBnYyIKKworCisJeyBFQ1BHZG8oX19MSU5FX18sIDAs IDEsIE5VTEwsIDAsIEVDUEdzdF9leGVjdXRlLCAiZm9vMiIsCisJRUNQR3RfZGVzY3JpcHRvciwg ImluZGVzYyIsIDFMLCAxTCwgMUwsIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAsIDBMLCAw TCwgMEwsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2Rlc2NyaXB0b3IsICJvdXRkZXNjIiwgMUwsIDFM LCAxTCwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9S VCk7fQorI2xpbmUgNDIgInRlc3RfbnVsbF9jb25uZWN0aW9uLnBnYyIKKworCisJeyBFQ1BHZGlz Y29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTt9CisjbGluZSA0NCAidGVzdF9udWxsX2Nvbm5l Y3Rpb24ucGdjIgorCisJeyBFQ1BHZ2V0X2Rlc2MoX19MSU5FX18sICJvdXRkZXNjIiwgMSxFQ1BH ZF9kYXRhLAorCUVDUEd0X2ludCwmKHZhbDFvdXRwdXQpLChsb25nKTEsKGxvbmcpMSxzaXplb2Yo aW50KSwgRUNQR2RfRU9EVCk7Cit9CisjbGluZSA0NSAidGVzdF9udWxsX2Nvbm5lY3Rpb24ucGdj IgorCisJcHJpbnRmKCJzcWxjYS5zcWxjb2RlID0gJWxkXG4iLCBzcWxjYS5zcWxjb2RlKTsKKwor CS8qIFRlc3QgMjogVHJ5IHRvIGRlYWxsb2NhdGUgYWxsIG9uIGEgbm9uLWV4aXN0ZW50IGNvbm5l Y3Rpb24gKi8KKwlwcmludGYoIlRlc3QgMjogZGVhbGxvY2F0ZSBhbGwgd2l0aCBub24tZXhpc3Rl bnQgY29ubmVjdGlvblxuIik7CisJeyBFQ1BHZGVhbGxvY2F0ZV9hbGwoX19MSU5FX18sIDAsICJu b25leGlzdGVudCIpO30KKyNsaW5lIDUwICJ0ZXN0X251bGxfY29ubmVjdGlvbi5wZ2MiCisKKwlw cmludGYoInNxbGNhLnNxbGNvZGUgPSAlbGRcbiIsIHNxbGNhLnNxbGNvZGUpOworCisJLyogVGVz dCAzOiBkZWFsbG9jYXRlIG9uIGRpc2Nvbm5lY3RlZCBjb25uZWN0aW9uICovCisJcHJpbnRmKCJU ZXN0IDM6IGRlYWxsb2NhdGUgYWxsIG9uIGRpc2Nvbm5lY3RlZCBjb25uZWN0aW9uXG4iKTsKKwl7 IEVDUEdkZWFsbG9jYXRlX2FsbChfX0xJTkVfXywgMCwgTlVMTCk7fQorI2xpbmUgNTUgInRlc3Rf bnVsbF9jb25uZWN0aW9uLnBnYyIKKworCXByaW50Zigic3FsY2Euc3FsY29kZSA9ICVsZFxuIiwg c3FsY2Euc3FsY29kZSk7CisKKwkvKiBUZXN0IDQ6IFVzZSBwcmVwYXJlZCBzdGF0ZW1lbnQgZnJv bSBub24tZXhpc3RlbnQgY29ubmVjdGlvbiAqLworCXByaW50ZigiVGVzdCA0OiBVc2UgcHJlcGFy ZWQgc3RhdGVtZW50IGZyb20gbm9uLWV4aXN0ZW50IGNvbm5lY3Rpb25cbiIpOworICAJeyBFQ1BH cHJlcGFyZShfX0xJTkVfXywgIm5vbmV4aXN0ZW50IiwgMCwgInN0bXQxIiwgIlNFTEVDVCAxIik7 fQorI2xpbmUgNjAgInRlc3RfbnVsbF9jb25uZWN0aW9uLnBnYyIKKworICAJLyogZGVjbGFyZSBj dXIxIGN1cnNvciBmb3IgJDEgKi8KKyNsaW5lIDYxICJ0ZXN0X251bGxfY29ubmVjdGlvbi5wZ2Mi CisKKyAJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsICJub25leGlzdGVudCIsIDAsIEVDUEdzdF9u b3JtYWwsICJkZWNsYXJlIGN1cjEgY3Vyc29yIGZvciAkMSIsIAorCUVDUEd0X2NoYXJfdmFyaWFi bGUsKEVDUEdwcmVwYXJlZF9zdGF0ZW1lbnQoIm5vbmV4aXN0ZW50IiwgInN0bXQxIiwgX19MSU5F X18pKSwobG9uZykxLChsb25nKTEsKDEpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNB VE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9JVCwgRUNQR3RfRU9SVCk7fQorI2xpbmUg NjIgInRlc3RfbnVsbF9jb25uZWN0aW9uLnBnYyIKKworCisJcHJpbnRmKCJBbGwgdGVzdHMgY29t cGxldGVkICFcbiIpOworCisJeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTt9 CisjbGluZSA2NiAidGVzdF9udWxsX2Nvbm5lY3Rpb24ucGdjIgorCisKKwlyZXR1cm4gMDsKK30K ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L3Rlc3RfbnVsbF9j b25uZWN0aW9uLnBnYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L3Rlc3RfbnVs bF9jb25uZWN0aW9uLnBnYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ODg2ZTRlYWIyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv Y29ubmVjdC90ZXN0X251bGxfY29ubmVjdGlvbi5wZ2MKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAq IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGVjcGcgZnVuY3Rpb25zIHByb3Blcmx5IGhhbmRsZSBO VUxMIGNvbm5lY3Rpb25zCisgKiAoaS5lLiwgd2hlbiBhIGNvbm5lY3Rpb24gbmFtZSBkb2Vzbid0 IGV4aXN0IG9yIGhhcyBiZWVuIGRpc2Nvbm5lY3RlZCkuCisgKiBCZWZvcmUgdGhlIGZpeCwgdGhl c2Ugb3BlcmF0aW9ucyB3b3VsZCBjYXVzZSBhIHNlZ21lbnRhdGlvbiBmYXVsdC4KKyAqLworCisj aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8u aD4KKworZXhlYyBzcWwgaW5jbHVkZSAuLi9yZWdyZXNzaW9uOworCitpbnQKK21haW4odm9pZCkK K3sKK2V4ZWMgc3FsIGJlZ2luIGRlY2xhcmUgc2VjdGlvbjsKKwljaGFyICpxdWVyeSA9ICJTRUxF Q1QgMSI7CisJaW50IHZhbDFvdXRwdXQgPSAyOworCWludCB2YWwxID0gMTsKKwljaGFyIHZhbDJb NV0gPSAiZGF0YTEiOworCWNoYXIgKnN0bXQxID0gIlNFTEVDVCAqIGZyb20gdGVzdDEgd2hlcmUg YSA9ICQxIGFuZCBiID0gJDIiOworZXhlYyBzcWwgZW5kIGRlY2xhcmUgc2VjdGlvbjsKKworCUVD UEdkZWJ1ZygxLCBzdGRlcnIpOworCisJLyogQ29ubmVjdCB0byB0aGUgZGF0YWJhc2UgKi8KKwll eGVjIHNxbCBjb25uZWN0IHRvIFJFR1JFU1NEQjEgYXMgbXljb25uOworCisJLyogVGVzdCAxOiBU cnkgdG8gZ2V0IGRlc2NyaXB0b3Igb24gYSBkaXNjb25uZWN0ZWQgY29ubmVjdGlvbiAqLworCXBy aW50ZigiVGVzdCAxOiBUcnkgdG8gZ2V0IGRlc2NyaXB0b3Igb24gYSBkaXNjb25uZWN0ZWQgY29u bmVjdGlvbiBcbiIpOworCWV4ZWMgc3FsIGNyZWF0ZSB0YWJsZSB0ZXN0MSAoYSBpbnQsIGIgdGV4 dCk7CisJZXhlYyBzcWwgaW5zZXJ0IGludG8gdGVzdDEgKGEsYikgdmFsdWVzICgxLCAnZGF0YTEn KTsKKworCWV4ZWMgc3FsIGFsbG9jYXRlIGRlc2NyaXB0b3IgaW5kZXNjOworCWV4ZWMgc3FsIGFs bG9jYXRlIGRlc2NyaXB0b3Igb3V0ZGVzYzsKKworCWV4ZWMgc3FsIHByZXBhcmUgZm9vMiBmcm9t IDpzdG10MTsKKworCWV4ZWMgc3FsIHNldCBkZXNjcmlwdG9yIGluZGVzYyB2YWx1ZSAxIERBVEEg PSA6dmFsMTsKKwlleGVjIHNxbCBzZXQgZGVzY3JpcHRvciBpbmRlc2MgdmFsdWUgMiBEQVRBID0g OnZhbDI7CisKKwlleGVjIHNxbCBleGVjdXRlIGZvbzIgdXNpbmcgc3FsIGRlc2NyaXB0b3IgaW5k ZXNjIGludG8gc3FsIGRlc2NyaXB0b3Igb3V0ZGVzYzsKKworCWV4ZWMgc3FsIGRpc2Nvbm5lY3Q7 CisJZXhlYyBzcWwgZ2V0IGRlc2NyaXB0b3Igb3V0ZGVzYyB2YWx1ZSAxIDp2YWwxb3V0cHV0ID0g REFUQTsKKwlwcmludGYoInNxbGNhLnNxbGNvZGUgPSAlbGRcbiIsIHNxbGNhLnNxbGNvZGUpOwor CisJLyogVGVzdCAyOiBUcnkgdG8gZGVhbGxvY2F0ZSBhbGwgb24gYSBub24tZXhpc3RlbnQgY29u bmVjdGlvbiAqLworCXByaW50ZigiVGVzdCAyOiBkZWFsbG9jYXRlIGFsbCB3aXRoIG5vbi1leGlz dGVudCBjb25uZWN0aW9uXG4iKTsKKwlleGVjIHNxbCBhdCBub25leGlzdGVudCBkZWFsbG9jYXRl IGFsbDsKKwlwcmludGYoInNxbGNhLnNxbGNvZGUgPSAlbGRcbiIsIHNxbGNhLnNxbGNvZGUpOwor CisJLyogVGVzdCAzOiBkZWFsbG9jYXRlIG9uIGRpc2Nvbm5lY3RlZCBjb25uZWN0aW9uICovCisJ cHJpbnRmKCJUZXN0IDM6IGRlYWxsb2NhdGUgYWxsIG9uIGRpc2Nvbm5lY3RlZCBjb25uZWN0aW9u XG4iKTsKKwlleGVjIHNxbCBkZWFsbG9jYXRlIGFsbDsKKwlwcmludGYoInNxbGNhLnNxbGNvZGUg PSAlbGRcbiIsIHNxbGNhLnNxbGNvZGUpOworCisJLyogVGVzdCA0OiBVc2UgcHJlcGFyZWQgc3Rh dGVtZW50IGZyb20gbm9uLWV4aXN0ZW50IGNvbm5lY3Rpb24gKi8KKwlwcmludGYoIlRlc3QgNDog VXNlIHByZXBhcmVkIHN0YXRlbWVudCBmcm9tIG5vbi1leGlzdGVudCBjb25uZWN0aW9uXG4iKTsK KyAgCWV4ZWMgc3FsIGF0IG5vbmV4aXN0ZW50IHByZXBhcmUgc3RtdDEgRlJPTSAiU0VMRUNUIDEi OworICAJZXhlYyBzcWwgYXQgbm9uZXhpc3RlbnQgZGVjbGFyZSBjdXIxIGN1cnNvciBmb3Igc3Rt dDE7CisgCWV4ZWMgc3FsIGF0IG5vbmV4aXN0ZW50IG9wZW4gY3VyMTsKKworCXByaW50ZigiQWxs IHRlc3RzIGNvbXBsZXRlZCAhXG4iKTsKKworCWV4ZWMgc3FsIGRpc2Nvbm5lY3Q7CisKKwlyZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9lY3BnX3NjaGVk dWxlIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2VjcGdfc2NoZWR1bGUKaW5kZXggYjc1ZTE2 ZmRlMWUuLmE3OThmMjQ5N2FiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZWNwZ19zY2hlZHVsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVs ZQpAQCAtMTMsNiArMTMsNyBAQCB0ZXN0OiBjb25uZWN0L3Rlc3QyCiB0ZXN0OiBjb25uZWN0L3Rl c3QzCiB0ZXN0OiBjb25uZWN0L3Rlc3Q0CiB0ZXN0OiBjb25uZWN0L3Rlc3Q1Cit0ZXN0OiBjb25u ZWN0L3Rlc3RfbnVsbF9jb25uZWN0aW9uCiB0ZXN0OiBwZ3R5cGVzbGliL2R0X3Rlc3QKIHRlc3Q6 IHBndHlwZXNsaWIvZHRfdGVzdDIKIHRlc3Q6IHBndHlwZXNsaWIvbnVtX3Rlc3QKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3RfbnVsbF9j b25uZWN0aW9uLnN0ZGVyciBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9jb25u ZWN0LXRlc3RfbnVsbF9jb25uZWN0aW9uLnN0ZGVycgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZjRiYzJhMDc5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvY29ubmVjdC10ZXN0X251bGxfY29ubmVjdGlvbi5zdGRl cnIKQEAgLTAsMCArMSw1MCBAQAorW05PX1BJRF06IEVDUEdkZWJ1Zzogc2V0IHRvIDEKK1tOT19Q SURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogRUNQR2Nvbm5lY3Q6 IG9wZW5pbmcgZGF0YWJhc2UgZWNwZzFfcmVncmVzc2lvbiBvbiA8REVGQVVMVD4gcG9ydCA8REVG QVVMVD4gIAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBlY3BnX2V4ZWN1dGUgb24gbGluZSAzMTogcXVlcnk6IGNyZWF0ZSB0YWJsZSB0ZXN0MSAoIGEg aW50ICwgYiB0ZXh0ICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBteWNvbm4K K1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19l eGVjdXRlIG9uIGxpbmUgMzE6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMzE6 IE9LOiBDUkVBVEUgVEFCTEUKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw CitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMzI6IHF1ZXJ5OiBpbnNlcnQgaW50byB0 ZXN0MSAoIGEgLCBiICkgdmFsdWVzICggMSAsICdkYXRhMScgKTsgd2l0aCAwIHBhcmFtZXRlcihz KSBvbiBjb25uZWN0aW9uIG15Y29ubgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTog MDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAzMjogdXNpbmcgUFFleGVjCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJv Y2Vzc19vdXRwdXQgb24gbGluZSAzMjogT0s6IElOU0VSVCAwIDEKK1tOT19QSURdOiBzcWxjYTog Y29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogcHJlcGFyZV9jb21tb24gb24gbGluZSAz NzogbmFtZSBmb28yOyBxdWVyeTogIlNFTEVDVCAqIGZyb20gdGVzdDEgd2hlcmUgYSA9ICQxIGFu ZCBiID0gJDIiCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDQyOiBxdWVyeTogU0VMRUNUICogZnJvbSB0ZXN0MSB3 aGVyZSBhID0gJDEgYW5kIGIgPSAkMjsgd2l0aCAyIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9u IG15Y29ubgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBlY3BnX2V4ZWN1dGUgb24gbGluZSA0MjogdXNpbmcgUFFleGVjUHJlcGFyZWQgZm9yICJTRUxF Q1QgKiBmcm9tIHRlc3QxIHdoZXJlIGEgPSAkMSBhbmQgYiA9ICQyIgorW05PX1BJRF06IHNxbGNh OiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2ZyZWVfcGFyYW1zIG9uIGxp bmUgNDI6IHBhcmFtZXRlciAxID0gMQorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTog MDAwMDAKK1tOT19QSURdOiBlY3BnX2ZyZWVfcGFyYW1zIG9uIGxpbmUgNDI6IHBhcmFtZXRlciAy ID0gZGF0YTEKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDQyOiBjb3JyZWN0bHkgZ290IDEgdHVwbGVz IHdpdGggMiBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDQyOiBwdXR0aW5nIHJlc3VsdCAo MSB0dXBsZXMpIGludG8gZGVzY3JpcHRvciBvdXRkZXNjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6 IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGRlYWxsb2NhdGVfb25lIG9uIGxpbmUgMDogbmFt ZSBmb28yCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06 IGVjcGdfZmluaXNoOiBjb25uZWN0aW9uIG15Y29ubiBjbG9zZWQKK1tOT19QSURdOiBzcWxjYTog Y29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogRUNQR2dldF9kZXNjOiByZWFkaW5nIGl0 ZW1zIGZvciB0dXBsZSAxCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IHJhaXNpbmcgc3FsY29kZSAtMjIwIG9uIGxpbmUgNDU6IGNvbm5lY3Rpb24gIk5V TEwiIGRvZXMgbm90IGV4aXN0IG9uIGxpbmUgNDUKK1tOT19QSURdOiBzcWxjYTogY29kZTogLTIy MCwgc3RhdGU6IDA4MDAzCitbTk9fUElEXTogcmFpc2luZyBzcWxjb2RlIC0yMjAgb24gbGluZSA1 MDogY29ubmVjdGlvbiAibm9uZXhpc3RlbnQiIGRvZXMgbm90IGV4aXN0IG9uIGxpbmUgNTAKK1tO T19QSURdOiBzcWxjYTogY29kZTogLTIyMCwgc3RhdGU6IDA4MDAzCitbTk9fUElEXTogcmFpc2lu ZyBzcWxjb2RlIC0yMjAgb24gbGluZSA1NTogY29ubmVjdGlvbiAiTlVMTCIgZG9lcyBub3QgZXhp c3Qgb24gbGluZSA1NQorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAtMjIwLCBzdGF0ZTogMDgwMDMK K1tOT19QSURdOiByYWlzaW5nIHNxbGNvZGUgLTIyMCBvbiBsaW5lIDYwOiBjb25uZWN0aW9uICJu b25leGlzdGVudCIgZG9lcyBub3QgZXhpc3Qgb24gbGluZSA2MAorW05PX1BJRF06IHNxbGNhOiBj b2RlOiAtMjIwLCBzdGF0ZTogMDgwMDMKK1tOT19QSURdOiByYWlzaW5nIHNxbGNvZGUgLTIyMCBv biBsaW5lIDYzOiBjb25uZWN0aW9uICJub25leGlzdGVudCIgZG9lcyBub3QgZXhpc3Qgb24gbGlu ZSA2MworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAtMjIwLCBzdGF0ZTogMDgwMDMKK1tOT19QSURd OiByYWlzaW5nIHNxbGNvZGUgLTIyMCBvbiBsaW5lIDYyOiBjb25uZWN0aW9uICJub25leGlzdGVu dCIgZG9lcyBub3QgZXhpc3Qgb24gbGluZSA2MgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAtMjIw LCBzdGF0ZTogMDgwMDMKK1tOT19QSURdOiByYWlzaW5nIHNxbGNvZGUgLTIyMCBvbiBsaW5lIDY2 OiBjb25uZWN0aW9uICJDVVJSRU5UIiBkb2VzIG5vdCBleGlzdCBvbiBsaW5lIDY2CitbTk9fUElE XTogc3FsY2E6IGNvZGU6IC0yMjAsIHN0YXRlOiAwODAwMwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL2Nvbm5lY3QtdGVzdF9udWxsX2Nvbm5lY3Rpb24uc3Rk b3V0IGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL2Nvbm5lY3QtdGVzdF9udWxs X2Nvbm5lY3Rpb24uc3Rkb3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5hODQ1YzczNmEwYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9leHBlY3RlZC9jb25uZWN0LXRlc3RfbnVsbF9jb25uZWN0aW9uLnN0ZG91dApAQCAtMCwwICsx LDggQEAKK1Rlc3QgMTogVHJ5IHRvIGdldCBkZXNjcmlwdG9yIG9uIGEgZGlzY29ubmVjdGVkIGNv bm5lY3Rpb24gCitzcWxjYS5zcWxjb2RlID0gLTIyMAorVGVzdCAyOiBkZWFsbG9jYXRlIGFsbCB3 aXRoIG5vbi1leGlzdGVudCBjb25uZWN0aW9uCitzcWxjYS5zcWxjb2RlID0gLTIyMAorVGVzdCAz OiBkZWFsbG9jYXRlIGFsbCBvbiBkaXNjb25uZWN0ZWQgY29ubmVjdGlvbgorc3FsY2Euc3FsY29k ZSA9IC0yMjAKK1Rlc3QgNDogVXNlIHByZXBhcmVkIHN0YXRlbWVudCBmcm9tIG5vbi1leGlzdGVu dCBjb25uZWN0aW9uCitBbGwgdGVzdHMgY29tcGxldGVkICEKLS0gCjIuNDMuMAoK --00000000000042f163064f04b339--