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 1q4EsT-0002Sd-9v for pgsql-bugs@arkaria.postgresql.org; Wed, 31 May 2023 06:00:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q4EsR-00087p-Ml for pgsql-bugs@arkaria.postgresql.org; Wed, 31 May 2023 06:00:07 +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 1q4EsR-00087g-D5 for pgsql-bugs@lists.postgresql.org; Wed, 31 May 2023 06:00:07 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q4EsN-003D2r-M7 for pgsql-bugs@lists.postgresql.org; Wed, 31 May 2023 06:00:06 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-2af2696fd1cso57233091fa.2 for ; Tue, 30 May 2023 23:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685512803; x=1688104803; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=xA1yVrb8X5EF7sNnXVzXBz0rKpPIykI1hcEM0dSx4b4=; b=MxqU/fNecuyR50GQR6dnjkeiEeMHg9WwnEmORZatHN1tY0PpVUooY7N/5PNZ8cSeYE n48A8K3E6QGOYEhenW8zvxtilCTFZ6GcQ2EKOHcs8OWdqyvStJVfGoVRI6Ma64v5Jstk PwA7kJ23l9/OlK3sVNWO5EIHwCjGDgY7KmOJFUuhN93WlC/Lx8OTYI2ovBLHt/uQP0ES trGpXPKBwja5Vjvof2mtS/98WrNfVvn08aiCM0vlb2WOc0x+BB1YHb7sRQosPpbfQapL ziQX4H51xS+43fAo+t2UQAVB3S3UB+W25yPsWPXytAoyewKuoErJcHRPdaYDDEh8nUn0 oUxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685512803; x=1688104803; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=xA1yVrb8X5EF7sNnXVzXBz0rKpPIykI1hcEM0dSx4b4=; b=ZwjuhmaxkhkmlgeCVRdiEaMC6nJ3dEbGSlSVELU6KHO2QnOAiywEbAipDP0R/7npGP 27TKegZ9DWlaQh1+Qdjwqcniv0POCNwZboJaUXptHurCHYmWHKr1P0CjFGl2bDr9z4ie DKYsQ4BkGVLiqGdLNYsAYUPqjVyX690srljj6qUnJTsC1f5RUMaBW8+O23O2h47C02jS OKv9SnE95ex9aGNBc6XoS1d8Sr0Usi69yYk6qhYr/nnQ+8Imr4//ngUrulf6v4DW6nwA jxVl74YUE9DetK9GoGqo6fzsZ7O8sZKWbCANbDiEQxc4d3nlFX3SZ9ELs31TN2GhgMg8 hRMw== X-Gm-Message-State: AC+VfDyM4zPLP3LEMibKCUdzbE/3qmp16qRYoxrTThDKMVf65GEkMFvL afvZBNkHipjyhhlGD9pVsO4= X-Google-Smtp-Source: ACHHUZ5ZuK71Yf/ud5PITTXfuK3fksvQbh7lHwQ+fALFGV0CyNMUn2Fqut2wpmVfFLmVaOMEtIulPw== X-Received: by 2002:a2e:2e16:0:b0:2ad:c1ec:fa3 with SMTP id u22-20020a2e2e16000000b002adc1ec0fa3mr2204894lju.20.1685512803102; Tue, 30 May 2023 23:00:03 -0700 (PDT) Received: from [1.0.0.7] ([178.155.22.130]) by smtp.gmail.com with ESMTPSA id y1-20020a2eb001000000b002af8aaebce4sm3159873ljk.8.2023.05.30.23.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 May 2023 23:00:01 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------BDWfYQggL7MlsT0gRHQGPqAN" Message-ID: Date: Wed, 31 May 2023 09:00:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: BUG #17888: Incorrect memory access in gist__int_ops for an input array with many elements Content-Language: en-US To: Richard Guo , Ankit Kumar Pandey , David Rowley , Teodor Sigaev , pgsql-bugs@lists.postgresql.org References: <17888-f72930e6b5ce8c14@postgresql.org> From: Alexander Lakhin 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. --------------BDWfYQggL7MlsT0gRHQGPqAN Content-Type: multipart/alternative; boundary="------------tfWmyFHSbcV90a1K2ioR7mfF" --------------tfWmyFHSbcV90a1K2ioR7mfF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 07.04.2023 11:57, Richard Guo wrote: > > On Fri, Apr 7, 2023 at 4:21 AM PG Bug reporting form wrote: > > NOTICE:  input array is too big (199 maximum allowed, 1001 current), use > gist__intbig_ops opclass instead > > > In g_int_compress, > >  if (ARRNELEMS(r) >= 2 * num_ranges) >      elog(NOTICE, "input array is too big (%d maximum allowed, %d current), use gist__intbig_ops opclass instead", >           2 * num_ranges - 1, ARRNELEMS(r)); > > Wondering why elog with NOTICE rather than Error here. The NOTICE appeared there in commit 08ee64ebf5 (from year 2005) in an attempt to get rid of flags (ISLEAFKEY(in)) [1] and probably expressed an intention to play gently (don't break compatibility?). The patch proposed at [2] looks correct to me. Thank you, Ankit! Though I would add a simple case to the intarray regression test and also add errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED) to other two places in _int_gist.c for the sake of consistency. Please look at the patches attached. [1] https://www.postgresql.org/message-id/43786274.3020200%40sigaev.ru [2] https://www.postgresql.org/message-id/796b65c3-57b7-bddf-b0d5-a8afafb8b627%40gmail.com --------------tfWmyFHSbcV90a1K2ioR7mfF Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
07.04.2023 11:57, Richard Guo wrote:

