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 1wVZsT-0023jJ-18 for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 19:06:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVZsS-00Dy88-0r for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 19:06:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wVZsR-00Dy7v-2i for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 19:06:43 +0000 Received: from mail-qv1-xf32.google.com ([2607:f8b0:4864:20::f32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wVZsP-00000001Hfm-1Ep0 for pgsql-hackers@postgresql.org; Fri, 05 Jun 2026 19:06:42 +0000 Received: by mail-qv1-xf32.google.com with SMTP id 6a1803df08f44-8ccda0ac4fcso22823646d6.2 for ; Fri, 05 Jun 2026 12:06:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780686399; cv=none; d=google.com; s=arc-20240605; b=hWwS9fWyEBMESOysRLwvLea+VaMLj80Gpgr43IexMCm9YAtAhfP8Ajjuk62pX28P5Z MG7r27cAlEFb5DkpQKiw/hsqx5jA/XJ/ZIYoFrc5rWc4G0hdF5hQ/lhh023mCIEqRvk6 pw7Wq3K77MLGyfsed1Yas4EqmR9cxKH/k+844+fYCMO8oF+rD7vYhV/aqriCmoG5wGeN Vpvp/o6XQs1C/xDGiv0LZKlPHmzho1gymO74sM7rXrfbLneXzVl61Uj7MABvjLY11Irs O9UVa/AVcU/Vrjk5/yC/MgqSgGS9d1xMfQ6/+eppY6/qMU5WjkwJjJnO/jQ+I6bM+QLE gJ5Q== 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=/hSeJpJBOa43ptxfGENE/TX1mr8THvVAQpfl0X66lMo=; fh=3PxARieCgQV4eE6YoRsxGdlh7nGp4+d1MOPOjSXDQsI=; b=cQ94KK/I/OSuHzJ8y5vUeH9QhHQRHeo0Il5GlXef0Y9/sGHssXnAt8hiQcguuKYKsU h/IKmn4CQKe38CLCuiRHdRLlYhMOWAe6BOf94wmAdm8s71FW1R/j1YL8u/eGyWlDksYV uPWD04+b46W7sK5LTzoobJ2DVn7oRrDNitZt65SJYPrirto7wEUR5hlFaSzqJy07oCp4 UWUIQo8EMseFgmjfRa4zeAGK0WH5rJaKaPd9TYYvlsXSXZccMmqrNt7nWbw847cuDK5k anTxmU6gTC0iZ3O0vnBrFqmGYdJVpWpEiRgqUjIpgKjSnmXaBzGycy2qzViUlJV2DS5q TbJQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1780686399; x=1781291199; darn=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=/hSeJpJBOa43ptxfGENE/TX1mr8THvVAQpfl0X66lMo=; b=bqcilg4wnhScSnJeXDA78t845Iqxy2AOhUwK/J2YUyRvV8fJfuzjNQCZgZjbQBm71W nmTWee7S719mwK9jMDo1enK12G+YNP1kSRnGwBWv3GVh3m/Ej5kElDckOh2zH9HG4UBK +w61yz+9U+ud2pLh0ZgfxkrM9RuNsT3IKX0MXhrSLFADxraDENmvmG2WZx67pqUAugoW imx7/O92be8O6XpOCfQ5XmxjTNAlJHJF57Zblq2w/aVPEDFCFa7n7E971uJR6pIT3DZv 65wp6ERJIgmaYR3shru/ye3COqW6hRWfn+1b8/ZEvfacHP3Mnninn/S2yeA4C6vghiFI IYeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780686399; x=1781291199; 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=/hSeJpJBOa43ptxfGENE/TX1mr8THvVAQpfl0X66lMo=; b=pnNeCdFUIFshbi5FR19FeG0iDsYD9nhqyRSjYCR6qY6BhZEyTfrjgKiF+LiMqxU0dE yIPnhop/0DFtyZ7TdZ0PxPxT7qasvnx0xbFPu1XNCbXwA6njT3tw2jDpwbQDRBdcsHgB 38XyOa3XXODViFlq8A+I1Wo1FsvogrykGdkrj4WBYeD0uhUCQxaKo4CxWIfMsgVNkjUY +6jPvZiQfoWz8MevhxAMym46lA684ztlTRwAsN1YtE+QSKpqxFXG/ByBbYF6NyB+ioSz JTVDFToqDAKrPNo/fi4L59cyP8WdQerpeVrTbKVgnAR9cqZPgDFmIGpci3SAL1YXZThf pd0Q== X-Forwarded-Encrypted: i=1; AFNElJ9UVybZuJ9V4rYaS8UzZwUrDbRlV5iGGoWKTUnVFHXuzrDNA1JrbmTIF6tU5tki80PUgrnXLdElpfpaoGmT@postgresql.org X-Gm-Message-State: AOJu0YwLu2wYTIH4fj7s4cyoy/PpH6zyU4nzxgEraBEunvKLOqzIX+g+ UiWq5wbs+TZ2n+kSvpCxMpKBEondaRVEzXl/Jiv4MUqyy7j1TecYM6wn8NwIoGUqXOecdg19M9/ LrjDOODti8b1Nf51h6AplUM+qAe+6piU8H+Y9HH8J X-Gm-Gg: Acq92OG/n00465UpTFPOcgt611VU6R20ey17zIoDs8FQKx8kFVJm25D2bTEpnz+tkTJ sajqfUIhM8LTgHd7hkPQLmQ0DULUBi09324oC4pjYDXpYSCEHjh1E+A/Gm3p40EPRRWvHhIoET4 SF5S2OU6AxN6OPYYM4lsAqL3t9GFvUeo6Us7KCzm+XvfL3g8ELhtAcU69/mY+tvASfDHEIhWto5 NWn1sqP08nSvoJvm6NzknG4/HRjODuqvm2ARvJNHDR3ikID6053EKfQM0Jo+uBnoTJNDA0agzll H9IZWXIjXenwfm0TenyB X-Received: by 2002:a05:622a:110f:b0:517:8a1c:fcfc with SMTP id d75a77b69052e-51795a714c5mr75283241cf.9.1780686399238; Fri, 05 Jun 2026 12:06:39 -0700 (PDT) MIME-Version: 1.0 References: <52EEC73C-5887-43F0-848B-DF515DCDFBBF@yesql.se> In-Reply-To: <52EEC73C-5887-43F0-848B-DF515DCDFBBF@yesql.se> From: Jacob Champion Date: Fri, 5 Jun 2026 12:06:27 -0700 X-Gm-Features: AVVi8CeE3h9_vxomXWxsgCqTqfQ7KbnUBNuAwCbOyxzDZzT5dtjfvJwEkiXU-ZA Message-ID: Subject: Re: oauth integer overflow To: Daniel Gustafsson Cc: Andres Freund , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000049074c0653865cc8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000049074c0653865cc8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 23, 2026 at 11:31=E2=80=AFAM Jacob Champion wrote: > Attached. The static_assert for the millisecond calculation is the > only part I don't really like, but doing an overflow check on a > calculation that can't overflow int64 is even more verbose/wasteful. I was preparing to commit this for beta1 last week, and I realized that I've changed my tune. With all the recent backports of overflow checks, I think I need to be reaching for them by default, especially in a non-performance-critical path. v2 rewrites that part with a checked multiplication, which removes any need for a static_assert complication. On Tue, Apr 28, 2026 at 4:18=E2=80=AFAM Daniel Gustafsson = wrote: > When teading "disabled timer" I interpret that as a timer which is 0 and = has no > interval (which might be due to not being a native speaker), but what it > actually describes is an interval which (in practice) never ends. Perhap= s it > could be phrased more like "for most people is going to be equivalent to = a > never ending interval". This has been completely rewritten now; see what you think. Thanks! --Jacob --00000000000049074c0653865cc8 Content-Type: application/octet-stream; name="v2-0001-libpq-oauth-Avoid-overflow-for-very-large-interva.patch" Content-Disposition: attachment; filename="v2-0001-libpq-oauth-Avoid-overflow-for-very-large-interva.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq1ao2yd0 RnJvbSBkNmQzYTg1MWU3M2ZlZGUzYjNkNjAxZjczNWUwOTlkMzIwNmM1Y2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amNoYW1waW9uQHBvc3RncmVzcWwu b3JnPgpEYXRlOiBGcmksIDI5IE1heSAyMDI2IDE2OjIxOjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRD SCB2Ml0gbGlicHEtb2F1dGg6IEF2b2lkIG92ZXJmbG93IGZvciB2ZXJ5IGxhcmdlIGludGVydmFs cwoKVGhlIHNsb3dfZG93biBpbnRlcnZhbCBwYXJzaW5nIGNvZGUgY2hlY2tzIGV4cGxpY2l0bHkg Zm9yIG92ZXJmbG93LCBidXQKc2luY2UgaXQgZG9lcyB0aGF0IGFmdGVyIHRoZSBzaWduZWQgb3Zl cmZsb3cgaGFzIGFscmVhZHkgb2NjdXJyZWQsIHdlCmVuZCB1cCBpbnZpdGluZyB1bmRlZmluZWQg YmVoYXZpb3IgZnJvbSB0aGUgY29tcGlsZXIgYW55d2F5LgoKVXNlIGNoZWNrZWQgYXJpdGhtZXRp YyBpbnN0ZWFkLiBzZXRfdGltZXIoKSB0YWtlcyBhIGxvbmcgaW50IGluIG9yZGVyIHRvCmludGVy ZmFjZSBuaWNlbHkgd2l0aCBsaWJjdXJsLCBzbyB1c2UgYW4gaW50MzIgYXMgdGhlIGludGVydmFs IGNvdW50ZXIKYW5kIGNsYW1wIHRvIExPTkdfTUFYIGR1cmluZyBjb252ZXJzaW9uIHRvIG1pbGxp c2Vjb25kcy4KCkJhY2twYXRjaCB0byAxOCwgd2hlcmUgbGlicHEtb2F1dGggd2FzIGludHJvZHVj ZWQuCgpSZXBvcnRlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZp ZXdlZC1ieTogRGFuaWVsIEd1c3RhZnNzb24gPGRhbmllbEB5ZXNxbC5zZT4KRGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS9xdGNsaWhtcmtxNjdhY2gzeGp4eWk0cWNrc3N0aW41cXh3c25r cWVma21vdHh3aDRnNiU0MGFlMmJqNmp2Y21yeQpCYWNrcGF0Y2gtdGhyb3VnaDogMTgKLS0tCiBz cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMgfCAzNSArKysrKysrKysrKysr KysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3Vy bC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jCmluZGV4IDdiYTc1 ZmM2ZDA0Li4yNjAxMzcyOTFjYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1 dGgvb2F1dGgtY3VybC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1 cmwuYwpAQCAtMjgsNiArMjgsNyBAQAogI2Vycm9yIGxpYnBxLW9hdXRoIGlzIG5vdCBzdXBwb3J0 ZWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCiAKKyNpbmNsdWRlICJjb21tb24vaW50LmgiCiAj aW5jbHVkZSAiY29tbW9uL2pzb25hcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2lu Y2x1ZGUgIm9hdXRoLWN1cmwuaCIKQEAgLTEzNiw3ICsxMzcsNyBAQCBzdHJ1Y3QgZGV2aWNlX2F1 dGh6CiAKIAkvKiBGaWVsZHMgYmVsb3cgYXJlIHBhcnNlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5n IHN0cmluZyBhYm92ZS4gKi8KIAlpbnQJCQlleHBpcmVzX2luOwotCWludAkJCWludGVydmFsOwor CWludDMyCQlpbnRlcnZhbDsKIH07CiAKIHN0YXRpYyB2b2lkCkBAIC0xMDIwLDcgKzEwMjEsNyBA QCBwYXJzZV9qc29uX251bWJlcihjb25zdCBjaGFyICpzKQogICogZXhwZW5zaXZlIG5ldHdvcmsg cG9sbGluZyBsb29wLikgVGVzdHMgbWF5IHJlbW92ZSB0aGUgbG93ZXIgYm91bmQgd2l0aAogICog UEdPQVVUSERFQlVHLCBmb3IgaW1wcm92ZWQgcGVyZm9ybWFuY2UuCiAgKi8KLXN0YXRpYyBpbnQK K3N0YXRpYyBpbnQzMgogcGFyc2VfaW50ZXJ2YWwoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgY29u c3QgY2hhciAqaW50ZXJ2YWxfc3RyKQogewogCWRvdWJsZQkJcGFyc2VkOwpAQCAtMTAzMSw4ICsx MDMyLDggQEAgcGFyc2VfaW50ZXJ2YWwoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgY29uc3QgY2hh ciAqaW50ZXJ2YWxfc3RyKQogCWlmIChwYXJzZWQgPCAxKQogCQlyZXR1cm4gKGFjdHgtPmRlYnVn X2ZsYWdzICYgT0FVVEhERUJVR19VTlNBRkVfRE9TX0VORFBPSU5UKSA/IDAgOiAxOwogCi0JZWxz ZSBpZiAocGFyc2VkID49IElOVF9NQVgpCi0JCXJldHVybiBJTlRfTUFYOworCWVsc2UgaWYgKHBh cnNlZCA+PSBJTlQzMl9NQVgpCisJCXJldHVybiBJTlQzMl9NQVg7CiAKIAlyZXR1cm4gcGFyc2Vk OwogfQpAQCAtMjYyMCwxMCArMjYyMSw3IEBAIGhhbmRsZV90b2tlbl9yZXNwb25zZShzdHJ1Y3Qg YXN5bmNfY3R4ICphY3R4LCBjaGFyICoqdG9rZW4pCiAJICovCiAJaWYgKHN0cmNtcChlcnItPmVy cm9yLCAic2xvd19kb3duIikgPT0gMCkKIAl7Ci0JCWludAkJCXByZXZfaW50ZXJ2YWwgPSBhY3R4 LT5hdXRoei5pbnRlcnZhbDsKLQotCQlhY3R4LT5hdXRoei5pbnRlcnZhbCArPSA1OwotCQlpZiAo YWN0eC0+YXV0aHouaW50ZXJ2YWwgPCBwcmV2X2ludGVydmFsKQorCQlpZiAocGdfYWRkX3MzMl9v dmVyZmxvdyhhY3R4LT5hdXRoei5pbnRlcnZhbCwgNSwgJmFjdHgtPmF1dGh6LmludGVydmFsKSkK IAkJewogCQkJYWN0eF9lcnJvcihhY3R4LCAic2xvd19kb3duIGludGVydmFsIG92ZXJmbG93Iik7 CiAJCQlnb3RvIHRva2VuX2NsZWFudXA7CkBAIC0yOTQ5LDggKzI5NDcsMjUgQEAgcGdfZmVfcnVu X29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJl cXVlc3QsCiAJCQkJICogV2FpdCBmb3IgdGhlIHJlcXVpcmVkIGludGVydmFsIGJlZm9yZSBpc3N1 aW5nIHRoZSBuZXh0CiAJCQkJICogcmVxdWVzdC4KIAkJCQkgKi8KLQkJCQlpZiAoIXNldF90aW1l cihhY3R4LCBhY3R4LT5hdXRoei5pbnRlcnZhbCAqIDEwMDApKQotCQkJCQlnb3RvIGVycm9yX3Jl dHVybjsKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEF2b2lkIG92ZXJmbG93IG9mIGxvbmcgaW50 LiAoQnkgdGhlIHRpbWUgd2UgcmVhY2gKKwkJCQkJICogTE9OR19NQVggbWlsbGlzZWNvbmRzIC0t IDI0IGRheXMgb24gMzItYml0IHBsYXRmb3JtcyAtLQorCQkJCQkgKiBjb250aW51aW5nIHRvIGhv bm9yIHNsb3dfZG93biByZXF1ZXN0cyBzZWVtcyBwcmV0dHkKKwkJCQkJICogcG9pbnRsZXNzIGFu eXdheS4pCisJCQkJCSAqLworCQkJCQlpbnQ2NAkJaW50ZXJ2YWxfbXM7CisKKwkJCQkJaWYgKHBn X211bF9zNjRfb3ZlcmZsb3coYWN0eC0+YXV0aHouaW50ZXJ2YWwsIDEwMDAsCisJCQkJCQkJCQkJ CSZpbnRlcnZhbF9tcykKKwkJCQkJCXx8IChpbnRlcnZhbF9tcyA+IExPTkdfTUFYKSkKKwkJCQkJ eworCQkJCQkJaW50ZXJ2YWxfbXMgPSBMT05HX01BWDsKKwkJCQkJfQorCisJCQkJCWlmICghc2V0 X3RpbWVyKGFjdHgsIChsb25nKSBpbnRlcnZhbF9tcykpCisJCQkJCQlnb3RvIGVycm9yX3JldHVy bjsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIE5vIEN1cmwgcmVxdWVzdHMgYXJlIHJ1bm5pbmcs IHNvIHdlIGNhbiBzaW1wbGlmeSBieSBoYXZpbmcKLS0gCjIuMzQuMQoK --00000000000049074c0653865cc8--