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 1nJJcp-0005m5-2Q for pgsql-hackers@arkaria.postgresql.org; Sun, 13 Feb 2022 18:29:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nJJcI-0008Ng-Ht for pgsql-hackers@arkaria.postgresql.org; Sun, 13 Feb 2022 18:28:58 +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 1nJJcI-0008NP-2s for pgsql-hackers@lists.postgresql.org; Sun, 13 Feb 2022 18:28:58 +0000 Received: from mail-ua1-x92f.google.com ([2607:f8b0:4864:20::92f]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nJJcB-0004yS-Ck for pgsql-hackers@lists.postgresql.org; Sun, 13 Feb 2022 18:28:57 +0000 Received: by mail-ua1-x92f.google.com with SMTP id w18so7072104uar.8 for ; Sun, 13 Feb 2022 10:28:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=0pMayXgyMKNf5D++XFrrXhdLjm/XRfQ1NNswhBFjPY0=; b=BqOCR+AXG0jVtMdRQyHulwOiSsNHdGW38lCsV4NpC1QiN0E65F5AyMShZfZsw8FtCl KJStX0rBvyrUgBytBChD3CUoOsGKgV3wQq9EGQiltvYVyFAh7aYorqCW2Qf7DHsPsAQn JovCoe0PQ8L5m+6dMKGBCzLPZJtiLRO+6KN9DcybIw3azCXe6zvBS6i/YzfWZ3w2Llc0 +l1vb3UKth6xuWs1R4RF32f0HBmXYYCFu/DRGHsS9UWVn/XMKZyvmhxEXuwgZijBEEwB zmROrWgfh/WXd2Nn/wl6TQ2vyi5bkzeqIJvcpaTikoCe7CN/cR4o6NLvvrJ3MM5uF+ZG g6iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=0pMayXgyMKNf5D++XFrrXhdLjm/XRfQ1NNswhBFjPY0=; b=HaSeWT5GiFi4u+p6hSCe2FFV65+TaUmaeC2mI2EHdHeJOcZPSjmvi78YTpZzGZjFNK +NHDXUja+SDA0Z9PiQhclX2Q2NCc4FquW3KAJGwjnty7VaSEs6HK5bNfYpZTkvixMmi9 YOYuB0yNF4+6Ujk2CvvkbODCF5sBi+I2AlsyofoQkRZkpSOrHQ9Ylp4v37HFAossEMc4 7GkhbqAfXab3YTVr7tdlfGvTRhduygS4GzMRK3W4n5g28zikqCEWxMUcCnkavR6BGPDC /gyU5aWM/B+z3OCpEY9hdHqHUBVVaENjMk90vj8Md02NNgHarqTKeKol+IZ89LDMvPVZ EBIA== X-Gm-Message-State: AOAM532id+NynxyPJ52q0n4NQtlk+pqZwaFglOw2dvl972Z0MW54AemY VOK2alsAkdl8bmIKyzcGYa7MV+RCn/NamLX9e0LrEck= X-Google-Smtp-Source: ABdhPJxIkhQXbLQA6DCGXbMoto5BGO7zWWKjmSL9BgEOieazrQat3AG/aEGYNHWkfsEh0H8iZgg6MsHEkw+/aQ9lUWo= X-Received: by 2002:ab0:6f02:: with SMTP id r2mr3309822uah.59.1644776929942; Sun, 13 Feb 2022 10:28:49 -0800 (PST) MIME-Version: 1.0 From: Joseph Koshakow Date: Sun, 13 Feb 2022 13:28:38 -0500 Message-ID: Subject: Fix overflow in justify_interval related functions To: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000a5850105d7ea78d3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a5850105d7ea78d3 Content-Type: text/plain; charset="UTF-8" I mentioned this issue briefly in another thread, but the justify_interval, justify_days, and justify_hours functions all have the potential to overflow. The attached patch fixes this issue. Cheers, Joe Koshakow --000000000000a5850105d7ea78d3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Check-for-overflow-in-justify_interval-functions.patch" Content-Disposition: attachment; filename="0001-Check-for-overflow-in-justify_interval-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kzllokmn0 RnJvbSA0NDAwZjJlNjg4NjA5N2UzYjc1ZDQ1NWFlZWMxZmZhOWNiYzg4NTEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NlcGggS29zaGFrb3cgPGtvc2h5NDRAZ21haWwuY29tPgpE YXRlOiBTdW4sIDEzIEZlYiAyMDIyIDEzOjI2OjE2IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gQ2hl Y2sgZm9yIG92ZXJmbG93IGluIGp1c3RpZnlfaW50ZXJ2YWwgZnVuY3Rpb25zCgpqdXN0aWZ5X2lu dGVydmFsLCBqdXN0aWZ5X2hvdXJzLCBhbmQganVzdGlmeV9kYXlzIGRpZG4ndCBjaGVjayBmb3IK b3ZlcmZsb3cgd2hlbiBtb3ZpbmcgaG91cnMgdG8gZGF5cyBvciBkYXlzIHRvIGhvdXJzLiBUaGlz IGNvbW1pdCBhZGRzCmNoZWNrIGZvciBvdmVyZmxvdyBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0 ZSBlcnJvci4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgICAgICB8IDIw ICsrKysrKysrKysrKysrKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludGVydmFs Lm91dCB8ICA4ICsrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnRlcnZhbC5zcWwgICAg ICB8ICA2ICsrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwppbmRleCAzNmY4YTg0YmNjLi5mYjRi M2FlMGFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCkBAIC0yNzE4LDExICsyNzE4LDE3 IEBAIGludGVydmFsX2p1c3RpZnlfaW50ZXJ2YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlyZXN1bHQt PnRpbWUgPSBzcGFuLT50aW1lOwogCiAJVE1PRFVMTyhyZXN1bHQtPnRpbWUsIHdob2xlZGF5LCBV U0VDU19QRVJfREFZKTsKLQlyZXN1bHQtPmRheSArPSB3aG9sZWRheTsJLyogY291bGQgb3ZlcmZs b3cuLi4gKi8KKwlpZiAocGdfYWRkX3MzMl9vdmVyZmxvdyhyZXN1bHQtPmRheSwgd2hvbGVkYXks ICZyZXN1bHQtPmRheSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCWVycm1zZygiaW50ZXJ2YWwgb3V0IG9m IHJhbmdlIikpKTsKIAogCXdob2xlbW9udGggPSByZXN1bHQtPmRheSAvIERBWVNfUEVSX01PTlRI OwogCXJlc3VsdC0+ZGF5IC09IHdob2xlbW9udGggKiBEQVlTX1BFUl9NT05USDsKLQlyZXN1bHQt Pm1vbnRoICs9IHdob2xlbW9udGg7CisJaWYgKHBnX2FkZF9zMzJfb3ZlcmZsb3cocmVzdWx0LT5t b250aCwgd2hvbGVtb250aCwgJnJlc3VsdC0+bW9udGgpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJCQllcnJt c2coImludGVydmFsIG91dCBvZiByYW5nZSIpKSk7CiAKIAlpZiAocmVzdWx0LT5tb250aCA+IDAg JiYKIAkJKHJlc3VsdC0+ZGF5IDwgMCB8fCAocmVzdWx0LT5kYXkgPT0gMCAmJiByZXN1bHQtPnRp bWUgPCAwKSkpCkBAIC0yNzcyLDcgKzI3NzgsMTAgQEAgaW50ZXJ2YWxfanVzdGlmeV9ob3VycyhQ R19GVU5DVElPTl9BUkdTKQogCXJlc3VsdC0+dGltZSA9IHNwYW4tPnRpbWU7CiAKIAlUTU9EVUxP KHJlc3VsdC0+dGltZSwgd2hvbGVkYXksIFVTRUNTX1BFUl9EQVkpOwotCXJlc3VsdC0+ZGF5ICs9 IHdob2xlZGF5OwkvKiBjb3VsZCBvdmVyZmxvdy4uLiAqLworCWlmIChwZ19hZGRfczMyX292ZXJm bG93KHJlc3VsdC0+ZGF5LCB3aG9sZWRheSwgJnJlc3VsdC0+ZGF5KSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJ CQkJZXJybXNnKCJpbnRlcnZhbCBvdXQgb2YgcmFuZ2UiKSkpOwogCiAJaWYgKHJlc3VsdC0+ZGF5 ID4gMCAmJiByZXN1bHQtPnRpbWUgPCAwKQogCXsKQEAgLTI4MDgsNyArMjgxNywxMCBAQCBpbnRl cnZhbF9qdXN0aWZ5X2RheXMoUEdfRlVOQ1RJT05fQVJHUykKIAogCXdob2xlbW9udGggPSByZXN1 bHQtPmRheSAvIERBWVNfUEVSX01PTlRIOwogCXJlc3VsdC0+ZGF5IC09IHdob2xlbW9udGggKiBE QVlTX1BFUl9NT05USDsKLQlyZXN1bHQtPm1vbnRoICs9IHdob2xlbW9udGg7CisJaWYgKHBnX2Fk ZF9zMzJfb3ZlcmZsb3cocmVzdWx0LT5tb250aCwgd2hvbGVtb250aCwgJnJlc3VsdC0+bW9udGgp KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVf T1VUX09GX1JBTkdFKSwKKwkJCQllcnJtc2coImludGVydmFsIG91dCBvZiByYW5nZSIpKSk7CiAK IAlpZiAocmVzdWx0LT5tb250aCA+IDAgJiYgcmVzdWx0LT5kYXkgPCAwKQogCXsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50ZXJ2YWwub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbnRlcnZhbC5vdXQKaW5kZXggYWNjZDRhN2Q5MC4uZTJiYjgwOTVjMyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnRlcnZhbC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnRlcnZhbC5vdXQKQEAgLTM5Niw2ICszOTYsMTAg QEAgU0VMRUNUIGp1c3RpZnlfZGF5cyhpbnRlcnZhbCAnNiBtb250aHMgMzYgZGF5cyA1IGhvdXJz IDQgbWludXRlcyAzIHNlY29uZHMnKSBhcwogIEAgNyBtb25zIDYgZGF5cyA1IGhvdXJzIDQgbWlu cyAzIHNlY3MKICgxIHJvdykKIAorU0VMRUNUIGp1c3RpZnlfaG91cnMoaW50ZXJ2YWwgJzIxNDc0 ODM2NDcgZGF5cyAyNCBocnMnKTsKK0VSUk9SOiAgaW50ZXJ2YWwgb3V0IG9mIHJhbmdlCitTRUxF Q1QganVzdGlmeV9kYXlzKGludGVydmFsICcyMTQ3NDgzNjQ3IG1vbnRocyAzMCBkYXlzJyk7CitF UlJPUjogIGludGVydmFsIG91dCBvZiByYW5nZQogLS0gdGVzdCBqdXN0aWZ5X2ludGVydmFsKCkK IFNFTEVDVCBqdXN0aWZ5X2ludGVydmFsKGludGVydmFsICcxIG1vbnRoIC0xIGhvdXInKSBhcyAi MSBtb250aCAtMSBob3VyIjsKICAgMSBtb250aCAtMSBob3VyICAgCkBAIC00MDMsNiArNDA3LDEw IEBAIFNFTEVDVCBqdXN0aWZ5X2ludGVydmFsKGludGVydmFsICcxIG1vbnRoIC0xIGhvdXInKSBh cyAiMSBtb250aCAtMSBob3VyIjsKICBAIDI5IGRheXMgMjMgaG91cnMKICgxIHJvdykKIAorU0VM RUNUIGp1c3RpZnlfaW50ZXJ2YWwoaW50ZXJ2YWwgJzIxNDc0ODM2NDcgZGF5cyAyNCBocnMnKTsK K0VSUk9SOiAgaW50ZXJ2YWwgb3V0IG9mIHJhbmdlCitTRUxFQ1QganVzdGlmeV9pbnRlcnZhbChp bnRlcnZhbCAnMjE0NzQ4MzY0NyBtb250aHMgMzAgZGF5cycpOworRVJST1I6ICBpbnRlcnZhbCBv dXQgb2YgcmFuZ2UKIC0tIHRlc3QgZnJhY3Rpb25hbCBzZWNvbmQgaW5wdXQsIGFuZCBkZXRlY3Rp b24gb2YgZHVwbGljYXRlIHVuaXRzCiBTRVQgREFURVNUWUxFID0gJ0lTTyc7CiBTRVQgSW50ZXJ2 YWxTdHlsZSBUTyBwb3N0Z3JlczsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lu dGVydmFsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludGVydmFsLnNxbAppbmRleCA2ZDUz MjM5OGJkLi4zZWJkY2E1MDIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnRl cnZhbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50ZXJ2YWwuc3FsCkBAIC0xNDks MTAgKzE0OSwxNiBAQCBzZWxlY3QgJzEwMDAwMDAwMHkgMTBtb24gLTEwMDAwMDAwMDBkIC0xMDAw MDBoIC0xMG1pbiAtMTAuMDAwMDAxcyBhZ28nOjppbnRlcnZhbAogU0VMRUNUIGp1c3RpZnlfaG91 cnMoaW50ZXJ2YWwgJzYgbW9udGhzIDMgZGF5cyA1MiBob3VycyAzIG1pbnV0ZXMgMiBzZWNvbmRz JykgYXMgIjYgbW9ucyA1IGRheXMgNCBob3VycyAzIG1pbnMgMiBzZWNvbmRzIjsKIFNFTEVDVCBq dXN0aWZ5X2RheXMoaW50ZXJ2YWwgJzYgbW9udGhzIDM2IGRheXMgNSBob3VycyA0IG1pbnV0ZXMg MyBzZWNvbmRzJykgYXMgIjcgbW9ucyA2IGRheXMgNSBob3VycyA0IG1pbnMgMyBzZWNvbmRzIjsK IAorU0VMRUNUIGp1c3RpZnlfaG91cnMoaW50ZXJ2YWwgJzIxNDc0ODM2NDcgZGF5cyAyNCBocnMn KTsKK1NFTEVDVCBqdXN0aWZ5X2RheXMoaW50ZXJ2YWwgJzIxNDc0ODM2NDcgbW9udGhzIDMwIGRh eXMnKTsKKwogLS0gdGVzdCBqdXN0aWZ5X2ludGVydmFsKCkKIAogU0VMRUNUIGp1c3RpZnlfaW50 ZXJ2YWwoaW50ZXJ2YWwgJzEgbW9udGggLTEgaG91cicpIGFzICIxIG1vbnRoIC0xIGhvdXIiOwog CitTRUxFQ1QganVzdGlmeV9pbnRlcnZhbChpbnRlcnZhbCAnMjE0NzQ4MzY0NyBkYXlzIDI0IGhy cycpOworU0VMRUNUIGp1c3RpZnlfaW50ZXJ2YWwoaW50ZXJ2YWwgJzIxNDc0ODM2NDcgbW9udGhz IDMwIGRheXMnKTsKKwogLS0gdGVzdCBmcmFjdGlvbmFsIHNlY29uZCBpbnB1dCwgYW5kIGRldGVj dGlvbiBvZiBkdXBsaWNhdGUgdW5pdHMKIFNFVCBEQVRFU1RZTEUgPSAnSVNPJzsKIFNFVCBJbnRl cnZhbFN0eWxlIFRPIHBvc3RncmVzOwotLSAKMi4yNS4xCgo= --000000000000a5850105d7ea78d3--