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 1wVJEJ-001s2D-03 for pgsql-bugs@arkaria.postgresql.org; Fri, 05 Jun 2026 01:20:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVJEH-009Xve-2T for pgsql-bugs@arkaria.postgresql.org; Fri, 05 Jun 2026 01:20:09 +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 1wVJEH-009XvV-0r for pgsql-bugs@lists.postgresql.org; Fri, 05 Jun 2026 01:20:09 +0000 Received: from mail-yx1-xb135.google.com ([2607:f8b0:4864:20::b135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wVJEF-000000019v8-1D61 for pgsql-bugs@lists.postgresql.org; Fri, 05 Jun 2026 01:20:08 +0000 Received: by mail-yx1-xb135.google.com with SMTP id 956f58d0204a3-66077f6c438so1403861d50.2 for ; Thu, 04 Jun 2026 18:20:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780622406; cv=none; d=google.com; s=arc-20240605; b=R2MOZODRucTw38LKirjfYyPtlsX+Aei3o+Xl6STuMFjAHGIO30IAhmH+QknDfP/yNZ 9TyxvDdvHKgUZAUceDIdnlHpH9gaRfPXYktunQtiMUgbA4u0EpGqnmbIjtSijhTu9GFR QryPleBBUkx2XbmIv86OrgX1EKom/f9zOu1AkkUlvVbUf13T7AnPicad7qj/8+4DtA9I eYq+tJLfA7Ntt4rS2zSewPgWeq8Llx3mf/aYzDKznLRRE4kbjJZssQO1/JD45dcgfwT5 5AVSpn25BkfHChvqlYPEIs3nkUAxKB9At0tbM0KpmcU7kFzjkZAd4Zqv0QyKOchWG8Di a39g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=sTUjA7A2NCmoCVfM8lNRB3Q89+/o5+3I3DGc/XwuJYk=; fh=fL5khWsNfVr8FIC8f7kkRt8akccIM7bp43ZUZpqv3bI=; b=JsZ6+RUP+5Gl4z/bEvscIIYDVuGn46B62y0atNm+ZepKunQnsd+8puwHFPqjQa9oDL bsGHiAsqRctdskDLYv5oFbBBth3pjQEbwOi2EMGqO0LEaF7CqOGMhAlinD1MPqqJMv80 D4v0s9b1JCGmK9LBcrPrPtef6HwpOWK8+C0Ko7MHfyinlFaBDNbM+t1N8PgV9w9SCy63 JkwFRMrILYa4Esg521qPY84NzU/tsop4TJhjT0ispcu6IFlW4RH3ciwnKiWWwXOA0HZG l59AiQ5Q70akG/wEfwokkevesfiPA/fdpoUGoK/ffKzRVhop/Ke+/6NVPDvbs2kzELrM tq2g==; darn=lists.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=1780622406; x=1781227206; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=sTUjA7A2NCmoCVfM8lNRB3Q89+/o5+3I3DGc/XwuJYk=; b=Gbs3Qm56Q8XjA9Sx7t8o+0vP0k6WYRf5shWA0bXoVDFivlQVwcapjESKgQ43nzfkdQ 0KPCLghJGbuQ1O5JZRhVeesMnreJN1W0J5VffS9JREa8OwmtWp0g935WaNl4eBu/D5by m0/dGyjR5WNEi218dYcvDHsQ5nlrqfRTBGRnArKuhJXF3L7yNBd0d+6NI3L4hy94goyn 1OoKGghPlV+v4+JZcqHFk5tsfhF2PkwRJxvIeXyhV0HHt1muQS6nmksAyZG8NiwIO4NC Vsm8jMOsfukYSm1p7dXvYAIO0RPigG5BQGjrqoSRGqdyb2pV0Lgu3AMA8fhKu7dfgy2R wBgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780622406; x=1781227206; h=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=sTUjA7A2NCmoCVfM8lNRB3Q89+/o5+3I3DGc/XwuJYk=; b=Qlv4Y5B5R16lULXKe74VJekxeWNx6Y9jIPRRZynt9AtILbJEif+Kp0VqtqgSMfphXD mkHIGo+87mvmt2zybTsSfkMYD3Ukh1PGGYp4ql+MtYAEkHEdCaicAtXgzCSI1IV0OFSt /qu9LKC4KSNwZTPYov1Lo77i4t2cYS97B1tr/83xmzpgdcCUAf4vjVtL1nMlmrNGKXJX 60g0XToS5rku94p4W7pCuclyAtZu9mAiEn7dp2FJbOEB35FVbl9fs0pFV8GfVEai2E5d fLR7uMKKB737OxLVZL9AxD5Dfhz6vZkFWktbnlO7/iel+a/NzRqNzmazPvHVVWm0drto zTTw== X-Forwarded-Encrypted: i=1; AFNElJ+XQiCU4zc7KNQMVaH+D2igmMCBMFeaGT/4lElQDrl2157+KNByhWQ7Jxyx3rUaPJtmg4MotvCHlRPr@lists.postgresql.org X-Gm-Message-State: AOJu0Yyeh41IM5Hb5StjWTzbATbAfHDsvij5BSK0elEVNIsTdX7GD7AQ eNEtamhAC2vpcVBYIEOjSv8c1+P9ghxjyrlq6YnMe6nCNwA0dX659pWOJVyDxJZQE49GlWnUU34 YFyUY2mnhdU8Oe1S/Ou5W98gimiRG8Sc= X-Gm-Gg: Acq92OGJmcNJ0RSfdUPHKAGVM+ZncGau9Of8rU4ry3be9om6OtisxN01dSXbFKjd4z0 gKDRUIm9bWXXU4227dvBxYbuLoZHY/GUPeaGNeCYYKQWAnYjImyj7jJ8l25/rF7BzDri1EIjc7A r2IWK+fKC5pFuLB8jZvz6mcxiQiL6cNH5o9kOJUED4f3CrWDsKPXHK6W++aupxXEoZ/dCP/uzvP ITQc//+Ri9bEVdRmKkFP51iUlAcFUKiLhCMZKM88HxZxLBUhxl65JYNw7ov1Y63vQ603w5s77S5 923QV0q5qN//qAA3qtWC8myyJjwVqDhAaFrQNDo1YT7jZDpHesAV X-Received: by 2002:a05:690e:12c6:b0:65e:421f:25a with SMTP id 956f58d0204a3-66106fad9a6mr1247159d50.53.1780622406405; Thu, 04 Jun 2026 18:20:06 -0700 (PDT) MIME-Version: 1.0 References: <19511-f9f251767b658232@postgresql.org> In-Reply-To: <19511-f9f251767b658232@postgresql.org> From: Amjad Shahzad Date: Fri, 5 Jun 2026 06:19:48 +0500 X-Gm-Features: AVHnY4KyJ8Bpii1vU-3YFlbRyX3mLUH2MOZIGKiPaGvXztc-9bQNJV0k4AGwdNE Message-ID: Subject: Re: BUG #19511: contrib/dblink: NULL dereference in dblink_get_notify() when called without a prior connection To: amjadshahzad2000@gmail.com, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000003840c06537776e3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000003840c06537776e3 Content-Type: multipart/alternative; boundary="00000000000003840b06537776e1" --00000000000003840b06537776e1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi This was originally reported to security@postgresql.org, redirected here by the security team as this does not meet the security vulnerability threshold. Patch attached. Applies cleanly against master 0392fb900eb. Adds the same NULL guard used by every other function in dblink.c that accesses the default connection. Regards Amjad On Fri, Jun 5, 2026 at 6:16=E2=80=AFAM PG Bug reporting form wrote: > The following bug has been logged on the website: > > Bug reference: 19511 > Logged by: Amjad Shahzad > Email address: amjadshahzad2000@gmail.com > PostgreSQL version: 18.4 > Operating system: Ubuntu 24.04 x86_64 > Description: > > I found a NULL pointer dereference in contrib/dblink/dblink.c in the > dblink_get_notify() function. Any user with EXECUTE on the function > can crash their backend process with a single call. Confirmed against > master > commit 0392fb900eb. > > WHAT IS THE ISSUE > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > dblink_get_notify() retrieves async notifications from a remote connectio= n. > When called with no arguments it uses the default > (unnamed) connection. If no default connection has been established first= , > pconn->conn is NULL. The code assigns this NULL to conn and > then passes it directly to PQconsumeInput() and PQnotifies(): > > /* line 1893 (master) */ > else > conn =3D pconn->conn; /* NULL =E2=80=94 no connection establ= ished */ > > InitMaterializedSRF(fcinfo, 0); > > PQconsumeInput(conn); /* passes NULL to libpq */ > while ((notify =3D PQnotifies(conn)) !=3D NULL) /* NULL dereference = */ > > PQnotifies(NULL) dereferences a null pointer internally, causing a backen= d > SIGSEGV. > > Every other function in dblink.c that uses the default connection already > has an explicit NULL guard: > > if (!conn) > dblink_conn_not_avail(conname); > > dblink_get_notify() is the only function that skips this guard. > > WHAT CAN BE COMPROMISED > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > Any user with EXECUTE on dblink_get_notify(), granted to PUBLIC by defaul= t > can crash their backend process > on demand. No password, no connection, no special privileges required. > > In a shared server environment this can be used as a denial-of-service > against a specific session. Combined with > connection pooling or persistent connections it could repeatedly crash > backend processes. > > PREREQUISITES > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > 1. Any connected database user > 2. EXECUTE on dblink_get_notify (granted to PUBLIC by default) > 3. contrib/dblink installed (CREATE EXTENSION dblink) > > No dblink connection needed. No password needed. > > STEPS TO REPRODUCE > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > -- STEP 1: Install dblink > CREATE EXTENSION dblink; > > -- STEP 2: As any user, call without connecting first > SELECT * FROM dblink_get_notify(); > > -- Result before fix: > -- server closed the connection unexpectedly > -- SIGSEGV in server log > > -- Result after fix: > -- ERROR: connection not available > > THE FIX > =3D=3D=3D=3D=3D=3D=3D > Add the same NULL guard that every other dblink function already has: > > /* BEFORE */ > else > conn =3D pconn->conn; > > /* AFTER */ > else > { > conn =3D pconn->conn; > if (!conn) > dblink_conn_not_avail(NULL); > } > > 4 lines added. Patch attached. > > BEHAVIOUR AFTER THE FIX > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > -- No prior connection: > SELECT * FROM dblink_get_notify(); > -- ERROR: connection not available (clean error, no crash) > > -- With valid connection: > SELECT * FROM dblink_get_notify('myconn'); > -- (0 rows) (works exactly as before) > > REGRESSION TEST RESULTS > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > $ meson test --suite dblink > 1/2 dblink - postgresql:dblink/regress OK (all SQL tests pass= ) > 2/2 dblink - postgresql:dblink/001_auth_scram OK 12 subtests passed > Ok: 2 Fail: 0 > > $ meson test --suite regress > 1/1 regress - postgresql:regress/regress OK 245 subtests passed > Ok: 1 Fail: 0 > > Tested on: PostgreSQL master 0392fb900eb, Ubuntu 24.04, x86_64. > > > --00000000000003840b06537776e1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi=C2=A0

This was originally reported to security@postgresql.org, redirec= ted here by the security team as this does not meet the security
vulne= rability threshold.

Patch attached. Applies cleanly agai= nst master 0392fb900eb.
Adds the same NULL guard used by every other fun= ction in dblink.c that accesses the default connection.

R= egards
Amjad

On Fri, = Jun 5, 2026 at 6:16=E2=80=AFAM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been lo= gged on the website:

Bug reference:=C2=A0 =C2=A0 =C2=A0 19511
Logged by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Amjad Shahzad
Email address:=C2=A0 =C2=A0 =C2=A0 amjadshahzad2000@gmail.com
PostgreSQL version: 18.4
Operating system:=C2=A0 =C2=A0Ubuntu 24.04 x86_64
Description:=C2=A0 =C2=A0 =C2=A0 =C2=A0

I found a NULL pointer dereference in contrib/dblink/dblink.c in the
dblink_get_notify() function. Any user with EXECUTE on the function
can crash their backend process with a single call. Confirmed against maste= r
commit 0392fb900eb.

WHAT IS THE ISSUE
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
dblink_get_notify() retrieves async notifications from a remote connection.=
When called with no arguments it uses the default
(unnamed) connection. If no default connection has been established first,<= br> pconn->conn is NULL. The code assigns this NULL to conn and
then passes it directly to PQconsumeInput() and PQnotifies():

=C2=A0 =C2=A0 /* line 1893 (master) */
=C2=A0 =C2=A0 else
=C2=A0 =C2=A0 =C2=A0 =C2=A0 conn =3D pconn->conn;=C2=A0 =C2=A0 =C2=A0 /*= NULL =E2=80=94 no connection established */

=C2=A0 =C2=A0 InitMaterializedSRF(fcinfo, 0);

=C2=A0 =C2=A0 PQconsumeInput(conn);=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* passes NU= LL to libpq */
=C2=A0 =C2=A0 while ((notify =3D PQnotifies(conn)) !=3D NULL)=C2=A0 /* NULL= dereference */

PQnotifies(NULL) dereferences a null pointer internally, causing a backend<= br> SIGSEGV.

Every other function in dblink.c that uses the default connection already has an explicit NULL guard:

=C2=A0 =C2=A0 if (!conn)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 dblink_conn_not_avail(conname);

dblink_get_notify() is the only function that skips this guard.

WHAT CAN BE COMPROMISED
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
Any user with EXECUTE on dblink_get_notify(), granted to PUBLIC by default<= br> can crash their backend process
on demand. No password, no connection, no special privileges required.

In a shared server environment this can be used as a denial-of-service
against a specific session. Combined with
connection pooling or persistent connections it could repeatedly crash
backend processes.

PREREQUISITES
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=C2=A0 1. Any connected database user
=C2=A0 2. EXECUTE on dblink_get_notify (granted to PUBLIC by default)
=C2=A0 3. contrib/dblink installed (CREATE EXTENSION dblink)

No dblink connection needed. No password needed.

STEPS TO REPRODUCE
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=C2=A0 =C2=A0 -- STEP 1: Install dblink
=C2=A0 =C2=A0 CREATE EXTENSION dblink;

=C2=A0 =C2=A0 -- STEP 2: As any user, call without connecting first
=C2=A0 =C2=A0 SELECT * FROM dblink_get_notify();

=C2=A0 =C2=A0 -- Result before fix:
=C2=A0 =C2=A0 -- server closed the connection unexpectedly
=C2=A0 =C2=A0 -- SIGSEGV in server log

=C2=A0 =C2=A0 -- Result after fix:
=C2=A0 =C2=A0 -- ERROR:=C2=A0 connection not available

THE FIX
=3D=3D=3D=3D=3D=3D=3D
Add the same NULL guard that every other dblink function already has:

=C2=A0 =C2=A0 /* BEFORE */
=C2=A0 =C2=A0 else
=C2=A0 =C2=A0 =C2=A0 =C2=A0 conn =3D pconn->conn;

=C2=A0 =C2=A0 /* AFTER */
=C2=A0 =C2=A0 else
=C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 conn =3D pconn->conn;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!conn)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dblink_conn_not_avail(NULL);
=C2=A0 =C2=A0 }

