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 1wHHC6-0071Jf-0q for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Apr 2026 08:19:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wHHC5-00Cwf9-1W for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Apr 2026 08:19:53 +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 1wHHC4-00Cwf1-2u for pgsql-hackers@lists.postgresql.org; Mon, 27 Apr 2026 08:19:53 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wHHC2-00000002zx3-0MB0 for pgsql-hackers@lists.postgresql.org; Mon, 27 Apr 2026 08:19:52 +0000 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-483487335c2so96766015e9.2 for ; Mon, 27 Apr 2026 01:19:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777277989; x=1777882789; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=pI4evJ2vtUhWnLTs/R+iia8ou9eDnYmn6fBNc2bfbpA=; b=L6k/XC5fdDx3AH6Z5teJMBvvNkcoKXpQeQGmoSPEoyMFAvTYLF5ghzX4BnuGQXtNNy NbBI3WUhGcrlC6qmf5yVAbPB6QwYheDgqfHaSVBz+Yxp/qN7M2kvW8yp9GsRpKV5MWPp 0kNCxwEp3hCtEZgaaVf5F799C6HyGjzOoodu+sbYEz//GeZRw5XQ5/m0NHBOtRlX3Bbo npDyUmSje1WrWn8OYGWVpFsOMFz4XBPgyHSaZFda3NLmVb7IjaP+Ugks21slHbPsJgXm 5wZ+uxrXaH2cS+i+q1Aigixyu9HOfsaP0xHlL6O++cpePhJvUR6JMAjuyWayauXZJ5+S fnHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777277989; x=1777882789; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=pI4evJ2vtUhWnLTs/R+iia8ou9eDnYmn6fBNc2bfbpA=; b=BMt257xx9MlRCvCFKidzAesiYl3tZGmpXurCrYr7XEFTUnEcF5Pj1ZQaPUzthfBuMi ruG2RVm5QMZypjNNcEQPbYhGgjVR/JG/YVayhCe96V4u9Kn0eW9hOnqDbe4etkA47T8K ldOSE9LiIRcJR97qS1UyCk7D7hUAHidpsiQoIjLCQsBCq8CHuhrjNIiXHYgf64djnEDR ur3GPYDVStYWXiF7CUgw7krLuruZK2+XNnl2+Gm8UGh7ZEETjiKmQUWuTzhz85wX99Y8 us32b0wUrFXm04ya1p+f/i5ry4QRjdk7hNX0IsU4EEimDdbFotlDSeUEh6VgjfGOdB5F 7e7w== X-Gm-Message-State: AOJu0Yy8qKbmuhsu+j2Wf+/mvKLoYc6arfXyKqNBM5QrmHai2HuWUo+Z LBaG/B6lTsTsSDmeX97d/0hHQMC3cEXhj+rrXnkqobbsb4UUfM3DRv57 X-Gm-Gg: AeBDieunFVcQVLOFFLUqLB/rLh/zYp/Mjz/UDt7WJGjnGfINen8bQD3DTlYyL3sUpr4 dn+L8rdyIx7Pye9q93vS2ee7eBUgD+EdirHu8SAdlH6IPLx6mAcO4/P4S4c68Gt1ELgqXExO4vL YZ3e1cRozFtfNsKfnhh8EFWRXxM7imR9h6gYYTOTncN0SVBKzxd1hInZLi9Mjwe2x1uABJVU/lB iyswCdJ66bGFG1Iy+d0uz2ohpJVsxnwBP5uzsCsDdceVzYS02z4kKHaRTKMSKGu+J9Ym0o6bcoj 8ReCcBM/RKWxBslWjnqHSF5/a4ncjTE5CZ7a10Y9uzjiCG0pNN2NocoOYcVs5R51STkCC9t28/p iGArUDRrEg+oUhEbjAJWd0bVsLDGdvSOBqNOBO1zahQVpU4z+fyWeHTnL4wuv42XhoIBQ3ru4Eu IXfB2ijutZQO2hobI4IBZOwgIAH88qL4jVS6DofevDjGqOvXnX80sQFJDIpyshR2RuqbUah3/Ve acmxFt8 X-Received: by 2002:a05:600c:8b38:b0:485:39b2:a47c with SMTP id 5b1f17b1804b1-488fb796fa0mr584611155e9.25.1777277988695; Mon, 27 Apr 2026 01:19:48 -0700 (PDT) Received: from [192.168.0.86] (84.123.230.95.dyn.user.ono.com. [84.123.230.95]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a66533ff4sm103618415e9.6.2026.04.27.01.19.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 Apr 2026 01:19:47 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------srRlGNa2bcHSS9UpQ63UgE4h" Message-ID: <61918bfd-dac1-4701-b214-ed3c4e228619@gmail.com> Date: Mon, 27 Apr 2026 10:19:46 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: A very quick observation of dangling pointers in Postgres pathlists To: David Rowley Cc: PostgreSQL Hackers , Tom Lane References: <20be3d9d-4147-492a-b69c-d69a87a014a9@gmail.com> Content-Language: en-US From: Andrei Lepikhov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------srRlGNa2bcHSS9UpQ63UgE4h Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 21/04/2026 10:35, David Rowley wrote: > On Tue, 21 Apr 2026 at 19:29, Andrei Lepikhov wrote: >> I've attached a patch that shows how to fix the issue. Some regression tests >> change because of a hidden rule where a projection and its subpath have >> different target lists. Right now, the patch always enforces a projection, even >> if the target lists are the same. This is still open for discussion on whether >> there's a better way to handle it. > > IMO, we should write a function like copy_path() or reparent_path(), > which creates a copy of the given Path, or the latter also would copy > then set the ->parent to the given RelOptInfo. Any time we use a path > directly from the pathlist of another RelOptInfo, we should reparent > or copy it. We could add an Assert in add_path() to check the new path > has the correct parent to help us find the places where we forget to > do this. I've attached the patch so we can keep the discussion going. I used a shallow copy since re-parenting is not that obvious. As I see it, the parent pointer does not indicate ownership. Instead, it points to the source operator (RelOptInfo). For instance, createplan.c uses it to get the relid of the scan operation. Should the parent point to the pathlist's owner? Possibly, but right now I am not sure how introducing such an explicit contract would affect the optimiser. This issue can't be explicitly reproduced with the current optimiser without deep code intervention. So, if tests are needed, I propose a minor debug-only check inside the plan-building code: with best_path, we can scan RelOptInfo's pathlist and partial_pathlist to detect dangling pointers. It seems not stable enough, so I just left the patch without a test infrastructure. -- regards, Andrei Lepikhov, pgEdge --------------srRlGNa2bcHSS9UpQ63UgE4h Content-Type: text/plain; charset=UTF-8; name="0001-Fix-dangling-Path-pointer-in-create_ordered_paths.patch" Content-Disposition: attachment; filename*0="0001-Fix-dangling-Path-pointer-in-create_ordered_paths.patch" Content-Transfer-Encoding: base64 RnJvbSA3MTgzZDU4N2E2OTg2MDY2M2QwZDBjYzkwMTcwYjY0NWE2YmVkMGE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjcgQXByIDIwMjYgMDk6NTQ6MTEgKzAyMDAKU3ViamVj dDogW1BBVENIXSBGaXggZGFuZ2xpbmcgUGF0aCBwb2ludGVyIGluIGNyZWF0ZV9vcmRlcmVk X3BhdGhzCgpXaGVuIGNyZWF0ZV9vcmRlcmVkX3BhdGhzKCkgZm91bmQgdGhhdCBhbiBpbnB1 dCBwYXRoIHdhcyBhbHJlYWR5CnN1ZmZpY2llbnRseSBzb3J0ZWQsIGl0IHNldCBzb3J0ZWRf cGF0aCA9IGlucHV0X3BhdGgsIGFsaWFzaW5nIHRoZQpwb2ludGVyIHdpdGggaW5wdXRfcmVs LT5wYXRobGlzdC4gSXQgY2F1c2VzIHRoZSBzaXR1YXRpb24gd2hlbiBvbmUgcGF0aCBleGlz dHMKaW4gcGF0aGxpc3RzIG9mIHR3byBSZWxPcHRJbmZvJ3MgdGhhdCBtaWdodCBjYXVzZSB1 c2UtYWZ0ZXItZnJlZSBpZiB1cHBlciByZWwKd291bGQgd2FzaCBvdXQgYW5kIGZyZWUgdGhp cyBwYXRoIGxhdGVyLgoKRml4IGJ5IGludHJvZHVjaW5nIGEgc2hhbGxvdy1jb3B5IGhlbHBl ciwgY29weV9wYXRoKCksIHRoYXQgcmV0dXJucyBhIGZyZXNoCnBhbGxvYydkIFBhdGggb2Yg dGhlIHNhbWUgY29uY3JldGUgdHlwZSBhcyBpdHMgYXJndW1lbnQsIHdpdGggYWxsIGZpZWxk cyBjb3BpZWQKYW5kIHBvaW50ZXItdHlwZWQgc3Vic3RydWN0dXJlIChzdWJwYXRocywgbGlz dHMsIHBhdGh0YXJnZXRzLCAuLi4pIHNoYXJlZCB3aXRoCnRoZSBvcmlnaW5hbC4gIFVzZSBj b3B5X3BhdGgoaW5wdXRfcGF0aCkgYXQgdGhlIGlzX3NvcnRlZCBzaG9ydC1jdXQgc28gdGhh dCBhbnkKc3Vic2VxdWVudCBpbi1wbGFjZSBtdXRhdGlvbiBvciBwZnJlZSBhZmZlY3RzIG9u bHkgdGhlIG9yZGVyZWRfcmVsLW93bmVkIG5vZGUuCgpGb3IgVF9DdXN0b21QYXRoIHRoZSBo ZWxwZXIgZGlzcGF0Y2hlcyB0byBhIG5ldyBvcHRpb25hbCBDb3B5Q3VzdG9tUGF0aCBjYWxs YmFjawppbiBDdXN0b21QYXRoTWV0aG9kcywgZmFsbGluZyBiYWNrIHRvIGEgc2l6ZW9mKEN1 c3RvbVBhdGgpIG1lbWNweSB3aGVuCnRoZSBleHRlbnNpb24gZG9lcyBub3Qgc3VwcGx5IG9u ZS4gRXh0ZW5zaW9ucyB0aGF0IHN1YmNsYXNzIEN1c3RvbVBhdGggd2l0aApwcml2YXRlIHRy YWlsaW5nIGZpZWxkcyBzaG91bGQgaW1wbGVtZW50IHRoZSBjYWxsYmFjay4gIFRoZSBDdXN0 b21QYXRoTWV0aG9kcwpleHRlbnNpb24gaXMgYW4gQUJJIGNoYW5nZSwgc28gdGhpcyBmaXgg aXMgbWFzdGVyLW9ubHkgYXMgY29tbWl0dGVkOyBhIGJhY2stCmJyYW5jaCB2YXJpYW50IGNv dWxkIHNpbXBseSBlbG9nIG9uIFRfQ3VzdG9tUGF0aC4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vYWRhYjk3NTgtZjM0Ni00MjYzLTkzYWYtM2UzN2I3YjMxNWI3JTQwZ21h aWwuY29tCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICB8ICAg MiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyB8IDE1OCArKysr KysrKysrKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvbm9kZXMvZXh0ZW5zaWJsZS5o ICAgICAgICB8ICAgNyArKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggICAg ICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDE2NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0ZWM3 NmNlMzFhOS4uMzNkYzJlYjJlNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKQEAgLTU0NDAsNyArNTQ0MCw3IEBAIGNyZWF0ZV9vcmRlcmVkX3BhdGhzKFBsYW5u ZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJaW5wdXRfcGF0aC0+cGF0aGtleXMsICZwcmVz b3J0ZWRfa2V5cyk7CiAKIAkJaWYgKGlzX3NvcnRlZCkKLQkJCXNvcnRlZF9wYXRoID0gaW5w dXRfcGF0aDsKKwkJCXNvcnRlZF9wYXRoID0gY29weV9wYXRoKGlucHV0X3BhdGgpOwogCQll bHNlCiAJCXsKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpp bmRleCA3MzUxOGM4Zjg3MC4uNWVhZTcyNGRiODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGF0aG5vZGUuYwpAQCAtMjM3LDYgKzIzNywxNjEgQEAgY29tcGFyZV9wYXRoX2Nv c3RzX2Z1enppbHkoUGF0aCAqcGF0aDEsIFBhdGggKnBhdGgyLCBkb3VibGUgZnV6el9mYWN0 b3IpCiAjdW5kZWYgQ09OU0lERVJfUEFUSF9TVEFSVFVQX0NPU1QKIH0KIAorLyoKKyAqIGNv cHlfcGF0aAorICoJCU1ha2UgYSBzaGFsbG93IGNvcHkgb2YgYSBQYXRoIG5vZGUuCisgKgor ICogVGhlIG5ldyBub2RlIGRlbGliZXJhdGVseSByZXRhaW5zIHBhdGgtPnBhcmVudC4gIFRo ZSBwYXJlbnQgZmllbGQgaXMgbm90IGFuCisgKiBvd25lcnNoaXAgbWFya2VyIOKAlCBpdCBp cyBhIHN0YWJsZSBpZGVudGl0eSBsaW5rLiBGb3IgZXhhbXBsZSwgaXQgaXMgdXNlZCBpbgor ICogY3JlYXRlcGxhbi5jIHRvIGlkZW50aWZ5IGJhc2UgcmVsYXRpb24uCisgKgorICogRm9y IFRfQ3VzdG9tUGF0aCwgd2UgZGlzcGF0Y2ggdG8gdGhlIG9wdGlvbmFsIENvcHlDdXN0b21Q YXRoIGNhbGxiYWNrIGlmCisgKiBwcm92aWRlZDsgb3RoZXJ3aXNlIHdlIGZhbGwgYmFjayB0 byBhIHNpemVvZihDdXN0b21QYXRoKSBtZW1jcHksIHdoaWNoIGlzCisgKiBjb3JyZWN0IG9u bHkgd2hlbiB0aGUgZXh0ZW5zaW9uIGhhc24ndCBhcHBlbmRlZCBpdHMgb3duIHByaXZhdGUg ZmllbGRzLgorICoKKyAqIE5vdGU6IHRoaXMgaXMgaW50ZW50aW9uYWxseSBzaGFsbG93ZXIg dGhhbiBjb3B5T2JqZWN0KCkgKHdoaWNoIGRlZXAtY29waWVzCisgKiBzdWJsaXN0cyBhbmQg c3Vic3RydWN0dXJlKSBhbmQgbGlnaHRlciB0aGFuIHJlcGFyYW1ldGVyaXplX3BhdGgoKSAo d2hpY2gKKyAqIHJlLXJ1bnMgdGhlIGNvbnN0cnVjdG9yIGFuZCByZS1jb3N0cykuICBXZSBu ZWVkIG9ubHkgYSBmcmVzaCB0b3AtbGV2ZWwKKyAqIG5vZGUgc28gYWRkX3BhdGgoKSdzIHBm cmVlIGFuZCBhcHBseV9wcm9qZWN0aW9uX3RvX3BhdGgoKSdzIGluLXBsYWNlCisgKiBtdXRh dGlvbiBjYW5ub3QgYWZmZWN0IHRoZSBvcmlnaW5hbC4KKyAqLworUGF0aCAqCitjb3B5X3Bh dGgoUGF0aCAqcGF0aCkKK3sKKwlQYXRoCSAgICpuZXdwYXRoOworCisJQXNzZXJ0KHBhdGgg IT0gTlVMTCk7CisKKyNkZWZpbmUgRkxBVF9DT1BZX1BBVEgobmV3bm9kZV8sIG5vZGVfLCBu b2RldHlwZV8pIFwKKwkoIChuZXdub2RlXykgPSAoUGF0aCAqKSBwYWxsb2Moc2l6ZW9mKG5v ZGV0eXBlXykpLCBcCisJICBtZW1jcHkoKG5ld25vZGVfKSwgKG5vZGVfKSwgc2l6ZW9mKG5v ZGV0eXBlXykpICkKKworCXN3aXRjaCAobm9kZVRhZyhwYXRoKSkKKwl7CisJCWNhc2UgVF9Q YXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgUGF0aCk7CisJCQlicmVh azsKKwkJY2FzZSBUX0luZGV4UGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBh dGgsIEluZGV4UGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0JpdG1hcEhlYXBQYXRoOgor CQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgQml0bWFwSGVhcFBhdGgpOworCQkJ YnJlYWs7CisJCWNhc2UgVF9CaXRtYXBBbmRQYXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3 cGF0aCwgcGF0aCwgQml0bWFwQW5kUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0JpdG1h cE9yUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIEJpdG1hcE9yUGF0 aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX1RpZFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChu ZXdwYXRoLCBwYXRoLCBUaWRQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfVGlkUmFuZ2VQ YXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgVGlkUmFuZ2VQYXRoKTsK KwkJCWJyZWFrOworCQljYXNlIFRfU3VicXVlcnlTY2FuUGF0aDoKKwkJCUZMQVRfQ09QWV9Q QVRIKG5ld3BhdGgsIHBhdGgsIFN1YnF1ZXJ5U2NhblBhdGgpOworCQkJYnJlYWs7CisJCWNh c2UgVF9Gb3JlaWduUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIEZv cmVpZ25QYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfQ3VzdG9tUGF0aDoKKwkJCXsKKwkJ CQlDdXN0b21QYXRoICpjcGF0aCA9IChDdXN0b21QYXRoICopIHBhdGg7CisKKwkJCQlBc3Nl cnQoY3BhdGgtPm1ldGhvZHMgIT0gTlVMTCk7CisJCQkJaWYgKGNwYXRoLT5tZXRob2RzLT5D b3B5Q3VzdG9tUGF0aCkKKwkJCQkJbmV3cGF0aCA9IChQYXRoICopIGNwYXRoLT5tZXRob2Rz LT5Db3B5Q3VzdG9tUGF0aChjcGF0aCk7CisJCQkJZWxzZQorCQkJCQlGTEFUX0NPUFlfUEFU SChuZXdwYXRoLCBwYXRoLCBDdXN0b21QYXRoKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNl IFRfQXBwZW5kUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIEFwcGVu ZFBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9NZXJnZUFwcGVuZFBhdGg6CisJCQlGTEFU X0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBNZXJnZUFwcGVuZFBhdGgpOworCQkJYnJlYWs7 CisJCWNhc2UgVF9Hcm91cFJlc3VsdFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRo LCBwYXRoLCBHcm91cFJlc3VsdFBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9NYXRlcmlh bFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBNYXRlcmlhbFBhdGgp OworCQkJYnJlYWs7CisJCWNhc2UgVF9NZW1vaXplUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRI KG5ld3BhdGgsIHBhdGgsIE1lbW9pemVQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfR2F0 aGVyUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIEdhdGhlclBhdGgp OworCQkJYnJlYWs7CisJCWNhc2UgVF9HYXRoZXJNZXJnZVBhdGg6CisJCQlGTEFUX0NPUFlf UEFUSChuZXdwYXRoLCBwYXRoLCBHYXRoZXJNZXJnZVBhdGgpOworCQkJYnJlYWs7CisJCWNh c2UgVF9OZXN0UGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIE5lc3RQ YXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWVyZ2VQYXRoOgorCQkJRkxBVF9DT1BZX1BB VEgobmV3cGF0aCwgcGF0aCwgTWVyZ2VQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSGFz aFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBIYXNoUGF0aCk7CisJ CQlicmVhazsKKwkJY2FzZSBUX1Byb2plY3Rpb25QYXRoOgorCQkJRkxBVF9DT1BZX1BBVEgo bmV3cGF0aCwgcGF0aCwgUHJvamVjdGlvblBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Q cm9qZWN0U2V0UGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIFByb2pl Y3RTZXRQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfU29ydFBhdGg6CisJCQlGTEFUX0NP UFlfUEFUSChuZXdwYXRoLCBwYXRoLCBTb3J0UGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBU X0luY3JlbWVudGFsU29ydFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRo LCBJbmNyZW1lbnRhbFNvcnRQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfR3JvdXBQYXRo OgorCQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgR3JvdXBQYXRoKTsKKwkJCWJy ZWFrOworCQljYXNlIFRfVW5pcXVlUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgs IHBhdGgsIFVuaXF1ZVBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9BZ2dQYXRoOgorCQkJ RkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgQWdnUGF0aCk7CisJCQlicmVhazsKKwkJ Y2FzZSBUX0dyb3VwaW5nU2V0c1BhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBw YXRoLCBHcm91cGluZ1NldHNQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWluTWF4QWdn UGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIE1pbk1heEFnZ1BhdGgp OworCQkJYnJlYWs7CisJCWNhc2UgVF9XaW5kb3dBZ2dQYXRoOgorCQkJRkxBVF9DT1BZX1BB VEgobmV3cGF0aCwgcGF0aCwgV2luZG93QWdnUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBU X1NldE9wUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIFNldE9wUGF0 aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX1JlY3Vyc2l2ZVVuaW9uUGF0aDoKKwkJCUZMQVRf Q09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIFJlY3Vyc2l2ZVVuaW9uUGF0aCk7CisJCQlicmVh azsKKwkJY2FzZSBUX0xvY2tSb3dzUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgs IHBhdGgsIExvY2tSb3dzUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX01vZGlmeVRhYmxl UGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIE1vZGlmeVRhYmxlUGF0 aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0xpbWl0UGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRI KG5ld3BhdGgsIHBhdGgsIExpbWl0UGF0aCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgcGF0aCB0eXBlOiAlZCIsIChpbnQpIG5vZGVU YWcocGF0aCkpOworCQkJbmV3cGF0aCA9IE5VTEw7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0 ICovCisJCQlicmVhazsKKwl9CisKKyN1bmRlZiBGTEFUX0NPUFlfUEFUSAorCisJcmV0dXJu IG5ld3BhdGg7Cit9CisKIC8qCiAgKiBzZXRfY2hlYXBlc3QKICAqCSAgRmluZCB0aGUgbWlu aW11bS1jb3N0IHBhdGhzIGZyb20gYW1vbmcgYSByZWxhdGlvbidzIHBhdGhzLApAQCAtMjY3 OCw3ICsyODMzLDggQEAgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChQbGFubmVySW5mbyAqcm9v dCwKICAqIGEgc2VwYXJhdGUgUmVzdWx0IHBsYW4gbm9kZSBpc24ndCBuZWVkZWQsIHdlIGp1 c3QgcmVwbGFjZSB0aGUgZ2l2ZW4gcGF0aCdzCiAgKiBwYXRodGFyZ2V0IHdpdGggdGhlIGRl c2lyZWQgb25lLiAgVGhpcyBtdXN0IGJlIHVzZWQgb25seSB3aGVuIHRoZSBjYWxsZXIKICAq IGtub3dzIHRoYXQgdGhlIGdpdmVuIHBhdGggaXNuJ3QgcmVmZXJlbmNlZCBlbHNld2hlcmUg YW5kIHNvIGNhbiBiZSBtb2RpZmllZAotICogaW4tcGxhY2UuCisgKiBpbi1wbGFjZS4gIElu IHBhcnRpY3VsYXIsIGNhbGxlcnMgbXVzdCBub3QgcGFzcyBhIFBhdGggdGhhdCBpcyBjdXJy ZW50bHkKKyAqIHJlYWNoYWJsZSBmcm9tIGFub3RoZXIgUmVsT3B0SW5mbydzIHBhdGhsaXN0 LgogICoKICAqIElmIHRoZSBpbnB1dCBwYXRoIGlzIGEgR2F0aGVyUGF0aCBvciBHYXRoZXJN ZXJnZVBhdGgsIHdlIHRyeSB0byBwdXNoIHRoZQogICogbmV3IHRhcmdldCBkb3duIHRvIGl0 cyBpbnB1dCBhcyB3ZWxsOyB0aGlzIGlzIGEgeWV0IG1vcmUgaW52YXNpdmUKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4dGVuc2libGUuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4dGVuc2libGUuaAppbmRleCA1MTdkYjk1YzRhMy4uNzYyYjA5OTc2ZjUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4dGVuc2libGUuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leHRlbnNpYmxlLmgKQEAgLTEwMyw2ICsxMDMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg Q3VzdG9tUGF0aE1ldGhvZHMKIAlzdHJ1Y3QgTGlzdCAqKCpSZXBhcmFtZXRlcml6ZUN1c3Rv bVBhdGhCeUNoaWxkKSAoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkJIExpc3Qg KmN1c3RvbV9wcml2YXRlLAogCQkJCQkJCQkJCQkJCSBSZWxPcHRJbmZvICpjaGlsZF9yZWwp OworCisJLyoKKwkgKiBQcm9kdWNlIGEgc2hhbGxvdyBjb3B5IG9mIGEgQ3VzdG9tUGF0aCwg cmV0dXJuaW5nIGEgZnJlc2hseSBwYWxsb2MnZAorCSAqIHN0cnVjdCBvZiB0aGUgZXh0ZW5z aW9uJ3MgY29uY3JldGUgdHlwZS4gIFJlcXVpcmVkIHdoZW4gdGhlIGV4dGVuc2lvbidzCisJ ICogQ3VzdG9tUGF0aCBzdWJjbGFzcyBlbWJlZHMgcHJpdmF0ZSBmaWVsZHMgYmV5b25kIHNp emVvZihDdXN0b21QYXRoKS4KKwkgKi8KKwlzdHJ1Y3QgQ3VzdG9tUGF0aCAqKCpDb3B5Q3Vz dG9tUGF0aCkgKHN0cnVjdCBDdXN0b21QYXRoICpwYXRoKTsKIH0JCQlDdXN0b21QYXRoTWV0 aG9kczsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9k ZS5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXggZThkYjMyMWY5 MmIuLmZiYWZkZmQxZTZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0 aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtNTUs NiArNTUsNyBAQCBleHRlcm4gaW50CWNvbXBhcmVfcGF0aF9jb3N0cyhQYXRoICpwYXRoMSwg UGF0aCAqcGF0aDIsCiBleHRlcm4gaW50CWNvbXBhcmVfZnJhY3Rpb25hbF9wYXRoX2Nvc3Rz KFBhdGggKnBhdGgxLCBQYXRoICpwYXRoMiwKIAkJCQkJCQkJCQkgIGRvdWJsZSBmcmFjdGlv bik7CiBleHRlcm4gdm9pZCBzZXRfY2hlYXBlc3QoUmVsT3B0SW5mbyAqcGFyZW50X3JlbCk7 CitleHRlcm4gUGF0aCAqY29weV9wYXRoKFBhdGggKnBhdGgpOwogZXh0ZXJuIHZvaWQgYWRk X3BhdGgoUmVsT3B0SW5mbyAqcGFyZW50X3JlbCwgUGF0aCAqbmV3X3BhdGgpOwogZXh0ZXJu IGJvb2wgYWRkX3BhdGhfcHJlY2hlY2soUmVsT3B0SW5mbyAqcGFyZW50X3JlbCwgaW50IGRp c2FibGVkX25vZGVzLAogCQkJCQkJCSAgQ29zdCBzdGFydHVwX2Nvc3QsIENvc3QgdG90YWxf Y29zdCwKLS0gCjIuNTQuMAoK --------------srRlGNa2bcHSS9UpQ63UgE4h--