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 1wAPQc-002MC9-2N for pgsql-bugs@arkaria.postgresql.org; Wed, 08 Apr 2026 09:42:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAPQZ-006O4h-2s for pgsql-bugs@arkaria.postgresql.org; Wed, 08 Apr 2026 09:42:28 +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 1wAPQZ-006O4Z-1B for pgsql-bugs@lists.postgresql.org; Wed, 08 Apr 2026 09:42:28 +0000 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAPQX-00000001CGd-1k6r for pgsql-bugs@lists.postgresql.org; Wed, 08 Apr 2026 09:42:26 +0000 Received: by mail-oi1-x236.google.com with SMTP id 5614622812f47-476448429dfso224238b6e.0 for ; Wed, 08 Apr 2026 02:42:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775641345; cv=none; d=google.com; s=arc-20240605; b=BDseoMXEY5whfxlCjqK/PG7IHpqZxW79IkP9kQ5uqONcmWHtnH7Vaer/1Yb/2Eprak YpbaXclVhIgOxH8k6k7Opq1y3ViigXMpKqYIdCZLFE3soO9vDVtj9CQny6Oia7Quzhgt 346uA8aTqTY1DDq2peHURdA0ovuP6aHEIAd9wJYJScRp2mDU1hfntyrlb64k8HjeGo40 iWYaimj0+y3nb9zLcYbFdYKEX1myieH+JE/TqhBn3FCuj6QrBEMpFOctOTr/oqZTt1p8 ZQwZPr2Ct9lShwcH7do+vZH/2uJjlGDKhtmWm50CbGyxApXf51lMxpzKjpeVp/fI116A yaSg== 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=ByahSo/X14g9jYp5T2CNJZ9hA5obYNtJbpMMfVeDvAU=; fh=cAin0Q2fqmwDAeMfvA5ODUD0ZySOo9+pLZYjfDn1yrc=; b=O/+HmqmELko9xtd0DC1kV25FmtUkO6PKyMj1NKBWqzkrM+Be7p9JDjg0vtxM26pnCE 6mvUST4BYRdEUvG4g/efyb5AgEyCN6b+NmA02qZdT8HqWFhWktypXbP3Tq2sbfAvabVO OtDIF6wKg5kB6TzQfMMKwTzfsljfVe+3J1q5EK/J4IV49X98ycUBekk9k/PctMY7xEOL pmgF4FilBL+TA/SSLs8If+UoH1mwcMIubS9DjZPonhWs3UKI1WtMK//8ihAKv/hq951R iQU1KLqOiHnyhe2zVke8tAAJeRSsunSccmE4GTATwvlt4zSUxWPJu71C8xLlnlA4FBHK 2x9A==; 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=20251104; t=1775641345; x=1776246145; 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=ByahSo/X14g9jYp5T2CNJZ9hA5obYNtJbpMMfVeDvAU=; b=VrUk2/nySUUXHh8a30hc2Z77/M9pFlyP2KfQFJ8s7VoqkcxA9tusmQkHIBZ5GyBmlE 9jb0W1ZXevu1/H+UfpPXxXazE+jLdJF9ayWHxGj78zdG8QokK0/IW1a3G3XppdsROt8k fq2lQWnGYFxQvQXHcdo2vk1z2V7KGpd3XEcymfw7WNyWZFHEy64S7H2jsJtODE4a31za Qa3Tiq8h6zMcqAMKhzK2OYhRQ0uNqnRQmF/NBqID1m8Pu52JYgHuIW+VeV8sYDjaf8wl zuz33XJ+rcNwZ4vC8NwFirdyC7tuTTxe0L4zpYcP/9/y01TN0o/XuVYQH9aOfC80hJBV H19w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775641345; x=1776246145; 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=ByahSo/X14g9jYp5T2CNJZ9hA5obYNtJbpMMfVeDvAU=; b=BcmnU0HSrww5tE6+gajOmIuFv7365X05CPGE5hcWtDuq4IqdUBQLF53Nyx9quIHtKF NAR+MZpjN4m3Bp8z+nSs5pZ7Hu+HLJR1VCF+J6kk01Kmc8JPFJibgGeyHR319EmmiECp xIPFF8C3FbW3qbSg2n7fxwzsZ9Z11SSTw3EaV3tDj6NppjoUqI1sp6zFn09Mqse1DmwJ yyRdbzVt59pyjVt22YCPrrui59Y/7C7cvxnVbc9uVFHhiGJxFa0oD4EdsE+CivMmtp7T k1C503bRfKkUzX/xLJK0O3IGCcsT+U/VzM33+cQPFztwkPdy8qJhVIPLKArPzgdPtytm f70w== X-Forwarded-Encrypted: i=1; AJvYcCVbIN36Ijl0VI88qctN1nFOVJeO8tklfhaYdDAQ+zx0MpR8QixHho+0AbdX62pRSD3NrsUFiTeb5xBz@lists.postgresql.org X-Gm-Message-State: AOJu0YzrJ8lt3xEN6+jjWmDMjbOqVGEmmxy4Avir96acTVMbhizOa0sd CfJRmUfVumuSp1kq1fxT4AoPsd0fgGr2EyIJyu85UNlhI3W72fvMocLqdsBQzsqR3tAdcBsGldX +k6HKhnM0ZY+4DtAu3vJPX0bpWRHApcY= X-Gm-Gg: AeBDiev+Re+SyKNkt/smz2iMk2ahpDpq4QGKQVMc9LuMY+7PI9kO8fp2bdCjqPt1PtM oS9GehP4NyhD5F+1qAxgsxekcSpiqvkLrk/2FTAH0MAZYNrvQMAbU6mKtYIpecTADuCTI5DSi+b eX2fsrbyc5wZeEMmniYrxxLuzRZJqiGzjN91mAvoVSV+DcFhyJQ1+deXWq6bdoy3etR6kOCw64S 6p5r+1gXBsDBlMA/3dVGNcy6OaDiusCun6Y4R+uugeZTYlIa0ivaDUDHmzzKDoShn0e+rFNlYgG fFsl3fML4w== X-Received: by 2002:a05:6808:4f46:b0:468:776:1e9e with SMTP id 5614622812f47-46ef967857dmr10153403b6e.16.1775641344898; Wed, 08 Apr 2026 02:42:24 -0700 (PDT) MIME-Version: 1.0 References: <19405-1ecf025dda171555@postgresql.org> In-Reply-To: From: Richard Guo Date: Wed, 8 Apr 2026 18:42:12 +0900 X-Gm-Features: AQROBzDEzw9QkN5haf6jECtOw8emCq-dvT-6Hzrrwy9sL_INxgkYPaT6II576pI Message-ID: Subject: Re: BUG #19405: Assertion in eval_windowaggregates() fails due to integer overflow To: Tender Wang Cc: exclusion@gmail.com, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000009c95eb064eefb728" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009c95eb064eefb728 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 17, 2026 at 10:55=E2=80=AFAM Richard Guo wrote: > I've included test cases covering the overflow scenarios for ROWS mode > in v3. (I failed to come up with queries for GROUPS mode that > demonstrate the bug, but I suspect I just haven't found the right test > case yet.) I have also included a commit message. Here is the updated patch. I've added test cases for GROUPS mode with an overflow-inducing offset. These don't seem to produce visibly wrong results without the patch. I believe that is because the incremental nature of group pointer advancement happens to mask the misbehavior. But I think they are still worth having since signed integer overflow is undefined behavior in C. Regarding performance, I don't think this should be a concern. pg_add_s64_overflow compiles down to a native add+jo sequence on platforms with __builtin_add_overflow, and falls back to a couple of inlined comparisons on others. Either way, the cost seems negligible next to the per-row tuple store and aggregation work these functions already do. - Richard --0000000000009c95eb064eefb728 Content-Type: application/octet-stream; name="v4-0001-Fix-integer-overflow-in-nodeWindowAgg.c.patch" Content-Disposition: attachment; filename="v4-0001-Fix-integer-overflow-in-nodeWindowAgg.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnpv00jo0 RnJvbSBiNGU3NGMzYWQwMWRlZjUxNGFiMGI0MmY5ZGQ4NGExZWU2ODNlOGM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAxNCBGZWIgMjAyNiAxODoxNjoyNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjRd IEZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIG5vZGVXaW5kb3dBZ2cuYwoKSW4gbm9kZVdpbmRvd0Fn Zy5jLCB0aGUgY2FsY3VsYXRpb25zIGZvciBmcmFtZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucwpp biBST1dTIGFuZCBHUk9VUFMgbW9kZXMgd2VyZSBwZXJmb3JtZWQgdXNpbmcgc2ltcGxlIGludGVn ZXIgYWRkaXRpb24uCklmIGEgdXNlci1zdXBwbGllZCBvZmZzZXQgd2FzIHN1ZmZpY2llbnRseSBs YXJnZSAoY2xvc2UgdG8gSU5UNjRfTUFYKSwKYWRkaW5nIGl0IHRvIHRoZSBjdXJyZW50IHJvdyBv ciBncm91cCBpbmRleCBjb3VsZCBjYXVzZSBhIHNpZ25lZAppbnRlZ2VyIG92ZXJmbG93LCB3cmFw cGluZyB0aGUgcmVzdWx0IHRvIGEgbmVnYXRpdmUgbnVtYmVyLgoKVGhpcyBsZWQgdG8gaW5jb3Jy ZWN0IGJlaGF2aW9yIHdoZXJlIGZyYW1lIGJvdW5kYXJpZXMgdGhhdCBzaG91bGQgaGF2ZQpleHRl bmRlZCBpbmRlZmluaXRlbHkgKG9yIGJleW9uZCB0aGUgcGFydGl0aW9uIGVuZCkgd2VyZSB0cmVh dGVkIGFzCmZhbGxpbmcgYXQgdGhlIGZpcnN0IHJvdywgb3Igd2hlcmUgdmFsaWQgcm93cyB3ZXJl IGluY29ycmVjdGx5IG1hcmtlZAphcyBvdXQtb2YtZnJhbWUuICBEZXBlbmRpbmcgb24gdGhlIHNw ZWNpZmljIHF1ZXJ5IGFuZCBkYXRhLCB0aGVzZQpvdmVyZmxvd3MgY2FuIHJlc3VsdCBpbiBpbmNv cnJlY3QgcXVlcnkgcmVzdWx0cywgZXhlY3V0aW9uIGVycm9ycywgb3IKYXNzZXJ0aW9uIGZhaWx1 cmVzLgoKVG8gZml4LCB1c2Ugb3ZlcmZsb3ctYXdhcmUgaW50ZWdlciBhZGRpdGlvbiAoaWUsIHBn X2FkZF9zNjRfb3ZlcmZsb3cpCnRvIGNoZWNrIGZvciBvdmVyZmxvd3MgZHVyaW5nIHRoZXNlIGFk ZGl0aW9ucy4gIElmIGFuIG92ZXJmbG93IGlzCmRldGVjdGVkLCB0aGUgYm91bmRhcnkgaXMgbm93 IGNsYW1wZWQgdG8gSU5UNjRfTUFYLiAgVGhpcyBlbnN1cmVzIHRoZQpsb2dpYyBjb3JyZWN0bHkg dHJlYXRzIHRoZSBib3VuZGFyeSBhcyBleHRlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUKcGFydGl0 aW9uLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDYyICsrKysr KysrKysrKysrKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2luZG93Lm91dCB8IDkx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpbmRv dy5zcWwgICAgICB8IDI2ICsrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRl eCA3ODRjZWViODI0Ni4uZjUyYTdhYWU4NDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93 QWdnLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19wcm9jLmgiCisjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaCIKQEAgLTE1MzQsMTIgKzE1MzUsMjEgQEAgcm93X2lzX2lu X2ZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywgVHVwbGVUYWJsZVNsb3QgKnNs b3QsCiAJCWlmIChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9ST1dTKQogCQl7CiAJCQlpbnQ2 NAkJb2Zmc2V0ID0gRGF0dW1HZXRJbnQ2NCh3aW5zdGF0ZS0+ZW5kT2Zmc2V0VmFsdWUpOworCQkJ aW50NjQJCWZyYW1lZW5kcG9zID0gMDsKIAogCQkJLyogcm93cyBhZnRlciBjdXJyZW50IHJvdyAr IG9mZnNldCBhcmUgb3V0IG9mIGZyYW1lICovCiAJCQlpZiAoZnJhbWVPcHRpb25zICYgRlJBTUVP UFRJT05fRU5EX09GRlNFVF9QUkVDRURJTkcpCiAJCQkJb2Zmc2V0ID0gLW9mZnNldDsKIAotCQkJ aWYgKHBvcyA+IHdpbnN0YXRlLT5jdXJyZW50cG9zICsgb2Zmc2V0KQorCQkJLyoKKwkJCSAqIElm IHdlIGhhdmUgYW4gb3ZlcmZsb3csIGl0IG1lYW5zIHRoZSBmcmFtZSBlbmQgaXMgYmV5b25kIHRo ZQorCQkJICogcmFuZ2Ugb2YgaW50NjQuICBTaW5jZSBjdXJyZW50cG9zID49IDAsIHRoaXMgY2Fu IG9ubHkgYmUgYQorCQkJICogcG9zaXRpdmUgb3ZlcmZsb3cuICBXZSB0cmVhdCB0aGlzIGFzIG1l YW5pbmcgdGhhdCB0aGUgZnJhbWUKKwkJCSAqIGV4dGVuZHMgdG8gZW5kIG9mIHBhcnRpdGlvbi4K KwkJCSAqLworCQkJaWYgKCFwZ19hZGRfczY0X292ZXJmbG93KHdpbnN0YXRlLT5jdXJyZW50cG9z LCBvZmZzZXQsCisJCQkJCQkJCQkgJmZyYW1lZW5kcG9zKSAmJgorCQkJCXBvcyA+IGZyYW1lZW5k cG9zKQogCQkJCXJldHVybiAtMTsKIAkJfQogCQllbHNlIGlmIChmcmFtZU9wdGlvbnMgJiAoRlJB TUVPUFRJT05fUkFOR0UgfCBGUkFNRU9QVElPTl9HUk9VUFMpKQpAQCAtMTY3NCw3ICsxNjg0LDE2 IEBAIHVwZGF0ZV9mcmFtZWhlYWRwb3MoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCQkJaWYg KGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX09GRlNFVF9QUkVDRURJTkcpCiAJCQkJ b2Zmc2V0ID0gLW9mZnNldDsKIAotCQkJd2luc3RhdGUtPmZyYW1laGVhZHBvcyA9IHdpbnN0YXRl LT5jdXJyZW50cG9zICsgb2Zmc2V0OworCQkJLyoKKwkJCSAqIElmIHdlIGhhdmUgYW4gb3ZlcmZs b3csIGl0IG1lYW5zIHRoZSBmcmFtZSBoZWFkIGlzIGJleW9uZCB0aGUKKwkJCSAqIHJhbmdlIG9m IGludDY0LiAgU2luY2UgY3VycmVudHBvcyA+PSAwLCB0aGlzIGNhbiBvbmx5IGJlIGEKKwkJCSAq IHBvc2l0aXZlIG92ZXJmbG93LiAgV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBiZXlvbmQgZW5kIG9m CisJCQkgKiBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KHdp bnN0YXRlLT5jdXJyZW50cG9zLCBvZmZzZXQsCisJCQkJCQkJCQkmd2luc3RhdGUtPmZyYW1laGVh ZHBvcykpCisJCQkJd2luc3RhdGUtPmZyYW1laGVhZHBvcyA9IFBHX0lOVDY0X01BWDsKKwogCQkJ LyogZnJhbWUgaGVhZCBjYW4ndCBnbyBiZWZvcmUgZmlyc3Qgcm93ICovCiAJCQlpZiAod2luc3Rh dGUtPmZyYW1laGVhZHBvcyA8IDApCiAJCQkJd2luc3RhdGUtPmZyYW1laGVhZHBvcyA9IDA7CkBA IC0xNzg2LDEyICsxODA1LDIxIEBAIHVwZGF0ZV9mcmFtZWhlYWRwb3MoV2luZG93QWdnU3RhdGUg KndpbnN0YXRlKQogCQkJICogZnJhbWVoZWFkX3Nsb3QgZW1wdHkuCiAJCQkgKi8KIAkJCWludDY0 CQlvZmZzZXQgPSBEYXR1bUdldEludDY0KHdpbnN0YXRlLT5zdGFydE9mZnNldFZhbHVlKTsKLQkJ CWludDY0CQltaW5oZWFkZ3JvdXA7CisJCQlpbnQ2NAkJbWluaGVhZGdyb3VwID0gMDsKIAogCQkJ aWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX09GRlNFVF9QUkVDRURJTkcpCiAJ CQkJbWluaGVhZGdyb3VwID0gd2luc3RhdGUtPmN1cnJlbnRncm91cCAtIG9mZnNldDsKIAkJCWVs c2UKLQkJCQltaW5oZWFkZ3JvdXAgPSB3aW5zdGF0ZS0+Y3VycmVudGdyb3VwICsgb2Zmc2V0Owor CQkJeworCQkJCS8qCisJCQkJICogSWYgd2UgaGF2ZSBhbiBvdmVyZmxvdywgaXQgbWVhbnMgdGhl IHRhcmdldCBncm91cCBpcyBiZXlvbmQKKwkJCQkgKiB0aGUgcmFuZ2Ugb2YgaW50NjQuICBXZSB0 cmVhdCB0aGlzIGFzICJpbmZpbml0eSIsIHdoaWNoCisJCQkJICogZW5zdXJlcyB0aGUgbG9vcCBi ZWxvdyBhZHZhbmNlcyB0byBlbmQgb2YgcGFydGl0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19h ZGRfczY0X292ZXJmbG93KHdpbnN0YXRlLT5jdXJyZW50Z3JvdXAsIG9mZnNldCwKKwkJCQkJCQkJ CQkmbWluaGVhZGdyb3VwKSkKKwkJCQkJbWluaGVhZGdyb3VwID0gUEdfSU5UNjRfTUFYOworCQkJ fQogCiAJCQl0dXBsZXN0b3JlX3NlbGVjdF9yZWFkX3BvaW50ZXIod2luc3RhdGUtPmJ1ZmZlciwK IAkJCQkJCQkJCQkgICB3aW5zdGF0ZS0+ZnJhbWVoZWFkX3B0cik7CkBAIC0xOTI4LDcgKzE5NTYs MTggQEAgdXBkYXRlX2ZyYW1ldGFpbHBvcyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJCQlp ZiAoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fRU5EX09GRlNFVF9QUkVDRURJTkcpCiAJCQkJ b2Zmc2V0ID0gLW9mZnNldDsKIAotCQkJd2luc3RhdGUtPmZyYW1ldGFpbHBvcyA9IHdpbnN0YXRl LT5jdXJyZW50cG9zICsgb2Zmc2V0ICsgMTsKKwkJCS8qCisJCQkgKiBJZiB3ZSBoYXZlIGFuIG92 ZXJmbG93LCBpdCBtZWFucyB0aGUgZnJhbWUgdGFpbCBpcyBiZXlvbmQgdGhlCisJCQkgKiByYW5n ZSBvZiBpbnQ2NC4gIFNpbmNlIGN1cnJlbnRwb3MgPj0gMCwgdGhpcyBjYW4gb25seSBiZSBhCisJ CQkgKiBwb3NpdGl2ZSBvdmVyZmxvdy4gIFdlIHRyZWF0IHRoaXMgYXMgYmVpbmcgYmV5b25kIGVu ZCBvZgorCQkJICogcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxv dyh3aW5zdGF0ZS0+Y3VycmVudHBvcywgb2Zmc2V0LAorCQkJCQkJCQkJJndpbnN0YXRlLT5mcmFt ZXRhaWxwb3MpIHx8CisJCQkJcGdfYWRkX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+ZnJhbWV0YWls cG9zLCAxLAorCQkJCQkJCQkJJndpbnN0YXRlLT5mcmFtZXRhaWxwb3MpKQorCQkJCXdpbnN0YXRl LT5mcmFtZXRhaWxwb3MgPSBQR19JTlQ2NF9NQVg7CisKIAkJCS8qIHNtYWxsZXN0IGFsbG93YWJs ZSB2YWx1ZSBvZiBmcmFtZXRhaWxwb3MgaXMgMCAqLwogCQkJaWYgKHdpbnN0YXRlLT5mcmFtZXRh aWxwb3MgPCAwKQogCQkJCXdpbnN0YXRlLT5mcmFtZXRhaWxwb3MgPSAwOwpAQCAtMjA0MCwxMiAr MjA3OSwyMSBAQCB1cGRhdGVfZnJhbWV0YWlscG9zKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkK IAkJCSAqIGxlYXZlIGZyYW1ldGFpbHBvcyA9IGVuZCsxIGFuZCBmcmFtZXRhaWxfc2xvdCBlbXB0 eS4KIAkJCSAqLwogCQkJaW50NjQJCW9mZnNldCA9IERhdHVtR2V0SW50NjQod2luc3RhdGUtPmVu ZE9mZnNldFZhbHVlKTsKLQkJCWludDY0CQltYXh0YWlsZ3JvdXA7CisJCQlpbnQ2NAkJbWF4dGFp bGdyb3VwID0gMDsKIAogCQkJaWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VORF9PRkZT RVRfUFJFQ0VESU5HKQogCQkJCW1heHRhaWxncm91cCA9IHdpbnN0YXRlLT5jdXJyZW50Z3JvdXAg LSBvZmZzZXQ7CiAJCQllbHNlCi0JCQkJbWF4dGFpbGdyb3VwID0gd2luc3RhdGUtPmN1cnJlbnRn cm91cCArIG9mZnNldDsKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIHdlIGhhdmUgYW4gb3ZlcmZs b3csIGl0IG1lYW5zIHRoZSB0YXJnZXQgZ3JvdXAgaXMgYmV5b25kCisJCQkJICogdGhlIHJhbmdl IG9mIGludDY0LiAgV2UgdHJlYXQgdGhpcyBhcyAiaW5maW5pdHkiLCB3aGljaAorCQkJCSAqIGVu c3VyZXMgdGhlIGxvb3AgYmVsb3cgYWR2YW5jZXMgdG8gZW5kIG9mIHBhcnRpdGlvbi4KKwkJCQkg Ki8KKwkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudGdyb3VwLCBv ZmZzZXQsCisJCQkJCQkJCQkJJm1heHRhaWxncm91cCkpCisJCQkJCW1heHRhaWxncm91cCA9IFBH X0lOVDY0X01BWDsKKwkJCX0KIAogCQkJdHVwbGVzdG9yZV9zZWxlY3RfcmVhZF9wb2ludGVyKHdp bnN0YXRlLT5idWZmZXIsCiAJCQkJCQkJCQkJICAgd2luc3RhdGUtPmZyYW1ldGFpbF9wdHIpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aW5kb3cub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aW5kb3cub3V0CmluZGV4IDdhMDRkM2E3YTlmLi5lNmFhYzI3 YTJhOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aW5kb3cub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2luZG93Lm91dApAQCAtMTM2MSw2ICsxMzYx LDk3IEBAIFNFTEVDVCBwZ19nZXRfdmlld2RlZigndl93aW5kb3cnKTsKICAgICBGUk9NIGdlbmVy YXRlX3Nlcmllcyhub3coKSwgKG5vdygpICsgJ0AgMTAwIGRheXMnOjppbnRlcnZhbCksICdAIDEg aG91cic6OmludGVydmFsKSBpKGkpOwogKDEgcm93KQogCistLSB0ZXN0IG92ZXJmbG93IGZyYW1l IHNwZWNpZmljYXRpb25zCitTRUxFQ1Qgc3VtKHVuaXF1ZTEpIG92ZXIgKHJvd3MgYmV0d2VlbiBj dXJyZW50IHJvdyBhbmQgOTIyMzM3MjAzNjg1NDc3NTgwNyBmb2xsb3dpbmcgZXhjbHVkZSBjdXJy ZW50IHJvdyksCisJdW5pcXVlMSwgZm91cgorRlJPTSB0ZW5rMSBXSEVSRSB1bmlxdWUxIDwgMTA7 Cisgc3VtIHwgdW5pcXVlMSB8IGZvdXIgCistLS0tLSstLS0tLS0tLS0rLS0tLS0tCisgIDQxIHwg ICAgICAgNCB8ICAgIDAKKyAgMzkgfCAgICAgICAyIHwgICAgMgorICAzOCB8ICAgICAgIDEgfCAg ICAxCisgIDMyIHwgICAgICAgNiB8ICAgIDIKKyAgMjMgfCAgICAgICA5IHwgICAgMQorICAxNSB8 ICAgICAgIDggfCAgICAwCisgIDEwIHwgICAgICAgNSB8ICAgIDEKKyAgIDcgfCAgICAgICAzIHwg ICAgMworICAgMCB8ICAgICAgIDcgfCAgICAzCisgICAgIHwgICAgICAgMCB8ICAgIDAKKygxMCBy b3dzKQorCitTRUxFQ1Qgc3VtKHVuaXF1ZTEpIG92ZXIgKHJvd3MgYmV0d2VlbiA5MjIzMzcyMDM2 ODU0Nzc1ODA3IGZvbGxvd2luZyBhbmQgMSBmb2xsb3dpbmcpLAorCXVuaXF1ZTEsIGZvdXIKK0ZS T00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOworIHN1bSB8IHVuaXF1ZTEgfCBmb3VyIAorLS0t LS0rLS0tLS0tLS0tKy0tLS0tLQorICAgICB8ICAgICAgIDQgfCAgICAwCisgICAgIHwgICAgICAg MiB8ICAgIDIKKyAgICAgfCAgICAgICAxIHwgICAgMQorICAgICB8ICAgICAgIDYgfCAgICAyCisg ICAgIHwgICAgICAgOSB8ICAgIDEKKyAgICAgfCAgICAgICA4IHwgICAgMAorICAgICB8ICAgICAg IDUgfCAgICAxCisgICAgIHwgICAgICAgMyB8ICAgIDMKKyAgICAgfCAgICAgICA3IHwgICAgMwor ICAgICB8ICAgICAgIDAgfCAgICAwCisoMTAgcm93cykKKworU0VMRUNUIGxhc3RfdmFsdWUodW5p cXVlMSkgb3ZlciAoT1JERVIgQlkgZm91ciByb3dzIGJldHdlZW4gY3VycmVudCByb3cgYW5kIDky MjMzNzIwMzY4NTQ3NzU4MDcgZm9sbG93aW5nIGV4Y2x1ZGUgY3VycmVudCByb3cpLAorCXVuaXF1 ZTEsIGZvdXIKK0ZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOworIGxhc3RfdmFsdWUgfCB1 bmlxdWUxIHwgZm91ciAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tCisgICAgICAgICAg NyB8ICAgICAgIDAgfCAgICAwCisgICAgICAgICAgNyB8ICAgICAgIDggfCAgICAwCisgICAgICAg ICAgNyB8ICAgICAgIDQgfCAgICAwCisgICAgICAgICAgNyB8ICAgICAgIDUgfCAgICAxCisgICAg ICAgICAgNyB8ICAgICAgIDkgfCAgICAxCisgICAgICAgICAgNyB8ICAgICAgIDEgfCAgICAxCisg ICAgICAgICAgNyB8ICAgICAgIDYgfCAgICAyCisgICAgICAgICAgNyB8ICAgICAgIDIgfCAgICAy CisgICAgICAgICAgNyB8ICAgICAgIDMgfCAgICAzCisgICAgICAgICAgICB8ICAgICAgIDcgfCAg ICAzCisoMTAgcm93cykKKworLS0gVGhlc2UgdGVzdCBHUk9VUFMgbW9kZSB3aXRoIGFuIG9mZnNl dCBsYXJnZSBlbm91Z2ggdG8gY2F1c2Ugb3ZlcmZsb3cgd2hlbgorLS0gYWRkZWQgdG8gY3VycmVu dGdyb3VwLiAgQWx0aG91Z2ggdGhlIG92ZXJmbG93IGRvZXNuJ3QgcHJvZHVjZSB2aXNpYmx5IHdy b25nCistLSByZXN1bHRzIChkdWUgdG8gdGhlIGluY3JlbWVudGFsIG5hdHVyZSBvZiBncm91cCBw b2ludGVyIGFkdmFuY2VtZW50KSwgd2UKKy0tIHN0aWxsIG5lZWQgdG8gcHJvdGVjdCBhZ2FpbnN0 IGl0IGFzIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93IGlzIHVuZGVmaW5lZAorLS0gYmVoYXZpb3Ig aW4gQy4KK1NFTEVDVCBzdW0odW5pcXVlMSkgb3ZlciAoT1JERVIgQlkgZm91ciBncm91cHMgYmV0 d2VlbiBjdXJyZW50IHJvdyBhbmQgOTIyMzM3MjAzNjg1NDc3NTgwNyBmb2xsb3dpbmcpLAorCXVu aXF1ZTEsIGZvdXIKK0ZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOworIHN1bSB8IHVuaXF1 ZTEgfCBmb3VyIAorLS0tLS0rLS0tLS0tLS0tKy0tLS0tLQorICA0NSB8ICAgICAgIDAgfCAgICAw CisgIDQ1IHwgICAgICAgOCB8ICAgIDAKKyAgNDUgfCAgICAgICA0IHwgICAgMAorICAzMyB8ICAg ICAgIDUgfCAgICAxCisgIDMzIHwgICAgICAgOSB8ICAgIDEKKyAgMzMgfCAgICAgICAxIHwgICAg MQorICAxOCB8ICAgICAgIDYgfCAgICAyCisgIDE4IHwgICAgICAgMiB8ICAgIDIKKyAgMTAgfCAg ICAgICAzIHwgICAgMworICAxMCB8ICAgICAgIDcgfCAgICAzCisoMTAgcm93cykKKworU0VMRUNU IHN1bSh1bmlxdWUxKSBvdmVyIChPUkRFUiBCWSBmb3VyIGdyb3VwcyBiZXR3ZWVuIDkyMjMzNzIw MzY4NTQ3NzU4MDcgZm9sbG93aW5nIGFuZCB1bmJvdW5kZWQgZm9sbG93aW5nKSwKKwl1bmlxdWUx LCBmb3VyCitGUk9NIHRlbmsxIFdIRVJFIHVuaXF1ZTEgPCAxMDsKKyBzdW0gfCB1bmlxdWUxIHwg Zm91ciAKKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0KKyAgICAgfCAgICAgICAwIHwgICAgMAorICAg ICB8ICAgICAgIDggfCAgICAwCisgICAgIHwgICAgICAgNCB8ICAgIDAKKyAgICAgfCAgICAgICA1 IHwgICAgMQorICAgICB8ICAgICAgIDkgfCAgICAxCisgICAgIHwgICAgICAgMSB8ICAgIDEKKyAg ICAgfCAgICAgICA2IHwgICAgMgorICAgICB8ICAgICAgIDIgfCAgICAyCisgICAgIHwgICAgICAg MyB8ICAgIDMKKyAgICAgfCAgICAgICA3IHwgICAgMworKDEwIHJvd3MpCisKIC0tIFJBTkdFIG9m ZnNldCBQUkVDRURJTkcvRk9MTE9XSU5HIHRlc3RzCiBTRUxFQ1Qgc3VtKHVuaXF1ZTEpIG92ZXIg KG9yZGVyIGJ5IGZvdXIgcmFuZ2UgYmV0d2VlbiAyOjppbnQ4IHByZWNlZGluZyBhbmQgMTo6aW50 MiBwcmVjZWRpbmcpLAogCXVuaXF1ZTEsIGZvdXIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpbmRvdy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsCmluZGV4 IDM3ZDgzN2EyZjY2Li4zMDU1NDliMTA0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2luZG93LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsCkBAIC0z MzAsNiArMzMwLDMyIEBAIENSRUFURSBURU1QIFZJRVcgdl93aW5kb3cgQVMKIAogU0VMRUNUIHBn X2dldF92aWV3ZGVmKCd2X3dpbmRvdycpOwogCistLSB0ZXN0IG92ZXJmbG93IGZyYW1lIHNwZWNp ZmljYXRpb25zCitTRUxFQ1Qgc3VtKHVuaXF1ZTEpIG92ZXIgKHJvd3MgYmV0d2VlbiBjdXJyZW50 IHJvdyBhbmQgOTIyMzM3MjAzNjg1NDc3NTgwNyBmb2xsb3dpbmcgZXhjbHVkZSBjdXJyZW50IHJv dyksCisJdW5pcXVlMSwgZm91cgorRlJPTSB0ZW5rMSBXSEVSRSB1bmlxdWUxIDwgMTA7CisKK1NF TEVDVCBzdW0odW5pcXVlMSkgb3ZlciAocm93cyBiZXR3ZWVuIDkyMjMzNzIwMzY4NTQ3NzU4MDcg Zm9sbG93aW5nIGFuZCAxIGZvbGxvd2luZyksCisJdW5pcXVlMSwgZm91cgorRlJPTSB0ZW5rMSBX SEVSRSB1bmlxdWUxIDwgMTA7CisKK1NFTEVDVCBsYXN0X3ZhbHVlKHVuaXF1ZTEpIG92ZXIgKE9S REVSIEJZIGZvdXIgcm93cyBiZXR3ZWVuIGN1cnJlbnQgcm93IGFuZCA5MjIzMzcyMDM2ODU0Nzc1 ODA3IGZvbGxvd2luZyBleGNsdWRlIGN1cnJlbnQgcm93KSwKKwl1bmlxdWUxLCBmb3VyCitGUk9N IHRlbmsxIFdIRVJFIHVuaXF1ZTEgPCAxMDsKKworLS0gVGhlc2UgdGVzdCBHUk9VUFMgbW9kZSB3 aXRoIGFuIG9mZnNldCBsYXJnZSBlbm91Z2ggdG8gY2F1c2Ugb3ZlcmZsb3cgd2hlbgorLS0gYWRk ZWQgdG8gY3VycmVudGdyb3VwLiAgQWx0aG91Z2ggdGhlIG92ZXJmbG93IGRvZXNuJ3QgcHJvZHVj ZSB2aXNpYmx5IHdyb25nCistLSByZXN1bHRzIChkdWUgdG8gdGhlIGluY3JlbWVudGFsIG5hdHVy ZSBvZiBncm91cCBwb2ludGVyIGFkdmFuY2VtZW50KSwgd2UKKy0tIHN0aWxsIG5lZWQgdG8gcHJv dGVjdCBhZ2FpbnN0IGl0IGFzIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93IGlzIHVuZGVmaW5lZAor LS0gYmVoYXZpb3IgaW4gQy4KK1NFTEVDVCBzdW0odW5pcXVlMSkgb3ZlciAoT1JERVIgQlkgZm91 ciBncm91cHMgYmV0d2VlbiBjdXJyZW50IHJvdyBhbmQgOTIyMzM3MjAzNjg1NDc3NTgwNyBmb2xs b3dpbmcpLAorCXVuaXF1ZTEsIGZvdXIKK0ZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOwor CitTRUxFQ1Qgc3VtKHVuaXF1ZTEpIG92ZXIgKE9SREVSIEJZIGZvdXIgZ3JvdXBzIGJldHdlZW4g OTIyMzM3MjAzNjg1NDc3NTgwNyBmb2xsb3dpbmcgYW5kIHVuYm91bmRlZCBmb2xsb3dpbmcpLAor CXVuaXF1ZTEsIGZvdXIKK0ZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOworCiAtLSBSQU5H RSBvZmZzZXQgUFJFQ0VESU5HL0ZPTExPV0lORyB0ZXN0cwogCiBTRUxFQ1Qgc3VtKHVuaXF1ZTEp IG92ZXIgKG9yZGVyIGJ5IGZvdXIgcmFuZ2UgYmV0d2VlbiAyOjppbnQ4IHByZWNlZGluZyBhbmQg MTo6aW50MiBwcmVjZWRpbmcpLAotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --0000000000009c95eb064eefb728--