Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pQ311-0006KQ-Ui for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Feb 2023 09:14:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pQ310-0001AC-Oo for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Feb 2023 09:14:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pQ310-0001A3-96 for pgsql-hackers@lists.postgresql.org; Thu, 09 Feb 2023 09:14:50 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pQ30v-0001Rs-Uv for pgsql-hackers@postgresql.org; Thu, 09 Feb 2023 09:14:49 +0000 Received: from [192.168.28.82] (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 6C93821CB32F; Thu, 9 Feb 2023 12:14:44 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1675934084; bh=2Ja7uUA3X1hRlJJjBDTwFpZDIXKiTh7INsL9bLqJF1I=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=Os/qPgKs+xnqzPSpvoZDQHyfWje6dV6IkS+6pM2ClXws9q8NfmT7ZKCxmw+paQ337 0yX0VCAcObw+AwtpkR957eQJdzikaXqT7Q+JeCSTtg+pGD/zEQ6CeTePzWYuyD1XP5 EqIjqVhUr8FQxlHFq6Ra8qIVFHIjR2qVYwSyUto0= Content-Type: multipart/mixed; boundary="------------RsN5p6S7KmvxI1lLFztKTB66" Message-ID: <03cac228-9bcc-00ee-ff76-c097c7dea493@postgrespro.ru> Date: Thu, 9 Feb 2023 12:14:44 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: A bug with ExecCheckPermissions To: Alvaro Herrera , Amit Langote Cc: o.tselebrovskiy@postgrespro.ru, pgsql-hackers@postgresql.org References: <20230208182318.pduek52uzl2zq7o4@alvherre.pgsql> Content-Language: en-US From: Sergey Shinderuk In-Reply-To: <20230208182318.pduek52uzl2zq7o4@alvherre.pgsql> 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. --------------RsN5p6S7KmvxI1lLFztKTB66 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 08.02.2023 21:23, Alvaro Herrera wrote: > On 2023-Feb-08, Amit Langote wrote: > >> On Wed, Feb 8, 2023 at 16:19 Alvaro Herrera wrote: > >>> I think we should also patch ExecCheckPermissions to use forboth(), >>> scanning the RTEs as it goes over the perminfos, and make sure that the >>> entries are consistent. >> >> Hmm, we can’t use forboth here, because not all RTEs have the corresponding >> RTEPermissionInfo, inheritance children RTEs, for example. > > Doh, of course. > >> Also, it doesn’t make much sense to reinstate the original loop over >> range table and fetch the RTEPermissionInfo for the RTEs with non-0 >> perminfoindex, because the main goal of the patch was to make >> ExecCheckPermissions() independent of range table length. > > Yeah, I'm thinking in a mechanism that would allow us to detect bugs in > development builds — no need to have it run in production builds. > However, I can't see any useful way to implement it. > Maybe something like the attached would do? -- Sergey Shinderuk https://postgrespro.com/ --------------RsN5p6S7KmvxI1lLFztKTB66 Content-Type: text/plain; charset=UTF-8; name="check-rteperminfos.diff" Content-Disposition: attachment; filename="check-rteperminfos.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDM5YmZiNDhkYzIyLi45NDg2Njc0M2Y0 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01NzcsNiArNTc3LDI4IEBAIEV4 ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZv cywKIAlMaXN0Q2VsbCAgICpsOwogCWJvb2wJCXJlc3VsdCA9IHRydWU7CiAKKyNpZmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HCisJQml0bWFwc2V0ICAqaW5kZXhzZXQgPSBOVUxMOworCisJ LyogQ2hlY2sgdGhhdCBydGVwZXJtaW5mb3MgaXMgY29uc2lzdGVudCB3aXRoIHJhbmdlVGFi bGUgKi8KKwlmb3JlYWNoKGwsIHJhbmdlVGFibGUpCisJeworCQlSYW5nZVRibEVudHJ5ICpy dGUgPSBsZmlyc3Rfbm9kZShSYW5nZVRibEVudHJ5LCBsKTsKKworCQlpZiAocnRlLT5wZXJt aW5mb2luZGV4ICE9IDApCisJCXsKKwkJCS8qIFNhbml0eSBjaGVja3MgKi8KKwkJCSh2b2lk KSBnZXRSVEVQZXJtaXNzaW9uSW5mbyhydGVwZXJtaW5mb3MsIHJ0ZSk7CisJCQkvKiBNYW55 LXRvLW9uZSBtYXBwaW5nIG5vdCBhbGxvd2VkICovCisJCQlBc3NlcnQoIWJtc19pc19tZW1i ZXIocnRlLT5wZXJtaW5mb2luZGV4LCBpbmRleHNldCkpOworCQkJaW5kZXhzZXQgPSBibXNf YWRkX21lbWJlcihpbmRleHNldCwgcnRlLT5wZXJtaW5mb2luZGV4KTsKKwkJfQorCX0KKwor CS8qIEFsbCBydGVwZXJtaW5mb3MgYXJlIHJlZmVyZW5jZWQgKi8KKwlBc3NlcnQoYm1zX251 bV9tZW1iZXJzKGluZGV4c2V0KSA9PSBsaXN0X2xlbmd0aChydGVwZXJtaW5mb3MpKTsKKyNl bmRpZgorCiAJZm9yZWFjaChsLCBydGVwZXJtaW5mb3MpCiAJewogCQlSVEVQZXJtaXNzaW9u SW5mbyAqcGVybWluZm8gPSBsZmlyc3Rfbm9kZShSVEVQZXJtaXNzaW9uSW5mbywgbCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDM3NWIxN2I5ZjNiLi5mNmQx OTIyNmEwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTEzOTks NiArMTM5OSw3IEBAIFJJX0luaXRpYWxfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRp b24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAJcGtydGUtPnJlbGlkID0gUmVsYXRpb25H ZXRSZWxpZChwa19yZWwpOwogCXBrcnRlLT5yZWxraW5kID0gcGtfcmVsLT5yZF9yZWwtPnJl bGtpbmQ7CiAJcGtydGUtPnJlbGxvY2ttb2RlID0gQWNjZXNzU2hhcmVMb2NrOworCXBrcnRl LT5wZXJtaW5mb2luZGV4ID0gMjsKIAogCXBrX3Blcm1pbmZvID0gbWFrZU5vZGUoUlRFUGVy bWlzc2lvbkluZm8pOwogCXBrX3Blcm1pbmZvLT5yZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQo cGtfcmVsKTsKQEAgLTE0MDksNiArMTQxMCw3IEBAIFJJX0luaXRpYWxfQ2hlY2soVHJpZ2dl ciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAJZmtydGUt PnJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChma19yZWwpOwogCWZrcnRlLT5yZWxraW5kID0g ZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQ7CiAJZmtydGUtPnJlbGxvY2ttb2RlID0gQWNjZXNz U2hhcmVMb2NrOworCWZrcnRlLT5wZXJtaW5mb2luZGV4ID0gMTsKIAogCWZrX3Blcm1pbmZv ID0gbWFrZU5vZGUoUlRFUGVybWlzc2lvbkluZm8pOwogCWZrX3Blcm1pbmZvLT5yZWxpZCA9 IFJlbGF0aW9uR2V0UmVsaWQoZmtfcmVsKTsK --------------RsN5p6S7KmvxI1lLFztKTB66--