Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrFxL-00Apv0-26 for pgsql-bugs@arkaria.postgresql.org; Sat, 14 Feb 2026 13:45:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vrFxI-00HW5z-2G for pgsql-bugs@arkaria.postgresql.org; Sat, 14 Feb 2026 13:45:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrFxI-00HW5r-16 for pgsql-bugs@lists.postgresql.org; Sat, 14 Feb 2026 13:45:04 +0000 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vrFxG-00000000eFN-05iT for pgsql-bugs@lists.postgresql.org; Sat, 14 Feb 2026 13:45:03 +0000 Received: by mail-oi1-x22f.google.com with SMTP id 5614622812f47-463960df4f9so1141637b6e.0 for ; Sat, 14 Feb 2026 05:45:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771076700; cv=none; d=google.com; s=arc-20240605; b=hKoAegpSYsj27lg3FMLLCwuw6iBmGQ4nRKZzcV+peSUirYNEX9L8UF5dHfC85GouFd oDHGumHdlDhrJbjfLSZHxzahZKeXuR2cMSwxuso+S849R0fZnVplcw7vWW8nQ3kzkbki yTMB7YnYC40DTQ6Ehle7/oelHpgprMMSiu1UjsGuGcGzfcw4/rXo19l2U3DyrYKks1PF uhbkgkFDGvrsGNF8QYzYpyuvmXEVsRAZNk+Cxp5/kRVb8+DqJ+6PwyHL+BJHrC2XOgrz FXQkFMVR+ymM7NAW5RxkpCGG9F/x7G5tZMQIzmZll6JgSMrEdOKRJWI2Qxu+srp+3jr7 9tbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=rdvTTpyab7xiLcwKBUE/A1Yyw2+QXeLl3PddaZEfscg=; fh=GidXX+j5YYQg2LlLcM1bKyho3OwuWqu9asWDUO64tgM=; b=U2Dufs0WpMzk4+acFAOe6vkBvff+QIk8LsLYt9wqgXyrHWf2iupteSU7YSVAFzhgro g9aUyb3kP5uhdh0+oy5aESjuBd3vdLh8Lpa1lOsebDLl82ojDin0kF0HUBSErnxQgejm NU/qHrFR/xCoeTKIEOKfTcEHkJqt3Isvxj+fbyrSXD48oF7crxLqwFRGeyfp09HYOaHh wA2Rzd+/D4QqxBgNdZVBnNosQRaC0/cmckR1lNLZjVBKfMBIIsku7J4m7gyxPUXW561y NJ7KxtXed03LXWqXZjZDXc6n3ej3QqUwtq5yrn63TYKxljnthODrWb7vvG7Ta3Z7CJFh fbyg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771076700; x=1771681500; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rdvTTpyab7xiLcwKBUE/A1Yyw2+QXeLl3PddaZEfscg=; b=hT+Z8Y71VXlScxk+ONg6LPI1G5mwhr0aSqSDIb9v1dn01dtZT70CP5G2xvywK4sMKC KAHyO5iepM1Uqr2+lCJkyufEaUw/tUQJy71awW+jIV1GnWK55LqmI8yukhs7vAyw4F4C 7aIl3mAOvP2aET9RWxUSINQrxAmyOv5AVTh7xETtPamaVH8w7F0Gkoy9p+7qGS+lIxqW vKv1Ka0mPGqc03mcv5/L8miR37A772r8nXuPj1hULpVvTfXrH1S80NViI+sz7wShUojS llw8vR1rryFbL5lfGrxhjmuWAXmEzK1xzqFqc2/VcAd8tWCdZ9bcyyNAQXbNsMsr1+Iu 1B7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771076700; x=1771681500; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rdvTTpyab7xiLcwKBUE/A1Yyw2+QXeLl3PddaZEfscg=; b=CH+RynqiuUl3XqjgpGe2VuT3IAyGuc/2j+DGNIjxKd3TkguNJ4RcUatawzhv6fi/LQ e5LIY7LcXTaF7UO0HuTehoSsW18kUSy8K695eekqplrjcWFmSTk83XoNQ2/5HHaPTm3b jZlEI/sJmYnXrmKckaBET6eSQhpAoxUn0m9VFaLvkYq8hkUD1MvJOfAoWb8A0ZqHpTIK L7oma7UodnjXhraxMqemOeW3IS2HDEuWfpwne1ojQ+oJ3EmG1nCbHdrbyQXI8E44XiL5 pCLrfIU0lvhRY57uumPLTv/yG5ATvUCeCvemID99RhW6/64IJXs6Psm/OWSVydyt/h4u DN7Q== X-Gm-Message-State: AOJu0YybLCYxYg7PvtTSQiz/4GRwQPbsAJE5HGsDotzndOhVM5TubXJ2 lG+trKKJ8sRRR9fqsi9nT+DueVs0O9hFmpo0MUogsZIr4nVBHc9nWm2wjLZ0cKOkj0DLoaM90YF zOtyxWKWUQYv0OyBiRZmwzABS9vu1wVo= X-Gm-Gg: AZuq6aJm9STVqesv4qTiUE/lONyWKAcQ8RwWjD12j0CnB3MMU3sy0gTEfI1OltxVn37 xljXGUufrKuNsc8/ZV+IZT+1BS8nwIflqT3OketxIZW5Wt03uTTrDJpw43HmRrqTkrDOUyBv0hr Do9v7YM+ikCsh0+eqxOHDqULKmXvg4r/wRFEUR5EqfQOzQOzmqBEXGI0wRYgR7r5adR33mjrMBB +wWgKmxjqmeAwd2b5cx3OwjErSGhLSlABcwJWocxpiMLXYU8rCfalR5Uy6hYhPknIDWYKLVQKdD pcu4wTybVw== X-Received: by 2002:a05:6808:1455:b0:45e:f498:47e0 with SMTP id 5614622812f47-463b426000fmr1345961b6e.58.1771076700277; Sat, 14 Feb 2026 05:45:00 -0800 (PST) MIME-Version: 1.0 References: <19405-1ecf025dda171555@postgresql.org> In-Reply-To: From: Richard Guo Date: Sat, 14 Feb 2026 22:44:48 +0900 X-Gm-Features: AZwV_Qgp3Xcjj0ILHf8avNxhTxoJq1oJImYdIlhaGkPOJCw2MMkAWm3jin9DF-c Message-ID: Subject: Re: BUG #19405: Assertion in eval_windowaggregates() fails due to integer overflow To: Alexander Lakhin Cc: pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000097289a064ac8ed17" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000097289a064ac8ed17 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 14, 2026 at 8:00=E2=80=AFPM Richard Guo wrote: > Right, I noticed this one too. Basically, nodeWindowAgg.c doesn't > check for overflow when adding startOffsetValue or endOffsetValue. > Since these values are provided by the user and can be arbitrarily > large, simple addition does not seem safe. I think we may need to > switch to overflow-aware integer operations in all relevant code. Here is an updated patch to fix all relevant code in nodeWindowAgg.c. - Richard --00000000000097289a064ac8ed17 Content-Type: application/octet-stream; name="v2-0001-Fix-signed-integer-overflow-in-nodeWindowAgg.c.patch" Content-Disposition: attachment; filename="v2-0001-Fix-signed-integer-overflow-in-nodeWindowAgg.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlmdbugr0 RnJvbSA5NTg5NTEwZjRlMjg0ZWY0ZWU5ZjBhOTVmYWM1NzJhY2VkNDNjYmU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAxNCBGZWIgMjAyNiAxODoxNjoyNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjJd IEZpeCBzaWduZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBub2RlV2luZG93QWdnLmMKCi0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIHwgNTQgKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IGQ5YjY0YjBmNDY1Li5k YWIwNTdkZjBiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMzcsNiAr MzcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hZ2dyZWdhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNs dWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNs dWRlICJleGVjdXRvci9ub2RlV2luZG93QWdnLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBA IC0xNTMyLDEyICsxNTMzLDE3IEBAIHJvd19pc19pbl9mcmFtZShXaW5kb3dPYmplY3Qgd2lub2Jq LCBpbnQ2NCBwb3MsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQlpZiAoZnJhbWVPcHRpb25zICYg RlJBTUVPUFRJT05fUk9XUykKIAkJewogCQkJaW50NjQJCW9mZnNldCA9IERhdHVtR2V0SW50NjQo d2luc3RhdGUtPmVuZE9mZnNldFZhbHVlKTsKKwkJCWludDY0CQl0YXJnZXRfcG9zOwogCiAJCQkv KiByb3dzIGFmdGVyIGN1cnJlbnQgcm93ICsgb2Zmc2V0IGFyZSBvdXQgb2YgZnJhbWUgKi8KIAkJ CWlmIChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FTkRfT0ZGU0VUX1BSRUNFRElORykKIAkJ CQlvZmZzZXQgPSAtb2Zmc2V0OwogCi0JCQlpZiAocG9zID4gd2luc3RhdGUtPmN1cnJlbnRwb3Mg KyBvZmZzZXQpCisJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBv cywgb2Zmc2V0LCAmdGFyZ2V0X3BvcykpCisJCQl7CisJCQkJLyogb3ZlcmZsb3c6IGZyYW1lIGV4 dGVuZHMgdG8gZW5kIG9mIHBhcnRpdGlvbiAqLworCQkJfQorCQkJZWxzZSBpZiAocG9zID4gdGFy Z2V0X3BvcykKIAkJCQlyZXR1cm4gLTE7CiAJCX0KIAkJZWxzZSBpZiAoZnJhbWVPcHRpb25zICYg KEZSQU1FT1BUSU9OX1JBTkdFIHwgRlJBTUVPUFRJT05fR1JPVVBTKSkKQEAgLTE2NzIsNyArMTY3 OCwxNiBAQCB1cGRhdGVfZnJhbWVoZWFkcG9zKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkJ CWlmIChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9TVEFSVF9PRkZTRVRfUFJFQ0VESU5HKQog CQkJCW9mZnNldCA9IC1vZmZzZXQ7CiAKLQkJCXdpbnN0YXRlLT5mcmFtZWhlYWRwb3MgPSB3aW5z dGF0ZS0+Y3VycmVudHBvcyArIG9mZnNldDsKKwkJCS8qCisJCQkgKiBJZiB3ZSBoYXZlIGFuIG92 ZXJmbG93LCBpdCBtZWFucyB0aGUgZnJhbWUgaGVhZCBpcyBiZXlvbmQgdGhlCisJCQkgKiByYW5n ZSBvZiBpbnQ2NC4gIFNpbmNlIGN1cnJlbnRwb3MgPj0gMCwgdGhpcyBjYW4gb25seSBiZSBhCisJ CQkgKiBwb3NpdGl2ZSBvdmVyZmxvdy4gIFdlIHRyZWF0IHRoaXMgYXMgYmVpbmcgYmV5b25kIGVu ZCBvZgorCQkJICogcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxv dyh3aW5zdGF0ZS0+Y3VycmVudHBvcywgb2Zmc2V0LAorCQkJCQkJCQkJJndpbnN0YXRlLT5mcmFt ZWhlYWRwb3MpKQorCQkJCXdpbnN0YXRlLT5mcmFtZWhlYWRwb3MgPSBQR19JTlQ2NF9NQVg7CisK IAkJCS8qIGZyYW1lIGhlYWQgY2FuJ3QgZ28gYmVmb3JlIGZpcnN0IHJvdyAqLwogCQkJaWYgKHdp bnN0YXRlLT5mcmFtZWhlYWRwb3MgPCAwKQogCQkJCXdpbnN0YXRlLT5mcmFtZWhlYWRwb3MgPSAw OwpAQCAtMTc4OSw3ICsxODA0LDE2IEBAIHVwZGF0ZV9mcmFtZWhlYWRwb3MoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlKQogCQkJaWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX09G RlNFVF9QUkVDRURJTkcpCiAJCQkJbWluaGVhZGdyb3VwID0gd2luc3RhdGUtPmN1cnJlbnRncm91 cCAtIG9mZnNldDsKIAkJCWVsc2UKLQkJCQltaW5oZWFkZ3JvdXAgPSB3aW5zdGF0ZS0+Y3VycmVu dGdyb3VwICsgb2Zmc2V0OworCQkJeworCQkJCS8qCisJCQkJICogSWYgd2UgaGF2ZSBhbiBvdmVy ZmxvdywgaXQgbWVhbnMgdGhlIHRhcmdldCBncm91cCBpcyBiZXlvbmQKKwkJCQkgKiB0aGUgcmFu Z2Ugb2YgaW50NjQuICBXZSB0cmVhdCB0aGlzIGFzICJpbmZpbml0eSIsIHdoaWNoCisJCQkJICog ZW5zdXJlcyB0aGUgbG9vcCBiZWxvdyBhZHZhbmNlcyB0byBlbmQgb2YgcGFydGl0aW9uLgorCQkJ CSAqLworCQkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KHdpbnN0YXRlLT5jdXJyZW50Z3JvdXAs IG9mZnNldCwKKwkJCQkJCQkJCQkmbWluaGVhZGdyb3VwKSkKKwkJCQkJbWluaGVhZGdyb3VwID0g UEdfSU5UNjRfTUFYOworCQkJfQogCiAJCQl0dXBsZXN0b3JlX3NlbGVjdF9yZWFkX3BvaW50ZXIo d2luc3RhdGUtPmJ1ZmZlciwKIAkJCQkJCQkJCQkgICB3aW5zdGF0ZS0+ZnJhbWVoZWFkX3B0cik7 CkBAIC0xOTI2LDcgKzE5NTAsMTggQEAgdXBkYXRlX2ZyYW1ldGFpbHBvcyhXaW5kb3dBZ2dTdGF0 ZSAqd2luc3RhdGUpCiAJCQlpZiAoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fRU5EX09GRlNF VF9QUkVDRURJTkcpCiAJCQkJb2Zmc2V0ID0gLW9mZnNldDsKIAotCQkJd2luc3RhdGUtPmZyYW1l dGFpbHBvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zICsgb2Zmc2V0ICsgMTsKKwkJCS8qCisJCQkg KiBJZiB3ZSBoYXZlIGFuIG92ZXJmbG93LCBpdCBtZWFucyB0aGUgZnJhbWUgdGFpbCBpcyBiZXlv bmQgdGhlCisJCQkgKiByYW5nZSBvZiBpbnQ2NC4gIFNpbmNlIGN1cnJlbnRwb3MgPj0gMCwgdGhp cyBjYW4gb25seSBiZSBhCisJCQkgKiBwb3NpdGl2ZSBvdmVyZmxvdy4gIFdlIHRyZWF0IHRoaXMg YXMgYmVpbmcgYmV5b25kIGVuZCBvZgorCQkJICogcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAo cGdfYWRkX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBvcywgb2Zmc2V0LAorCQkJCQkJ CQkJJndpbnN0YXRlLT5mcmFtZXRhaWxwb3MpIHx8CisJCQkJcGdfYWRkX3M2NF9vdmVyZmxvdyh3 aW5zdGF0ZS0+ZnJhbWV0YWlscG9zLCAxLAorCQkJCQkJCQkJJndpbnN0YXRlLT5mcmFtZXRhaWxw b3MpKQorCQkJCXdpbnN0YXRlLT5mcmFtZXRhaWxwb3MgPSBQR19JTlQ2NF9NQVg7CisKIAkJCS8q IHNtYWxsZXN0IGFsbG93YWJsZSB2YWx1ZSBvZiBmcmFtZXRhaWxwb3MgaXMgMCAqLwogCQkJaWYg KHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MgPCAwKQogCQkJCXdpbnN0YXRlLT5mcmFtZXRhaWxwb3Mg PSAwOwpAQCAtMjA0Myw3ICsyMDc4LDE2IEBAIHVwZGF0ZV9mcmFtZXRhaWxwb3MoV2luZG93QWdn U3RhdGUgKndpbnN0YXRlKQogCQkJaWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VORF9P RkZTRVRfUFJFQ0VESU5HKQogCQkJCW1heHRhaWxncm91cCA9IHdpbnN0YXRlLT5jdXJyZW50Z3Jv dXAgLSBvZmZzZXQ7CiAJCQllbHNlCi0JCQkJbWF4dGFpbGdyb3VwID0gd2luc3RhdGUtPmN1cnJl bnRncm91cCArIG9mZnNldDsKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIHdlIGhhdmUgYW4gb3Zl cmZsb3csIGl0IG1lYW5zIHRoZSB0YXJnZXQgZ3JvdXAgaXMgYmV5b25kCisJCQkJICogdGhlIHJh bmdlIG9mIGludDY0LiAgV2UgdHJlYXQgdGhpcyBhcyAiaW5maW5pdHkiLCB3aGljaAorCQkJCSAq IGVuc3VyZXMgdGhlIGxvb3AgYmVsb3cgYWR2YW5jZXMgdG8gZW5kIG9mIHBhcnRpdGlvbi4KKwkJ CQkgKi8KKwkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudGdyb3Vw LCBvZmZzZXQsCisJCQkJCQkJCQkJJm1heHRhaWxncm91cCkpCisJCQkJCW1heHRhaWxncm91cCA9 IFBHX0lOVDY0X01BWDsKKwkJCX0KIAogCQkJdHVwbGVzdG9yZV9zZWxlY3RfcmVhZF9wb2ludGVy KHdpbnN0YXRlLT5idWZmZXIsCiAJCQkJCQkJCQkJICAgd2luc3RhdGUtPmZyYW1ldGFpbF9wdHIp OwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000097289a064ac8ed17--