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 1wD17g-002WTc-2q for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Apr 2026 14:21:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wD17e-00HLNK-39 for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Apr 2026 14:21:43 +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.96) (envelope-from ) id 1wD13r-00Gk5w-32 for pgsql-hackers@lists.postgresql.org; Wed, 15 Apr 2026 14:17:49 +0000 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCwzA-000000017Mr-2V9q for pgsql-hackers@postgresql.org; Wed, 15 Apr 2026 09:56:42 +0000 Received: by mail-ot1-x32d.google.com with SMTP id 46e09a7af769-7d556c1a79eso8986951a34.3 for ; Wed, 15 Apr 2026 02:56:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776247000; cv=none; d=google.com; s=arc-20240605; b=f2Qa6rkdmrH/BFTcjK2gl7Ukyx2lPYGgEfBMPX3rZxfKZAlt3gLC0Jvtd1w4N6gXuq evB2AqNxkBPBnmpEssWfp/1FEWGiV8vCVCeCIYQZEOwqED7m0WMfhGuNeUnrqOwGUsJ2 mY578AA7/zCD6da3/ZTy64hEuDNnao19mQA3FlT8z05ViNw0iYS23907UESDwtCk/Kzz kTgAekuX8Rg/zRIsyUu9qfVKmQIL3d/Aa1i2WbuQQ9/0vYf9dTfhxilKWl/Xv47Hu4SF gXLCp6CtVeu9dd7hFAkw8jUf/pF8Ldg7Y2L/Rv2nBHlA0WTyCor+Tb+s5ceY9KO/WKv2 TJxg== 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=I2VOEZP9pDTZxktoHZZt1/m3nKZwTARgOlRxPMtVF9Y=; fh=yDzHwdJOlxRotreQblBCw0azg+C5kRL1gOm5Czk7c24=; b=FtAx829AuJStfu6SbC+4MAwfVg4UV74YPiGJUB06OrqWuoogX+FSQLD1qIft+bQqyF aO+W87XkP0oArsNoj3zJ28LP49s0AYvxA+4vb72/Ecn8nBnNNbkvRo+VX+LNVGJ3nZY4 V+9uXWAe2vqo1ncBzF4hl0Mn18kWaH7nONBOHatSS4bLO5NqzApQZg5LYQhIumfxtOLz AFq3C/P8GZCq7PgU7eM19MttawfWZe+tEKGCC3QDP1w0ctlQ3C000z2qrqVEbNCG13g3 ni4oJH8774idwa233oESlzQ6tyIx+PnZ3+YLV9kZdlKlc7dI+ZzDEookvb6oipqvqesS FUaQ==; 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=1776247000; x=1776851800; 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=I2VOEZP9pDTZxktoHZZt1/m3nKZwTARgOlRxPMtVF9Y=; b=HVHw1TYeTNBsGnlTajR4JCQek/kfk9lsBf0n+6d2euypnCoZNOM4pp5HKLHnqv5m+3 3QVyczXxVe60vWLah7kzO5s0i/KeaYSGAm875l1taBwLy69qAJ8rbf5+sdSqft4fZ2Bo QgDskJ5MzliGY13JYjzFWyO9Ewf/HB9QcSlFwTdhu732aJST0+QrGH9DxopgzyuTBvii dUDXwKBuVTcFvsZHHQz+zdiuaKzsVr6nrduo+AHDRaC/syb2Kr2B7EiG9CUWmK4/YUFN 8hbr8Df5IfgOrvdJeAtUWY985n/krfhryBWw9kcOAyI/LY/gmTGO6Z/xVvGTCX0KU9xN uF8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776247000; x=1776851800; 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=I2VOEZP9pDTZxktoHZZt1/m3nKZwTARgOlRxPMtVF9Y=; b=dkqZR73WrCdBMOlwXo37FTXF+DyQM98DccOxqlmnJjWnTOEjc7jGx5BwVfm1qQ1bp1 noEMbxQxqssYzIDu7zQqsBpkcr8PDqsKHFr7Sw7sWEsyktRtyzSYAQU3JHPLkaepiVJ7 M7ofjnn1SkmxRnvsOPN/YHQfqE+jQgQtXPOUAq1DBEQAGY1w7S9kjyGM54rtMREKLWYU 5iECYukuzWESLF8GyeAbRqAK6ec3sh3V5Rh2h+A5lEGih/FY63hBT+081dYCtuVUFSa/ yIDzarQOvqKN3+7ah9qZOvqJK8gcbG4Um8rJdL5nWE9A/fna/V0hYU4iOFct3CRbYq0V vzYw== X-Forwarded-Encrypted: i=1; AFNElJ95NxuAXoO9DL0OwR4EPk6oaFrHpCcnKRtEHIRhe2CNe3NYHfrVe/1PsMejH22+ilXaQ2wG8jlFyCDowewQ@postgresql.org X-Gm-Message-State: AOJu0YyfxsjUiWN468D1TfbGGEbMJNPDvEACgjYm5gTh5+cEi0JOve1H kw/Tsz4MLHaPuAkYiMFIMevzAZ4Ktw6ctcxfphsvjvpqJbxcn9XE3cFH8g2+tq8XpQvlLYUd+37 iyL972T9xE+7Qb92Sftk8Vp2cpgPVn7c= X-Gm-Gg: AeBDiesRCOnhGdbVxCokldOKghLvgBq2ZfCHS3eflhDLeDnsEyq6gKo+4hLX/eAVOq4 c68yxHewx9rG7NK0cCXcluNOY/aBw3g1SSeu+sdJBJR8nf9Xt561+26M1WybCRjitgKXZ3K6prA DlNWMfGZQTCs7bnHL7feCIzxzUBcMHQAhgpO7UE1Z4ZBb3kWiV/OtmzqZ0C/3mutQIk+4lQsWYF RmSRMnB0721y1rj6weODRzQYLqRruDFiZScC98du8vQft0ehKIPFY8Jru9g9KI6UJtv7RyJ7Byj w5rw4QU7yA== X-Received: by 2002:a05:6830:2701:b0:7d9:f50f:9691 with SMTP id 46e09a7af769-7dc27a32237mr12804466a34.0.1776247000234; Wed, 15 Apr 2026 02:56:40 -0700 (PDT) MIME-Version: 1.0 References: <3007317.1765210195@sss.pgh.pa.us> In-Reply-To: From: Shruthi Gowda Date: Wed, 15 Apr 2026 15:26:27 +0530 X-Gm-Features: AQROBzCwKf7LjX9cqF3MLgkDMOJGzmzbquay94ShiwghoUpFrkaN2puQs93Gpzo 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="0000000000007ba678064f7cbb55" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007ba678064f7cbb55 Content-Type: multipart/alternative; boundary="0000000000007ba677064f7cbb53" --0000000000007ba677064f7cbb53 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 13, 2026 at 4:00=E2=80=AFPM Nishant Sharma < nishant.sharma@enterprisedb.com> wrote: > Thanks Shruthi, for the new patches! > > > Here are some review comments:- > 1. I think we should rename "test_null_connection.pgc" to "test6.pgc", an= d > make other required changes appropriately. We can see existing test files > uses test1.pgc, test2.pgc ..., test5.pgc as naming convention, and has te= st > description inside the file. > 2. No need to add test_null_connection.c as commit file in > src/interfaces/ecpg/test/connect/ folder, we don't see such C src files f= or > other existing test files like test1.c, test2.c ..., test5.c. It is part = of > src/interfaces/ecpg/test/connect/.gitignore. So, need to add test6.c and > its executable test6 like others in > src/interfaces/ecpg/test/connect/.gitignore > 3. After doing #2 above make sure to create the test9.c C src file as > src/interfaces/ecpg/test/expected/connect-test6.c, I can see other existi= ng > connect tests C src files in src/interfaces/ecpg/test/expected/ folder. > 3. Not able to run "make -j 8 installcheck" on my setup, fails due to #3. > 4. Extra space at the end (don't see that in other tested cases prints) : > printf("Test 1: Try to get descriptor on a disconnected connection \n"); > 5. char *query =3D "SELECT 1" -- unused in new test file added. > 6. "if (stmt.connection =3D=3D NULL)" --> "if (!stmt.connection)"? > 7. Should we return -1 in else of new fix added in > ecpg_freeStmtCacheEntry()? If 'con' is NULL, why clean up the cache? Is > returning -1 more defensive than cleaning the cache? > 8. Do we need to clean up "stmt.oldlocale =3D ecpg_strdup(...)" and undo > setlocale() before returning from the newly added fix in ECPGget_desc()? > > > Regards, > Nishant Sharma, > EDB, Pune. > https://www.enterprisedb.com/ > > On Thu, Apr 9, 2026 at 4:14=E2=80=AFPM Shruthi Gowda wrote: > >> >> >> 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= check >>> in this file, and not using ecpg_init(). Three reasons: a) Consisten= cy 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 cal= l 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 a= t top >>> of that function for those reasons and keep the check at the require= d >>> 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? >>> >>> >>> >>> 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 >> > Thanks for the review Nishant. I have updated the test case patch to address comments 1=E2=80=935. Regarding points 6=E2=80=938, please see my d= etailed responses below: 6. "if (stmt.connection =3D=3D NULL)" --> "if (!stmt.connection)"? --> Both formats are used interchangeably in the ecpg code. I=E2=80=99d= prefer to stick with the explicit null check here 7. Should we return -1 in else of new fix added in ecpg_freeStmtCacheEntry()? If 'con' is NULL, why clean up the cache? Is returning -1 more defensive than cleaning the cache? --> The cache entry cleanup must happen regardless of whether the connection exists, because: - The cache slot is being reclaimed for a new statement - Memory must be freed to avoid leaks - A disconnected connection means the entry is stale and must be cleaned The NULL check protects against crashes while still performing necessary cleanup. 8. Do we need to clean up "stmt.oldlocale =3D ecpg_strdup(...)" and undo setlocale() before returning from the newly added fix in ECPGget_desc()? Great point! To avoid this cleanup complexity, I moved the connection check before the locale setup so the early return happens before any resources are allocated. Thanks & Regards, Shruthi K C EnterpriseDB: http://www.enterprisedb.com --0000000000007ba677064f7cbb53 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Mon, Apr 13,= 2026 at 4:00=E2=80=AFPM Nishant Sharma <nishant.sharma@enterprisedb.com> wrote:
Thanks = Shruthi, for the new patches!