4 lines added. Patch attached.

BEHAVIOUR AFTER THE FIX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =C2=A0 =C2=A0 -- No prior connection:
=C2=A0 =C2=A0 SELECT * FROM dblink_get_notify();
=C2=A0 =C2=A0 -- ERROR:=C2=A0 connection not available=C2=A0 =C2=A0(clean e= rror, no crash)

=C2=A0 =C2=A0 -- With valid connection:
=C2=A0 =C2=A0 SELECT * FROM dblink_get_notify('myconn');
=C2=A0 =C2=A0 -- (0 rows)=C2=A0 =C2=A0(works exactly as before)

REGRESSION TEST RESULTS
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=C2=A0 =C2=A0 $ meson test --suite dblink
=C2=A0 =C2=A0 1/2 dblink - postgresql:dblink/regress=C2=A0 =C2=A0 =C2=A0 = =C2=A0 OK=C2=A0 (all SQL tests pass)
=C2=A0 =C2=A0 2/2 dblink - postgresql:dblink/001_auth_scram OK=C2=A0 12 sub= tests passed
=C2=A0 =C2=A0 Ok: 2=C2=A0 =C2=A0Fail: 0

=C2=A0 =C2=A0 $ meson test --suite regress
=C2=A0 =C2=A0 1/1 regress - postgresql:regress/regress OK=C2=A0 =C2=A0245 s= ubtests passed
=C2=A0 =C2=A0 Ok: 1=C2=A0 =C2=A0Fail: 0