On Fri, Apr 7, 2023 at 4:21 AM PG Bug reporting form <noreply@postgresql.org> wrote:
NOTICE:  input array is too big (199 maximum allowed, 1001 current), use
gist__intbig_ops opclass instead

In g_int_compress,

 if (ARRNELEMS(r) >= 2 * num_ranges)
     elog(NOTICE, "input array is too big (%d maximum allowed, %d current), use gist__intbig_ops opclass instead",
          2 * num_ranges - 1, ARRNELEMS(r));

Wondering why elog with NOTICE rather than Error here.

The NOTICE appeared there in commit 08ee64ebf5 (from year 2005) in an
attempt to get rid of flags (ISLEAFKEY(in)) [1] and probably expressed
an intention to play gently (don't break compatibility?).

The patch proposed at [2] looks correct to me. Thank you, Ankit!
Though I would add a simple case to the intarray regression test and also
add errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED) to other two places in
_int_gist.c for the sake of consistency.

Please look at the patches attached.

[1] https://www.postgresql.org/message-id/43786274.3020200%40sigaev.ru
[2] https://www.postgresql.org/message-id/796b65c3-57b7-bddf-b0d5-a8afafb8b627%40gmail.com
--------------tfWmyFHSbcV90a1K2ioR7mfF-- --------------BDWfYQggL7MlsT0gRHQGPqAN Content-Type: text/x-patch; charset=UTF-8; name="v2-01-gist-int-ops-overflow.patch" Content-Disposition: attachment; filename="v2-01-gist-int-ops-overflow.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMgYi9jb250cmliL2lu dGFycmF5L19pbnRfZ2lzdC5jCmluZGV4IDdhNDhjZTYyNGQuLjJjODJiODZkZDEgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMKKysrIGIvY29udHJpYi9pbnRh cnJheS9faW50X2dpc3QuYwpAQCAtMTgxLDggKzE4MSw5IEBAIGdfaW50X2NvbXByZXNzKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCVBSRVBBUkVBUlIocik7CiAKIAkJaWYgKEFSUk5FTEVNUyhy KSA+PSAyICogbnVtX3JhbmdlcykKLQkJCWVsb2coTk9USUNFLCAiaW5wdXQgYXJyYXkgaXMg dG9vIGJpZyAoJWQgbWF4aW11bSBhbGxvd2VkLCAlZCBjdXJyZW50KSwgdXNlIGdpc3RfX2lu dGJpZ19vcHMgb3BjbGFzcyBpbnN0ZWFkIiwKLQkJCQkgMiAqIG51bV9yYW5nZXMgLSAxLCBB UlJORUxFTVMocikpOworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygiaW5wdXQg YXJyYXkgaXMgdG9vIGJpZyAoJWQgbWF4aW11bSBhbGxvd2VkLCAlZCBjdXJyZW50KSwgdXNl IGdpc3RfX2ludGJpZ19vcHMgb3BjbGFzcyBpbnN0ZWFkIiwKKwkJCQkJCQkyICogbnVtX3Jh bmdlcyAtIDEsIEFSUk5FTEVNUyhyKSkpKTsKIAogCQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9m KEdJU1RFTlRSWSkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1 bShyKSwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkvZXhwZWN0ZWQvX2ludC5vdXQg Yi9jb250cmliL2ludGFycmF5L2V4cGVjdGVkL19pbnQub3V0CmluZGV4IDZhYmIxN2UyZTUu LmNhZDM3ZjFhMjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvZXhwZWN0ZWQvX2lu dC5vdXQKKysrIGIvY29udHJpYi9pbnRhcnJheS9leHBlY3RlZC9faW50Lm91dApAQCAtNTY2 LDYgKzU2Niw4IEBAIFNFTEVDVCBjb3VudCgqKSBmcm9tIHRlc3RfX2ludCBXSEVSRSBhIEBA ICchMjAgJiAhMjEnOwogICA2MzQzCiAoMSByb3cpCiAKK0lOU0VSVCBJTlRPIHRlc3RfX2lu dCBTRUxFQ1QgYXJyYXkoU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMSkg eCk7IC0tIHNob3VsZCBmYWlsCitFUlJPUjogIGlucHV0IGFycmF5IGlzIHRvbyBiaWcgKDE5 OSBtYXhpbXVtIGFsbG93ZWQsIDEwMDEgY3VycmVudCksIHVzZSBnaXN0X19pbnRiaWdfb3Bz IG9wY2xhc3MgaW5zdGVhZAogRFJPUCBJTkRFWCB0ZXh0X2lkeDsKIENSRUFURSBJTkRFWCB0 ZXh0X2lkeCBvbiB0ZXN0X19pbnQgdXNpbmcgZ2lzdCAoYSBnaXN0X19pbnRfb3BzKG51bXJh bmdlcyA9IDApKTsKIEVSUk9SOiAgdmFsdWUgMCBvdXQgb2YgYm91bmRzIGZvciBvcHRpb24g Im51bXJhbmdlcyIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkvc3FsL19pbnQuc3Fs IGIvY29udHJpYi9pbnRhcnJheS9zcWwvX2ludC5zcWwKaW5kZXggZDlkOTg3YmRiMS4uYTk0 N2M0ZjhmZCAxMDA2NDQKLS0tIGEvY29udHJpYi9pbnRhcnJheS9zcWwvX2ludC5zcWwKKysr IGIvY29udHJpYi9pbnRhcnJheS9zcWwvX2ludC5zcWwKQEAgLTEyNSw2ICsxMjUsOCBAQCBT RUxFQ1QgY291bnQoKikgZnJvbSB0ZXN0X19pbnQgV0hFUkUgYSBAQCAnKDIwJjIzKXwoNTAm NjgpJzsKIFNFTEVDVCBjb3VudCgqKSBmcm9tIHRlc3RfX2ludCBXSEVSRSBhIEBAICcyMCB8 ICEyMSc7CiBTRUxFQ1QgY291bnQoKikgZnJvbSB0ZXN0X19pbnQgV0hFUkUgYSBAQCAnITIw ICYgITIxJzsKIAorSU5TRVJUIElOVE8gdGVzdF9faW50IFNFTEVDVCBhcnJheShTRUxFQ1Qg eCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAxKSB4KTsgLS0gc2hvdWxkIGZhaWwKKwog RFJPUCBJTkRFWCB0ZXh0X2lkeDsKIENSRUFURSBJTkRFWCB0ZXh0X2lkeCBvbiB0ZXN0X19p bnQgdXNpbmcgZ2lzdCAoYSBnaXN0X19pbnRfb3BzKG51bXJhbmdlcyA9IDApKTsKIENSRUFU RSBJTkRFWCB0ZXh0X2lkeCBvbiB0ZXN0X19pbnQgdXNpbmcgZ2lzdCAoYSBnaXN0X19pbnRf b3BzKG51bXJhbmdlcyA9IDI1MykpOwo= --------------BDWfYQggL7MlsT0gRHQGPqAN Content-Type: text/x-patch; charset=UTF-8; name="v2-02-gist-int-errcodes.patch" Content-Disposition: attachment; filename="v2-02-gist-int-errcodes.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMgYi9jb250cmliL2lu dGFycmF5L19pbnRfZ2lzdC5jCmluZGV4IDJjODJiODZkZDEuLjk4MTQ1ZmUzNzAgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMKKysrIGIvY29udHJpYi9pbnRh cnJheS9faW50X2dpc3QuYwpAQCAtMTgyLDcgKzE4Miw4IEBAIGdfaW50X2NvbXByZXNzKFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAkJaWYgKEFSUk5FTEVNUyhyKSA+PSAyICogbnVtX3Jhbmdl cykKIAkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJtc2coImlucHV0IGFycmF5IGlzIHRv byBiaWcgKCVkIG1heGltdW0gYWxsb3dlZCwgJWQgY3VycmVudCksIHVzZSBnaXN0X19pbnRi aWdfb3BzIG9wY2xhc3MgaW5zdGVhZCIsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JB TV9MSU1JVF9FWENFRURFRCksCisJCQkJCSBlcnJtc2coImlucHV0IGFycmF5IGlzIHRvbyBi aWcgKCVkIG1heGltdW0gYWxsb3dlZCwgJWQgY3VycmVudCksIHVzZSBnaXN0X19pbnRiaWdf b3BzIG9wY2xhc3MgaW5zdGVhZCIsCiAJCQkJCQkJMiAqIG51bV9yYW5nZXMgLSAxLCBBUlJO RUxFTVMocikpKSk7CiAKIAkJcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsK QEAgLTI3MSw3ICsyNzIsOCBAQCBnX2ludF9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQog CQlsZW5yID0gaW50ZXJuYWxfc2l6ZShkciwgbGVuKTsKIAkJaWYgKGxlbnIgPCAwIHx8IGxl bnIgPiBNQVhOVU1FTFRTKQogCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycm1zZygiZGF0 YSBpcyB0b28gc3BhcnNlLCByZWNyZWF0ZSBpbmRleCB1c2luZyBnaXN0X19pbnRiaWdfb3Bz IG9wY2xhc3MgaW5zdGVhZCIpKSk7CisJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9M SU1JVF9FWENFRURFRCksCisJCQkJCSBlcnJtc2coImRhdGEgaXMgdG9vIHNwYXJzZSwgcmVj cmVhdGUgaW5kZXggdXNpbmcgZ2lzdF9faW50YmlnX29wcyBvcGNsYXNzIGluc3RlYWQiKSkp OwogCiAJCXIgPSByZXNpemVfaW50QXJyYXlUeXBlKHIsIGxlbik7CiAJCXJldHZhbCA9IHBh bGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CkBAIC0zMzMsNyArMzM1LDggQEAgZ19pbnRfZGVj b21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCWxlbnIgPSBpbnRlcm5hbF9zaXplKGRpbiwg bGVuaW4pOwogCWlmIChsZW5yIDwgMCB8fCBsZW5yID4gTUFYTlVNRUxUUykKIAkJZXJlcG9y dChFUlJPUiwKLQkJCQkoZXJybXNnKCJjb21wcmVzc2VkIGFycmF5IGlzIHRvbyBiaWcsIHJl Y3JlYXRlIGluZGV4IHVzaW5nIGdpc3RfX2ludGJpZ19vcHMgb3BjbGFzcyBpbnN0ZWFkIikp KTsKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAorCQkJ CSBlcnJtc2coImNvbXByZXNzZWQgYXJyYXkgaXMgdG9vIGJpZywgcmVjcmVhdGUgaW5kZXgg dXNpbmcgZ2lzdF9faW50YmlnX29wcyBvcGNsYXNzIGluc3RlYWQiKSkpOwogCiAJciA9IG5l d19pbnRBcnJheVR5cGUobGVucik7CiAJZHIgPSBBUlJQVFIocik7Cg== --------------BDWfYQggL7MlsT0gRHQGPqAN--