Here are so= me review comments:-
1. I think we should rename "test_null_connect= ion.pgc" to "test6.pgc", and make other required changes app= ropriately. We can see existing test files uses test1.pgc, test2.pgc ..., t= est5.pgc as naming convention, and has test description inside the file.2. No need to add test_null_connection.c as commit file in src/interfaces/= ecpg/test/connect/ folder, we don't see such C src files for other exis= ting test files like test1.c, test2.c ..., test5.c. It is part of src/inter= faces/ecpg/test/connect/.gitignore. So, need to add test6.c and its executa= ble test6 like others in src/interfaces/ecpg/test/connect/.gitignore
3. = After doing #2 above make sure to create the test9.c C src file as src/inte= rfaces/ecpg/test/expected/connect-test6.c, I can see other existing connect= tests C src files in src/interfaces/ecpg/test/expected/ folder.
3. Not = able to run "make -j 8 installcheck" on my setup, fails due to #3= .
4. Extra space at the end (don't see that in other tested cases pr= ints) : printf("Test 1: Try to get descriptor on a disconnected connec= tion \n");
5. char *query =3D "SELECT 1" -- unused in new= test file added.
6. "if (stmt.connection =3D=3D NULL)" -->= "if (!stmt.connection)"?
7. Should we return -1 in else of ne= w fix added in ecpg_freeStmtCacheEntry()? If 'con' is NULL, why cle= an up the cache? Is returning -1 more defensive than cleaning the cache?8. Do we need to clean up "stmt.oldlocale =3D ecpg_strdup(...)" = and undo setlocale() before returning from the newly added fix in ECPGget_d= esc()?


Regards,
Nishant S= harma,
EDB, Pune.

On Thu, Apr 9, 2026 at 4:14=E2=80=AFPM Shruth= i Gowda <gowdas= hru@gmail.com> wrote:


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

Here are som= e 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 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


=C2=A0 - The cache slo= t is being reclaimed for a new statement
=C2=A0 - Memory must be freed t= o avoid leaks =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
= =C2=A0 - A disconnected connection means the entry is stale and must be cle= aned
=C2=A0 =C2=A0The NULL check protects against crashes while still pe= rforming necessary cleanup.
--0000000000007ba677064f7cbb53-- --0000000000007ba678064f7cbb55 Content-Type: application/octet-stream; name="v5-0001-Add-missing-connection-validation-in-ECPG.patch" Content-Disposition: attachment; filename="v5-0001-Add-missing-connection-validation-in-ECPG.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnzvkvqz0 RnJvbSA4NThlMmJjOGVjZGU3MGI3MDQxNzNkMjg5OTNhOTc3NDEwMTM2ZGFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaHJ1dGhpIGdvd2RhIDxzaHJ1dGhpLmtjQGVudGVycHJpc2Vk Yi5jb20+CkRhdGU6IFdlZCwgMTUgQXByIDIwMjYgMDg6MzQ6MTggKzAwMDAKU3ViamVjdDogW1BB VENIIHY1XSBBZGQgbWlzc2luZyBjb25uZWN0aW9uIHZhbGlkYXRpb24gaW4gRUNQRwoKRUNQR2Rl YWxsb2NhdGVfYWxsKCksIEVDUEdwcmVwYXJlZF9zdGF0ZW1lbnQoKSwgRUNQR2dldF9kZXNjKCks IGFuZAplY3BnX2ZyZWVTdG10Q2FjaGVFbnRyeSgpIGNvdWxkIGNyYXNoIG9yIG1pc2JlaGF2ZSB3 aGVuIG9wZXJhdGluZyBvbgpOVUxMIG9yIGludmFsaWQgY29ubmVjdGlvbnMuIEFkZCBwcm9wZXIg Y29ubmVjdGlvbiB2YWxpZGF0aW9uIHRvCnByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMIHBvaW50 ZXJzLgotLS0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9kZXNjcmlwdG9yLmMgfCAxMiAr KysrKysrKysrLS0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9wcmVwYXJlLmMgICAgfCAy NSArKysrKysrKysrKysrKysrLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9u cygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9l Y3BnbGliL2Rlc2NyaXB0b3IuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9kZXNjcmlw dG9yLmMKaW5kZXggMzljZDUxMzBlYzkuLjFhZDVmMmQ4OGNjIDEwMDY0NAotLS0gYS9zcmMvaW50 ZXJmYWNlcy9lY3BnL2VjcGdsaWIvZGVzY3JpcHRvci5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvZWNwZ2xpYi9kZXNjcmlwdG9yLmMKQEAgLTQ3Niw2ICs0NzYsMTYgQEAgRUNQR2dldF9kZXNj KGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKmRlc2NfbmFtZSwgaW50IGluZGV4LC4uLikKIAkJbWVt c2V0KCZzdG10LCAwLCBzaXplb2Ygc3RtdCk7CiAJCXN0bXQubGluZW5vID0gbGluZW5vOwogCisJ CS8qIGRlc3BlcmF0ZSB0cnkgdG8gZ3Vlc3Mgc29tZXRoaW5nIHNlbnNpYmxlICovCisJCXN0bXQu Y29ubmVjdGlvbiA9IGVjcGdfZ2V0X2Nvbm5lY3Rpb24oTlVMTCk7CisJCWlmIChzdG10LmNvbm5l Y3Rpb24gPT0gTlVMTCkKKwkJeworCQkJZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfTk9fQ09OTiwg RUNQR19TUUxTVEFURV9DT05ORUNUSU9OX0RPRVNfTk9UX0VYSVNULAorCQkJCQkgICBlY3BnX2dl dHRleHQoIk5VTEwiKSk7CisJCQl2YV9lbmQoYXJncyk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0K KwogCQkvKiBNYWtlIHN1cmUgd2UgZG8gTk9UIGhvbm9yIHRoZSBsb2NhbGUgZm9yIG51bWVyaWMg aW5wdXQgKi8KIAkJLyogc2luY2UgdGhlIGRhdGFiYXNlIGdpdmVzIHRoZSBzdGFuZGFyZCBkZWNp bWFsIHBvaW50ICovCiAJCS8qIChzZWUgY29tbWVudHMgaW4gZXhlY3V0ZS5jKSAqLwpAQCAtNTA1 LDggKzUxNSw2IEBAIEVDUEdnZXRfZGVzYyhpbnQgbGluZW5vLCBjb25zdCBjaGFyICpkZXNjX25h bWUsIGludCBpbmRleCwuLi4pCiAJCXNldGxvY2FsZShMQ19OVU1FUklDLCAiQyIpOwogI2VuZGlm CiAKLQkJLyogZGVzcGVyYXRlIHRyeSB0byBndWVzcyBzb21ldGhpbmcgc2Vuc2libGUgKi8KLQkJ c3RtdC5jb25uZWN0aW9uID0gZWNwZ19nZXRfY29ubmVjdGlvbihOVUxMKTsKIAkJZWNwZ19zdG9y ZV9yZXN1bHQoRUNQR3Jlc3VsdCwgaW5kZXgsICZzdG10LCAmZGF0YV92YXIpOwogCiAjaWZkZWYg SEFWRV9VU0VMT0NBTEUKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9w cmVwYXJlLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvcHJlcGFyZS5jCmluZGV4IDVj N2M1Mzk3NTM1Li5mOTQ4OTA0NDcyNCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9l Y3BnbGliL3ByZXBhcmUuYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvcHJlcGFy ZS5jCkBAIC0zODEsOCArMzgxLDEyIEBAIGVjcGdfZGVhbGxvY2F0ZV9hbGxfY29ubihpbnQgbGlu ZW5vLCBlbnVtIENPTVBBVF9NT0RFIGMsIHN0cnVjdCBjb25uZWN0aW9uICpjb24pCiBib29sCiBF Q1BHZGVhbGxvY2F0ZV9hbGwoaW50IGxpbmVubywgaW50IGNvbXBhdCwgY29uc3QgY2hhciAqY29u bmVjdGlvbl9uYW1lKQogewotCXJldHVybiBlY3BnX2RlYWxsb2NhdGVfYWxsX2Nvbm4obGluZW5v LCBjb21wYXQsCi0JCQkJCQkJCQllY3BnX2dldF9jb25uZWN0aW9uKGNvbm5lY3Rpb25fbmFtZSkp OworCXN0cnVjdCBjb25uZWN0aW9uICpjb24gPSBlY3BnX2dldF9jb25uZWN0aW9uKGNvbm5lY3Rp b25fbmFtZSk7CisKKwlpZiAoIWVjcGdfaW5pdChjb24sIGNvbm5lY3Rpb25fbmFtZSwgbGluZW5v KSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIGVjcGdfZGVhbGxvY2F0ZV9hbGxfY29ubihs aW5lbm8sIGNvbXBhdCwgY29uKTsKIH0KIAogY2hhciAqCkBAIC0zOTUsMTMgKzM5OSwxNSBAQCBl Y3BnX3ByZXBhcmVkKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBjb25uZWN0aW9uICpjb24pCiB9 CiAKIC8qIHJldHVybiB0aGUgcHJlcGFyZWQgc3RhdGVtZW50ICovCi0vKiBsaW5lbm8gaXMgbm90 IHVzZWQgaGVyZSwgYnV0IGtlcHQgaW4gdG8gbm90IGJyZWFrIEFQSSAqLwogY2hhciAqCiBFQ1BH cHJlcGFyZWRfc3RhdGVtZW50KGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fbmFtZSwgY29uc3QgY2hh ciAqbmFtZSwgaW50IGxpbmVubykKIHsKLQkodm9pZCkgbGluZW5vOwkJCQkvKiBrZWVwIHRoZSBj b21waWxlciBxdWlldCAqLworCXN0cnVjdCBjb25uZWN0aW9uICpjb24gPSBlY3BnX2dldF9jb25u ZWN0aW9uKGNvbm5lY3Rpb25fbmFtZSk7CisKKwlpZiAoIWVjcGdfaW5pdChjb24sIGNvbm5lY3Rp b25fbmFtZSwgbGluZW5vKSkKKwkJcmV0dXJuIE5VTEw7CiAKLQlyZXR1cm4gZWNwZ19wcmVwYXJl ZChuYW1lLCBlY3BnX2dldF9jb25uZWN0aW9uKGNvbm5lY3Rpb25fbmFtZSkpOworCXJldHVybiBl Y3BnX3ByZXBhcmVkKG5hbWUsIGNvbik7CiB9CiAKIC8qCkBAIC00OTksOSArNTA1LDEyIEBAIGVj cGdfZnJlZVN0bXRDYWNoZUVudHJ5KGludCBsaW5lbm8sIGludCBjb21wYXQsCiAJY29uID0gZWNw Z19nZXRfY29ubmVjdGlvbihlbnRyeS0+Y29ubmVjdGlvbik7CiAKIAkvKiBmcmVlIHRoZSAncHJl cGFyZWRfc3RhdGVtZW50JyBsaXN0IGVudHJ5ICovCi0JdGhpcyA9IGVjcGdfZmluZF9wcmVwYXJl ZF9zdGF0ZW1lbnQoZW50cnktPnN0bXRJRCwgY29uLCAmcHJldik7Ci0JaWYgKHRoaXMgJiYgIWRl YWxsb2NhdGVfb25lKGxpbmVubywgY29tcGF0LCBjb24sIHByZXYsIHRoaXMpKQotCQlyZXR1cm4g LTE7CisJaWYgKGNvbikKKwl7CisJCXRoaXMgPSBlY3BnX2ZpbmRfcHJlcGFyZWRfc3RhdGVtZW50 KGVudHJ5LT5zdG10SUQsIGNvbiwgJnByZXYpOworCQlpZiAodGhpcyAmJiAhZGVhbGxvY2F0ZV9v bmUobGluZW5vLCBjb21wYXQsIGNvbiwgcHJldiwgdGhpcykpCisJCQlyZXR1cm4gLTE7CisJfQog CiAJZW50cnktPnN0bXRJRFswXSA9ICdcMCc7CiAKLS0gCjIuNDMuMAoK --0000000000007ba678064f7cbb55 Content-Type: application/octet-stream; name="v2_test-0001-Tests-for-NULL-connection-validation.patch" Content-Disposition: attachment; filename="v2_test-0001-Tests-for-NULL-connection-validation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnzvkzgs1 RnJvbSBiNjcxNGM3MTBlNjZkMTdiZWQ0MWRmYjE2NWI4MDQ4ZDUyZDNjMzk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaHJ1dGhpIGdvd2RhIDxzaHJ1dGhpLmtjQGVudGVycHJpc2Vk Yi5jb20+CkRhdGU6IFdlZCwgMTUgQXByIDIwMjYgMDg6NTg6MDkgKzAwMDAKU3ViamVjdDogW1BB VENIIHYyX3Rlc3RdIFRlc3RzIGZvciBOVUxMIGNvbm5lY3Rpb24gdmFsaWRhdGlvbgoKLS0tCiBz cmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29ubmVjdC8uZ2l0aWdub3JlICAgfCAgIDIgKwogc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvTWFrZWZpbGUgICAgIHwgICAzICstCiBzcmMv aW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29ubmVjdC9tZXNvbi5idWlsZCAgfCAgIDEgKwogc3JjL2lu dGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvdGVzdDYucGdjICAgIHwgIDY4ICsrKysrKysrCiBz cmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVsZSAgICAgICAgfCAgIDEgKwogLi4u L2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3Q2LmMgICAgICAgIHwgMTQ2ICsrKysrKysr KysrKysrKysrKwogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3Q2LnN0ZGVyciAg IHwgIDUwICsrKysrKwogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3Q2LnN0ZG91 dCAgIHwgICA4ICsKIDggZmlsZXMgY2hhbmdlZCwgMjc4IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29ubmVj dC90ZXN0Ni5wZ2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZXhwZWN0ZWQvY29ubmVjdC10ZXN0Ni5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L2V4cGVjdGVkL2Nvbm5lY3QtdGVzdDYuc3RkZXJyCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL2Nvbm5lY3QtdGVzdDYuc3Rk b3V0CgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvLmdpdGln bm9yZSBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0Ly5naXRpZ25vcmUKaW5kZXgg ZTA2MzlmM2M4ZDEuLjAyMjM2ODQ3NDQ0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3Bn L3Rlc3QvY29ubmVjdC8uZ2l0aWdub3JlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9j b25uZWN0Ly5naXRpZ25vcmUKQEAgLTgsMyArOCw1IEBACiAvdGVzdDQuYwogL3Rlc3Q1CiAvdGVz dDUuYworL3Rlc3Q2CisvdGVzdDYuYwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2Nvbm5lY3QvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29ubmVjdC9N YWtlZmlsZQppbmRleCAyNjAyZDVkMjg2Zi4uMTdmYTI2NjdiZjcgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2VjcGcvdGVzdC9jb25uZWN0L01ha2VmaWxlCkBAIC03LDYgKzcsNyBAQCBURVNUUyA9IHRlc3Qx IHRlc3QxLmMgXAogICAgICAgICB0ZXN0MiB0ZXN0Mi5jIFwKICAgICAgICAgdGVzdDMgdGVzdDMu YyBcCiAgICAgICAgIHRlc3Q0IHRlc3Q0LmMgXAotICAgICAgICB0ZXN0NSB0ZXN0NS5jCisgICAg ICAgIHRlc3Q1IHRlc3Q1LmMgXAorICAgICAgICB0ZXN0NiB0ZXN0Ni5jCiAKIGFsbDogJChURVNU UykKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9jb25uZWN0L21lc29uLmJ1 aWxkIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvbWVzb24uYnVpbGQKaW5kZXgg NTkxZTA0YmM0MjIuLjFjYzBhOTI4MzA5IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3Bn L3Rlc3QvY29ubmVjdC9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv Y29ubmVjdC9tZXNvbi5idWlsZApAQCAtNiw2ICs2LDcgQEAgcGdjX2ZpbGVzID0gWwogICAndGVz dDMnLAogICAndGVzdDQnLAogICAndGVzdDUnLAorICAndGVzdDYnLAogXQogCiBmb3JlYWNoIHBn Y19maWxlIDogcGdjX2ZpbGVzCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv Y29ubmVjdC90ZXN0Ni5wZ2MgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvY29ubmVjdC90ZXN0 Ni5wZ2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhMzBhMzdkODg1 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2Nvbm5lY3QvdGVz dDYucGdjCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBl Y3BnIGZ1bmN0aW9ucyBwcm9wZXJseSBoYW5kbGUgTlVMTCBjb25uZWN0aW9ucworICogKGkuZS4s IHdoZW4gYSBjb25uZWN0aW9uIG5hbWUgZG9lc24ndCBleGlzdCBvciBoYXMgYmVlbiBkaXNjb25u ZWN0ZWQpLgorICogQmVmb3JlIHRoZSBmaXgsIHRoZXNlIG9wZXJhdGlvbnMgd291bGQgY2F1c2Ug YSBzZWdtZW50YXRpb24gZmF1bHQuCisgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1 ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2V4ZWMgc3FsIGluY2x1ZGUgLi4v cmVncmVzc2lvbjsKKworaW50CittYWluKHZvaWQpCit7CitleGVjIHNxbCBiZWdpbiBkZWNsYXJl IHNlY3Rpb247CisJaW50IHZhbDFvdXRwdXQgPSAyOworCWludCB2YWwxID0gMTsKKwljaGFyIHZh bDJbNV0gPSAiZGF0YTEiOworCWNoYXIgKnN0bXQxID0gIlNFTEVDVCAqIGZyb20gdGVzdDEgd2hl cmUgYSA9ICQxIGFuZCBiID0gJDIiOworZXhlYyBzcWwgZW5kIGRlY2xhcmUgc2VjdGlvbjsKKwor CUVDUEdkZWJ1ZygxLCBzdGRlcnIpOworCisJLyogQ29ubmVjdCB0byB0aGUgZGF0YWJhc2UgKi8K KwlleGVjIHNxbCBjb25uZWN0IHRvIFJFR1JFU1NEQjEgYXMgbXljb25uOworCisJLyogVGVzdCAx OiBUcnkgdG8gZ2V0IGRlc2NyaXB0b3Igb24gYSBkaXNjb25uZWN0ZWQgY29ubmVjdGlvbiAqLwor CXByaW50ZigiVGVzdCAxOiBUcnkgdG8gZ2V0IGRlc2NyaXB0b3Igb24gYSBkaXNjb25uZWN0ZWQg Y29ubmVjdGlvblxuIik7CisJZXhlYyBzcWwgY3JlYXRlIHRhYmxlIHRlc3QxIChhIGludCwgYiB0 ZXh0KTsKKwlleGVjIHNxbCBpbnNlcnQgaW50byB0ZXN0MSAoYSxiKSB2YWx1ZXMgKDEsICdkYXRh MScpOworCisJZXhlYyBzcWwgYWxsb2NhdGUgZGVzY3JpcHRvciBpbmRlc2M7CisJZXhlYyBzcWwg YWxsb2NhdGUgZGVzY3JpcHRvciBvdXRkZXNjOworCisJZXhlYyBzcWwgcHJlcGFyZSBmb28yIGZy b20gOnN0bXQxOworCisJZXhlYyBzcWwgc2V0IGRlc2NyaXB0b3IgaW5kZXNjIHZhbHVlIDEgREFU QSA9IDp2YWwxOworCWV4ZWMgc3FsIHNldCBkZXNjcmlwdG9yIGluZGVzYyB2YWx1ZSAyIERBVEEg PSA6dmFsMjsKKworCWV4ZWMgc3FsIGV4ZWN1dGUgZm9vMiB1c2luZyBzcWwgZGVzY3JpcHRvciBp bmRlc2MgaW50byBzcWwgZGVzY3JpcHRvciBvdXRkZXNjOworCisJZXhlYyBzcWwgZGlzY29ubmVj dDsKKwlleGVjIHNxbCBnZXQgZGVzY3JpcHRvciBvdXRkZXNjIHZhbHVlIDEgOnZhbDFvdXRwdXQg PSBEQVRBOworCXByaW50Zigic3FsY2Euc3FsY29kZSA9ICVsZFxuIiwgc3FsY2Euc3FsY29kZSk7 CisKKwkvKiBUZXN0IDI6IFRyeSB0byBkZWFsbG9jYXRlIGFsbCBvbiBhIG5vbi1leGlzdGVudCBj b25uZWN0aW9uICovCisJcHJpbnRmKCJUZXN0IDI6IGRlYWxsb2NhdGUgYWxsIHdpdGggbm9uLWV4 aXN0ZW50IGNvbm5lY3Rpb25cbiIpOworCWV4ZWMgc3FsIGF0IG5vbmV4aXN0ZW50IGRlYWxsb2Nh dGUgYWxsOworCXByaW50Zigic3FsY2Euc3FsY29kZSA9ICVsZFxuIiwgc3FsY2Euc3FsY29kZSk7 CisKKwkvKiBUZXN0IDM6IGRlYWxsb2NhdGUgb24gZGlzY29ubmVjdGVkIGNvbm5lY3Rpb24gKi8K KwlwcmludGYoIlRlc3QgMzogZGVhbGxvY2F0ZSBhbGwgb24gZGlzY29ubmVjdGVkIGNvbm5lY3Rp b25cbiIpOworCWV4ZWMgc3FsIGRlYWxsb2NhdGUgYWxsOworCXByaW50Zigic3FsY2Euc3FsY29k ZSA9ICVsZFxuIiwgc3FsY2Euc3FsY29kZSk7CisKKwkvKiBUZXN0IDQ6IFVzZSBwcmVwYXJlZCBz dGF0ZW1lbnQgZnJvbSBub24tZXhpc3RlbnQgY29ubmVjdGlvbiAqLworCXByaW50ZigiVGVzdCA0 OiBVc2UgcHJlcGFyZWQgc3RhdGVtZW50IGZyb20gbm9uLWV4aXN0ZW50IGNvbm5lY3Rpb25cbiIp OworCWV4ZWMgc3FsIGF0IG5vbmV4aXN0ZW50IHByZXBhcmUgc3RtdDEgRlJPTSAiU0VMRUNUIDEi OworCWV4ZWMgc3FsIGF0IG5vbmV4aXN0ZW50IGRlY2xhcmUgY3VyMSBjdXJzb3IgZm9yIHN0bXQx OworCWV4ZWMgc3FsIGF0IG5vbmV4aXN0ZW50IG9wZW4gY3VyMTsKKworCXByaW50ZigiQWxsIHRl c3RzIGNvbXBsZXRlZCAhXG4iKTsKKworCWV4ZWMgc3FsIGRpc2Nvbm5lY3Q7CisKKwlyZXR1cm4g MDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9lY3BnX3NjaGVkdWxl IGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2VjcGdfc2NoZWR1bGUKaW5kZXggYjc1ZTE2ZmRl MWUuLmQxZjVkOTQ1MmI3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNw Z19zY2hlZHVsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVsZQpA QCAtMTMsNiArMTMsNyBAQCB0ZXN0OiBjb25uZWN0L3Rlc3QyCiB0ZXN0OiBjb25uZWN0L3Rlc3Qz CiB0ZXN0OiBjb25uZWN0L3Rlc3Q0CiB0ZXN0OiBjb25uZWN0L3Rlc3Q1Cit0ZXN0OiBjb25uZWN0 L3Rlc3Q2CiB0ZXN0OiBwZ3R5cGVzbGliL2R0X3Rlc3QKIHRlc3Q6IHBndHlwZXNsaWIvZHRfdGVz dDIKIHRlc3Q6IHBndHlwZXNsaWIvbnVtX3Rlc3QKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2Vz L2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3Q2LmMgYi9zcmMvaW50ZXJmYWNlcy9lY3Bn L3Rlc3QvZXhwZWN0ZWQvY29ubmVjdC10ZXN0Ni5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4yOWNmNzBhMmU5YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9leHBlY3RlZC9jb25uZWN0LXRlc3Q2LmMKQEAgLTAsMCArMSwxNDYgQEAK Ky8qIFByb2Nlc3NlZCBieSBlY3BnIChyZWdyZXNzaW9uIG1vZGUpICovCisvKiBUaGVzZSBpbmNs dWRlIGZpbGVzIGFyZSBhZGRlZCBieSB0aGUgcHJlcHJvY2Vzc29yICovCisjaW5jbHVkZSA8ZWNw Z2xpYi5oPgorI2luY2x1ZGUgPGVjcGdlcnJuby5oPgorI2luY2x1ZGUgPHNxbGNhLmg+CisvKiBF bmQgb2YgYXV0b21hdGljIGluY2x1ZGUgc2VjdGlvbiAqLworI2RlZmluZSBFQ1BHZGVidWcoWCxZ KSBFQ1BHZGVidWcoKFgpKzEwMCwoWSkpCisKKyNsaW5lIDEgInRlc3Q2LnBnYyIKKy8qCisgKiBU aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBlY3BnIGZ1bmN0aW9ucyBwcm9wZXJseSBoYW5kbGUgTlVM TCBjb25uZWN0aW9ucworICogKGkuZS4sIHdoZW4gYSBjb25uZWN0aW9uIG5hbWUgZG9lc24ndCBl eGlzdCBvciBoYXMgYmVlbiBkaXNjb25uZWN0ZWQpLgorICogQmVmb3JlIHRoZSBmaXgsIHRoZXNl IG9wZXJhdGlvbnMgd291bGQgY2F1c2UgYSBzZWdtZW50YXRpb24gZmF1bHQuCisgKi8KKworI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+ CisKKworI2xpbmUgMSAicmVncmVzc2lvbi5oIgorCisKKworCisKKworI2xpbmUgMTEgInRlc3Q2 LnBnYyIKKworCitpbnQKK21haW4odm9pZCkKK3sKKy8qIGV4ZWMgc3FsIGJlZ2luIGRlY2xhcmUg c2VjdGlvbiAqLworCSAgIAorCSAgIAorCSAgIAorCSAgIAorCisjbGluZSAxNyAidGVzdDYucGdj IgorIGludCB2YWwxb3V0cHV0ID0gMiA7CisgCisjbGluZSAxOCAidGVzdDYucGdjIgorIGludCB2 YWwxID0gMSA7CisgCisjbGluZSAxOSAidGVzdDYucGdjIgorIGNoYXIgdmFsMiBbIDUgXSA9ICJk YXRhMSIgOworIAorI2xpbmUgMjAgInRlc3Q2LnBnYyIKKyBjaGFyICogc3RtdDEgPSAiU0VMRUNU ICogZnJvbSB0ZXN0MSB3aGVyZSBhID0gJDEgYW5kIGIgPSAkMiIgOworLyogZXhlYyBzcWwgZW5k IGRlY2xhcmUgc2VjdGlvbiAqLworI2xpbmUgMjEgInRlc3Q2LnBnYyIKKworCisJRUNQR2RlYnVn KDEsIHN0ZGVycik7CisKKwkvKiBDb25uZWN0IHRvIHRoZSBkYXRhYmFzZSAqLworCXsgRUNQR2Nv bm5lY3QoX19MSU5FX18sIDAsICJlY3BnMV9yZWdyZXNzaW9uIiAsIE5VTEwsIE5VTEwgLCAibXlj b25uIiwgMCk7IH0KKyNsaW5lIDI2ICJ0ZXN0Ni5wZ2MiCisKKworCS8qIFRlc3QgMTogVHJ5IHRv IGdldCBkZXNjcmlwdG9yIG9uIGEgZGlzY29ubmVjdGVkIGNvbm5lY3Rpb24gKi8KKwlwcmludGYo IlRlc3QgMTogVHJ5IHRvIGdldCBkZXNjcmlwdG9yIG9uIGEgZGlzY29ubmVjdGVkIGNvbm5lY3Rp b25cbiIpOworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFs LCAiY3JlYXRlIHRhYmxlIHRlc3QxICggYSBpbnQgLCBiIHRleHQgKSIsIEVDUEd0X0VPSVQsIEVD UEd0X0VPUlQpO30KKyNsaW5lIDMwICJ0ZXN0Ni5wZ2MiCisKKwl7IEVDUEdkbyhfX0xJTkVfXywg MCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgImluc2VydCBpbnRvIHRlc3QxICggYSAsIGIg KSB2YWx1ZXMgKCAxICwgJ2RhdGExJyApIiwgRUNQR3RfRU9JVCwgRUNQR3RfRU9SVCk7fQorI2xp bmUgMzEgInRlc3Q2LnBnYyIKKworCisJRUNQR2FsbG9jYXRlX2Rlc2MoX19MSU5FX18sICJpbmRl c2MiKTsKKyNsaW5lIDMzICJ0ZXN0Ni5wZ2MiCisKKwlFQ1BHYWxsb2NhdGVfZGVzYyhfX0xJTkVf XywgIm91dGRlc2MiKTsKKyNsaW5lIDM0ICJ0ZXN0Ni5wZ2MiCisKKworCXsgRUNQR3ByZXBhcmUo X19MSU5FX18sIE5VTEwsIDAsICJmb28yIiwgc3RtdDEpO30KKyNsaW5lIDM2ICJ0ZXN0Ni5wZ2Mi CisKKworCXsgRUNQR3NldF9kZXNjKF9fTElORV9fLCAiaW5kZXNjIiwgMSxFQ1BHZF9kYXRhLAor CUVDUEd0X2ludCwmKHZhbDEpLChsb25nKTEsKGxvbmcpMSxzaXplb2YoaW50KSwgRUNQR2RfRU9E VCk7Cit9CisjbGluZSAzOCAidGVzdDYucGdjIgorCisJeyBFQ1BHc2V0X2Rlc2MoX19MSU5FX18s ICJpbmRlc2MiLCAyLEVDUEdkX2RhdGEsCisJRUNQR3RfY2hhciwodmFsMiksKGxvbmcpNSwobG9u ZykxLCg1KSpzaXplb2YoY2hhciksIEVDUEdkX0VPRFQpOworfQorI2xpbmUgMzkgInRlc3Q2LnBn YyIKKworCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9leGVjdXRl LCAiZm9vMiIsIAorCUVDUEd0X2Rlc2NyaXB0b3IsICJpbmRlc2MiLCAxTCwgMUwsIDFMLCAKKwlF Q1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT0lULCAKKwlFQ1BH dF9kZXNjcmlwdG9yLCAib3V0ZGVzYyIsIDFMLCAxTCwgMUwsIAorCUVDUEd0X05PX0lORElDQVRP UiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpO30KKyNsaW5lIDQxICJ0ZXN0Ni5wZ2Mi CisKKworCXsgRUNQR2Rpc2Nvbm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7fQorI2xpbmUgNDMg InRlc3Q2LnBnYyIKKworCXsgRUNQR2dldF9kZXNjKF9fTElORV9fLCAib3V0ZGVzYyIsIDEsRUNQ R2RfZGF0YSwKKwlFQ1BHdF9pbnQsJih2YWwxb3V0cHV0KSwobG9uZykxLChsb25nKTEsc2l6ZW9m KGludCksIEVDUEdkX0VPRFQpOworfQorI2xpbmUgNDQgInRlc3Q2LnBnYyIKKworCXByaW50Zigi c3FsY2Euc3FsY29kZSA9ICVsZFxuIiwgc3FsY2Euc3FsY29kZSk7CisKKwkvKiBUZXN0IDI6IFRy eSB0byBkZWFsbG9jYXRlIGFsbCBvbiBhIG5vbi1leGlzdGVudCBjb25uZWN0aW9uICovCisJcHJp bnRmKCJUZXN0IDI6IGRlYWxsb2NhdGUgYWxsIHdpdGggbm9uLWV4aXN0ZW50IGNvbm5lY3Rpb25c biIpOworCXsgRUNQR2RlYWxsb2NhdGVfYWxsKF9fTElORV9fLCAwLCAibm9uZXhpc3RlbnQiKTt9 CisjbGluZSA0OSAidGVzdDYucGdjIgorCisJcHJpbnRmKCJzcWxjYS5zcWxjb2RlID0gJWxkXG4i LCBzcWxjYS5zcWxjb2RlKTsKKworCS8qIFRlc3QgMzogZGVhbGxvY2F0ZSBvbiBkaXNjb25uZWN0 ZWQgY29ubmVjdGlvbiAqLworCXByaW50ZigiVGVzdCAzOiBkZWFsbG9jYXRlIGFsbCBvbiBkaXNj b25uZWN0ZWQgY29ubmVjdGlvblxuIik7CisJeyBFQ1BHZGVhbGxvY2F0ZV9hbGwoX19MSU5FX18s IDAsIE5VTEwpO30KKyNsaW5lIDU0ICJ0ZXN0Ni5wZ2MiCisKKwlwcmludGYoInNxbGNhLnNxbGNv ZGUgPSAlbGRcbiIsIHNxbGNhLnNxbGNvZGUpOworCisJLyogVGVzdCA0OiBVc2UgcHJlcGFyZWQg c3RhdGVtZW50IGZyb20gbm9uLWV4aXN0ZW50IGNvbm5lY3Rpb24gKi8KKwlwcmludGYoIlRlc3Qg NDogVXNlIHByZXBhcmVkIHN0YXRlbWVudCBmcm9tIG5vbi1leGlzdGVudCBjb25uZWN0aW9uXG4i KTsKKwl7IEVDUEdwcmVwYXJlKF9fTElORV9fLCAibm9uZXhpc3RlbnQiLCAwLCAic3RtdDEiLCAi U0VMRUNUIDEiKTt9CisjbGluZSA1OSAidGVzdDYucGdjIgorCisJLyogZGVjbGFyZSBjdXIxIGN1 cnNvciBmb3IgJDEgKi8KKyNsaW5lIDYwICJ0ZXN0Ni5wZ2MiCisKKwl7IEVDUEdkbyhfX0xJTkVf XywgMCwgMSwgIm5vbmV4aXN0ZW50IiwgMCwgRUNQR3N0X25vcm1hbCwgImRlY2xhcmUgY3VyMSBj dXJzb3IgZm9yICQxIiwgCisJRUNQR3RfY2hhcl92YXJpYWJsZSwoRUNQR3ByZXBhcmVkX3N0YXRl bWVudCgibm9uZXhpc3RlbnQiLCAic3RtdDEiLCBfX0xJTkVfXykpLChsb25nKTEsKGxvbmcpMSwo MSkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBM LCBFQ1BHdF9FT0lULCBFQ1BHdF9FT1JUKTt9CisjbGluZSA2MSAidGVzdDYucGdjIgorCisKKwlw cmludGYoIkFsbCB0ZXN0cyBjb21wbGV0ZWQgIVxuIik7CisKKwl7IEVDUEdkaXNjb25uZWN0KF9f TElORV9fLCAiQ1VSUkVOVCIpO30KKyNsaW5lIDY1ICJ0ZXN0Ni5wZ2MiCisKKworCXJldHVybiAw OworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL2Nvbm5l Y3QtdGVzdDYuc3RkZXJyIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL2Nvbm5l Y3QtdGVzdDYuc3RkZXJyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m YmE5MWE4ZjI1NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9l eHBlY3RlZC9jb25uZWN0LXRlc3Q2LnN0ZGVycgpAQCAtMCwwICsxLDUwIEBACitbTk9fUElEXTog RUNQR2RlYnVnOiBzZXQgdG8gMQorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAw MDAKK1tOT19QSURdOiBFQ1BHY29ubmVjdDogb3BlbmluZyBkYXRhYmFzZSBlY3BnMV9yZWdyZXNz aW9uIG9uIDxERUZBVUxUPiBwb3J0IDxERUZBVUxUPiAgCitbTk9fUElEXTogc3FsY2E6IGNvZGU6 IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDMwOiBxdWVy eTogY3JlYXRlIHRhYmxlIHRlc3QxICggYSBpbnQgLCBiIHRleHQgKTsgd2l0aCAwIHBhcmFtZXRl cihzKSBvbiBjb25uZWN0aW9uIG15Y29ubgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0 ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAzMDogdXNpbmcgUFFleGVj CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdf cHJvY2Vzc19vdXRwdXQgb24gbGluZSAzMDogT0s6IENSRUFURSBUQUJMRQorW05PX1BJRF06IHNx bGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGlu ZSAzMTogcXVlcnk6IGluc2VydCBpbnRvIHRlc3QxICggYSAsIGIgKSB2YWx1ZXMgKCAxICwgJ2Rh dGExJyApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gbXljb25uCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBv biBsaW5lIDMxOiB1c2luZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6 IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDMxOiBPSzogSU5T RVJUIDAgMQorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBwcmVwYXJlX2NvbW1vbiBvbiBsaW5lIDM2OiBuYW1lIGZvbzI7IHF1ZXJ5OiAiU0VMRUNUICog ZnJvbSB0ZXN0MSB3aGVyZSBhID0gJDEgYW5kIGIgPSAkMiIKK1tOT19QSURdOiBzcWxjYTogY29k ZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgNDE6IHF1 ZXJ5OiBTRUxFQ1QgKiBmcm9tIHRlc3QxIHdoZXJlIGEgPSAkMSBhbmQgYiA9ICQyOyB3aXRoIDIg cGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gbXljb25uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6 IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDQxOiB1c2lu ZyBQUWV4ZWNQcmVwYXJlZCBmb3IgIlNFTEVDVCAqIGZyb20gdGVzdDEgd2hlcmUgYSA9ICQxIGFu ZCBiID0gJDIiCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZnJlZV9wYXJhbXMgb24gbGluZSA0MTogcGFyYW1ldGVyIDEgPSAxCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZnJlZV9wYXJh bXMgb24gbGluZSA0MTogcGFyYW1ldGVyIDIgPSBkYXRhMQorW05PX1BJRF06IHNxbGNhOiBjb2Rl OiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUg NDE6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAyIGZpZWxkcworW05PX1BJRF06IHNxbGNh OiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9u IGxpbmUgNDE6IHB1dHRpbmcgcmVzdWx0ICgxIHR1cGxlcykgaW50byBkZXNjcmlwdG9yIG91dGRl c2MKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZGVh bGxvY2F0ZV9vbmUgb24gbGluZSAwOiBuYW1lIGZvbzIKK1tOT19QSURdOiBzcWxjYTogY29kZTog MCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19maW5pc2g6IGNvbm5lY3Rpb24gbXljb25u IGNsb3NlZAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBFQ1BHZ2V0X2Rlc2M6IHJlYWRpbmcgaXRlbXMgZm9yIHR1cGxlIDEKK1tOT19QSURdOiBzcWxj YTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogcmFpc2luZyBzcWxjb2RlIC0yMjAg b24gbGluZSA0NDogY29ubmVjdGlvbiAiTlVMTCIgZG9lcyBub3QgZXhpc3Qgb24gbGluZSA0NAor W05PX1BJRF06IHNxbGNhOiBjb2RlOiAtMjIwLCBzdGF0ZTogMDgwMDMKK1tOT19QSURdOiByYWlz aW5nIHNxbGNvZGUgLTIyMCBvbiBsaW5lIDQ5OiBjb25uZWN0aW9uICJub25leGlzdGVudCIgZG9l cyBub3QgZXhpc3Qgb24gbGluZSA0OQorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAtMjIwLCBzdGF0 ZTogMDgwMDMKK1tOT19QSURdOiByYWlzaW5nIHNxbGNvZGUgLTIyMCBvbiBsaW5lIDU0OiBjb25u ZWN0aW9uICJOVUxMIiBkb2VzIG5vdCBleGlzdCBvbiBsaW5lIDU0CitbTk9fUElEXTogc3FsY2E6 IGNvZGU6IC0yMjAsIHN0YXRlOiAwODAwMworW05PX1BJRF06IHJhaXNpbmcgc3FsY29kZSAtMjIw IG9uIGxpbmUgNTk6IGNvbm5lY3Rpb24gIm5vbmV4aXN0ZW50IiBkb2VzIG5vdCBleGlzdCBvbiBs aW5lIDU5CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IC0yMjAsIHN0YXRlOiAwODAwMworW05PX1BJ RF06IHJhaXNpbmcgc3FsY29kZSAtMjIwIG9uIGxpbmUgNjI6IGNvbm5lY3Rpb24gIm5vbmV4aXN0 ZW50IiBkb2VzIG5vdCBleGlzdCBvbiBsaW5lIDYyCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IC0y MjAsIHN0YXRlOiAwODAwMworW05PX1BJRF06IHJhaXNpbmcgc3FsY29kZSAtMjIwIG9uIGxpbmUg NjE6IGNvbm5lY3Rpb24gIm5vbmV4aXN0ZW50IiBkb2VzIG5vdCBleGlzdCBvbiBsaW5lIDYxCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IC0yMjAsIHN0YXRlOiAwODAwMworW05PX1BJRF06IHJhaXNp bmcgc3FsY29kZSAtMjIwIG9uIGxpbmUgNjU6IGNvbm5lY3Rpb24gIkNVUlJFTlQiIGRvZXMgbm90 IGV4aXN0IG9uIGxpbmUgNjUKK1tOT19QSURdOiBzcWxjYTogY29kZTogLTIyMCwgc3RhdGU6IDA4 MDAzCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvY29ubmVj dC10ZXN0Ni5zdGRvdXQgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvY29ubmVj dC10ZXN0Ni5zdGRvdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4 MzEzNmM3N2UwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4 cGVjdGVkL2Nvbm5lY3QtdGVzdDYuc3Rkb3V0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCAxOiBUcnkg dG8gZ2V0IGRlc2NyaXB0b3Igb24gYSBkaXNjb25uZWN0ZWQgY29ubmVjdGlvbgorc3FsY2Euc3Fs Y29kZSA9IC0yMjAKK1Rlc3QgMjogZGVhbGxvY2F0ZSBhbGwgd2l0aCBub24tZXhpc3RlbnQgY29u bmVjdGlvbgorc3FsY2Euc3FsY29kZSA9IC0yMjAKK1Rlc3QgMzogZGVhbGxvY2F0ZSBhbGwgb24g ZGlzY29ubmVjdGVkIGNvbm5lY3Rpb24KK3NxbGNhLnNxbGNvZGUgPSAtMjIwCitUZXN0IDQ6IFVz ZSBwcmVwYXJlZCBzdGF0ZW1lbnQgZnJvbSBub24tZXhpc3RlbnQgY29ubmVjdGlvbgorQWxsIHRl c3RzIGNvbXBsZXRlZCAhCi0tIAoyLjQzLjAKCg== --0000000000007ba678064f7cbb55--