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 1pmGFN-000201-Tm for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Apr 2023 15:49:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pmGFL-0007CE-TD for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Apr 2023 15:49:27 +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 1pmGFL-0007B0-HZ for pgsql-hackers@lists.postgresql.org; Tue, 11 Apr 2023 15:49:27 +0000 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1pmGFC-002G7E-2M for pgsql-hackers@lists.postgresql.org; Tue, 11 Apr 2023 15:49:24 +0000 Received: by mail-pj1-x102e.google.com with SMTP id v9so13733951pjk.0 for ; Tue, 11 Apr 2023 08:49:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1681228155; x=1683820155; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=lEM5cEnT4/EEioy+mdicXeLT6ZqBUGgv7UuDsIPyvpE=; b=O1jmXp5yqTRofgN3K5mz1FkvJsBKUPkyZhXLO2Hvjzpy7Qw0Sl8ZjIQWAD19rnTAPS UOozkn5N2OEiBBB6mWkbowr7AdGYL87Q7R0IeYG/G7qCJknlcjKluovqGzXhlMI+JpSd Dd4cT81tdAhrJDpa97pdQ69ok65TDJkOiU3F8AQKlvZOXiVn0//KJ13gjbU6VtMyDcsp 6o1rxcQfmtjlXkmYgY1WUpdVYgZBJdwLVN09zaE1JlulpPMSR4qb6nUjR4w8jcs0bapy uAtmEVOMGIcdgVs5ByENmBJfCG/RhM+yUHjdeoEzFH8RUH649FkkRr2OowxijP3/LJ91 FBag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681228155; x=1683820155; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lEM5cEnT4/EEioy+mdicXeLT6ZqBUGgv7UuDsIPyvpE=; b=tU3nFKMYV96fG1DbgTgO+mngRYeqICvdjtSNRxtbICNAzUQOYrUQ15IRe3sY2alQ4I yuMFPyE8cxE0Kue+P8AU13YlVtHc+VAoHgS52+kppLocyNS3BjsFNvf+1gNFzbUqkWCC n8BV2+qjMznn8QP7kv+X3aWGdSP1yOO9kw4whLx2B04zFNy/ijTZH4zTevuimjZEBkw/ 1QXhWrJwTAkXIe9IMAfikQW1l4AnEjzEWOCzpwriMEJqDhihX2ITGEMd9cXZzGMjY8W2 QBegTu4yxg+u+G5/r/3EEFbMlLYvd8r4mVSySx6w1G2aZ0uuxNaQtN47NtR4fBA97zjI Gkkg== X-Gm-Message-State: AAQBX9dkhOsQP8EubYs1OTQ63Lt/l43M172IKPg4CLTevCJNLN4EHk0H 6rMu9MKKtk7ia1q6gEKN6aJOodf6BWA= X-Google-Smtp-Source: AKy350a/6lfHb/nxrSUOsHKVvlCwNmv7qqWdspYODqgWr4lf3GjBU2FvJvk5cxaKi2OSee81/wg3Jg== X-Received: by 2002:a05:6a20:4c94:b0:d8:d061:96ec with SMTP id fq20-20020a056a204c9400b000d8d06196ecmr14680525pzb.27.1681228154740; Tue, 11 Apr 2023 08:49:14 -0700 (PDT) Received: from [10.0.2.15] ([115.99.197.190]) by smtp.gmail.com with ESMTPSA id u20-20020aa78494000000b005a8bf239f5csm3654818pfn.193.2023.04.11.08.49.13 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Apr 2023 08:49:14 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------iUNvgwjWmifJHY95Na2ZcUX2" Message-ID: <796b65c3-57b7-bddf-b0d5-a8afafb8b627@gmail.com> Date: Tue, 11 Apr 2023 21:19:12 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Content-Language: en-US From: Ankit Kumar Pandey Subject: [BUG #17888] Incorrect memory access in gist__int_ops for an input array with many elements To: pghackers 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. --------------iUNvgwjWmifJHY95Na2ZcUX2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, I was looking at this issue: https://www.postgresql.org/message-id/flat/17888-f72930e6b5ce8c14%40postgresql.org pfree call on contrib/intarray/_int_gist.c:345 ```     if (in != (ArrayType *) DatumGetPointer(entry->key))         pfree(in); ``` leads to BogusFree function call and server crash. This is when we use array size of 1001. If we increase array size to 3001, we get index size error, NOTICE:  input array is too big (199 maximum allowed, 3001 current), use gist__intbig_ops opclass instead ERROR:  index row requires 12040 bytes, maximum size is 8191 When array size is 1001 is concerned, we raise elog about input array is too big, multiple of times. Wouldn't it make more sense to error out instead of proceeding further and getting bogus pointer errors messages (as we do when size is 3001)? Changing elog to ereport makes behavior consistent (between array size of 1001 vs 3001), so I have attached a patch for that. It errors out like this: ERROR:  input array is too big (199 maximum allowed, 1001 current), use gist__intbig_ops opclass instead This is same error which was raised as notice earlier. Let me know if it makes sense. Also, comments on BogusFree mentions `As a possible aid in debugging, we report the header word along with the pointer address`. How can we interpret useful debugging information from this? `pfree called with invalid pointer 0x7ff1706d0030 (header 0x4fc8000100000000)` Regards, Ankit --------------iUNvgwjWmifJHY95Na2ZcUX2 Content-Type: text/x-patch; charset=UTF-8; name="v1-gist-int-ops-overflow.patch" Content-Disposition: attachment; filename="v1-gist-int-ops-overflow.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMgYi9jb250cmliL2lu dGFycmF5L19pbnRfZ2lzdC5jCmluZGV4IDdhNDhjZTYyNGQuLjc5YzgxMTI3ZjYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naXN0LmMKKysrIGIvY29udHJpYi9pbnRh cnJheS9faW50X2dpc3QuYwpAQCAtMTgxLDggKzE4MSwxMCBAQCBnX2ludF9jb21wcmVzcyhQ R19GVU5DVElPTl9BUkdTKQogCQlQUkVQQVJFQVJSKHIpOwogCiAJCWlmIChBUlJORUxFTVMo cikgPj0gMiAqIG51bV9yYW5nZXMpCi0JCQllbG9nKE5PVElDRSwgImlucHV0IGFycmF5IGlz IHRvbyBiaWcgKCVkIG1heGltdW0gYWxsb3dlZCwgJWQgY3VycmVudCksIHVzZSBnaXN0X19p bnRiaWdfb3BzIG9wY2xhc3MgaW5zdGVhZCIsCi0JCQkJIDIgKiBudW1fcmFuZ2VzIC0gMSwg QVJSTkVMRU1TKHIpKTsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKKwkJCQkgZXJybXNnKCJpbnB1dCBhcnJheSBp cyB0b28gYmlnICglZCBtYXhpbXVtIGFsbG93ZWQsICVkIGN1cnJlbnQpLCB1c2UgZ2lzdF9f aW50YmlnX29wcyBvcGNsYXNzIGluc3RlYWQiLAorCQkJCSAyICogbnVtX3JhbmdlcyAtIDEs IEFSUk5FTEVNUyhyKSkpKTsKIAogCQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRS WSkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyKSwK --------------iUNvgwjWmifJHY95Na2ZcUX2--