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 1pXIoV-00045U-9O for pgsql-bugs@arkaria.postgresql.org; Wed, 01 Mar 2023 09:31:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pXIoU-0003ha-0S for pgsql-bugs@arkaria.postgresql.org; Wed, 01 Mar 2023 09:31:54 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pXIoT-0003hR-E5 for pgsql-bugs@lists.postgresql.org; Wed, 01 Mar 2023 09:31:53 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pXIoQ-00034W-0Q for pgsql-bugs@lists.postgresql.org; Wed, 01 Mar 2023 09:31:52 +0000 Received: from [192.168.28.32] (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 559AD21CBD19 for ; Wed, 1 Mar 2023 12:31:47 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1677663107; bh=ohcztgMXZc0w3K0fb6FOuVyMHqW6N/5CTYfKUvFAscU=; h=Date:Subject:To:References:From:In-Reply-To; b=gQjHLKnl/kBMZ94Q6qcmq/FEUXL1mTWIoFfIEbmaxfVLnOuLebxRSarv91Fvi8YKF dLUi4BFpqaa+kALK9xMYHu2ZZkHPoMQHzaELxLHwODm/7+7wG3Fvbrg0SUPjc4QbSq wUF3W7/SypeSIKStU3w90wLHitWe2iwXwluk4vX4= Content-Type: multipart/mixed; boundary="------------MSJ0ZmVUsM70sI2Vy3GQE0Dj" Message-ID: <38ce17fb-37d8-252b-f11d-a8fcec944086@postgrespro.ru> Date: Wed, 1 Mar 2023 12:31:47 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: BUG #17815: Server crashes on executing gist_page_items() in pageinspect extension To: pgsql-bugs@lists.postgresql.org References: <17815-fc4a2d3b74705703@postgresql.org> Content-Language: en-US From: Dmitry Koval In-Reply-To: <17815-fc4a2d3b74705703@postgresql.org> 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. --------------MSJ0ZmVUsM70sI2Vy3GQE0Dj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, Attached fix for "master" branch. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------MSJ0ZmVUsM70sI2Vy3GQE0Dj Content-Type: text/plain; charset=UTF-8; name="verify_gist_page.diff" Content-Disposition: attachment; filename="verify_gist_page.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2lzdGZ1bmNzLmMgYi9jb250cmli L3BhZ2VpbnNwZWN0L2dpc3RmdW5jcy5jCmluZGV4IDEwMDY5NzgxNGQuLjJiMjUyZjg1YmQg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2lzdGZ1bmNzLmMKKysrIGIvY29u dHJpYi9wYWdlaW5zcGVjdC9naXN0ZnVuY3MuYwpAQCAtMzIsMTMgKzMyLDE0IEBAIFBHX0ZV TkNUSU9OX0lORk9fVjEoZ2lzdF9wYWdlX2l0ZW1zX2J5dGVhKTsKICNkZWZpbmUgSVNfR0lT VChyKSAoKHIpLT5yZF9yZWwtPnJlbGFtID09IEdJU1RfQU1fT0lEKQogCiAKK3N0YXRpYyBQ YWdlIHZlcmlmeV9naXN0X3BhZ2UoYnl0ZWEgKnJhd19wYWdlKTsKKwogRGF0dW0KIGdpc3Rf cGFnZV9vcGFxdWVfaW5mbyhQR19GVU5DVElPTl9BUkdTKQogewogCWJ5dGVhCSAgICpyYXdf cGFnZSA9IFBHX0dFVEFSR19CWVRFQV9QKDApOwogCVR1cGxlRGVzYwl0dXBkZXNjOwogCVBh Z2UJCXBhZ2U7Ci0JR0lTVFBhZ2VPcGFxdWUgb3BhcTsKIAlIZWFwVHVwbGUJcmVzdWx0VHVw bGU7CiAJRGF0dW0JCXZhbHVlc1s0XTsKIAlib29sCQludWxsc1s0XTsKQEAgLTUxLDM1ICs1 MiwxNyBAQCBnaXN0X3BhZ2Vfb3BhcXVlX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQko ZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAogCQkJCSBlcnJtc2co Im11c3QgYmUgc3VwZXJ1c2VyIHRvIHVzZSByYXcgcGFnZSBmdW5jdGlvbnMiKSkpOwogCi0J cGFnZSA9IGdldF9wYWdlX2Zyb21fcmF3KHJhd19wYWdlKTsKKwlwYWdlID0gdmVyaWZ5X2dp c3RfcGFnZShyYXdfcGFnZSk7CiAKIAlpZiAoUGFnZUlzTmV3KHBhZ2UpKQogCQlQR19SRVRV Uk5fTlVMTCgpOwogCi0JLyogdmVyaWZ5IHRoZSBzcGVjaWFsIHNwYWNlIGhhcyB0aGUgZXhw ZWN0ZWQgc2l6ZSAqLwotCWlmIChQYWdlR2V0U3BlY2lhbFNpemUocGFnZSkgIT0gTUFYQUxJ R04oc2l6ZW9mKEdJU1RQYWdlT3BhcXVlRGF0YSkpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJt c2coImlucHV0IHBhZ2UgaXMgbm90IGEgdmFsaWQgJXMgcGFnZSIsICJHaVNUIiksCi0JCQkJ IGVycmRldGFpbCgiRXhwZWN0ZWQgc3BlY2lhbCBzaXplICVkLCBnb3QgJWQuIiwKLQkJCQkJ CSAgIChpbnQpIE1BWEFMSUdOKHNpemVvZihHSVNUUGFnZU9wYXF1ZURhdGEpKSwKLQkJCQkJ CSAgIChpbnQpIFBhZ2VHZXRTcGVjaWFsU2l6ZShwYWdlKSkpKTsKLQotCW9wYXEgPSBHaXN0 UGFnZUdldE9wYXF1ZShwYWdlKTsKLQlpZiAob3BhcS0+Z2lzdF9wYWdlX2lkICE9IEdJU1Rf UEFHRV9JRCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJybXNnKCJpbnB1dCBwYWdlIGlzIG5vdCBh IHZhbGlkICVzIHBhZ2UiLCAiR2lTVCIpLAotCQkJCSBlcnJkZXRhaWwoIkV4cGVjdGVkICUw OHgsIGdvdCAlMDh4LiIsCi0JCQkJCQkgICBHSVNUX1BBR0VfSUQsCi0JCQkJCQkgICBvcGFx LT5naXN0X3BhZ2VfaWQpKSk7Ci0KIAkvKiBCdWlsZCBhIHR1cGxlIGRlc2NyaXB0b3IgZm9y IG91ciByZXN1bHQgdHlwZSAqLwogCWlmIChnZXRfY2FsbF9yZXN1bHRfdHlwZShmY2luZm8s IE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCiAJCWVsb2coRVJST1Is ICJyZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKIAogCS8qIENvbnZlcnQgdGhl IGZsYWdzIGJpdG1hc2sgdG8gYW4gYXJyYXkgb2YgaHVtYW4tcmVhZGFibGUgbmFtZXMgKi8K LQlmbGFnYml0cyA9IG9wYXEtPmZsYWdzOworCWZsYWdiaXRzID0gR2lzdFBhZ2VHZXRPcGFx dWUocGFnZSktPmZsYWdzOwogCWlmIChmbGFnYml0cyAmIEZfTEVBRikKIAkJZmxhZ3NbbmZs YWdzKytdID0gQ1N0cmluZ0dldFRleHREYXR1bSgibGVhZiIpOwogCWlmIChmbGFnYml0cyAm IEZfREVMRVRFRCkKQEAgLTEwMSw3ICs4NCw3IEBAIGdpc3RfcGFnZV9vcGFxdWVfaW5mbyhQ R19GVU5DVElPTl9BUkdTKQogCiAJdmFsdWVzWzBdID0gTFNOR2V0RGF0dW0oUGFnZUdldExT TihwYWdlKSk7CiAJdmFsdWVzWzFdID0gTFNOR2V0RGF0dW0oR2lzdFBhZ2VHZXROU04ocGFn ZSkpOwotCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0ob3BhcS0+cmlnaHRsaW5rKTsKKwl2 YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKEdpc3RQYWdlR2V0T3BhcXVlKHBhZ2UpLT5yaWdo dGxpbmspOwogCXZhbHVlc1szXSA9IFBvaW50ZXJHZXREYXR1bShjb25zdHJ1Y3RfYXJyYXlf YnVpbHRpbihmbGFncywgbmZsYWdzLCBURVhUT0lEKSk7CiAKIAkvKiBCdWlsZCBhbmQgcmV0 dXJuIHRoZSByZXN1bHQgdHVwbGUuICovCkBAIC0xMTYsNyArOTksNiBAQCBnaXN0X3BhZ2Vf aXRlbXNfYnl0ZWEoUEdfRlVOQ1RJT05fQVJHUykKIAlieXRlYQkgICAqcmF3X3BhZ2UgPSBQ R19HRVRBUkdfQllURUFfUCgwKTsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJu U2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJUGFnZQkJcGFnZTsKLQlHSVNUUGFn ZU9wYXF1ZSBvcGFxOwogCU9mZnNldE51bWJlciBvZmZzZXQ7CiAJT2Zmc2V0TnVtYmVyIG1h eG9mZiA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKQEAgLTEyNywyOSArMTA5LDExIEBAIGdp c3RfcGFnZV9pdGVtc19ieXRlYShQR19GVU5DVElPTl9BUkdTKQogCiAJSW5pdE1hdGVyaWFs aXplZFNSRihmY2luZm8sIDApOwogCi0JcGFnZSA9IGdldF9wYWdlX2Zyb21fcmF3KHJhd19w YWdlKTsKKwlwYWdlID0gdmVyaWZ5X2dpc3RfcGFnZShyYXdfcGFnZSk7CiAKIAlpZiAoUGFn ZUlzTmV3KHBhZ2UpKQogCQlQR19SRVRVUk5fTlVMTCgpOwogCi0JLyogdmVyaWZ5IHRoZSBz cGVjaWFsIHNwYWNlIGhhcyB0aGUgZXhwZWN0ZWQgc2l6ZSAqLwotCWlmIChQYWdlR2V0U3Bl Y2lhbFNpemUocGFnZSkgIT0gTUFYQUxJR04oc2l6ZW9mKEdJU1RQYWdlT3BhcXVlRGF0YSkp KQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coImlucHV0IHBhZ2UgaXMgbm90IGEgdmFsaWQg JXMgcGFnZSIsICJHaVNUIiksCi0JCQkJIGVycmRldGFpbCgiRXhwZWN0ZWQgc3BlY2lhbCBz aXplICVkLCBnb3QgJWQuIiwKLQkJCQkJCSAgIChpbnQpIE1BWEFMSUdOKHNpemVvZihHSVNU UGFnZU9wYXF1ZURhdGEpKSwKLQkJCQkJCSAgIChpbnQpIFBhZ2VHZXRTcGVjaWFsU2l6ZShw YWdlKSkpKTsKLQotCW9wYXEgPSBHaXN0UGFnZUdldE9wYXF1ZShwYWdlKTsKLQlpZiAob3Bh cS0+Z2lzdF9wYWdlX2lkICE9IEdJU1RfUEFHRV9JRCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJy bXNnKCJpbnB1dCBwYWdlIGlzIG5vdCBhIHZhbGlkICVzIHBhZ2UiLCAiR2lTVCIpLAotCQkJ CSBlcnJkZXRhaWwoIkV4cGVjdGVkICUwOHgsIGdvdCAlMDh4LiIsCi0JCQkJCQkgICBHSVNU X1BBR0VfSUQsCi0JCQkJCQkgICBvcGFxLT5naXN0X3BhZ2VfaWQpKSk7Ci0KIAkvKiBBdm9p ZCBib2d1cyBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKCkgY2FsbCB3aXRoIGRlbGV0ZWQgcGFn ZXMgKi8KIAlpZiAoR2lzdFBhZ2VJc0RlbGV0ZWQocGFnZSkpCiAJCWVsb2coTk9USUNFLCAi cGFnZSBpcyBkZWxldGVkIik7CkBAIC0xOTMsNiArMTU3LDQwIEBAIGdpc3RfcGFnZV9pdGVt c19ieXRlYShQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiAoRGF0dW0pIDA7CiB9CiAKKy8q CisgKiBWZXJpZnkgdGhhdCB0aGUgZ2l2ZW4gYnl0ZWEgY29udGFpbnMgYSBHSVNUIHBhZ2Ug b3IgZGllIGluIHRoZSBhdHRlbXB0LgorICogQSBwb2ludGVyIHRvIHRoZSBwYWdlIGlzIHJl dHVybmVkLgorICovCitzdGF0aWMgUGFnZQordmVyaWZ5X2dpc3RfcGFnZShieXRlYSAqcmF3 X3BhZ2UpCit7CisJUGFnZQkJcGFnZSA9IGdldF9wYWdlX2Zyb21fcmF3KHJhd19wYWdlKTsK KwlHSVNUUGFnZU9wYXF1ZSBvcGFxOworCisJaWYgKFBhZ2VJc05ldyhwYWdlKSkKKwkJcmV0 dXJuIHBhZ2U7CisKKwkvKiB2ZXJpZnkgdGhlIHNwZWNpYWwgc3BhY2UgaGFzIHRoZSBleHBl Y3RlZCBzaXplICovCisJaWYgKFBhZ2VHZXRTcGVjaWFsU2l6ZShwYWdlKSAhPSBNQVhBTElH TihzaXplb2YoR0lTVFBhZ2VPcGFxdWVEYXRhKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1z ZygiaW5wdXQgcGFnZSBpcyBub3QgYSB2YWxpZCAlcyBwYWdlIiwgIkdpU1QiKSwKKwkJCQkg ZXJyZGV0YWlsKCJFeHBlY3RlZCBzcGVjaWFsIHNpemUgJWQsIGdvdCAlZC4iLAorCQkJCQkJ ICAgKGludCkgTUFYQUxJR04oc2l6ZW9mKEdJU1RQYWdlT3BhcXVlRGF0YSkpLAorCQkJCQkJ ICAgKGludCkgUGFnZUdldFNwZWNpYWxTaXplKHBhZ2UpKSkpOworCisJb3BhcSA9IEdpc3RQ YWdlR2V0T3BhcXVlKHBhZ2UpOworCWlmIChvcGFxLT5naXN0X3BhZ2VfaWQgIT0gR0lTVF9Q QUdFX0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImlucHV0IHBhZ2UgaXMgbm90IGEg dmFsaWQgJXMgcGFnZSIsICJHaVNUIiksCisJCQkJIGVycmRldGFpbCgiRXhwZWN0ZWQgJTA4 eCwgZ290ICUwOHguIiwKKwkJCQkJCSAgIEdJU1RfUEFHRV9JRCwKKwkJCQkJCSAgIG9wYXEt Pmdpc3RfcGFnZV9pZCkpKTsKKworCXJldHVybiBwYWdlOworfQorCiBEYXR1bQogZ2lzdF9w YWdlX2l0ZW1zKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC0yMjAsNyArMjE4LDcgQEAgZ2lz dF9wYWdlX2l0ZW1zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJIGVycm1zZygiXCIlc1wiIGlz IG5vdCBhICVzIGluZGV4IiwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4 UmVsKSwgIkdpU1QiKSkpOwogCi0JcGFnZSA9IGdldF9wYWdlX2Zyb21fcmF3KHJhd19wYWdl KTsKKwlwYWdlID0gdmVyaWZ5X2dpc3RfcGFnZShyYXdfcGFnZSk7CiAKIAlpZiAoUGFnZUlz TmV3KHBhZ2UpKQogCXsK --------------MSJ0ZmVUsM70sI2Vy3GQE0Dj--