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 1w3cF0-001OaR-1K for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 15:58:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3cEy-006tzr-2b for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 15:58:25 +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 1w3cEy-006tzj-1T for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 15:58:24 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3cEv-00000000CVX-3QTe for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 15:58:24 +0000 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-668d4751a3bso1245007a12.2 for ; Fri, 20 Mar 2026 08:58:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774022302; cv=none; d=google.com; s=arc-20240605; b=T5qx19xEcrXeXZBUsQFMwwZD/QWLaskoW1+ticfaOuC5D/mmdmt0QRdG6jn+sGpf5u sqJIqqhZGVAz4jMfi6SB8SHzs4e44JUQzcWDGO7Tjt9u+6KRVa9tTsSUMz0Ti4nZcfra G82WwgyCjxi6dbxJ+WsAIMGDe3M2EPaHmpm9N3KmBfYZFZaIenbD0g+KF+vHPXpiL6V2 4BuURGJG0Fm3gAyQ02Ad14/LLIIFc9pQYNNitfHi1L0p6bk2tGmWWuYDnFt6rxjDg+Jv a5/CNChJIZwpQXpLBZegermQZ55aX8zwoMKWsHWIucdInGHdXVH6KZLR09cCbjS1p45G PGIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=K2wRL+IIvMPIzZz4nbi/NzBOJbS4Xqssx/SkegHNVPw=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=TCP4EaAfIiY0AqqvxUeszkyNoSR4UvOK5giqJ3qm8RmaZD5IzXDGtaLwVS46N8eUco 90uCFulNn+KGF6G4CZXFumeuC8XkedO9S8wq2+7zltz/lt5ikVK34ZPDJ2c/yN+u0Tb1 hFcdOnMMEB4HVh3LdG9dxVmepK/ctCmU0mh/frPFDHPTGz7p5CrZVReF1fb+jja5y/nl bGsvq/t8oKe/jJiz0xoWrEoaGmcXERD9IMv7Tu9wDxgA1RywJ6gx5GCOwcRqYVOOP2Wf IzlzSRnWvFEmjqkOF7UAOydDNC7nhZBeMrZJSCUIHoV7LReecCbZ1XwTKVtAiYTNOqjo RwkQ==; 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=20230601; t=1774022302; x=1774627102; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=K2wRL+IIvMPIzZz4nbi/NzBOJbS4Xqssx/SkegHNVPw=; b=mMRvt/guRFjDc3B3F8hdqWt4NbLbvuxCsYJGU9Y9yCJMIzjBmc+cLUS+fLFmSuSnBv JGPXPElJ9dh4edwe00hpJxfmITH+/MVVW+l5MFcfwRzIJ8is5YvkhZAymAieIu18bL1+ zCMDp3AU+T9aHdDFDU+LUm5kCJVcBrF0MrNz+etG9vNrw+Lf+p1k4Vtow4iA9qHYigAK Vwi6Y7ZqPWBO1fx96y1yG4RcwXbu7ueDkGvjj99arhoXkmSUESZaF+XCPdLhQDd5J+XK ZV16Z31zUNgPyq+YminSjyFzfHFLB1ysVeQNDwKpMDBoFK4hfDMBsG9mW5XpDA1WfeY5 IV5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774022302; x=1774627102; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=K2wRL+IIvMPIzZz4nbi/NzBOJbS4Xqssx/SkegHNVPw=; b=PyCwubgHojC9ffT/a5ARVfDuRb6wT4cWdfT4P/bpgklhS5+RS/fNe9MyOgPpEWs7Wx PI4Mfhj72ouUX2TKtf0P3htobU2LPRLihJhemPtM6c7/wXckCaOwcTwwcZkmSj7PVRkO mB9cSaXCkCjPAti3rCn+cHUKzcBzAqif7roW+QMq5h37y2gRU2EAdp9BTzf3d6b13v+Q EsXZ/EM5GmP0Q/2401uaoKfszhfW3WVuM50n2atOjpzd1Tjd3J9tozNy8BHJXgm1sFub x5YSB8oszFKWaXqMmhUCX2geRL1dYOAqDH0fjZ7aeUYzjcfNURY7Arq+yVqy06bF9Z9E NWbw== X-Gm-Message-State: AOJu0YwNwnrTAa5/d9M8NY0lzYK+5dCfEUHEoguK6kVz8K4iOZooVYm0 EZejnxj5CEUEmjvmhQe5B+F2miD/EzXfAgmuzlJfVImsTab2Z2SmD/dlEp5/i/xw1rVqf3efv4n Fd/WOUUn/wn/c22MD6402iJ3UDVF/tDWVaA== X-Gm-Gg: ATEYQzzSCaiVv2Hru6fAX11oToQEWop4tGaBEsn31ikk3cEknsLh/P2VP0FHEQDlgbN X5FEDRvI18U8MmTr+q5Hme6qBj1QJzaHLB+w2vZycWSj/l6vgoo22KdYU3+seMfQHJ8PX/yxanD Ms6uixbx660eKSO8HqsoRffQ6rYo6iqkGBsOWRFSHSVbFumP6POeDulONnv21SodgBvGZjjH8ld gS6+qsuuSgsZb9tIMiE0QMPcISFmo9JcI7tEnBOcjZki1EYq3RJmOqUPe2aJI11qNY7ewHO9lf5 /ijydHvzRlWCFT6cPfyN7EEGwOPLVLnMqS7uYO8= X-Received: by 2002:a17:907:a2cd:b0:b97:b19a:1e63 with SMTP id a640c23a62f3a-b982f2ecfc5mr234774566b.33.1774022301315; Fri, 20 Mar 2026 08:58:21 -0700 (PDT) MIME-Version: 1.0 From: Robert Haas Date: Fri, 20 Mar 2026 11:58:08 -0400 X-Gm-Features: AaiRm51uGScYP9rxgRf93rEeCuc1-uZFkrxWeTsS-qJONJLUoyjdHvD7pM5UleA Message-ID: Subject: TupleDescAttr bounds checks To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000183585064d76c121" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000183585064d76c121 Content-Type: text/plain; charset="UTF-8" Hi, Scrutiny of a recent test_plan_advice failure in the buildfarm revealed a bug that had nothing to do with test_plan_advice or pg_plan_advice; rather, it was a bug introduced by the virtual generated columns feature, and specifically of that feature indexing off of the beginning of a TupleDesc when whole-row attributes are present. The first patch attached to this email fixes this issue, and should be committed and back-patched to v18. I plan to do that soon unless there are objections. But that got me wondering why we don't have an assertion in TupleDescAttr to catch this sort of thing, and it seems like that is indeed something we can do, so patch #2 adds that and then cleans up the resulting damage. By "damage" I mean correcting places where the new Assert() either actually fails or could theoretically fail, because we use TupleDescAttr() on a value that we don't know to be within range. None of these seem to be actual bugs, because as the commit message says, all TupleDescAttr() does is compute a pointer, and we don't actually dereference that pointer in any of these code paths until after we know that it's OK to do so. Nonetheless, these all seem like good cleanups, so I do not see any of these changes as arguments against adding the assertion. I propose to put this in master. Patch #3 adds a test case that would have caught the bug fixed by patch #1 if we had already had the asserts added by patch #2. To my surprise, we seem to have zero existing test coverage of creating an index on a whole-row expression, so I think this is worth adding mostly for that reason. One could also argue that it's worth adding as a follow-up to #1 and #2, but we're unlikely to reintroduce that specific bug. We might, however, add other bugs that this would also catch. Comments? -- Robert Haas EDB: http://www.enterprisedb.com --000000000000183585064d76c121 Content-Type: application/octet-stream; name="v1-0001-Prevent-spurious-indexes-on-virtual-generated-col.patch" Content-Disposition: attachment; filename="v1-0001-Prevent-spurious-indexes-on-virtual-generated-col.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmz30h1i0 RnJvbSAzNjgyOWY1M2FjYmJhZGIwZTI0MjU0OTUyYTZkNmVjMDM2ZjQxNjM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IEZyaSwgMjAgTWFyIDIwMjYgMTE6MDk6NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIHYxIDEv M10gUHJldmVudCBzcHVyaW91cyAiaW5kZXhlcyBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5z CiBhcmUgbm90IHN1cHBvcnRlZCIuCgpCb3RoIG9mIHRoZSBjaGVja3MgaW4gRGVmaW5lSW5kZXgo KSB0aGF0IGNhbiBwcm9kdWNlIHRoaXMgZXJyb3IKbWVzc2FnZSBoYXZlIGEgZ3VhcmQgYWdhaW5z dCBuZWdhdGl2ZSBhdHRyaWJ1dGUgbnVtYmVycywgYnV0IGxhY2sgYQpndWFyZCB0byBlbnN1cmUg dGhhdCBhdHRubyBpcyBub24temVyby4gQXMgYSByZXN1bHQsIHdlIGNhbiBpbmRleApvZmYgdGhl IGJlZ2lubmluZyBvZiB0aGUgVHVwbGVEZXNjIGFuZCByZWFkIGEgZ2FyYmFnZSBieXRlIGZvcgph dHRnZW5lcmF0ZWQuIElmIHRoYXQgYnl0ZSBoYXBwZW5zIHRvIGJlICd2Jywgd2UnbGwgaW5jb3Jy ZWN0bHkKcHJvZHVjZSB0aGUgZXJyb3IgbWVudGlvbmVkIGFib3ZlLgoKVGhlIGZpcnN0IGNhbGwg c2l0ZSBpcyBlYXN5IHRvIGhpdDogYW55IGF0dGVtcHQgdG8gY3JlYXRlIGFuCmV4cHJlc3Npb24g aW5kZXggZG9lcyBzby4gVGhlIHNlY29uZCBvbmUgaXMgbm90IGN1cnJlbnRseSBoaXQgaW4KdGhl IHJlZ3Jlc3Npb24gdGVzdHMsIGJ1dCBjYW4gYmUgaGl0IGJ5IHNvbWV0aGluZyBsaWtlCkNSRUFU RSBJTkRFWCBPTiBzb21lX3RhYmxlICgoc29tZV9mdW5jdGlvbihzb21lX3RhYmxlKSkpLgoKRm91 bmQgYnkgc3R1ZHkgb2YgYSB0ZXN0X3BsYW5fYWR2aWNlIGZhaWx1cmUgb24gYnVpbGRmYXJtIG1l bWJlcgpza2luaywgdGhvdWdoIHRoaXMgaXNzdWUgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0ZXN0 X3BsYW5fYWR2aWNlCmFuZCBzZWVtcyB0byBoYXZlIG9ubHkgYmVlbiByZXZlYWxlZCBieSBoYXBw ZW5zdGFuY2UuCgpCYWNrcGF0Y2gtdGhyb3VnaDogMTgKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYyB8IDYgKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYjg5YzY4NTUz NjQuLmRkNTkzY2NiYzFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTEyMyw3ICsx MTIzLDggQEAgRGVmaW5lSW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgZXJybXNnKCJp bmRleCBjcmVhdGlvbiBvbiBzeXN0ZW0gY29sdW1ucyBpcyBub3Qgc3VwcG9ydGVkIikpKTsKIAog Ci0JCWlmIChUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgYXR0bm8gLSAxKS0+ YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJaWYgKGF0dG5v ID4gMCAmJgorCQkJVHVwbGVEZXNjQXR0cihSZWxhdGlvbkdldERlc2NyKHJlbCksIGF0dG5vIC0g MSktPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQkJc3RtdC0+cHJpbWFyeSA/CkBAIC0xMTY0LDcgKzExNjUsOCBAQCBEZWZpbmVJbmRleChQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCXsKIAkJCUF0dHJOdW1iZXIJYXR0bm8gPSBqICsgRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKIAotCQkJaWYgKFR1cGxlRGVzY0F0dHIoUmVs YXRpb25HZXREZXNjcihyZWwpLCBhdHRubyAtIDEpLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRF X0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJaWYgKGF0dG5vID4gMCAmJgorCQkJCVR1cGxlRGVzY0F0 dHIoUmVsYXRpb25HZXREZXNjcihyZWwpLCBhdHRubyAtIDEpLT5hdHRnZW5lcmF0ZWQgPT0gQVRU UklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkgc3RtdC0+aXNjb25z dHJhaW50ID8KLS0gCjIuNTEuMAoK --000000000000183585064d76c121 Content-Type: application/octet-stream; name="v1-0003-Add-a-test-for-creating-an-index-on-a-whole-row-e.patch" Content-Disposition: attachment; filename="v1-0003-Add-a-test-for-creating-an-index-on-a-whole-row-e.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmz30h1v2 RnJvbSAwNGUwYWVlMGFiN2NjNmIwNWFmZWQzZmE4NDc5ZDE2ODIyNTkxOGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IEZyaSwgMjAgTWFyIDIwMjYgMTE6MzY6MTEgLTA0MDAKU3ViamVjdDogW1BBVENIIHYxIDMv M10gQWRkIGEgdGVzdCBmb3IgY3JlYXRpbmcgYW4gaW5kZXggb24gYSB3aG9sZS1yb3cKIGV4cHJl c3Npb24uCgpTdXJwcmlzaW5nbHksIHdlIGhhdmUgbm8gZXhpc3RpbmcgdGVzdCBmb3IgdGhpcy4g SGFkIHRoaXMgdGVzdApiZWVuIHByZXNlbnQgYmVmb3JlIGNvbW1pdCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLAp0aGUgQXNzZXJ0IGFkZGVkIGluIGNvbW1pdCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCndvdWxkIGhhdmUgY2F1Z2h0IHRo ZSBidWcuCgohISEgVXBkYXRlIHRoaXMgd2l0aCB0aGUgZmluYWwgY29tbWl0IGhhc2hlcy4KLS0t CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCB8IDExICsrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwgICAgICB8IDEyICsrKysrKysrKysr KwogMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2luZGV4aW5nLm91dAppbmRleCBkYzYyOTkyOGM4Zi4uZjUwODY4Y2E2YTYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CkBAIC0xNjY5LDMgKzE2NjksMTQgQEAgcmVp bmRleCBpbmRleCB0ZXN0X3BnX2luZGV4X3RvYXN0X2luZGV4OwogZHJvcCBpbmRleCB0ZXN0X3Bn X2luZGV4X3RvYXN0X2luZGV4OwogZHJvcCBmdW5jdGlvbiB0ZXN0X3BnX2luZGV4X3RvYXN0X2Z1 bmM7CiBkcm9wIHRhYmxlIHRlc3RfcGdfaW5kZXhfdG9hc3RfdGFibGU7CistLSB0ZXN0IGNyZWF0 aW9uIG9mIGFuIGluZGV4IGludm9sdmluZyBhIHdob2xlLXJvdyBleHByZXNzaW9uCitjcmVhdGUg dGFibGUgdGVzdF9wZ193aG9sZXJvd19pbmRleCAoYSBpbnQsIGIgdGV4dCwgYyBudW1lcmljKTsK K2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIHJvd19pbWFnZSh0ZXN0X3BnX3dob2xlcm93X2lu ZGV4KQorICAgIHJldHVybnMgdGVzdF9wZ193aG9sZXJvd19pbmRleCBhcyAkJHNlbGVjdCAkMSQk IGxhbmd1YWdlIHNxbCBpbW11dGFibGU7CitpbnNlcnQgaW50byB0ZXN0X3BnX3dob2xlcm93X2lu ZGV4IHZhbHVlcyAoMSwgJ211bHRpcGxpY2F0aW9uJywgMS4wKTsKK2NyZWF0ZSBpbmRleCByb3df aW1hZ2VfaW5kZXgKKyAgICBvbiB0ZXN0X3BnX3dob2xlcm93X2luZGV4ICgocm93X2ltYWdlKHRl c3RfcGdfd2hvbGVyb3dfaW5kZXgpKSk7CitpbnNlcnQgaW50byB0ZXN0X3BnX3dob2xlcm93X2lu ZGV4IHZhbHVlcyAoMiwgJ2FkZGl0aW9uJywgMCk7Citkcm9wIGluZGV4IHJvd19pbWFnZV9pbmRl eDsKK2Ryb3AgZnVuY3Rpb24gcm93X2ltYWdlKHRlc3RfcGdfd2hvbGVyb3dfaW5kZXgpOworZHJv cCB0YWJsZSB0ZXN0X3BnX3dob2xlcm93X2luZGV4OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaW5kZXhpbmcuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3Fs CmluZGV4IGI1Y2IwMWMyZDcwLi4xMjkxMzBkMDRkNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaW5kZXhpbmcuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5n LnNxbApAQCAtOTM0LDMgKzkzNCwxNSBAQCByZWluZGV4IGluZGV4IHRlc3RfcGdfaW5kZXhfdG9h c3RfaW5kZXg7CiBkcm9wIGluZGV4IHRlc3RfcGdfaW5kZXhfdG9hc3RfaW5kZXg7CiBkcm9wIGZ1 bmN0aW9uIHRlc3RfcGdfaW5kZXhfdG9hc3RfZnVuYzsKIGRyb3AgdGFibGUgdGVzdF9wZ19pbmRl eF90b2FzdF90YWJsZTsKKworLS0gdGVzdCBjcmVhdGlvbiBvZiBhbiBpbmRleCBpbnZvbHZpbmcg YSB3aG9sZS1yb3cgZXhwcmVzc2lvbgorY3JlYXRlIHRhYmxlIHRlc3RfcGdfd2hvbGVyb3dfaW5k ZXggKGEgaW50LCBiIHRleHQsIGMgbnVtZXJpYyk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlv biByb3dfaW1hZ2UodGVzdF9wZ193aG9sZXJvd19pbmRleCkKKyAgICByZXR1cm5zIHRlc3RfcGdf d2hvbGVyb3dfaW5kZXggYXMgJCRzZWxlY3QgJDEkJCBsYW5ndWFnZSBzcWwgaW1tdXRhYmxlOwor aW5zZXJ0IGludG8gdGVzdF9wZ193aG9sZXJvd19pbmRleCB2YWx1ZXMgKDEsICdtdWx0aXBsaWNh dGlvbicsIDEuMCk7CitjcmVhdGUgaW5kZXggcm93X2ltYWdlX2luZGV4CisgICAgb24gdGVzdF9w Z193aG9sZXJvd19pbmRleCAoKHJvd19pbWFnZSh0ZXN0X3BnX3dob2xlcm93X2luZGV4KSkpOwor aW5zZXJ0IGludG8gdGVzdF9wZ193aG9sZXJvd19pbmRleCB2YWx1ZXMgKDIsICdhZGRpdGlvbics IDApOworZHJvcCBpbmRleCByb3dfaW1hZ2VfaW5kZXg7Citkcm9wIGZ1bmN0aW9uIHJvd19pbWFn ZSh0ZXN0X3BnX3dob2xlcm93X2luZGV4KTsKK2Ryb3AgdGFibGUgdGVzdF9wZ193aG9sZXJvd19p bmRleDsKLS0gCjIuNTEuMAoK --000000000000183585064d76c121 Content-Type: application/octet-stream; name="v1-0002-Bounds-check-access-to-TupleDescAttr-with-an-Asse.patch" Content-Disposition: attachment; filename="v1-0002-Bounds-check-access-to-TupleDescAttr-with-an-Asse.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmz30h1q1 RnJvbSBiZjE1Y2RjOGRjOTZhZjhjNTZmN2E0ZTNiYTBjNDlhY2Y1MGY0ODBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IEZyaSwgMjAgTWFyIDIwMjYgMTE6Mjc6MDUgLTA0MDAKU3ViamVjdDogW1BBVENIIHYxIDIv M10gQm91bmRzLWNoZWNrIGFjY2VzcyB0byBUdXBsZURlc2NBdHRyIHdpdGggYW4gQXNzZXJ0LgoK VGhlIHNlY29uZCBhcmd1bWVudCB0byBUdXBsZURlc2NBdHRyIHNob3VsZCBhbHdheXMgYmUgYXQg bGVhc3QgemVybwphbmQgbGVzcyB0aGFuIG5hdHRzOyBvdGhlcndpc2UsIHdlIGluZGV4IG91dHNp ZGUgb2YgdGhlIGF0dHJpYnV0ZQphcnJheS4gQXNzZXJ0IHRoYXQgdGhpcyBpcyB0aGUgY2FzZS4K ClZhcmlvdXMgdmlvbGF0aW9ucywgb3IgcG9zc2libGUgdmlvbGF0aW9ucywgb2YgdGhpcyBydWxl IHRoYXQgYXJlCmN1cnJlbnRseSBpbiB0aGUgdHJlZSBhcmUgYWN0dWFsbHkgaGFybWxlc3MsIGJl Y2F1c2Ugd2hpbGUKd2UgZG8gY2FsbCBUdXBsZURlc2NBdHRyKCkgYmVmb3JlIHZlcmlmeWluZyB0 aGF0IHRoZSBhcmd1bWVudCBpcwp3aXRoaW4gcmFuZ2UsIHdlIGRvbid0IGFjdHVhbGx5IGRlcmVm ZXJlbmNlIGl0IHVubGVzcyB0aGUgYXJndW1lbnQKd2FzIHdpdGhpbiByYW5nZSBhbGwgYWxvbmcu IE5vbmV0aGVsZXNzLCB0aGUgQXNzZXJ0IG1lYW5zIHdlCnNob3VsZCBiZSBtb3JlIGNhcmVmdWws IHNvIHRpZHkgdXAgYWNjb3JkaW5nbHkuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90 dXBkZXNjLmMgfCAyNyArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy90dXBkZXNjLmggICAgICAgIHwgIDIgKysKIHNyYy9wbC9wbHBlcmwvcGxwZXJsLmMgICAg ICAgICAgICAgIHwgIDcgKysrKystLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAg ICAgfCAgNiArKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMTYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNj LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYwppbmRleCBkNzcxYTI2NWIz NC4uMTk2NDcyYzA1ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVw ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCkBAIC0yNDYs MTAgKzI0NiwxMSBAQCBDcmVhdGVUdXBsZURlc2NDb3B5KFR1cGxlRGVzYyB0dXBkZXNjKQogCiAJ ZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKHR1cGRlc2MtPm5hdHRzKTsKIAotCS8qIEZs YXQtY29weSB0aGUgYXR0cmlidXRlIGFycmF5ICovCi0JbWVtY3B5KFR1cGxlRGVzY0F0dHIoZGVz YywgMCksCi0JCSAgIFR1cGxlRGVzY0F0dHIodHVwZGVzYywgMCksCi0JCSAgIGRlc2MtPm5hdHRz ICogc2l6ZW9mKEZvcm1EYXRhX3BnX2F0dHJpYnV0ZSkpOworCS8qIEZsYXQtY29weSB0aGUgYXR0 cmlidXRlIGFycmF5ICh1bmxlc3MgdGhlcmUgYXJlIG5vIGF0dHJpYnV0ZXMpICovCisJaWYgKGRl c2MtPm5hdHRzID4gMCkKKwkJbWVtY3B5KFR1cGxlRGVzY0F0dHIoZGVzYywgMCksCisJCQkgICBU dXBsZURlc2NBdHRyKHR1cGRlc2MsIDApLAorCQkJICAgZGVzYy0+bmF0dHMgKiBzaXplb2YoRm9y bURhdGFfcGdfYXR0cmlidXRlKSk7CiAKIAkvKgogCSAqIFNpbmNlIHdlJ3JlIG5vdCBjb3B5aW5n IGNvbnN0cmFpbnRzIGFuZCBkZWZhdWx0cywgY2xlYXIgZmllbGRzCkBAIC0yOTQsMTAgKzI5NSwx MSBAQCBDcmVhdGVUdXBsZURlc2NUcnVuY2F0ZWRDb3B5KFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQg bmF0dHMpCiAKIAlkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MobmF0dHMpOwogCi0JLyog RmxhdC1jb3B5IHRoZSBhdHRyaWJ1dGUgYXJyYXkgKi8KLQltZW1jcHkoVHVwbGVEZXNjQXR0cihk ZXNjLCAwKSwKLQkJICAgVHVwbGVEZXNjQXR0cih0dXBkZXNjLCAwKSwKLQkJICAgZGVzYy0+bmF0 dHMgKiBzaXplb2YoRm9ybURhdGFfcGdfYXR0cmlidXRlKSk7CisJLyogRmxhdC1jb3B5IHRoZSBh dHRyaWJ1dGUgYXJyYXkgKHVubGVzcyB0aGVyZSBhcmUgbm8gYXR0cmlidXRlcykgKi8KKwlpZiAo ZGVzYy0+bmF0dHMgPiAwKQorCQltZW1jcHkoVHVwbGVEZXNjQXR0cihkZXNjLCAwKSwKKwkJCSAg IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgMCksCisJCQkgICBkZXNjLT5uYXR0cyAqIHNpemVvZihG b3JtRGF0YV9wZ19hdHRyaWJ1dGUpKTsKIAogCS8qCiAJICogU2luY2Ugd2UncmUgbm90IGNvcHlp bmcgY29uc3RyYWludHMgYW5kIGRlZmF1bHRzLCBjbGVhciBmaWVsZHMKQEAgLTMzOSwxMCArMzQx LDExIEBAIENyZWF0ZVR1cGxlRGVzY0NvcHlDb25zdHIoVHVwbGVEZXNjIHR1cGRlc2MpCiAKIAlk ZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2ModHVwZGVzYy0+bmF0dHMpOwogCi0JLyogRmxh dC1jb3B5IHRoZSBhdHRyaWJ1dGUgYXJyYXkgKi8KLQltZW1jcHkoVHVwbGVEZXNjQXR0cihkZXNj LCAwKSwKLQkJICAgVHVwbGVEZXNjQXR0cih0dXBkZXNjLCAwKSwKLQkJICAgZGVzYy0+bmF0dHMg KiBzaXplb2YoRm9ybURhdGFfcGdfYXR0cmlidXRlKSk7CisJLyogRmxhdC1jb3B5IHRoZSBhdHRy aWJ1dGUgYXJyYXkgKHVubGVzcyB0aGVyZSBhcmUgbm8gYXR0cmlidXRlcykgKi8KKwlpZiAoZGVz Yy0+bmF0dHMgPiAwKQorCQltZW1jcHkoVHVwbGVEZXNjQXR0cihkZXNjLCAwKSwKKwkJCSAgIFR1 cGxlRGVzY0F0dHIodHVwZGVzYywgMCksCisJCQkgICBkZXNjLT5uYXR0cyAqIHNpemVvZihGb3Jt RGF0YV9wZ19hdHRyaWJ1dGUpKTsKIAogCWZvciAoaSA9IDA7IGkgPCBkZXNjLT5uYXR0czsgaSsr KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdHVwZGVzYy5oCmluZGV4IDYyZWY2YjM4NDk3Li5kMjYyODcyNzFlOSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHVwZGVzYy5oCkBAIC0xNzksNiArMTc5LDggQEAgVHVwbGVEZXNjQXR0cihUdXBsZURl c2MgdHVwZGVzYywgaW50IGkpCiB7CiAJRm9ybURhdGFfcGdfYXR0cmlidXRlICphdHRycyA9IFR1 cGxlRGVzY0F0dHJBZGRyZXNzKHR1cGRlc2MpOwogCisJQXNzZXJ0KGkgPj0gMCAmJiBpIDwgdHVw ZGVzYy0+bmF0dHMpOworCiAJcmV0dXJuICZhdHRyc1tpXTsKIH0KIApkaWZmIC0tZ2l0IGEvc3Jj L3BsL3BscGVybC9wbHBlcmwuYyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKaW5kZXggYzVmMTFi ODc0YzcuLjA2ZWJmZmExMTFjIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZXJsL3BscGVybC5jCisr KyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHBscGVybF9i dWlsZF90dXBsZV9yZXN1bHQoSFYgKnBlcmxoYXNoLCBUdXBsZURlc2MgdGQpCiAJCVNWCQkgICAq dmFsID0gSGVWQUwoaGUpOwogCQljaGFyCSAgICprZXkgPSBoZWsyY3N0cihoZSk7CiAJCWludAkJ CWF0dG4gPSBTUElfZm51bWJlcih0ZCwga2V5KTsKLQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9 IFR1cGxlRGVzY0F0dHIodGQsIGF0dG4gLSAxKTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cjsK IAogCQlpZiAoYXR0biA9PSBTUElfRVJST1JfTk9BVFRSSUJVVEUpCiAJCQllcmVwb3J0KEVSUk9S LApAQCAtMTEwNiw2ICsxMTA2LDcgQEAgcGxwZXJsX2J1aWxkX3R1cGxlX3Jlc3VsdChIViAqcGVy bGhhc2gsIFR1cGxlRGVzYyB0ZCkKIAkJCQkJIGVycm1zZygiY2Fubm90IHNldCBzeXN0ZW0gYXR0 cmlidXRlIFwiJXNcIiIsCiAJCQkJCQkJa2V5KSkpOwogCisJCWF0dHIgPSBUdXBsZURlc2NBdHRy KHRkLCBhdHRuIC0gMSk7CiAJCXZhbHVlc1thdHRuIC0gMV0gPSBwbHBlcmxfc3ZfdG9fZGF0dW0o dmFsLAogCQkJCQkJCQkJCQkgIGF0dHItPmF0dHR5cGlkLAogCQkJCQkJCQkJCQkgIGF0dHItPmF0 dHR5cG1vZCwKQEAgLTE3OTksNyArMTgwMCw3IEBAIHBscGVybF9tb2RpZnlfdHVwbGUoSFYgKmh2 VEQsIFRyaWdnZXJEYXRhICp0ZGF0YSwgSGVhcFR1cGxlIG90dXApCiAJCWNoYXIJICAgKmtleSA9 IGhlazJjc3RyKGhlKTsKIAkJU1YJCSAgICp2YWwgPSBIZVZBTChoZSk7CiAJCWludAkJCWF0dG4g PSBTUElfZm51bWJlcih0dXBkZXNjLCBrZXkpOwotCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0g VHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRuIC0gMSk7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0 dHI7CiAKIAkJaWYgKGF0dG4gPT0gU1BJX0VSUk9SX05PQVRUUklCVVRFKQogCQkJZXJlcG9ydChF UlJPUiwKQEAgLTE4MTEsNiArMTgxMiw4IEBAIHBscGVybF9tb2RpZnlfdHVwbGUoSFYgKmh2VEQs IFRyaWdnZXJEYXRhICp0ZGF0YSwgSGVhcFR1cGxlIG90dXApCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygiY2Fubm90IHNldCBzeXN0 ZW0gYXR0cmlidXRlIFwiJXNcIiIsCiAJCQkJCQkJa2V5KSkpOworCisJCWF0dHIgPSBUdXBsZURl c2NBdHRyKHR1cGRlc2MsIGF0dG4gLSAxKTsKIAkJaWYgKGF0dHItPmF0dGdlbmVyYXRlZCkKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRV9SX0lfRV9UUklHR0VSX1BS T1RPQ09MX1ZJT0xBVEVEKSwKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVj LmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCmluZGV4IDg0NTUyZTMyYzg3Li5hMzg2 OTA3MjA5MyAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYworKysgYi9z cmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCkBAIC0zMzY5LDcgKzMzNjksNyBAQCBleGVjX3N0 bXRfcmV0dXJuX25leHQoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQkJUExwZ1NRTF92 YXIgKnZhciA9IChQTHBnU1FMX3ZhciAqKSByZXR2YXI7CiAJCQkJCURhdHVtCQlyZXR2YWwgPSB2 YXItPnZhbHVlOwogCQkJCQlib29sCQlpc051bGwgPSB2YXItPmlzbnVsbDsKLQkJCQkJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgMCk7CisJCQkJCUZvcm1f cGdfYXR0cmlidXRlIGF0dHI7CiAKIAkJCQkJaWYgKG5hdHRzICE9IDEpCiAJCQkJCQllcmVwb3J0 KEVSUk9SLApAQCAtMzM4Miw2ICszMzgyLDcgQEAgZXhlY19zdG10X3JldHVybl9uZXh0KFBMcGdT UUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkJCQkJCXZhci0+ZGF0YXR5cGUtPnR5cGxl bik7CiAKIAkJCQkJLyogY29lcmNlIHR5cGUgaWYgbmVlZGVkICovCisJCQkJCWF0dHIgPSBUdXBs ZURlc2NBdHRyKHR1cGRlc2MsIDApOwogCQkJCQlyZXR2YWwgPSBleGVjX2Nhc3RfdmFsdWUoZXN0 YXRlLAogCQkJCQkJCQkJCQkgcmV0dmFsLAogCQkJCQkJCQkJCQkgJmlzTnVsbCwKQEAgLTM1MDAs NyArMzUwMSw3IEBAIGV4ZWNfc3RtdF9yZXR1cm5fbmV4dChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0 YXRlLAogCQl9CiAJCWVsc2UKIAkJewotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxl RGVzY0F0dHIodHVwZGVzYywgMCk7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyOwogCiAJCQkv KiBTaW1wbGUgc2NhbGFyIHJlc3VsdCAqLwogCQkJaWYgKG5hdHRzICE9IDEpCkBAIC0zNTA5LDYg KzM1MTAsNyBAQCBleGVjX3N0bXRfcmV0dXJuX25leHQoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0 ZSwKIAkJCQkJCSBlcnJtc2coIndyb25nIHJlc3VsdCB0eXBlIHN1cHBsaWVkIGluIFJFVFVSTiBO RVhUIikpKTsKIAogCQkJLyogY29lcmNlIHR5cGUgaWYgbmVlZGVkICovCisJCQlhdHRyID0gVHVw bGVEZXNjQXR0cih0dXBkZXNjLCAwKTsKIAkJCXJldHZhbCA9IGV4ZWNfY2FzdF92YWx1ZShlc3Rh dGUsCiAJCQkJCQkJCQkgcmV0dmFsLAogCQkJCQkJCQkJICZpc051bGwsCi0tIAoyLjUxLjAKCg== --000000000000183585064d76c121--