Tested on: PostgreSQL master 0392fb900eb, Ubuntu 24.04, x86_64.


--00000000000003840b06537776e1-- --00000000000003840c06537776e3 Content-Type: application/octet-stream; name="v1-fix-dblink-get-notify-null-crash.patch" Content-Disposition: attachment; filename="v1-fix-dblink-get-notify-null-crash.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq08j58i0 RnJvbTogQW1qYWQgU2hhaHphZCA8YW1qYWRzaGFoemFkMjAwMEBnbWFpbC5jb20+CkRhdGU6IEZy aSwgMDUgSnVuIDIwMjYgMDA6MDA6MDAgKzA1MDAKU3ViamVjdDogW1BBVENIIHYxXSBkYmxpbms6 IEZpeCBOVUxMIGRlcmVmZXJlbmNlIGNyYXNoIGluIGRibGlua19nZXRfbm90aWZ5KCkKCmRibGlu a19nZXRfbm90aWZ5KCkgcmV0cmlldmVzIGFzeW5jIG5vdGlmaWNhdGlvbnMgZnJvbSBhIHJlbW90 ZQpjb25uZWN0aW9uLiBXaGVuIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyBpdCB1c2VzIHRoZSBk ZWZhdWx0Cih1bm5hbWVkKSBjb25uZWN0aW9uLiBJZiBubyBkZWZhdWx0IGNvbm5lY3Rpb24gaGFz IGJlZW4gZXN0YWJsaXNoZWQsCnBjb25uLT5jb25uIGlzIE5VTEwuIFRoZSBjb2RlIGFzc2lnbmVk IHRoaXMgTlVMTCB0byBjb25uIGFuZCB0aGVuCnBhc3NlZCBpdCBkaXJlY3RseSB0byBQUWNvbnN1 bWVJbnB1dCgpIGFuZCBQUW5vdGlmaWVzKCkgd2l0aG91dCBhbnkKY2hlY2s6CgogICAgZWxzZQog ICAgICAgIGNvbm4gPSBwY29ubi0+Y29ubjsgICAvKiBOVUxMIGlmIG5vIGNvbm5lY3Rpb24gZXN0 YWJsaXNoZWQgKi8KCiAgICBJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CgogICAgUFFj b25zdW1lSW5wdXQoY29ubik7ICAgICAvKiBwYXNzZXMgTlVMTCB0byBsaWJwcSAqLwogICAgd2hp bGUgKChub3RpZnkgPSBQUW5vdGlmaWVzKGNvbm4pKSAhPSBOVUxMKSAgLyogTlVMTCBkZXJlZmVy ZW5jZSAqLwoKUFFub3RpZmllcyhOVUxMKSBkZXJlZmVyZW5jZXMgYSBudWxsIHBvaW50ZXIgaW50 ZXJuYWxseSwgY2F1c2luZyBhCmJhY2tlbmQgU0lHU0VHVi4gQW55IHVzZXIgd2l0aCBFWEVDVVRF IG9uIHRoZSBmdW5jdGlvbiAoZ3JhbnRlZCB0bwpQVUJMSUMgYnkgZGVmYXVsdCkgY2FuIHRyaWdn ZXIgdGhpcyB3aXRoIGEgc2luZ2xlIGNhbGw6CgogICAgU0VMRUNUICogRlJPTSBkYmxpbmtfZ2V0 X25vdGlmeSgpOwoKRXZlcnkgb3RoZXIgZnVuY3Rpb24gaW4gZGJsaW5rLmMgdGhhdCB1c2VzIHRo ZSBkZWZhdWx0IGNvbm5lY3Rpb24KYWxyZWFkeSBoYXMgYW4gZXhwbGljaXQgTlVMTCBndWFyZCB2 aWEgZGJsaW5rX2Nvbm5fbm90X2F2YWlsKCkuCmRibGlua19nZXRfbm90aWZ5KCkgd2FzIHRoZSBv bmx5IGV4Y2VwdGlvbi4KCkZpeCBieSBhZGRpbmcgdGhlIHNhbWUgTlVMTCBjaGVjayB1c2VkIGV2 ZXJ5d2hlcmUgZWxzZSBpbiB0aGUgZmlsZS4KClJlZ3Jlc3Npb24gdGVzdHM6IGFsbCAyLzIgZGJs aW5rIHRlc3RzIHBhc3Mgd2l0aCB0aGlzIHBhdGNoIGFwcGxpZWQKKG1lc29uIHRlc3QgLS1zdWl0 ZSBkYmxpbmsgb24gbWFzdGVyIDAzOTJmYjkwMGViKS4KClJlcG9ydGVkLWJ5OiBBbWphZCBTaGFo emFkIDxhbWphZHNoYWh6YWQyMDAwQGdtYWlsLmNvbT4KLS0tCiBjb250cmliL2RibGluay9kYmxp bmsuYyB8IDUgKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2RibGluay9kYmxpbmsuYyBiL2NvbnRyaWIvZGJs aW5rL2RibGluay5jCmluZGV4IGQ4NDNlZWU3ZTk3Li42ZTE3Zjg2MTEzZCAxMDA2NDQKLS0tIGEv Y29udHJpYi9kYmxpbmsvZGJsaW5rLmMKKysrIGIvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKQEAg LTE4OTAsNyArMTg5MCwxMSBAQCBkYmxpbmtfZ2V0X25vdGlmeShQR19GVU5DVElPTl9BUkdTKQog CWlmIChQR19OQVJHUygpID09IDEpCiAJCWNvbm4gPSBkYmxpbmtfZ2V0X25hbWVkX2Nvbm4odGV4 dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKSk7CiAJZWxzZQorCXsKIAkJY29ubiA9 IHBjb25uLT5jb25uOworCQlpZiAoIWNvbm4pCisJCQlkYmxpbmtfY29ubl9ub3RfYXZhaWwoTlVM TCk7CisJfQoKIAlJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7Ci0tClBvc3RncmVTUUwg bWFzdGVyLTAzOTJmYjkwMGViCg== --00000000000003840c06537776e3--