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 1wY4eD-00036L-2x for pgsql-bugs@arkaria.postgresql.org; Fri, 12 Jun 2026 16:22:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wY4eC-001B4Y-1q for pgsql-bugs@arkaria.postgresql.org; Fri, 12 Jun 2026 16:22:20 +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 1wY4eC-001B4N-0q for pgsql-bugs@lists.postgresql.org; Fri, 12 Jun 2026 16:22:20 +0000 Received: from mail-oi1-x22b.google.com ([2607:f8b0:4864:20::22b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wY4eA-000000002qn-0YxK for pgsql-bugs@lists.postgresql.org; Fri, 12 Jun 2026 16:22:20 +0000 Received: by mail-oi1-x22b.google.com with SMTP id 5614622812f47-48611addcfbso511541b6e.1 for ; Fri, 12 Jun 2026 09:22:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781281336; cv=none; d=google.com; s=arc-20240605; b=HOww+FD0V6ESTYO7O2sX016xmC18s6Vd3zSA7W9IC+jInjMc2K4+wnfPeVqVB4UkM7 L4KU+xF1hf/N5kkbHgIFc92zcpqszauZ8XUW6uDiPPTfXLEBtnuSz3PLzAZhX9Ibz/Rf fkbvLI4Z/JGYf2HEx2DJ+rEfYqJZAzvOoZmwaFyFOcWNKcMlMFmFrP2e5xGq/EJOIp9Z s2uv8WYQowrQpjkttGoLU+qnYHuA+7LbjyI6ZJ43TH+mdmsxhaJx9ShvYW6CGLtVOee1 fVYNDR+iDW+U59rB6Tp3PM807b/09KBIlmx6X/8hAkvZo2GoAuJPKJD77+wD7lwwtSeS 64tQ== 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=6zTF5GeKk9zx6a/BoLH2uqzTovH3WChb15T1dOdPZXQ=; fh=THzwMoBcYHEcUWrXguEXdmCJhUvqglf2SF22oFwG7K8=; b=jxP7lYOg5CeYIUYGbpF+pRtzmNd/1TGOuRgPphCCrekBYqGZxgEkGJB3b0b+t/CnaW dDSLvGW5JRl2GNHo6cRYrKEjTilB7WUc9vPOkPX7P50uQKCCzYqhMRXfRG7I7VjYdKhJ Njv4JNacFY9D4ha14BqP9YSldwiSTbWt1ioAAL/QF/v87FABUzOR2nvn+JAtayvgsl10 JIV1HJeAzLOATv+1v3rNRn6uy7BKrmBSqkAPZmBx42b2qFuk2uyV7gpamuGPMPtGlrP1 +y3uT1DkqQyJKEc+hbbP+S6bH/R4Y3Oj2VXkyDcxda664ac8O8UnBOXxJR6/VpJUZ7oh MehA==; 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=1781281336; x=1781886136; darn=lists.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=6zTF5GeKk9zx6a/BoLH2uqzTovH3WChb15T1dOdPZXQ=; b=ITNkrjFmo2voST5YYDnpzgBpoHlPE/n76K2JLVpd76/Jm2wnBY9mWQ2tdDgcwwvhwe yzMVCCi/k7VgUJNBx3x0H0dYTyMQ5dGheyEftRzkRKp9zfJOBA63V1rZknNzNhPcObNs DY3YYsyzRn/ftsudF8rB84cIJKNHVbhnea5Mh8CDOeLYHrnpOdmfLlnjM6J3+jbmBUrT hm+aUTTNrAHNeOPVA2JVapH19jhjM3rr/ShZbA1C/sgNKcEMg+21/jYIY9mfbMQxS8Mm Re5Dk+a5G5Sr6yBN/iYwW56d9sKdgJz+YfNWpp9erKlUrXmf8ODyevmEOPxoTw+7pY1A FVcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781281336; x=1781886136; 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=6zTF5GeKk9zx6a/BoLH2uqzTovH3WChb15T1dOdPZXQ=; b=j0viL8XzuG46fZQQvbeXLf948ezuTs+ms1lXTf6vqr/SA6pGfbGDQRB5NQDpKVD+RY zw6JSLutr8MJfPV3VrNuGlGf+oz5Knq0CGZeSb1h9lWGyhgjSYnHGy2J3GYglz/lbKQi wfj1axx6DPsQ3/h7ajX/dTRjrOT38TJIsjxy3C7hGmQgmtdivTV5Jiq9jwAFyg1hIexw 6VabjjkngyFJVMxdL3UA6tp9JY///M3d5qIyU2Afj8eRo0E9bJRQaagYBukJXNUP/Ozj fztNwa+Cjeb4k5ysWgI4MAQUttYgkxWeUAjrgrWxvEqBV7C1Uyp/W+d10geVqt1dbmdr GVag== X-Forwarded-Encrypted: i=1; AFNElJ/k13gYji4wxAA0ENhEcPYieDFpYRdYL5FkLGUkS2e/uJrMK8b20LjZa4FqQyKWIsz5MfqQyKA8L3Lq@lists.postgresql.org X-Gm-Message-State: AOJu0YyvrXIbD8U9gR+PDkJlVXKzs2D/XM2GGcpHZEQimw6oc6Z6SDvc jKwGAy6wo6qm9+nTuakOOWcFRizLiCwAJ+BmD+H7JIGeCBaW7W35Zmypfs/KUDVR+4FWpFXyoNn Kpp0LEt5HEqm4WBQUGBVK4qMOu/jw2HE= X-Gm-Gg: Acq92OHLhd+QLryp08VeDWWaMXgVMz83ywYGIuanFR7569kSUVGGTNUp3oAVxyu5FIN 5Lv75pQ0yT7bYa/Zjz56DQcyM6pzIgTzI14qSn8sT0M9lKWm9DvjkJIK4tjKyMdqzn+aZ34PyK7 vww1dQx7itC82f6IGykG5l/7sE/IeinFJsKlq95gDGrsnb5upo6HipmQYE7kAd41hNhwEpirUQM S4zPLTd0OXt8PLMHKq0FJ6uiHF3Fjzw8D64RYP1sV+JoVt8GCQyJC81AxZtOhCI84LORcFr9VUq b7K/nBDWuOpnmuDZcEbHVI3PbvbWozFgMF4CWLCkXATkGpPITS1nhWakH8uvAXzDbICFljrM+ah VlBsYidq/abZ/ypDo7GlXigAcHw== X-Received: by 2002:a05:6808:159b:b0:479:fca7:4647 with SMTP id 5614622812f47-4872f35421bmr2094184b6e.2.1781281335601; Fri, 12 Jun 2026 09:22:15 -0700 (PDT) MIME-Version: 1.0 References: <19483-80de42dc4e62cfd6@postgresql.org> <104812.1780847519@sss.pgh.pa.us> In-Reply-To: From: =?UTF-8?Q?H=C3=BCseyin_Demir?= Date: Fri, 12 Jun 2026 18:22:03 +0200 X-Gm-Features: AVVi8CcH4iAZyAje8rC5UUUEBmrxlj-T6axiGNrAklGtZvTTBM0x7IGS1damn-E Message-ID: Subject: Re: BUG #19483: pg_upgrade fails with orphan records in pg_init_priv catalog table To: Tom Lane Cc: Greg Sabino Mullane , pgsql-bugs@lists.postgresql.org, Laurenz Albe Content-Type: multipart/mixed; boundary="0000000000004107f6065410e114" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004107f6065410e114 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, I worked on pg_dump and discussed it with Laurenz Albe. Created the attached patch. The fix filters dangling grantees out of each initprivs array at query time, using NULLIF/ARRAY/NOT EXISTS against pg_authid. Entries for grantee =3D 0 (PUBLIC) are never filtered. If all entries for an object are dangling, NULL is returned and no ACL statement is emitted. Since we cannot restore grants to non-existent roles. correct outcome, The patch includes a TAP test (008_pg_dump_dangling_initprivs.pl) that reproduces the scenario using allow_system_table_mods to create a dangling pg_init_privs entry, then verifies pg_dump exits cleanly and emits no invalid GRANT. I have not prepared backpatch branches yet. Regards. H=C3=BCseyin Demir , 11 Haz 2026 Per, 07:49 tarihinde =C5=9Funu yazd=C4=B1: > > > The orphaned-rows problem shouldn't exist in v17 and later (see > > 534287403, 35dd40d34, and related commits). The OP is apparently > > complaining about an upgrade from v14, where such rows could exist. > > Yes I was working on upgrading the PostgreSQL version from v14 to v18 > and was able to solve the problem by removing the danling records from > pg_init_privs. > > > I wonder if it'd be sane for pg_dump to just skip dangling role > > references in pg_init_privs. > > It will change the behavior of pg_dump and it's a general purpose tool > because when we instruct pg_dump to filter orphan records it will > change the content in the system catalogs. > > For now I suppose we have two options: either pg_upgrade or pg_dump. > > Regards. > > > Tom Lane , 7 Haz 2026 Paz, 17:52 tarihinde =C5=9Funu y= azd=C4=B1: > > > > Greg Sabino Mullane writes: > > >> 5. Verify orphan records remain in pg_init_privs: > > > > > Thanks for providing a failing use case. I ran this on a 18.3 server = and > > > found no orphaned rows - but I used the pg_stat_statements extension > > > instead of pg_wait_sampling. Could you try your experiment using > > > pg_stat_statements? And could you also show us the contents of the er= rant > > > rows in pg_init_privs for the failing case? > > > > The orphaned-rows problem shouldn't exist in v17 and later (see > > 534287403, 35dd40d34, and related commits). The OP is apparently > > complaining about an upgrade from v14, where such rows could exist. > > > > I don't especially care for the proposed fix of making pg_upgrade > > refuse to run. Manually correcting such situations would be tedious > > and error-prone. Plus, it's inconsistent with what we did about > > related issues with role GRANTs (see 29d75b25b and 74b4438a7). > > I wonder if it'd be sane for pg_dump to just skip dangling role > > references in pg_init_privs. > > > > regards, tom lane --0000000000004107f6065410e114 Content-Type: application/octet-stream; name="v1-0001-pg_dump-skip-dangling-initprivs.patch" Content-Disposition: attachment; filename="v1-0001-pg_dump-skip-dangling-initprivs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqb4w7sb0 RnJvbSAwYWIxN2I2Y2YyZTNiMmUzOGUwYTA5MGZhZjU4NjBlYzdkZWQ4OWZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIdXNleWluIERlbWlyIDxodXNleWluLmQzckBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTIgSnVuIDIwMjYgMTg6MDA6NDcgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw Z19kdW1wOiBza2lwIHBnX2luaXRfcHJpdnMgZW50cmllcyBmb3Igbm9uLWV4aXN0ZW50IHJvbGVz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpwZ19pbml0X3ByaXZzLCBpbnRyb2R1 Y2VkIGluIFBvc3RncmVTUUwgOS42LCByZWNvcmRzIHRoZSAiaW5pdGlhbCIKcHJpdmlsZWdlIHN0 YXRlIG9mIG9iamVjdHMg4oCUIGVpdGhlciBzZXQgYnkgaW5pdGRiIChwcml2dHlwZSAnaScpIG9y IGJ5CkNSRUFURSBFWFRFTlNJT04gc2NyaXB0cyAocHJpdnR5cGUgJ2UnKS4gIHBnX2R1bXAgcmVh ZHMgdGhpcyBjYXRhbG9nIHRvCmRldGVybWluZSB3aGljaCBBQ0wgY2hhbmdlcyB0aGUgdXNlciBt YWRlIG9uIHRvcCBvZiB0aGUgZGVmYXVsdHMsIHNvIGl0CmNhbiBlbWl0IHRoZSByaWdodCBHUkFO VC9SRVZPS0Ugc3RhdGVtZW50cy4KCkJlZm9yZSBjb21taXQgNTM0Mjg3NDAzOTEsIFBvc3RncmVT UUwgZGlkIG5vdCByZWNvcmQgcm9sZSBkZXBlbmRlbmNpZXMKZm9yIHBnX2luaXRfcHJpdnMgZW50 cmllcyBpbiBwZ19zaGRlcGVuZCwgbWVhbmluZyBEUk9QIFJPTEUgY291bGQgbGVhdmUKYmVoaW5k IEFDTCBlbnRyaWVzIHdob3NlIGdyYW50ZWUgT0lEIG5vIGxvbmdlciBleGlzdHMgaW4gcGdfYXV0 aGlkLgpDcm9zcy1jbHVzdGVyIHJlc3RvcmVzIChkdW1waW5nIGZyb20gb25lIHN5c3RlbSB3aGVy ZSBhIHJvbGUgZXhpc3RlZCwKcmVzdG9yaW5nIHRvIGFub3RoZXIgd2hlcmUgaXQgZG9lcyBub3Qp IGNhbiBwcm9kdWNlIHRoZSBzYW1lIHNpdHVhdGlvbgpldmVuIG9uIG1vZGVybiByZWxlYXNlcy4K ClRoZSBvbGQgY29kZSBwYXNzZWQgdGhlc2UgZGFuZ2xpbmcgYWNsaXRlbSBlbnRyaWVzIHRocm91 Z2ggdW5jaGFuZ2VkLApjYXVzaW5nIHBnX2R1bXAgdG8gZW1pdCBzdGF0ZW1lbnRzIHN1Y2ggYXMK CiAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIGZvbygpIFRPICI4Nzg2OCI7Cgp3aGVyZSAi ODc4NjgiIGlzIGEgbnVtZXJpYyBPSUQg4oCUIGludmFsaWQgU1FMIHRoYXQgd291bGQgZmFpbCBv biByZXN0b3JlLgoKRml4IGJ5IGZpbHRlcmluZyBkYW5nbGluZyBncmFudGVlcyBvdXQgb2YgZWFj aCBpbml0cHJpdnMgYXJyYXkgYXQgcXVlcnkKdGltZTogZm9yIGV2ZXJ5IGFjbGl0ZW0gd2hvc2Ug Z3JhbnRlZSBPSUQgZG9lcyBub3QgYXBwZWFyIGluIHBnX2F1dGhpZAooZXhjbHVkaW5nIGdyYW50 ZWUgPSAwLCB3aGljaCBtZWFucyBQVUJMSUMpLCB0aGUgZW50cnkgaXMgc2lsZW50bHkKZHJvcHBl ZC4gIElmIGFsbCBlbnRyaWVzIGZvciBhbiBvYmplY3QgYXJlIGRhbmdsaW5nIHRoZSByZXN1bHQg aXMgTlVMTAphbmQgbm8gQUNMIGlzIGVtaXR0ZWQsIHdoaWNoIGlzIGNvcnJlY3Qg4oCUIHdlIGNh bm5vdCByZXN0b3JlIGdyYW50cyB0bwpyb2xlcyB0aGF0IGRvIG5vdCBleGlzdC4KCkEgc2ltaWxh ciBpc3N1ZSBpbiBwZ19kdW1wYWxsIHdhcyBmaXhlZCBieSBjb21taXQgNzRiNDQzOGE3MGIuCgot LS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDExNyAr KysrKysrKysrLS0tLS0tLS0KIC4uLi90LzAwOF9wZ19kdW1wX2RhbmdsaW5nX2luaXRwcml2cy5w bCAgICAgICB8ICA3NiArKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlv bnMoKyksIDQ5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfZHVt cC90LzAwOF9wZ19kdW1wX2RhbmdsaW5nX2luaXRwcml2cy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGEw ZjdmOGUyMTY4Li44YzRkNWFmZWUxNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMDkwMCw2OSArMTA5MDAs ODggQEAgZ2V0QWRkaXRpb25hbEFDTHMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSA5MDYwMCkKIAl7CiAJCXByaW50ZlBRRXhwQnVmZmVyKHF1ZXJ5LAotCQkJCQkJ ICAiU0VMRUNUIG9iam9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBwcml2dHlwZSwgaW5pdHByaXZz ICIKLQkJCQkJCSAgIkZST00gcGdfaW5pdF9wcml2cyIpOworCQkJCQkJICAiU0VMRUNUIHBpcC5v YmpvaWQsIHBpcC5jbGFzc29pZCwgcGlwLm9ianN1YmlkLCBwaXAucHJpdnR5cGUsXG4iCisJCQkJ CQkgICIgIE5VTExJRihcbiIKKwkJCQkJCSAgIiAgICBBUlJBWShcbiIKKwkJCQkJCSAgIiAgICAg IFNFTEVDVCBlbHQgRlJPTSBwZ19jYXRhbG9nLnVubmVzdChwaXAuaW5pdHByaXZzKSBBUyBlbHRc biIKKwkJCQkJCSAgIiAgICAgIFdIRVJFIE5PVCBFWElTVFMgKFxuIgorCQkJCQkJICAiICAgICAg ICBTRUxFQ1QgMSBGUk9NIHBnX2NhdGFsb2cuYWNsZXhwbG9kZShBUlJBWVtlbHRdKSBhY2VcbiIK KwkJCQkJCSAgIiAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYXV0aGlkIGEgT04gYS5v aWQgPSBhY2UuZ3JhbnRlZVxuIgorCQkJCQkJICAiICAgICAgICBXSEVSRSBhY2UuZ3JhbnRlZSA8 PiAwIEFORCBhLm9pZCBJUyBOVUxMXG4iCisJCQkJCQkgICIgICAgICApXG4iCisJCQkJCQkgICIg ICAgKSwgQVJSQVlbXTo6cGdfY2F0YWxvZy5hY2xpdGVtW11cbiIKKwkJCQkJCSAgIiAgKSBBUyBp bml0cHJpdnNcbiIKKwkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19pbml0X3ByaXZzIHBpcCIp OwogCiAJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQ TEVTX09LKTsKIAogCQludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwotCQlmb3IgKGkgPSAwOyBpIDwg bnR1cHM7IGkrKykKKwkJaWYgKG50dXBzID4gMCkKIAkJewotCQkJT2lkCQkJb2Jqb2lkID0gYXRv b2lkKFBRZ2V0dmFsdWUocmVzLCBpLCAwKSk7Ci0JCQlPaWQJCQljbGFzc29pZCA9IGF0b29pZChQ UWdldHZhbHVlKHJlcywgaSwgMSkpOwotCQkJaW50CQkJb2Jqc3ViaWQgPSBhdG9pKFBRZ2V0dmFs dWUocmVzLCBpLCAyKSk7Ci0JCQljaGFyCQlwcml2dHlwZSA9ICooUFFnZXR2YWx1ZShyZXMsIGks IDMpKTsKLQkJCWNoYXIJICAgKmluaXRwcml2cyA9IFBRZ2V0dmFsdWUocmVzLCBpLCA0KTsKLQkJ CUNhdGFsb2dJZAlvYmpJZDsKLQkJCUR1bXBhYmxlT2JqZWN0ICpkb2JqOworCQkJaW50CQkJaV9v YmpvaWQgPSBQUWZudW1iZXIocmVzLCAib2Jqb2lkIik7CisJCQlpbnQJCQlpX2NsYXNzb2lkID0g UFFmbnVtYmVyKHJlcywgImNsYXNzb2lkIik7CisJCQlpbnQJCQlpX29ianN1YmlkID0gUFFmbnVt YmVyKHJlcywgIm9ianN1YmlkIik7CisJCQlpbnQJCQlpX3ByaXZ0eXBlID0gUFFmbnVtYmVyKHJl cywgInByaXZ0eXBlIik7CisJCQlpbnQJCQlpX2luaXRwcml2cyA9IFBRZm51bWJlcihyZXMsICJp bml0cHJpdnMiKTsKIAotCQkJb2JqSWQudGFibGVvaWQgPSBjbGFzc29pZDsKLQkJCW9iaklkLm9p ZCA9IG9iam9pZDsKLQkJCWRvYmogPSBmaW5kT2JqZWN0QnlDYXRhbG9nSWQob2JqSWQpOwotCQkJ LyogT0sgdG8gaWdub3JlIGVudHJpZXMgd2UgaGF2ZW4ndCBnb3QgYSBEdW1wYWJsZU9iamVjdCBm b3IgKi8KLQkJCWlmIChkb2JqKQorCQkJZm9yIChpID0gMDsgaSA8IG50dXBzOyBpKyspCiAJCQl7 Ci0JCQkJLyogQ29wZSB3aXRoIHN1Yi1vYmplY3QgaW5pdHByaXZzICovCi0JCQkJaWYgKG9ianN1 YmlkICE9IDApCisJCQkJT2lkCQkJb2Jqb2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBp X29iam9pZCkpOworCQkJCU9pZAkJCWNsYXNzb2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBp LCBpX2NsYXNzb2lkKSk7CisJCQkJaW50CQkJb2Jqc3ViaWQgPSBhdG9pKFBRZ2V0dmFsdWUocmVz LCBpLCBpX29ianN1YmlkKSk7CisJCQkJY2hhcgkJcHJpdnR5cGUgPSAqKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3ByaXZ0eXBlKSk7CisJCQkJY2hhcgkgICAqaW5pdHByaXZzID0gUFFnZXR2YWx1ZShy ZXMsIGksIGlfaW5pdHByaXZzKTsKKwkJCQlDYXRhbG9nSWQJb2JqSWQ7CisJCQkJRHVtcGFibGVP YmplY3QgKmRvYmo7CisKKwkJCQlvYmpJZC50YWJsZW9pZCA9IGNsYXNzb2lkOworCQkJCW9iaklk Lm9pZCA9IG9iam9pZDsKKwkJCQlkb2JqID0gZmluZE9iamVjdEJ5Q2F0YWxvZ0lkKG9iaklkKTsK KwkJCQkvKiBPSyB0byBpZ25vcmUgZW50cmllcyB3ZSBoYXZlbid0IGdvdCBhIER1bXBhYmxlT2Jq ZWN0IGZvciAqLworCQkJCWlmIChkb2JqKQogCQkJCXsKLQkJCQkJaWYgKGRvYmotPm9ialR5cGUg PT0gRE9fVEFCTEUpCisJCQkJCS8qIENvcGUgd2l0aCBzdWItb2JqZWN0IGluaXRwcml2cyAqLwor CQkJCQlpZiAob2Jqc3ViaWQgIT0gMCkKIAkJCQkJewotCQkJCQkJLyogRm9yIGEgY29sdW1uIGlu aXRwcml2cywgc2V0IHRoZSB0YWJsZSdzIEFDTCBmbGFncyAqLwotCQkJCQkJZG9iai0+Y29tcG9u ZW50cyB8PSBEVU1QX0NPTVBPTkVOVF9BQ0w7Ci0JCQkJCQkoKFRhYmxlSW5mbyAqKSBkb2JqKS0+ aGFzY29sdW1uQUNMcyA9IHRydWU7CisJCQkJCQlpZiAoZG9iai0+b2JqVHlwZSA9PSBET19UQUJM RSkKKwkJCQkJCXsKKwkJCQkJCQkvKiBGb3IgYSBjb2x1bW4gaW5pdHByaXZzLCBzZXQgdGhlIHRh YmxlJ3MgQUNMIGZsYWdzICovCisJCQkJCQkJZG9iai0+Y29tcG9uZW50cyB8PSBEVU1QX0NPTVBP TkVOVF9BQ0w7CisJCQkJCQkJKChUYWJsZUluZm8gKikgZG9iaiktPmhhc2NvbHVtbkFDTHMgPSB0 cnVlOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJCXBnX2xvZ193YXJuaW5nKCJ1bnN1cHBv cnRlZCBwZ19pbml0X3ByaXZzIGVudHJ5OiAldSAldSAlZCIsCisJCQkJCQkJCQkJICAgY2xhc3Nv aWQsIG9iam9pZCwgb2Jqc3ViaWQpOworCQkJCQkJY29udGludWU7CiAJCQkJCX0KLQkJCQkJZWxz ZQotCQkJCQkJcGdfbG9nX3dhcm5pbmcoInVuc3VwcG9ydGVkIHBnX2luaXRfcHJpdnMgZW50cnk6 ICV1ICV1ICVkIiwKLQkJCQkJCQkJCSAgIGNsYXNzb2lkLCBvYmpvaWQsIG9ianN1YmlkKTsKLQkJ CQkJY29udGludWU7Ci0JCQkJfQogCi0JCQkJLyoKLQkJCQkgKiBXZSBpZ25vcmUgYW55IHBnX2lu aXRfcHJpdnMuaW5pdHByaXZzIGVudHJ5IGZvciB0aGUgcHVibGljCi0JCQkJICogc2NoZW1hLCBh cyBleHBsYWluZWQgaW4gZ2V0TmFtZXNwYWNlcygpLgotCQkJCSAqLwotCQkJCWlmIChkb2JqLT5v YmpUeXBlID09IERPX05BTUVTUEFDRSAmJgotCQkJCQlzdHJjbXAoZG9iai0+bmFtZSwgInB1Ymxp YyIpID09IDApCi0JCQkJCWNvbnRpbnVlOworCQkJCQkvKgorCQkJCQkgKiBXZSBpZ25vcmUgYW55 IHBnX2luaXRfcHJpdnMuaW5pdHByaXZzIGVudHJ5IGZvciB0aGUgcHVibGljCisJCQkJCSAqIHNj aGVtYSwgYXMgZXhwbGFpbmVkIGluIGdldE5hbWVzcGFjZXMoKS4KKwkJCQkJICovCisJCQkJCWlm IChkb2JqLT5vYmpUeXBlID09IERPX05BTUVTUEFDRSAmJgorCQkJCQkJc3RyY21wKGRvYmotPm5h bWUsICJwdWJsaWMiKSA9PSAwKQorCQkJCQkJY29udGludWU7CiAKLQkJCQkvKiBFbHNlIGl0IGhh ZCBiZXR0ZXIgYmUgb2YgYSB0eXBlIHdlIHRoaW5rIGhhcyBBQ0xzICovCi0JCQkJaWYgKGRvYmot Pm9ialR5cGUgPT0gRE9fTkFNRVNQQUNFIHx8Ci0JCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fVFlQ RSB8fAotCQkJCQlkb2JqLT5vYmpUeXBlID09IERPX0ZVTkMgfHwKLQkJCQkJZG9iai0+b2JqVHlw ZSA9PSBET19BR0cgfHwKLQkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19UQUJMRSB8fAotCQkJCQlk b2JqLT5vYmpUeXBlID09IERPX1BST0NMQU5HIHx8Ci0JCQkJCWRvYmotPm9ialR5cGUgPT0gRE9f RkRXIHx8Ci0JCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fRk9SRUlHTl9TRVJWRVIpCi0JCQkJewot CQkJCQlEdW1wYWJsZU9iamVjdFdpdGhBY2wgKmRhb2JqID0gKER1bXBhYmxlT2JqZWN0V2l0aEFj bCAqKSBkb2JqOworCQkJCQkvKiBFbHNlIGl0IGhhZCBiZXR0ZXIgYmUgb2YgYSB0eXBlIHdlIHRo aW5rIGhhcyBBQ0xzICovCisJCQkJCWlmIChkb2JqLT5vYmpUeXBlID09IERPX05BTUVTUEFDRSB8 fAorCQkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19UWVBFIHx8CisJCQkJCQlkb2JqLT5vYmpUeXBl ID09IERPX0ZVTkMgfHwKKwkJCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fQUdHIHx8CisJCQkJCQlk b2JqLT5vYmpUeXBlID09IERPX1RBQkxFIHx8CisJCQkJCQlkb2JqLT5vYmpUeXBlID09IERPX1BS T0NMQU5HIHx8CisJCQkJCQlkb2JqLT5vYmpUeXBlID09IERPX0ZEVyB8fAorCQkJCQkJZG9iai0+ b2JqVHlwZSA9PSBET19GT1JFSUdOX1NFUlZFUikKKwkJCQkJeworCQkJCQkJRHVtcGFibGVPYmpl Y3RXaXRoQWNsICpkYW9iaiA9IChEdW1wYWJsZU9iamVjdFdpdGhBY2wgKikgZG9iajsKIAotCQkJ CQlkYW9iai0+ZGFjbC5wcml2dHlwZSA9IHByaXZ0eXBlOwotCQkJCQlkYW9iai0+ZGFjbC5pbml0 cHJpdnMgPSBwc3RyZHVwKGluaXRwcml2cyk7CisJCQkJCQlkYW9iai0+ZGFjbC5wcml2dHlwZSA9 IHByaXZ0eXBlOworCQkJCQkJZGFvYmotPmRhY2wuaW5pdHByaXZzID0gcHN0cmR1cChpbml0cHJp dnMpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCXBnX2xvZ193YXJuaW5nKCJ1bnN1cHBvcnRl ZCBwZ19pbml0X3ByaXZzIGVudHJ5OiAldSAldSAlZCIsCisJCQkJCQkJCQkgICBjbGFzc29pZCwg b2Jqb2lkLCBvYmpzdWJpZCk7CiAJCQkJfQotCQkJCWVsc2UKLQkJCQkJcGdfbG9nX3dhcm5pbmco InVuc3VwcG9ydGVkIHBnX2luaXRfcHJpdnMgZW50cnk6ICV1ICV1ICVkIiwKLQkJCQkJCQkJICAg Y2xhc3NvaWQsIG9iam9pZCwgb2Jqc3ViaWQpOwogCQkJfQogCQl9CiAJCVBRY2xlYXIocmVzKTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwOF9wZ19kdW1wX2RhbmdsaW5nX2luaXRw cml2cy5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwOF9wZ19kdW1wX2RhbmdsaW5nX2luaXRwcml2 cy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjRlOTBjYWRjYTYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDhfcGdfZHVtcF9kYW5nbGlu Z19pbml0cHJpdnMucGwKQEAgLTAsMCArMSw3NiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQtMjAy NiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMKKyMgVGVzdHMgdGhhdCBw Z19kdW1wIHNpbGVudGx5IHNraXBzIHBnX2luaXRfcHJpdnMgZW50cmllcyB0aGF0IHJlZmVyZW5j ZQorIyByb2xlcyBubyBsb25nZXIgcHJlc2VudCBpbiBwZ19hdXRoaWQsIHJhdGhlciB0aGFuIGVt aXR0aW5nIGludmFsaWQgR1JBTlQKKyMgc3RhdGVtZW50cyB3aXRoIG51bWVyaWMgT0lEcyBhcyBy b2xlIG5hbWVzLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwor Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnbWFpbicpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+c3RhcnQ7CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBEQVRBQkFTRSByZWdyZXNzX2RhbmdsaW5n Jyk7CisKKyMgU2ltdWxhdGUgYW4gZXh0ZW5zaW9uLWluc3RhbGxlZCBvYmplY3Qgd2hvc2UgaW5p dHByaXZzIHJlZmVyZW5jZWQgYSByb2xlCisjIHRoYXQgd2FzIGxhdGVyIGRyb3BwZWQgKG9yIG5l dmVyIGV4aXN0ZWQgb24gdGhpcyBjbHVzdGVyKS4gIFdlIGNhbm5vdCB1c2UKKyMgbm9ybWFsIERS T1AgUk9MRSBiZWNhdXNlIHBnX3NoZGVwZW5kIHdvdWxkIGJsb2NrIGl0LCBzbyB3ZSBkZWxldGUg dGhlIHJvbGUKKyMgZGlyZWN0bHkgZnJvbSBwZ19hdXRoaWQgd2l0aCBhbGxvd19zeXN0ZW1fdGFi bGVfbW9kcywgbGVhdmluZyBhIGRhbmdsaW5nCisjIGdyYW50ZWUgT0lEIGluIHBnX2luaXRfcHJp dnMuCiskbm9kZS0+c2FmZV9wc3FsKAorCSdyZWdyZXNzX2RhbmdsaW5nJywKKwlxeworU0VUIGFs bG93X3N5c3RlbV90YWJsZV9tb2RzID0gdHJ1ZTsKKworQ1JFQVRFIFJPTEUgZ2hvc3Rfcm9sZTsK KworQ1JFQVRFIEZVTkNUSU9OIHB1YmxpYy50ZXN0X2Z1bmMoKSBSRVRVUk5TIGludCBMQU5HVUFH RSBzcWwgQVMgJ1NFTEVDVCAxJzsKKworSU5TRVJUIElOVE8gcGdfaW5pdF9wcml2cyAob2Jqb2lk LCBjbGFzc29pZCwgb2Jqc3ViaWQsIHByaXZ0eXBlLCBpbml0cHJpdnMpCitTRUxFQ1QgcC5vaWQs CisgICAgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX3By b2MnKSwKKyAgICAgICAwLAorICAgICAgICdlJywKKyAgICAgICBBUlJBWVsoJ2dob3N0X3JvbGU9 WC8nIHx8IGN1cnJlbnRfdXNlcik6OmFjbGl0ZW1dCitGUk9NICAgcGdfcHJvYyBwCitXSEVSRSAg cC5wcm9uYW1lID0gJ3Rlc3RfZnVuYycKK0FORCAgICBwLnByb25hbWVzcGFjZSA9ICdwdWJsaWMn OjpyZWduYW1lc3BhY2U7CisKK0RFTEVURSBGUk9NIHBnX2F1dGhpZCBXSEVSRSByb2xuYW1lID0g J2dob3N0X3JvbGUnOworfSk7CisKK215ICR0ZW1wZGlyICAgPSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczo6dGVtcGRpcjsKK215ICRkdW1wX2ZpbGUgPSAiJHRlbXBkaXIvZGFuZ2xpbmcuc3FsIjsK KworIyBwZ19kdW1wIG11c3Qgc3VjY2VlZCBldmVuIHRob3VnaCBwZ19pbml0X3ByaXZzIGhhcyBh IGRhbmdsaW5nIGdyYW50ZWUgT0lELgorY29tbWFuZF9vaygKKwlbCisJCSdwZ19kdW1wJywKKwkJ Jy0tcG9ydCcgICAgICAgID0+ICRub2RlLT5wb3J0LAorCQknLS1zY2hlbWEtb25seScsCisJCSct ZicgICAgICAgICAgICA9PiAkZHVtcF9maWxlLAorCQkncmVncmVzc19kYW5nbGluZycsCisJXSwK KwkncGdfZHVtcCBzdWNjZWVkcyB3aXRoIGRhbmdsaW5nIHBnX2luaXRfcHJpdnMgZW50cmllcycp OworCitteSAkZHVtcCA9IHNsdXJwX2ZpbGUoJGR1bXBfZmlsZSk7CisKKyMgVGhlIGZ1bmN0aW9u IGl0c2VsZiBtdXN0IHN0aWxsIGFwcGVhciBpbiB0aGUgZHVtcC4KK2xpa2UoJGR1bXAsIHFyL0NS RUFURSBGVU5DVElPTiBwdWJsaWNcLnRlc3RfZnVuYy8sCisJJ2Z1bmN0aW9uIGlzIHByZXNlbnQg aW4gZHVtcCcpOworCisjIE5vIEdSQU5UIHN0YXRlbWVudCBzaG91bGQgcmVmZXJlbmNlIGEgYmFy ZSBudW1lcmljIE9JRCBhcyBhIHJvbGUgbmFtZS4KK3VubGlrZSgkZHVtcCwgcXIvR1JBTlRcYi4q XGJUT1xzKyJbMC05XSsiLywKKwknbm8gR1JBTlQgd2l0aCBudW1lcmljIE9JRCBhcyByb2xlIG5h bWUnKTsKKworIyBObyBHUkFOVCBhdCBhbGwgZm9yIHRlc3RfZnVuYzogYWxsIGluaXRwcml2cyBl bnRyaWVzIHdlcmUgZGFuZ2xpbmcgYW5kCisjIHByb2FjbCBpcyBOVUxMLCBzbyB0aGVyZSBpcyBu b3RoaW5nIHRvIGVtaXQuCit1bmxpa2UoJGR1bXAsIHFyL0dSQU5UXGIuKlxidGVzdF9mdW5jLywK Kwknbm8gR1JBTlQgZm9yIHRlc3RfZnVuYyB3aGVuIGFsbCBpbml0cHJpdnMgZW50cmllcyBhcmUg ZGFuZ2xpbmcnKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUp Cgo= --0000000000004107f6065410e114--